System architecture for improved network input/output processing
First Claim
1. In a computer system processing communications input/output requests for receiving network input data from, and sending network output data to, a plurality of communications networks coupled to the computer system by network interfaces, and for initializing, resetting, and terminating the usage of the network interfaces, network input data from the communications networks being transferred in network input messages, network output data to the communications networks being transferred in network output messages, and status being reported in input/output status messages, an input/output system for processing communications input/output requests comprising:
- instruction processor means for executing computer program instructions;
network input/output processing means coupled to said instruction processor means and the communications networks for accepting communications input/output requests from said instruction processor means, and receiving network input data from and sending network output data to the communications networks, including;
network input/output means coupled to said instruction processor means for processing communications input/output requests received from said instruction processor means to send network output messages and receive network input messages over the network interface; and
network interface controller means coupled to said network input/output means and the communications networks for controlling the network interface to receive network input messages from the communications networks and to forward the network input messages to said network input/output means, and to accept network output messages from said network input/output means and send the network output messages to the communications networks; and
storage means coupled to said instruction processor means and said network input/output processing means for storing the network input messages, the network output messages, and the computer program instructions.
10 Assignments
0 Petitions
Accused Products
Abstract
A network input/output processing system for sending and receiving messages between a large scale computer system and associated communications networks. Executive operating system services provide access to a control table, an input queue, and an output queue stored in the computer system'"'"'s main memory. A network input/output processor responds to requests by application programs, through a communications program, for receiving input from and sending output to a network, concurrently with requests to communicate with directly attached peripheral devices such as disk drives, tape drives, and printers. The network input/output processor receives initialization, reset, and termination requests via the control table. Requests to receive input are received from the input queue. Input data is stored into buffers as directed by the input request. Requests to send output are received from the output queue. Output data is read from the buffers as directed by the output request. Executive operating system services provide for control of input data transfers and output data transfers. Special purpose Instruction Processor instructions provide the capability to build control programs for processing input and output messages used by the network input/output processor to effect message transfers, thereby minimizing host instruction pathlength for communications I/O. The system architecture minimizes internal data copy between processes by using transferable buffers as communications buffers.
-
Citations
34 Claims
-
1. In a computer system processing communications input/output requests for receiving network input data from, and sending network output data to, a plurality of communications networks coupled to the computer system by network interfaces, and for initializing, resetting, and terminating the usage of the network interfaces, network input data from the communications networks being transferred in network input messages, network output data to the communications networks being transferred in network output messages, and status being reported in input/output status messages, an input/output system for processing communications input/output requests comprising:
-
instruction processor means for executing computer program instructions; network input/output processing means coupled to said instruction processor means and the communications networks for accepting communications input/output requests from said instruction processor means, and receiving network input data from and sending network output data to the communications networks, including; network input/output means coupled to said instruction processor means for processing communications input/output requests received from said instruction processor means to send network output messages and receive network input messages over the network interface; and network interface controller means coupled to said network input/output means and the communications networks for controlling the network interface to receive network input messages from the communications networks and to forward the network input messages to said network input/output means, and to accept network output messages from said network input/output means and send the network output messages to the communications networks; and storage means coupled to said instruction processor means and said network input/output processing means for storing the network input messages, the network output messages, and the computer program instructions. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. In a computer system having at least one instruction processor for executing computer program instructions fetched from a main storage unit, and having input/output requests far obtaining input data and sending output data, the input/output requests being either communications input/output requests or peripheral device input/output requests, communications input/output requests being for receiving network input data from, and sending network output data to, a plurality of communications networks coupled to the computer system, peripheral device input/output requests being for receiving peripheral input data from, and sending peripheral output data to, a plurality of attached peripheral devices coupled to the computer system, network input data from the communications networks being transferred in network input messages, network output data to the communications networks being transferred in network output messages, peripheral input data from the attached peripheral devices being transferred in peripheral input messages, a network input/output processor for processing requests for receiving input data from, and sending output data to, the plurality of communications networks and the plurality of peripheral devices, comprising:
-
network input/output means coupled to the at least one instruction processor and the main storage unit for processing communications input/output requests received from the at least one instruction processor to send network output messages and receive network input messages; network interface controller means coupled to said network input/output means and the communications networks for controlling a network interface to receive network input messages from the communications networks and to forward the network input messages to said network input/output means, and to accept network output messages from said network input/output means and to send the network output messages to the communications networks; channel input/output means coupled to the at least one instruction processor and the main storage unit for processing peripheral device input/output requests received from the at least one instruction processor to send peripheral output data and receive peripheral input messages; and channel adapter means coupled to said channel input/output means and the peripheral devices for receiving peripheral input messages from the peripheral devices and forwarding the peripheral input messages to said channel input/output means, and for accepting peripheral output data received from said channel input/output means and sending the peripheral output data to the peripheral devices. - View Dependent Claims (12)
-
-
13. In a computer system having input/output requests for obtaining input data and sending output data, the input/output requests being either communications input/output requests or peripheral device input/output requests, communications input/output requests being for receiving network input data from, and sending network output data to, a plurality of communications networks coupled to the computer system by network interfaces, and for initializing, resetting, and terminating usage of network interfaces, peripheral device input/output requests being for receiving peripheral input data from, and sending peripheral output data to, a plurality of attached peripheral devices coupled to the computer system, network input data from the communications networks being transferred in network input messages, network output data to the communications networks being transferred in network output messages, peripheral input data from the attached peripheral devices being transferred in peripheral input messages, and status being reported in input/output status messages, an input/output system for processing input/output requests comprising:
-
instruction processor means for executing computer program instructions; network input/output processing means coupled to said instruction processor means, the communications networks, and the attached peripheral devices for accepting input/output requests from said instruction processor means, and receiving input data from and sending output data to the communications networks and the attached peripheral devices, including; network input/output means coupled to said instruction processor means for processing communications input/output requests received from said instruction processor means to send network output messages and receive network input messages over the network interface; network interface controller means coupled to said network input/output means and the communications networks for controlling the network interface to receive network input messages from the communications networks and to forward the network input messages to said network input/output means, and to accept network output messages from said network input/output means and send the network output messages to the communications networks; channel input/output means coupled to said instruction processor means for processing peripheral device input/output requests received from said instruction processor means to send peripheral output data and receive peripheral input messages; and channel adapter means coupled to said channel input/output means and the attached peripheral devices for receiving peripheral input messages from the attached peripheral devices and forwarding the peripheral input messages to said channel input/output means, and for accepting peripheral output data received from said channel input/output means and sending the peripheral output messages to the attached peripheral devices; and storage means coupled to said instruction processor means and said network input/output processing means for storing the network input messages, the network output messages, the peripheral input data, the peripheral output data, and the computer program instructions. - View Dependent Claims (14, 15, 16, 17, 18)
-
-
19. In a computer system having input/output requests for obtaining input data and sending output data, the input/output requests being either communications input/output requests or peripheral device input/output requests, communications input/output requests being for receiving network input data from, and sending network output data to, a plurality of communications networks coupled to the computer system by network interfaces and for initializing, resetting, and terminating usage of network interfaces, peripheral device input/output requests being for receiving peripheral input data from and sending peripheral output data to a plurality of attached peripheral devices coupled to the computer system, network input data from the communications networks being transferred in network input messages, network output data to the communications networks being transferred in network output messages, peripheral input data from the attached peripheral devices being transferred in peripheral input messages, and status being reported in input/output status messages, an input/output system for processing input/output requests comprising:
-
instruction processor means for executing computer program instructions, said instruction processor means including application software means for processing user application computer programs; communications software means coupled to said application software means for managing requests from said application software means to obtain network input data from the communications networks and send network output data to the communications networks; and executive software means coupled to said application software means and said communications software means for processing communications input/output requests from said communications software means to obtain network input messages from and to send network output messages to the communications networks, and for processing peripheral input/output requests from said application software means to obtain peripheral input messages from the attached peripheral devices and to send peripheral output data to the attached peripheral devices; programmable network input/output processor means coupled to said instruction processor means, the communications networks, and the attached peripheral devices for accepting input/output requests from said instruction processor means, and receiving input data from and sending output data to the communications networks and the attached peripheral devices, said programmable network input/output processor means including network input/output means coupled to the at least one instruction processor for processing communications input/output requests received from said at least one instruction processor to send network output messages and receive network input messages; network interface controller means coupled to said network input/output means and the communications networks for controlling a network interface to receive network input messages from the communications networks and to forward the network input messages to said network input/output means, and to accept network output messages from said network input/output means and send the network output messages to the communications networks; channel input/output means coupled to said instruction processor means for processing peripheral device input/output requests received from said instruction processor means to send peripheral output data and receive peripheral input messages; and channel adapter means coupled to said channel input/output means and the attached peripheral devices for receiving peripheral input messages from the attached peripheral devices and forwarding the peripheral input messages to said channel input/output means, and for accepting peripheral output messages received from said channel input/output means and sending the peripheral output messages to the attached peripheral devices; and a main storage unit coupled to said instruction processor means and said programmable network input/output processor means for storing the network input messages, the network output messages, the peripheral input data, the peripheral output data, and the computer program instructions;
said main storage unit includinga control table for storing initialization, reset, and termination communications input/output requests being sent from said instruction processor means to said programmable network input/output processor means, and for storing input/output request status messages being sent from said programmable network input/output processor means to said instruction processor means; at least one network input queue for controlling the storage of network input messages received from said network input/output processing means; at least one network output queue for controlling the sending of network output messages received from said instruction processor means; and a plurality of data buffers for storing network input data and network output data which are directly accessible by said programmable network input/output processor means and said application software means, said communications software means, and said executive software means. - View Dependent Claims (20, 21)
-
-
22. In a computer system having at least one instruction processor for executing computer program instructions fetched from a main storage unit, and having input/output requests for performing input/output operations, the input/output requests being either communications input/output requests or peripheral device input/output requests, communications input/output requests being for receiving network input data from, and sending network output data to, a plurality of communications networks coupled to the computer system by network interfaces, peripheral device input/output requests being for receiving peripheral input data from, and sending peripheral output data to, a plurality of attached peripheral devices coupled to the computer system, network input data from the communications networks being transferred in network input messages, network output data to the communications networks being transferred in network output messages, peripheral input data from the attached peripheral devices being transferred in peripheral input messages, and having a network input/output processor for processing communications input/output requests for receiving network input data from, and sending network output data to, a plurality of communications networks, and for processing peripheral input/output requests for receiving peripheral input data from, and sending peripheral output data to, a plurality of attached peripheral devices, the network input/output processor executing a network input/output program and a peripheral device program, the network input/output program utilizing a control table, a network input queue, a network output queue, and associated data buffers for storing network input data and network output data, residing in the main storage unit to implement communications input/output requests, the associated data buffers being accessible to computer programs executing on the at least one instruction processor, a computer-implemented method of input/output communication with minimized system overhead and without invoking data copy operations comprising the steps of:
-
(a) initializing at least one network interface whereby the network input/output processor communicates with a selected one of the plurality of communications networks; (b) accepting, by the network input/output processor, an input/output request from the instruction processor; (c) forwarding the input/output request to the network input/output program if the input/output request is a communications input/output request or to the peripheral device program if the input/output request is a peripheral device input/output request; (d) receiving a network input message over said at least one network interface from a communications network by processing an entry in the network input queue, storing the network input data included in the network input message in at least one data buffer in the main storage unit, and notifying the instruction processor of the reception of the network input data when the communications input/output request is for receiving network input data from the communications network; (e) obtaining network output data from at least one data buffer in the main storage unit, sending a network output message containing the network output data to a communications network by processing an entry in the network output queue, and returning the status of the requested input/output operation in the control table when the communications input/output request is for sending network output data to the communications network; (f) initiating a peripheral input request, receiving a peripheral input message from a peripheral device, storing the peripheral input data in the main storage unit, and notifying the instruction processor of the reception of the peripheral input message when the peripheral device input/output request is for receiving peripheral input data from a peripheral device; and (g) receiving peripheral output data from the instruction processor, sending the peripheral output data to a peripheral device, and returning the status of the requested input/output operation in the control table when the peripheral device input/output request is for sending peripheral output data to a peripheral device. - View Dependent Claims (23)
-
-
24. In a computer system having at least one instruction processor for executing computer program instructions fetched from a main storage unit, and having communications input/output requests for receiving network input data from, and sending network output data to, a plurality of communications networks coupled to the computer system by network interfaces, network input data from the communications networks being transferred in network input messages, network output data to the communications networks being transferred in network output messages, a network input/output processor for processing requests for receiving network input data from and sending network output data to a plurality of communications networks, the network input/output processor utilizing a control table, a network input queue, a network output queue, and associated data buffers for storing network input data and network output data residing in the main storage unit to implement communications input/output requests, the associated data buffers being accessible to computer programs executing on the at least one instruction processor, a computer-implemented method of input/output communication with minimized system overhead and without invoking data copy operations comprising the steps of:
-
(a) initializing a network interface whereby the network input/output processor communicates with a selected one of the plurality of communications networks; (b) accepting, by the network input/output processor, a communications input/output request from the instruction processor; (c) receiving a network input message from a communications network by processing an entry in the network input queue, storing the network input data included in the network input message in at least one data buffer in the main storage unit, and notifying the instruction processor of the reception of the network input data when the communications input/output request is for receiving network input data from the communications network; and (d) obtaining network output data from at least one data buffer in the main storage unit, sending a network output message contacting the network output data to a communications network by processing an entry in the network output queue, and returning the status of the requested input/output operation in the control table when the communications input/output request is for sending network output data to the communications network. - View Dependent Claims (25, 26, 27, 28, 29, 30, 31, 32, 33)
-
-
34. In a computer system having at least one instruction processor for executing computer program instructions fetched from a main storage unit, and having communications input/output requests for receiving network input data from, and sending network output data to, a plurality of communications networks coupled to the computer system by network interfaces, network input data from the communications networks being transferred in network input messages, network output data to the communications networks being transferred in network output messages, a network input/output processor for processing requests for receiving network input data from, and sending network output data to, a plurality of communications networks, the network input/output processor utilizing a control table, a network input queue, a network output queue, and associated data buffers for storing network input data and network output data residing in the main storage unit to implement communications input/output requests, the associated data buffers being accessible to computer programs executing on the at least one instruction processor, a computer-implemented method of input/output communication with minimized system overhead and without invoking data copy operations comprising the steps of:
-
(a) initializing a network interface whereby the network input/output processor communicates with a selected one of the plurality of communications networks;
said initializing step including the steps of(a1) acquiring storage in the main storage unit for the data buffers associated with the network input queue and the network output queue; (a2) assigning a network interface for a communications path between the network input/output processor and a communications network; (a3) starting processes in the instruction processor to monitor the usage of the network input queue and the network output queue; (a4) storing network input/output processing control information into a selected one of the data buffers in the main storage unit; (a5) signaling the network input/output processor to initialize said network interface; and (a6) initializing said network interface by sending network output messages including maintenance information to the network input/output processor; (b) accepting, by the network input/output processor, a communications input/output request from the instruction processor; (c) receiving a network input message from a communications network by processing an entry in the network input queue, storing the network input data included in the network input message in at least one data buffer ha the main storage unit, and notifying the instruction processor of the reception of the network input data when the communications input/output request is for receiving network input dam from the communications network;
said receiving network input message step including the steps of(c1) selecting at least one data buffer in the main storage unit to receive network input data; (c2) incrementing a network input counter indicating that reception of network input data is requested and a selected network input queue entry is in use; (c3) building an input message program, said input message program including control information describing said at least one data buffer where network input data is to be stored upon reception; (c4) enqueuing said input message program to said selected network input queue entry by the at least one instruction processor; (c5) dequeuing said input message program from said selected network input queue by the network input/output processor; (c6) receiving a network input message from the communications network by the network input/output processor over said network interface; (c7) storing the network input data contained in said network input message into the main storage unit in said at least one data buffer described by said input message program; (c8) writing the status of the network input data transfer into said input message program in said selected network input queue entry; (c9) interrupting the instruction processor to initiate the processing of the network input data; (c10) releasing said input message program making it available for reuse; and (c11) decrementing said network input counter indicating that requested reception of network input data is complete and said selected network input queue entry may be reused; and (d) obtaining network output data from at least one data buffer in the main storage unit, sending a network output message containing the network output data to a communications network by processing an entry in the network output queue, and returning the status of the requested input/output operation in the control table when the communications input/output request is for sending network output data to the communications network, said obtaining step including the steps of (d1) storing network output data to be sent to the communications network in at least one data buffer in the main storage unit by the at least one instruction processor; (d2) incrementing a network output counter indicating that transmission of network output data is requested and a selected network output queue entry and associated said at least one data buffer are in use; (d3) building an output message program, said output message program including control information describing the at least one data buffer where the network output data to be sent is stored; (d4) enqueuing said output message program in said selected network output queue entry by the at least one instruction processor; (d5) dequeuing said output message program from said selected network output queue entry by the network input/output processor; (d6) sending the network output data in said at least one data buffer referenced by said output message program to the communications network over said network interface; (d7) writing the status of the network output data transfer into said output message program in said selected network output queue entry; (d8) releasing said output message program making it available for reuse; and (d9) decrementing said network output counter indicating that the requested transmission of network output data is complete and said selected network output queue entry may be reused.
-
Specification