System for coordinating execution of multiple concurrent channel programs without host processor involvement using suspend and resume commands to control data transfer between I/O devices
First Claim
1. A data processing system for coupling execution of channel programs which control data transfer between input/output devices, the data processing system comprising:
- a buffer;
means for generating a pair of channel programs having a plurality of channel command words with operands;
channel subsystem means connected to the input/output devices and to the main storage for executing the channel programs to transfer data between input/output devices and the buffer;
the channel programs having corresponding segments referencing the buffer;
means for issuing start subchannel instructions to initiate execution of the pair of channel programs;
means responsive to a write channel command from a channel program becoming current for determining if the buffer has been filled by a read operation from another channel program;
means responsive to determination that the buffer has not been filled for suspending execution of the channel program having the current write channel command;
means responsive to filling of the buffer for issuing a resume instruction to a subchannel; and
wherein the means for suspending execution includes;
suspend channel command words in a channel program; and
means for tracking the number of resume commands issued from one channel program less the number of suspend commands encountered for another channel program for indicating if the buffer area is filled.
1 Assignment
0 Petitions
Accused Products
Abstract
Coupling execution of channel programs without central processing unit supervision controls data transfer between input/output devices through a main storage of a data processing system. In one embodiment, channel programs to be coupled are generated by a program running on a data processing system central processing unit. The channel program on the input subchannel includes channel commands referencing the output subchannel and operating to cause resumption of the output subchannel. The channel program on the output subchannel includes suspend channel commands directed to itself which correspond to the resume channel commands in the channel program on the input subchannel. In alternative embodiments values in channel commands can change values in, or reference, control blocks to effect execution of other channel programs.
-
Citations
36 Claims
-
1. A data processing system for coupling execution of channel programs which control data transfer between input/output devices, the data processing system comprising:
-
a buffer; means for generating a pair of channel programs having a plurality of channel command words with operands; channel subsystem means connected to the input/output devices and to the main storage for executing the channel programs to transfer data between input/output devices and the buffer; the channel programs having corresponding segments referencing the buffer; means for issuing start subchannel instructions to initiate execution of the pair of channel programs; means responsive to a write channel command from a channel program becoming current for determining if the buffer has been filled by a read operation from another channel program; means responsive to determination that the buffer has not been filled for suspending execution of the channel program having the current write channel command; means responsive to filling of the buffer for issuing a resume instruction to a subchannel; and wherein the means for suspending execution includes; suspend channel command words in a channel program; and means for tracking the number of resume commands issued from one channel program less the number of suspend commands encountered for another channel program for indicating if the buffer area is filled. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A data processing system for coupling execution of channel programs which control data transfer between input/output devices, the data processing system comprising:
-
a buffer; means for generating a pair of channel programs having a plurality of channel command words with operands; channel subsystem means connected to the input/output devices and to the main storage for executing the channel programs to transfer data between input/output devices and the buffer; the channel programs having corresponding segments referencing the buffer; means for issuing start subchannel instructions to initiate execution of the pair of channel programs; means responsive to a write channel command from a channel program becoming current for determining if the buffer has been filled by a read operation from another channel program; and means responsive to determination that the buffer has not been filled for suspending execution of the channel program having the current write channel command, wherein the means for determining further comprises; means for issuing a resume command to a channel program from the remaining channel program; and means for tracking the number of resume commands issued less the number of suspending steps encountered by the remaining channel program to determine if execution is to be suspended. - View Dependent Claims (7)
-
-
8. A data processing system for coupling execution of channel programs which control data transfer between input/output devices, the data processing system comprising:
-
a buffer; means for generating a pair of channel programs having a plurality of channel command words with operands; channel subsystem means connected to the input/output devices and to the main storage for executing the channel programs to transfer data between input/output devices and the buffer; the channel programs having corresponding segments referencing the buffer; means for issuing start subchannel instructions to initiate execution of the pair of channel programs; means responsive to a write channel command from a channel program becoming current for determining if the buffer has been filled by a read operation from another channel program; means responsive to determination that the buffer has not been filled for suspending execution of the channel program having the current write channel command; means for executing a synchronization channel program; and the means responsive to a channel command word in a channel program referencing the buffer becoming current for determining if a corresponding resume has been issued is a status monitoring segment of a synchronization channel program; the means responsive to determination that the corresponding resume has not been issued for suspending execution of the channel program is a suspend instruction issued from the synchronization channel program; and the means responsive to filling a buffer by execution of channel command word in the read channel program for initiating resumption of execution of the write channel program is a resume subchannel instruction issued by the synchronization channel program.
-
-
9. A data processing system for coupling channel programs for input and output operations, substantially without real time central processing unit involvement, comprising:
-
means for generating a channel program for an input operation on a first subchannel, the channel program having a resume channel command referencing a second subchannel; means for generating a channel program for an output operation on the second subchannel, the channel program having a suspend channel command; means for issuing a start instruction to the first subchannel; means responsive to the start instruction for executing the channel program for the input operation; means responsive to execution of a resume channel command for beginning execution of the channel program for the output operation; means for suspending execution of the channel program for the output operation upon encountering the suspend channel command; the channel program for input operations having a plurality of resume channel commands referencing the second subchannel; the channel program for the output operation having a suspend channel command corresponding to each resume channel command referencing the second subchannel; and the means for suspending the channel program for the output operation being responsive encountering a suspend channel command only if the resume channel command corresponding to the suspend channel command has not been executed. - View Dependent Claims (10, 11)
-
-
12. A data processing system comprising:
-
a main storage; means for generating channel programs having a plurality of channel command words with operands; a plurality of input/output devices; a channel subsystem connected to the plurality of input/output devices having a plurality of subchannels for executing the channel programs to transfer data between input/output devices and a buffer area in the main storage; bus means for carrying data and instructions between the central processing unit, the main storage and the channel subsystem; means for inserting channel command word operands into the main storage; and means for performing comparisons between the channel command word operands in the main storage and other channel command word operands; a status indication in the main storage for each buffer area indicating the buffer area as empty, as full, or as in use; and the means for performing comparisons including an operation command in the channel programs for comparing a channel command word operand to the status indication, wherein the means for performing the comparisons is positioned at the beginning of a segment of the channel program and further includes means responsive to a negative outcome of the comparison for suspending execution of the channel program; means for identifying a reference subchannel in a subchannel information block for a first subchannel; and means for issuing a resume subchannel instruction to the reference subchannel identified in the subchannel information block, wherein the means for inserting designated channel command word operands into selected locations of the main storage further comprise; concluding operation means for a segment for placing the operand into the status indication of a buffer area. - View Dependent Claims (13, 14, 15, 16, 17)
-
-
18. A method of coupling execution of channel programs on subchannels for a data processing system, the method comprising the steps of:
-
generating a plurality of channel programs for execution by a plurality of subchannels, each of the channel programs having at least a first command for conditional suspension or resumption; issuing a start channel instruction to initiate execution of the channel programs by the subchannels; responsive to a command for conditional suspension, suspending a target channel program containing the command for conditional suspension if no corresponding command for resumption has been received; and responsive to a resume channel instruction sent to the target subchannel from a first subchannel, resuming execution of the target subchannel; defining a buffer area within the main storage for data being transferred between input/output devices; indicating status for the buffer area through the main storage as empty, full, or in use; including compare operations in the channel programs for comparison of an operand against the buffer area status; conditionally suspending a channel program subject to the result of the step of comparing; prior to or contemporaneous with the step of resuming, changing the buffer area status; executing within a segment of a channel program at least a first channel command word for an input or output operation; referencing a subchannel in a subchannel information block for the first subchannel; issuing a resume channel instruction to the referenced subchannel from the first subchannel, wherein channel programs include read channel programs and write channel programs, with the write channel programs being suspended with the comparison step when the buffer status is empty and the read channel programs being suspended when the buffer status is full. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25)
-
-
26. A method of coupling execution of channel programs for controlling data transfer between input/output devices through a main storage of a data processing system, wherein an input or an output operation between the main storage and an input/output device is controlled by executing a channel program, the method comprising the steps of:
-
generating a pair of channel programs for execution on a channel subsystem for controlling transfer of data to and from the main storage, each of the channel programs having corresponding segments referencing a buffer within the main storage; issuing a start channel instruction to initiate execution of the channel programs; filling the buffer upon execution of read channel command word in a channel program; responsive to a write channel command word referencing the buffer becoming current, determining if the buffer has been filled; if the buffer has not been filled, suspending execution of the channel program in which the write channel command occurred; issuing a resume command to a channel program from the remaining channel program; and tracking the number of resume commands issued less the number of suspending steps encountered by the remaining channel program to determine if execution is to be suspended. - View Dependent Claims (27, 28, 29, 30, 31, 32, 33)
-
-
34. A method for coupling channel programs for input and output operations substantially without real time central processing unit involvement, the method comprising the steps of:
-
generating for a first subchannel a first channel program having a resume channel command referencing a second subchannel; generating for the second subchannel a second channel program having a suspend channel command; issuing a start instruction to the first and second subchannels; responsive to the start instruction, beginning execution of the first and second channel programs; suspending execution of the second channel program upon encountering the suspend channel command; responsive to the execution of the resume channel command, issuing a resume instruction to the second subchannel from the first subchannel causing the second channel program to resume execution; the first channel program having a plurality of resume channel commands referencing the second subchannel; the second channel program having a suspend channel command corresponding to each resume channel command referencing the second subchannel in the first channel program; and the step of suspending the second channel program upon encountering a suspend channel command being effective only if the resume channel command corresponding to the suspend channel command has not been executed. - View Dependent Claims (35, 36)
-
Specification