US5070477A - Port adapter system including a controller for switching channels upon encountering a wait period of data transfer - Google Patents

Port adapter system including a controller for switching channels upon encountering a wait period of data transfer Download PDF

Info

Publication number
US5070477A
US5070477A US07/328,807 US32880789A US5070477A US 5070477 A US5070477 A US 5070477A US 32880789 A US32880789 A US 32880789A US 5070477 A US5070477 A US 5070477A
Authority
US
United States
Prior art keywords
channel
control
memory
port adapter
data transfer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
US07/328,807
Inventor
Farrukh A. Latif
Michael D. Stevens
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Unisys Corp
Original Assignee
Unisys Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Unisys Corp filed Critical Unisys Corp
Priority to US07/328,807 priority Critical patent/US5070477A/en
Application granted granted Critical
Publication of US5070477A publication Critical patent/US5070477A/en
Anticipated expiration legal-status Critical
Assigned to DEUTSCHE BANK TRUST COMPANY AMERICAS, AS COLLATERAL TRUSTEE reassignment DEUTSCHE BANK TRUST COMPANY AMERICAS, AS COLLATERAL TRUSTEE PATENT SECURITY AGREEMENT (PRIORITY LIEN) Assignors: UNISYS CORPORATION
Assigned to DEUTSCHE BANK TRUST COMPANY AMERICAS, AS COLLATERAL TRUSTEE reassignment DEUTSCHE BANK TRUST COMPANY AMERICAS, AS COLLATERAL TRUSTEE PATENT SECURITY AGREEMENT (JUNIOR LIEN) Assignors: UNISYS CORPORATION
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor

Definitions

  • This invention relates to a port adapter or bus driver for an input/output system for a very large computer system and more particularly to such a port adapter wherein particular I/O software functions are implemented in the port adapter of the I/O hardware system.
  • a very large multi-processing system or a very large single processing system adapted for multi-programming require large amounts of data in their various computations and thus are provided with a hierarchy of storage units ranging from main memory to bulk storage devices such as disk drives to peripheral devices such as tape drives, and the like.
  • the system is provided with I/O controllers which control the data transfer from the peripheral devices to the main memory.
  • the central processors are required to decode the I/O instructions and send the respective control signals to the I/O controllers and this takes up an unduly amount of the processor's execution time. Examples of such prior art controllers are disclosed in the Annunziata et al. U.S. Pat. No. 3,432,813 and the Calta et al. U.S. Pat. No. 3,447,138.
  • Input/output operations include more than just data transfers between the periphery and main memory.
  • the I/O system must control such non-data transfer operations as monitoring and altering the state of devices.
  • buses and peripheral controllers that may be chosen to optimize through-put from the periphery to main memory and vice versa.
  • these functions are handled by an operating system running on a central processor, requiring the processor to spend additional time that could be employed in running user jobs or tasks.
  • the present invention resides in a port adapter or bus driver for an input/output system for a large data processing system.
  • the port adapter is coupled to an I/O processor of that system and also to the main memory of the system so that when the port adapter is selected by a system interrupt message from the I/O processor, it can begin its data transmission between a selected peripheral device and main memory without further assistance from the I/O processor or other processors in the system.
  • a task control processor is provided with the I/O system for the scheduling of different central processors for the highest priority processes to be run. When an I/O operation is detected, the respective central processor is released from that process that it is currently running so that it can be assigned to the next highest priority process. When the requested I/O operation has been completed, the Task Control Processor is signaled so that the task control processor can put the requesting process back into the priority list of processes to be run by the main central processors.
  • a feature of the present invention to provide an improved port adapter for an input/output system that relieves the operating system of a very large data processing system of much of the I/O functions thereby allowing the central processors of the system to be utilized for running user tasks and processes.
  • FIG. 1 is a block diagram of a system having an I/O system which employs the present invention
  • FIG. 2 is a block diagram of the input/output system employing invention
  • FIG. 3 is a diagram of the relation of various tables employed by the present invention which reside in the I/O Processor, main memory and in the present invention;
  • FIG. 4 is a schematic diagram of the port adapter of FIG. 2;
  • FIG. 5A-D represent other tables in memory employed with the present invention and the relation there between;
  • FIG. 6 is a diagram of the local memory organization employed in the present invention.
  • FIG. 7 is a flow chart of the method employed with the present invention.
  • FIG. 1 A system employing the present invention is illustrated in FIG. 1. As shown therein, this system is a very large multi-processing system having a plurality of central processors 10 which are coupled to another plurality of main memory modules 12 by way of memory controller 11 which allows any processor to address any memory module.
  • I/O system 13 which controls all communication and data transfer between peripheral units 15 and main memory modules 12. It is to be noted in FIG. 1, that there are a plurality of controllers 14 coupled between respective peripheral units 15 and I/O system 13 by way of a plurality of different buses 13a. That is to say, that a given peripheral unit 15 can be accessed by I/O system 13 by way of alternative combinations of buses 13a and controllers 14.
  • bus is one channel of the present invention, the port adapter.
  • Peripheral units 15 may include any type of peripheral device or storage including large disk drives in which are stored the operating systems of the data processing system of FIG. 1 and also critical user data.
  • I/O system 13 of FIG. 1 is shown in more detail in FIG. 2 and contains a number of different units that interface by way of memory interface controller (MIC) 20 with memory controller 11 of FIG. 1.
  • I/O system 13 includes Task Control Processor 21 which handles all process scheduling on respective central processors 10 of FIG. 1 and also keeps track of various events upon which different processes might be waiting.
  • I/O processor 22 performs the bus and controller scheduling function.
  • Data transfer unit 23 is employed to move data between different areas of memory to other areas of memory.
  • Port adapters 24 are the heart of the present invention. They are the bus drivers for the respective buses 13a of FIG. 1 although they may employ different protocols. They perform all the functions referred to above and more fully described below.
  • Interlock timer control 25 distributes interrupts to the various buses and also provides a queue locking mechanism by which it is guaranteed that shared queues (PQ, BQ) are not corrupted by multiple simultaneous access.
  • Task Control Processor 21 is described in detail in the Jennings et al. application U.S. Ser. No. 787,781, now U.S. Pat. No. 4,796,178 filed Oct. 15, 1985 and assigned to the same assignee as the present invention.
  • I/O Processor 22 is described in the Peacock application U.S. Ser. No. 926,568, filed Nov. 4, 1986 and assigned to the same assignee as the present invention.
  • the function of the present invention is to relieve the operating systems and the respective central processor 10, which execute those operating systems, of all I/O operations so that central processors 10 will have more time for the execution of user jobs.
  • a given central processor 10 is executing a process from one of memory modules 12 and encounters an I/O operation, the corresponding I/O control block is created and the I/O instruction is sent to I/O system 13 by way of memory controller 11 and the processor 10 is released to begin executing the next highest order process from one of memory modules 12.
  • the requesting process is then rescheduled in a priority list of processes for further execution by the next available central processor 10.
  • the I/O start instruction or ASYNC-SCHEDULE command is received by input message buffer 30 of FIG. 3.
  • the first word contains an operation command and also an indication of the initiating process which in the above-described Jennings et al. application is also referred to as a stack.
  • the second word of the message or instruction contains a device number which identifies the device to be employed by the I/O operation.
  • the third word contains a reference to an I/O control block (IOCB) which is created by a central processor and stored in main memory as will be more fully described below.
  • the fourth word contains the time of the command initiation.
  • the I/O processor then takes the device number which addresses device table 45 of FIG. 3 which contains an entry for each device in the system.
  • the entry includes the current status of that device and if the device is not available or not in an idle state, then the device control block is stored in a device queue in main memory until the device is idle.
  • the term "device” is employed to mean either a bus 13a of FIG. 1, a controller 14 of FIG. 1, or a peripheral unit 15. If the device is idle, then a reference is obtained to path group table 46 of FIG. 3 which specifies which controllers and associated buses are to be employed to access the device which is normally a peripheral unit. In FIG. 3, the entry in path group table 46 indicates that three controllers can be used.
  • Controllers servicing a unit have equal priority, and the IOP attempts to keep the load seen by each controller well balanced by its path selection algorithm. Buses servicing a controller are listed in the path group entry for that controller in priority order. Once the bus and controller combination for a given device (usually a unit) is determined, reference is made to interlock translation table 25a of interlock timer control unit 25 of FIG. 2. The proper path queue is locked via ITC. The control block is enqueued into the path queue. The path queue is unlocked and the I/O bus in a port adapter is interrupted, again via the ITC. The ITC makes a reference to interlock translation table 25a to select a port adapter to interrupt. This reference comprises a requester number indicating which of the units in FIG.
  • Interlock translation table 25a in FIG. 3 then sends a Service Vector Interrupt (SVI) address to the selected port adapter which sets a bit in the SVI input register that in turn tells the port adapter which controller has been selected.
  • SVI Service Vector Interrupt
  • the port adapter makes a reference to path queue 62 which contains a Q header pointing to the control blocks for the selected bus or controller.
  • Port adapters 24 in FIG. 2 are shown in more detail in FIG. 4.
  • a queue service table address is received by Interlocker Interface Control (IIC) 50 and stored in Service Vector Interrupt table 65.
  • Micro sequencer and condition multiplexers 51 are then signaled to handle this system interrupt.
  • the SVI address from Service Vector Interrupt register 65 is then sent to ALU 54 where it is multiplied by 4 to actually address the queue service table which is in local memory 55 as will be further discussed below in regard to FIG. 6. That is to say, each entry in the queue service table contains 4 words which identify the respective controller and is used with the queue identity to form a queue header and thus address the corresponding I/O control block in main memory that will be more fully described below in relation to FIGS. 5A-D.
  • control block This then causes that control block to be fetched from memory to read register 58b from which it is transferred to a port adapter entry in local memory 55. All of these actions are under the control of micro-code memory 52 which is driven by micro sequencer and condition multiplexer 57.
  • micro-code memory 52 control all operations in the port adapter by way of pipeline register 53 which supplies the respective control signals to the other units of the port adapter each of which units has its own controller.
  • Pipeline register 53 is so called as it executes a micro-code instruction at the same time that micro-sequencer 57 is addressing micro-code memory 52 for the next micro-code fetch.
  • FIG. 4 there are two channels for driving two buses at the Message Level Interface level (MLI) and the principal action of the port adapter is to receive information segments from main memory by MIC interface control 58 for transfer to the selected controller 14 of FIG. 1 by one of the two channels either channel 56 or channel 57 and also to receive information segments from the respective selected controllers by channels 56 and 57 for transfer to main memory by MIC interface control 58.
  • Both channel 56 and channel 57 are provided with "packing" registers 56b and 57b to form six byte messages, called words, from the two byte segments transferred between the port adapter and the MLI.
  • the PA When the PA is finished transferring data information between the control 15 of FIG. 1 and the memory 12 of FIG. 1, it awaits the result from the control. Once the result is received from the control, the PA verifies for the correctness of the operation. If there are no exceptions, the PA updates the IOCB in the main memory to reflect the current state of the I/O.
  • the IOCB reflects a new memory address where the data transfer ended in the main memory. It also reflects the number of bytes the port adapter transferred between the unit 15 of FIG. 1 and the memory 12 of FIG. 1.
  • FIG. 5A is a diagram of a table in main memory of device sections, one for each device in the system where, as was mentioned above, the device may be one of the I/O buses 13a of FIG. 1 (or more particularly one bus of the port adapters 24 of FIG. 2 which drive the corresponding bus), one of controllers 14 of FIG. 1 or one of peripheral units 15 of FIG. 1. As indicated in FIG. 5A, there may be up to 128 I/O buses, up to 512 (less the number of I/O buses) controllers with the remaining devices being peripheral units up to 4,096 less the number of I/O buses and controllers.
  • Each device section includes two queue headers which contain pointers or memory addresses to different I/O control blocks (IOCB),there being one such block for each operation currently being performed by a device in the system.
  • IOCB I/O control blocks
  • FIG. 5B The general format of each queue header is illustrated in FIG. 5B.
  • the queue header is made up of a four control words.
  • the first word contains control and status information.
  • the second word is a pointer or an address to main memory at the beginning of the first I/O control block for that particular device.
  • the third word is a pointer or address to main memory of the last or most recent I/O control block so that these two pointers indicate the beginning and the end of a particular queue of linked together control blocks for different jobs or tasks that have been requested of the device in question. This will be more thoroughly described in relation to FIG. 5D.
  • the I/O bus device areas include a bus queue header into which operators for controlling the corresponding I/O bus in the port adapter are enqueued. These device areas also include a queue header for controlling the transfer of the results of the device operation from the port adapter 24 back to the IOP 22 in FIG. 2.
  • Each of the controller device sections includes a path queue header which is used by the port adapter to fetch the corresponding control block from the memory. The controller command is then extracted from the control block and sent to the selected controller.
  • the unit queue header points to the control blocks which are pending for a unit.
  • FIG. 5D the queuing mechanism for linking together of control blocks for different jobs or tasks requested on the particular controller is shown.
  • most of the requests for devices are requests for peripheral units 15 of FIG. 1 and there is an I/O control block for each job or task that has been requested of the respective device.
  • the controller 14 of FIG. 1 generally can service more than one peripheral unit 15 of FIG. 1.
  • an input message comes into input message buffer 30 of FIG. 3, it specifies the device number and also a reference or memory address to the particular control block for the job to be performed on that device.
  • the IOP performs the path selection and links the IOCB into the selected controller's path queue.
  • the port adapter servicing that controller is then interrupted via the ITC mechanism already described.
  • the second requested control block address is inserted as the next link memory address in the head I/O control block and also in the tail pointer of the particular device queue header, as illustrated in FIG. 5D.
  • the port adapter When the port adapter is ready to service the head control block, it delinks the head control block by inserting the next link memory address of the head control block in the head pointer of the controller queue header and then zeroing it to reflect that the I/O of the control block is in progress.
  • FIG. 6 is a diagram illustrating the organization of local memory 55 of FIG. 4. Shown therein, the first 512 entries (0-511) contain both channel and controller information which, as was described above, is used with a queue identify to form a reference to a queue header which in turn addresses a respective I/O control block. These entries constitute Queue Service Table (QST) 64 of FIG. 3. The last set of entries (2032-4088) are in In-Progress Operation Table (IPOT) 67 which contains I/O control blocks that are currently in progress not only for the port adapter but for each I/O device being serviced by the port adapter. The middle table 66 contains various constants and variables as well as a scratch pad area and fault buffers for use by the port adapter.
  • QST Queue Service Table
  • IPTT In-Progress Operation Table
  • the operation of the port adapter of the present invention has been generally described above in relation to FIG. 3.
  • a particular feature of the present invention is that the two channels at the message level interface can be operated for doing data transfer simultaneously under control of one micro-code sequencer which handles all aspects of the control state on interface.
  • the method which allows the sequencer to simultaneously execute control algorithmns on both channels takes advantage of the fact that the respective algorithms involved contain numerous wait states, for example, wait for interrupts, wait for channels to exit a burst mode of data transfer or wait for a controller strobe.
  • the sequencer is designed such that it has a four word deep stack (called the immediate stack) and the capability to put the next address on a remote stack (maintained in the local memory). This is implemented in an array in the sequencer.
  • FIG. 7 is a flow chart of this method.
  • the sequencer sets the channel one enable flip flop. It then proceeds with the execution of the micro-code which services this interrupt. Somewhere during the execution of this code, the sequencer encounters a wait instruction and jumps to the appropriate IDLE-WAIT routine. In this routine, the sequencer first determines the number of the channel it is servicing from the channel enable flip flop. Next, the micro-code instruction following the wait instruction, is pushed on the appropriate channels remote stack. The sequencer then proceeds with the updating of an Interrupt State Word (ISW) which indicates whether or not the events for which each channel is waiting on exist. A bit which corresponds to the IDLE-WAIT routine is set in the wait for event field of the channel currently being serviced.
  • ISW Interrupt State Word
  • the wait for event field of both channels is monitored to determine the proper IDLE loop, after which the sequencer awaits for the proper events to happen.
  • the sequencer sets that channel's enable flip flop, pops the microcode instruction from its remote stock and continues with the micro-code execution.
  • a port adapter has been described above for an I/O system for a large data processing system.
  • the port adapter is coupled to an I/O processor of that system and also to main memory of the system so that when the port adapter is selected by a system interrupt message from I/O processor, it can begin and carry on its data transmission between a selected peripheral device and main memory without further assistance.

Abstract

A port adapter for an input/output system for a large data processing system. The port adapter is coupled to an I/O processor of that system and also to main memory of the system so that when the port adapter is selected by a system interrupt message from the I/O processor, it can begin and carry on its data transmission between a selected peripheral device and main memory without further assistance. The port adapter has two peripheral interface transceivers so that it can concurrently control data transfers to at least two peripheral devices.

Description

This is a continuation of co-pending application Ser. No. 07/037,670, now abandoned, filed on 4/13/87.
BACKGROUND OF THE INVENTION
1. Field of the Invention
This invention relates to a port adapter or bus driver for an input/output system for a very large computer system and more particularly to such a port adapter wherein particular I/O software functions are implemented in the port adapter of the I/O hardware system.
2. Description of the Prior Art
A very large multi-processing system or a very large single processing system adapted for multi-programming require large amounts of data in their various computations and thus are provided with a hierarchy of storage units ranging from main memory to bulk storage devices such as disk drives to peripheral devices such as tape drives, and the like. The system is provided with I/O controllers which control the data transfer from the peripheral devices to the main memory. However, in such prior art systems the central processors are required to decode the I/O instructions and send the respective control signals to the I/O controllers and this takes up an unduly amount of the processor's execution time. Examples of such prior art controllers are disclosed in the Annunziata et al. U.S. Pat. No. 3,432,813 and the Calta et al. U.S. Pat. No. 3,447,138.
Attempts have been made to free the central processor from this I/O execution so that the central processor can spend more time on user jobs by supplying a separate general purpose processor to operate independently in the control of input/output data transfers. However, there must be some communication between the two processors in order to assure that the data required by the main central processor is received in its main memory prior to the central processor utilizing that data.
Input/output operations include more than just data transfers between the periphery and main memory. For example, the I/O system must control such non-data transfer operations as monitoring and altering the state of devices. Furthermore, in very large data processing systems, there are a number of different buses and peripheral controllers that may be chosen to optimize through-put from the periphery to main memory and vice versa. However, these functions are handled by an operating system running on a central processor, requiring the processor to spend additional time that could be employed in running user jobs or tasks.
Statistical studies indicate that a major portion of each processor's time, in a multi-processing system, is employed in executing operating system functions. From these studies, it is estimated that the overhead of such management functions has been anywhere between 10 percent and 50 percent, and occasionally even higher. Furthermore, a goodly portion of the time that the corresponding central processor is executing operating system functions is employed in establishing process priority, performing functions on events (to be defined below) and initiating input/output operations. If these functions could be removed from the operating systems, then the through-put of the data processing system should be substantially enhanced.
It is then an object of the present invention to provide an improved input/output system that in turn increases the through-put of the data processing system.
It is another object of the present invention to provide an improved input/output system which allows the removal from the operating system of those functions which require a goodly percentage of the central processor's time.
It is still a further object of the present invention to provide an improved input/output system having facilities for performing those functions that would otherwise be a part of the operating system stored in main memory.
SUMMARY OF THE INVENTION
In order to accomplish the above-identified objects, the present invention resides in a port adapter or bus driver for an input/output system for a large data processing system. The port adapter is coupled to an I/O processor of that system and also to the main memory of the system so that when the port adapter is selected by a system interrupt message from the I/O processor, it can begin its data transmission between a selected peripheral device and main memory without further assistance from the I/O processor or other processors in the system. A task control processor is provided with the I/O system for the scheduling of different central processors for the highest priority processes to be run. When an I/O operation is detected, the respective central processor is released from that process that it is currently running so that it can be assigned to the next highest priority process. When the requested I/O operation has been completed, the Task Control Processor is signaled so that the task control processor can put the requesting process back into the priority list of processes to be run by the main central processors.
It is, then, a feature of the present invention to provide an improved port adapter for an input/output system that relieves the operating system of a very large data processing system of much of the I/O functions thereby allowing the central processors of the system to be utilized for running user tasks and processes.
BRIEF DESCRIPTIONS OF THE DRAWINGS
The above and other objects, advantages and features of the present invention will become more readily apparent from a review of the following specification when taken in conjunction with the drawings wherein:
FIG. 1 is a block diagram of a system having an I/O system which employs the present invention;
FIG. 2 is a block diagram of the input/output system employing invention;
FIG. 3 is a diagram of the relation of various tables employed by the present invention which reside in the I/O Processor, main memory and in the present invention;
FIG. 4 is a schematic diagram of the port adapter of FIG. 2;
FIG. 5A-D represent other tables in memory employed with the present invention and the relation there between;
FIG. 6 is a diagram of the local memory organization employed in the present invention; and
FIG. 7 is a flow chart of the method employed with the present invention.
GENERAL DESCRIPTION OF THE INVENTION
A system employing the present invention is illustrated in FIG. 1. As shown therein, this system is a very large multi-processing system having a plurality of central processors 10 which are coupled to another plurality of main memory modules 12 by way of memory controller 11 which allows any processor to address any memory module.
More specifically, the present invention resides in I/O system 13 which controls all communication and data transfer between peripheral units 15 and main memory modules 12. It is to be noted in FIG. 1, that there are a plurality of controllers 14 coupled between respective peripheral units 15 and I/O system 13 by way of a plurality of different buses 13a. That is to say, that a given peripheral unit 15 can be accessed by I/O system 13 by way of alternative combinations of buses 13a and controllers 14. As employed in the present application, the term "bus" is one channel of the present invention, the port adapter. Peripheral units 15 may include any type of peripheral device or storage including large disk drives in which are stored the operating systems of the data processing system of FIG. 1 and also critical user data.
I/O system 13 of FIG. 1 is shown in more detail in FIG. 2 and contains a number of different units that interface by way of memory interface controller (MIC) 20 with memory controller 11 of FIG. 1. As shown in FIG. 2, I/O system 13 includes Task Control Processor 21 which handles all process scheduling on respective central processors 10 of FIG. 1 and also keeps track of various events upon which different processes might be waiting. I/O processor 22 performs the bus and controller scheduling function. Data transfer unit 23 is employed to move data between different areas of memory to other areas of memory. Port adapters 24 are the heart of the present invention. They are the bus drivers for the respective buses 13a of FIG. 1 although they may employ different protocols. They perform all the functions referred to above and more fully described below. Interlock timer control 25 distributes interrupts to the various buses and also provides a queue locking mechanism by which it is guaranteed that shared queues (PQ, BQ) are not corrupted by multiple simultaneous access. Task Control Processor 21 is described in detail in the Jennings et al. application U.S. Ser. No. 787,781, now U.S. Pat. No. 4,796,178 filed Oct. 15, 1985 and assigned to the same assignee as the present invention. I/O Processor 22 is described in the Peacock application U.S. Ser. No. 926,568, filed Nov. 4, 1986 and assigned to the same assignee as the present invention.
As has been indicated above, the function of the present invention is to relieve the operating systems and the respective central processor 10, which execute those operating systems, of all I/O operations so that central processors 10 will have more time for the execution of user jobs. When a given central processor 10 is executing a process from one of memory modules 12 and encounters an I/O operation, the corresponding I/O control block is created and the I/O instruction is sent to I/O system 13 by way of memory controller 11 and the processor 10 is released to begin executing the next highest order process from one of memory modules 12. When the I/O operation has been completed, the requesting process is then rescheduled in a priority list of processes for further execution by the next available central processor 10.
Before describing the details of port adapter 24 of FIG. 2, a description will first be given of the data structure linkages or linkages between tables employed by the I/O processor which are illustrated in FIG. 3. The I/O start instruction or ASYNC-SCHEDULE command is received by input message buffer 30 of FIG. 3. In FIG. 3, there is only one such command which consists of four words. The first word contains an operation command and also an indication of the initiating process which in the above-described Jennings et al. application is also referred to as a stack. The second word of the message or instruction contains a device number which identifies the device to be employed by the I/O operation. The third word contains a reference to an I/O control block (IOCB) which is created by a central processor and stored in main memory as will be more fully described below. The fourth word contains the time of the command initiation.
The I/O processor then takes the device number which addresses device table 45 of FIG. 3 which contains an entry for each device in the system. The entry includes the current status of that device and if the device is not available or not in an idle state, then the device control block is stored in a device queue in main memory until the device is idle. The term "device" is employed to mean either a bus 13a of FIG. 1, a controller 14 of FIG. 1, or a peripheral unit 15. If the device is idle, then a reference is obtained to path group table 46 of FIG. 3 which specifies which controllers and associated buses are to be employed to access the device which is normally a peripheral unit. In FIG. 3, the entry in path group table 46 indicates that three controllers can be used. Controllers servicing a unit have equal priority, and the IOP attempts to keep the load seen by each controller well balanced by its path selection algorithm. Buses servicing a controller are listed in the path group entry for that controller in priority order. Once the bus and controller combination for a given device (usually a unit) is determined, reference is made to interlock translation table 25a of interlock timer control unit 25 of FIG. 2. The proper path queue is locked via ITC. The control block is enqueued into the path queue. The path queue is unlocked and the I/O bus in a port adapter is interrupted, again via the ITC. The ITC makes a reference to interlock translation table 25a to select a port adapter to interrupt. This reference comprises a requester number indicating which of the units in FIG. 2 are requesting access to memory interface controller 20 of FIG. 2. The requester number is referred to as "CARD" number and indicates which port adapter 24 of FIG. 2 is required for servicing the selected device. Interlock translation table 25a in FIG. 3 then sends a Service Vector Interrupt (SVI) address to the selected port adapter which sets a bit in the SVI input register that in turn tells the port adapter which controller has been selected. The port adapter makes a reference to path queue 62 which contains a Q header pointing to the control blocks for the selected bus or controller. These control blocks or parts of them are passed on to the selected controller and so forth until the I/O operation is complete, in which case they are passed back to memory. When the I/O operation has been finished, the control blocks are passed back to main memory and task control processor 21 of FIG. 2 reschedules the requesting process.
DETAILED DESCRIPTION OF THE INVENTION
Port adapters 24 in FIG. 2 are shown in more detail in FIG. 4. As shown therein, a queue service table address is received by Interlocker Interface Control (IIC) 50 and stored in Service Vector Interrupt table 65. Micro sequencer and condition multiplexers 51 are then signaled to handle this system interrupt. The SVI address from Service Vector Interrupt register 65 is then sent to ALU 54 where it is multiplied by 4 to actually address the queue service table which is in local memory 55 as will be further discussed below in regard to FIG. 6. That is to say, each entry in the queue service table contains 4 words which identify the respective controller and is used with the queue identity to form a queue header and thus address the corresponding I/O control block in main memory that will be more fully described below in relation to FIGS. 5A-D. This then causes that control block to be fetched from memory to read register 58b from which it is transferred to a port adapter entry in local memory 55. All of these actions are under the control of micro-code memory 52 which is driven by micro sequencer and condition multiplexer 57.
The control signals from micro-code memory 52 control all operations in the port adapter by way of pipeline register 53 which supplies the respective control signals to the other units of the port adapter each of which units has its own controller. Pipeline register 53 is so called as it executes a micro-code instruction at the same time that micro-sequencer 57 is addressing micro-code memory 52 for the next micro-code fetch.
It will be noted in FIG. 4 that there are two channels for driving two buses at the Message Level Interface level (MLI) and the principal action of the port adapter is to receive information segments from main memory by MIC interface control 58 for transfer to the selected controller 14 of FIG. 1 by one of the two channels either channel 56 or channel 57 and also to receive information segments from the respective selected controllers by channels 56 and 57 for transfer to main memory by MIC interface control 58. Both channel 56 and channel 57 are provided with "packing" registers 56b and 57b to form six byte messages, called words, from the two byte segments transferred between the port adapter and the MLI.
When the PA is finished transferring data information between the control 15 of FIG. 1 and the memory 12 of FIG. 1, it awaits the result from the control. Once the result is received from the control, the PA verifies for the correctness of the operation. If there are no exceptions, the PA updates the IOCB in the main memory to reflect the current state of the I/O. The IOCB reflects a new memory address where the data transfer ended in the main memory. It also reflects the number of bytes the port adapter transferred between the unit 15 of FIG. 1 and the memory 12 of FIG. 1.
FIG. 5A is a diagram of a table in main memory of device sections, one for each device in the system where, as was mentioned above, the device may be one of the I/O buses 13a of FIG. 1 (or more particularly one bus of the port adapters 24 of FIG. 2 which drive the corresponding bus), one of controllers 14 of FIG. 1 or one of peripheral units 15 of FIG. 1. As indicated in FIG. 5A, there may be up to 128 I/O buses, up to 512 (less the number of I/O buses) controllers with the remaining devices being peripheral units up to 4,096 less the number of I/O buses and controllers.
Each device section includes two queue headers which contain pointers or memory addresses to different I/O control blocks (IOCB),there being one such block for each operation currently being performed by a device in the system. The general format of each queue header is illustrated in FIG. 5B. In FIG. 5B, the queue header is made up of a four control words. The first word contains control and status information. The second word is a pointer or an address to main memory at the beginning of the first I/O control block for that particular device. The third word is a pointer or address to main memory of the last or most recent I/O control block so that these two pointers indicate the beginning and the end of a particular queue of linked together control blocks for different jobs or tasks that have been requested of the device in question. This will be more thoroughly described in relation to FIG. 5D.
Finishing the description of FIG. 5A, the I/O bus device areas include a bus queue header into which operators for controlling the corresponding I/O bus in the port adapter are enqueued. These device areas also include a queue header for controlling the transfer of the results of the device operation from the port adapter 24 back to the IOP 22 in FIG. 2. Each of the controller device sections includes a path queue header which is used by the port adapter to fetch the corresponding control block from the memory. The controller command is then extracted from the control block and sent to the selected controller. The unit queue header points to the control blocks which are pending for a unit.
Turning now to FIG. 5D, the queuing mechanism for linking together of control blocks for different jobs or tasks requested on the particular controller is shown. As was indicated above, most of the requests for devices are requests for peripheral units 15 of FIG. 1 and there is an I/O control block for each job or task that has been requested of the respective device. The controller 14 of FIG. 1 generally can service more than one peripheral unit 15 of FIG. 1.
When an input message comes into input message buffer 30 of FIG. 3, it specifies the device number and also a reference or memory address to the particular control block for the job to be performed on that device. The IOP performs the path selection and links the IOCB into the selected controller's path queue. The port adapter servicing that controller is then interrupted via the ITC mechanism already described. As additional particular requests for different units which can be serviced by one controller come in, then the second requested control block address is inserted as the next link memory address in the head I/O control block and also in the tail pointer of the particular device queue header, as illustrated in FIG. 5D. When the port adapter is ready to service the head control block, it delinks the head control block by inserting the next link memory address of the head control block in the head pointer of the controller queue header and then zeroing it to reflect that the I/O of the control block is in progress.
FIG. 6 is a diagram illustrating the organization of local memory 55 of FIG. 4. Shown therein, the first 512 entries (0-511) contain both channel and controller information which, as was described above, is used with a queue identify to form a reference to a queue header which in turn addresses a respective I/O control block. These entries constitute Queue Service Table (QST) 64 of FIG. 3. The last set of entries (2032-4088) are in In-Progress Operation Table (IPOT) 67 which contains I/O control blocks that are currently in progress not only for the port adapter but for each I/O device being serviced by the port adapter. The middle table 66 contains various constants and variables as well as a scratch pad area and fault buffers for use by the port adapter.
Operation
The operation of the port adapter of the present invention has been generally described above in relation to FIG. 3. A particular feature of the present invention is that the two channels at the message level interface can be operated for doing data transfer simultaneously under control of one micro-code sequencer which handles all aspects of the control state on interface.
The method which allows the sequencer to simultaneously execute control algorithmns on both channels takes advantage of the fact that the respective algorithms involved contain numerous wait states, for example, wait for interrupts, wait for channels to exit a burst mode of data transfer or wait for a controller strobe. The sequencer is designed such that it has a four word deep stack (called the immediate stack) and the capability to put the next address on a remote stack (maintained in the local memory). This is implemented in an array in the sequencer. In addition, there are two channel enable flip flops, one for each channel, which are called channel 1 enable and channel 2 enable respectively. Each channel has the micro-code control signals gated with the output of the proper channel enable flip flop in the respective channel control. Only one of the channel enable flip flops is set at any given time and only the code being applicable to that channel is being executed by the sequencer. FIG. 7 is a flow chart of this method.
In FIG. 7, if the port adapter receives an interrupt, for example, from channel one, the sequencer sets the channel one enable flip flop. It then proceeds with the execution of the micro-code which services this interrupt. Somewhere during the execution of this code, the sequencer encounters a wait instruction and jumps to the appropriate IDLE-WAIT routine. In this routine, the sequencer first determines the number of the channel it is servicing from the channel enable flip flop. Next, the micro-code instruction following the wait instruction, is pushed on the appropriate channels remote stack. The sequencer then proceeds with the updating of an Interrupt State Word (ISW) which indicates whether or not the events for which each channel is waiting on exist. A bit which corresponds to the IDLE-WAIT routine is set in the wait for event field of the channel currently being serviced. Next, the wait for event field of both channels is monitored to determine the proper IDLE loop, after which the sequencer awaits for the proper events to happen. When a wait for event occurs, the sequencer sets that channel's enable flip flop, pops the microcode instruction from its remote stock and continues with the micro-code execution.
Epilogue
A port adapter has been described above for an I/O system for a large data processing system. The port adapter is coupled to an I/O processor of that system and also to main memory of the system so that when the port adapter is selected by a system interrupt message from I/O processor, it can begin and carry on its data transmission between a selected peripheral device and main memory without further assistance.
While one embodiment of the present invention has been disclosed, it will be apparent to one skilled in the art that variations and modification may be made therein without departing from the spirit and scope of the invention as claimed.

Claims (6)

What is claimed is:
1. In a data processing system having a memory, a plurality of peripheral devices and an I/O system coupled to said memory and to said peripheral devices for controlling the transfer of data therebetween, the improvement comprising a port adaptor within said I/O system for transmitting data between said memory and said peripheral devices, said port adaptor comprising:
memory interface means coupled to said memory; first and second channels coupled between said memory interface means and said peripheral devices, each channel being coupled to a different peripheral device; and
control means including a control store for storing control sequences and sequencing means responsive to said control sequences for controlling and performing said data transfers between said memory interface means and said channel means, said sequencing means permitting only one channel to operate at a time using a control sequence applicable to the currently operable channel;
said control store containing control sequences applicable to respective ones of said channels wherein respective control sequences applicable to said channels include wait periods occurring during data transfer operations which the respective channel waits on until the happening of one or more events,
said control means being responsive to system interrupt messages from said I/O system for providing concurrent data transfers between said memory interface means and selected peripheral devices via said channels by providing for switching operation from one channel to the other in response to encountering a wait period during the performance of a data transfer operation for said one channel,
said sequencing means operating in response to the occurrence of a wait period encountered while performing a control sequence for one channel to alternate its operation to the performance of a control sequence for the other channel, whereby said sequencing means can provide concurrent data transfer operations for said channels to different peripheral devices.
2. The invention in accordance with claim 1, wherein said control means includes means for storing an indication of the location within a control sequence at which an alternation to the other channel occurred.
3. The invention in accordance with claim 2, wherein said control means employs said indication to resume the respective data transfer operation for said one channel when an alternation back to said one channel occurs.
4. The invention in accordance with claim 1, wherein said control means includes means responsive to an address included within a system interrupt message for use in selecting a peripheral device for data transfer.
5. The invention in accordance with claim 4, wherein said port adaptor includes a local memory for receiving control blocks of information from said memory for each peripheral device being serviced thereby.
6. The invention in accordance with claim 5, wherein said port adaptor addresses said control blocks from said memory in response to said address.
US07/328,807 1987-04-13 1989-03-23 Port adapter system including a controller for switching channels upon encountering a wait period of data transfer Expired - Lifetime US5070477A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US07/328,807 US5070477A (en) 1987-04-13 1989-03-23 Port adapter system including a controller for switching channels upon encountering a wait period of data transfer

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US3767087A 1987-04-13 1987-04-13
US07/328,807 US5070477A (en) 1987-04-13 1989-03-23 Port adapter system including a controller for switching channels upon encountering a wait period of data transfer

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US3767087A Continuation 1987-04-13 1987-04-13

Publications (1)

Publication Number Publication Date
US5070477A true US5070477A (en) 1991-12-03

Family

ID=26714366

Family Applications (1)

Application Number Title Priority Date Filing Date
US07/328,807 Expired - Lifetime US5070477A (en) 1987-04-13 1989-03-23 Port adapter system including a controller for switching channels upon encountering a wait period of data transfer

Country Status (1)

Country Link
US (1) US5070477A (en)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5313589A (en) * 1991-05-15 1994-05-17 Ibm Corporation Low level device interface for direct access storage device including minimum functions and enabling high data rate performance
WO1994011802A1 (en) * 1992-11-12 1994-05-26 New Media Corporation Reconfigureable interface between a computer and peripheral devices
US5335327A (en) * 1988-10-12 1994-08-02 Hitachi, Ltd. External memory control techniques with multiprocessors improving the throughput of data between a hierarchically upper processing unit and an external memory with efficient use of a cache memory
US5386514A (en) * 1992-04-16 1995-01-31 Digital Equipment Corporation Queue apparatus and mechanics for a communications interface architecture
US5548791A (en) * 1994-07-25 1996-08-20 International Business Machines Corporation Input/output control system with plural channel paths to I/O devices
US5781784A (en) * 1992-07-09 1998-07-14 Zilog, Inc. Dynamic power management of solid state memories
US5872961A (en) * 1991-05-29 1999-02-16 Nec Corporation Microcomputer allowing external monitoring of internal resources
US6304910B1 (en) * 1997-09-24 2001-10-16 Emulex Corporation Communication processor having buffer list modifier control bits
US20030105987A1 (en) * 2001-11-30 2003-06-05 Gilbert Gary L. Automatic system control failover
US20090292950A1 (en) * 2008-05-20 2009-11-26 Inventec Corporation Method for making test fixture

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3675209A (en) * 1970-02-06 1972-07-04 Burroughs Corp Autonomous multiple-path input/output control system
US3916380A (en) * 1974-11-06 1975-10-28 Nasa Multi-computer multiple data path hardware exchange system
US4387440A (en) * 1980-03-03 1983-06-07 Eaton Michael D Modem control device code multiplexing
US4394734A (en) * 1980-12-29 1983-07-19 International Business Machines Corp. Programmable peripheral processing controller
US4602331A (en) * 1983-06-30 1986-07-22 Burroughs Corporation Magnetic tape-data link processor providing automatic data transfer
US4630232A (en) * 1982-06-08 1986-12-16 Burroughs Corporation Read write system for multiple line adapter organization
US4747047A (en) * 1985-12-06 1988-05-24 Unisys Corporation Data transfer system using two peripheral controllers to access dual-ported data storage units
US4750107A (en) * 1985-01-07 1988-06-07 Unisys Corporation Printer-tape data link processor with DMA slave controller which automatically switches between dual output control data chomels

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3675209A (en) * 1970-02-06 1972-07-04 Burroughs Corp Autonomous multiple-path input/output control system
US3916380A (en) * 1974-11-06 1975-10-28 Nasa Multi-computer multiple data path hardware exchange system
US4387440A (en) * 1980-03-03 1983-06-07 Eaton Michael D Modem control device code multiplexing
US4387440B1 (en) * 1980-03-03 1986-04-08
US4394734A (en) * 1980-12-29 1983-07-19 International Business Machines Corp. Programmable peripheral processing controller
US4630232A (en) * 1982-06-08 1986-12-16 Burroughs Corporation Read write system for multiple line adapter organization
US4602331A (en) * 1983-06-30 1986-07-22 Burroughs Corporation Magnetic tape-data link processor providing automatic data transfer
US4750107A (en) * 1985-01-07 1988-06-07 Unisys Corporation Printer-tape data link processor with DMA slave controller which automatically switches between dual output control data chomels
US4747047A (en) * 1985-12-06 1988-05-24 Unisys Corporation Data transfer system using two peripheral controllers to access dual-ported data storage units

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5335327A (en) * 1988-10-12 1994-08-02 Hitachi, Ltd. External memory control techniques with multiprocessors improving the throughput of data between a hierarchically upper processing unit and an external memory with efficient use of a cache memory
US5313589A (en) * 1991-05-15 1994-05-17 Ibm Corporation Low level device interface for direct access storage device including minimum functions and enabling high data rate performance
US5872961A (en) * 1991-05-29 1999-02-16 Nec Corporation Microcomputer allowing external monitoring of internal resources
US5386514A (en) * 1992-04-16 1995-01-31 Digital Equipment Corporation Queue apparatus and mechanics for a communications interface architecture
US5781784A (en) * 1992-07-09 1998-07-14 Zilog, Inc. Dynamic power management of solid state memories
WO1994011802A1 (en) * 1992-11-12 1994-05-26 New Media Corporation Reconfigureable interface between a computer and peripheral devices
US5615344A (en) * 1992-11-12 1997-03-25 New Media Corp. Apparatus used to interface a peripheral device to a computer employing a reconfigurable interface circuit
US5548791A (en) * 1994-07-25 1996-08-20 International Business Machines Corporation Input/output control system with plural channel paths to I/O devices
US6304910B1 (en) * 1997-09-24 2001-10-16 Emulex Corporation Communication processor having buffer list modifier control bits
US20030105987A1 (en) * 2001-11-30 2003-06-05 Gilbert Gary L. Automatic system control failover
US6901531B2 (en) * 2001-11-30 2005-05-31 Sun Microsystems, Inc. Automatic system control failover
US20090292950A1 (en) * 2008-05-20 2009-11-26 Inventec Corporation Method for making test fixture

Similar Documents

Publication Publication Date Title
US5940612A (en) System and method for queuing of tasks in a multiprocessing system
US4060849A (en) Data input and output controller
US4394725A (en) Apparatus and method for transferring information units between processes in a multiprocessing system
EP0106669B1 (en) Operating system supervisor
US5924097A (en) Balanced input/output task management for use in multiprocessor transaction processing system
US4901232A (en) I/O controller for controlling the sequencing of execution of I/O commands and for permitting modification of I/O controller operation by a host processor
US4123795A (en) Control system for a stored program multiprocessor computer
US4316245A (en) Apparatus and method for semaphore initialization in a multiprocessing computer system for process synchronization
EP0426323B1 (en) Portable, resource sharing file server using co-routines
EP0384635B1 (en) Adaptive job scheduling for multiprocessing systems
EP0506278B1 (en) Device driver system having generic operating system interface
US3916383A (en) Multi-processor data processing system
US4374409A (en) Method of and system using P and V instructions on semaphores for transferring data among processes in a multiprocessing system
US4939644A (en) Input/output controller for controlling the sequencing of the execution of input/output commands in a data processing system
US5448702A (en) Adapters with descriptor queue management capability
EP0110792B1 (en) Control arrangement for data processing system employing multiple processors
US4447874A (en) Apparatus and method for communication of information between processes in an information system
NZ236764A (en) Data transfer: task priority allocation
EP0335514A2 (en) Exception reporting mechanism for a vector processor
US4821172A (en) Apparatus for controlling data transfer between storages
US5070477A (en) Port adapter system including a controller for switching channels upon encountering a wait period of data transfer
EP0645715A1 (en) System and method for processing store instructions
US4079448A (en) Apparatus for synchronizing tasks on peripheral devices
US5507032A (en) Multiprocessor I/O request control system forming device drive queue and processor interrupt queue from rows and cells of I/O request table and interrupt request table
US6523138B1 (en) Input/output processing system

Legal Events

Date Code Title Description
STCF Information on status: patent grant

Free format text: PATENTED CASE

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

FPAY Fee payment

Year of fee payment: 12

REMI Maintenance fee reminder mailed
AS Assignment

Owner name: DEUTSCHE BANK TRUST COMPANY AMERICAS, AS COLLATERA

Free format text: PATENT SECURITY AGREEMENT (PRIORITY LIEN);ASSIGNOR:UNISYS CORPORATION;REEL/FRAME:023355/0001

Effective date: 20090731

AS Assignment

Owner name: DEUTSCHE BANK TRUST COMPANY AMERICAS, AS COLLATERA

Free format text: PATENT SECURITY AGREEMENT (JUNIOR LIEN);ASSIGNOR:UNISYS CORPORATION;REEL/FRAME:023364/0098

Effective date: 20090731