A communication system operation between computer systems which realizes highly efficient data transfer in a data processing system has sender and receiver subsystems operating under the control of an independent or common operating system. The communication system also includes: a plurality of sending buffers, a sending buffer address table having a plurality of entries and a buffer control block in the sender subsystem and a plurality of receiving buffers, a receiving buffer address table having a plurality of entries and a buffer control block in the receiver subsystem, and the communication path for transferring the data stored in the sending buffer to the receiving buffer.
A scheme for efficient implementation of workload partitioning between separate receive and transmit processors is provided so that a message can be effectively moved through a multiprocessor router. Generally, each receiving processor collects, into a digest, information relating to network protocol processing of a particular message, obtained via sequential byte processing of the message at the time of reception of the message. The information placed into the digest is information that is necessary for the completion of the processing tasks to be performed by the processor of the transmitting line card. The digest is passed to the transmit processor through a buffer exchange between the receive and transmit processors. The transmit processor reads the digest before processing of the related message for transmission and uses the information in the network protocol processing of the message. Thus, the transmit processor does not have to "look ahead" to bytes of the message needed to complete certain processing functions already completed by the receive processor and does require extra buffering and/or memory bandwidth to make the modifications to the message.
The present invention is directed to a buffer swapping scheme to communicate a message from a first device to a second device wherein a pointer to a free buffer is returned to the first device by the second device as a condition for the first device to pass a pointer to a buffer containing a message intended for the second device.
A region of a communication buffer is divided into a control flag area where a communication mode flag and the like are set and a data area where communication data are set. In communication, a communication mode flag is set in the control flag area while communication data used in the specified communication mode are set in the data area. Thus, the data area can be shared among a plurality of communication modes. As a result, a capacity of the communication buffer can be reduced and the required communication period can be shortened.
A communication command control system among a plurality of CPUs includes a control apparatus for transmitting an acknowledge signal to a request signal and thereafter for transmitting receiving command data and status data. The control apparatus comprises a local system priority determining circuit for determining a priority of signal processor commands from a plurality of CPUs and a local/remote system priority determining circuit for determining the priority between a local SIGP command controller and a remote SIGP controller. The data transfer period of the response request is detected when a response request is transmitted from another CPU of SIGP command control apparatus to the local and local/remote priority determining circuits, by counting the transfer period of command data after the response request is received and the acknowledge signal is transmitted and by counting the transfer period of the status data received from the other CPU. The system judges the destination of a CPU-ID representing the destination of said acknowledge signal, command data and status data.
A broadcast pointer instruction has a first source operand (address pointer value) which is the starting address in a memory of message data to be broadcast to a number of processors through output ports. The broadcast pointer instruction has a first destination operand (first multibit mask), there being one bit position in the first mask for each one of the plurality of output ports. The address pointer value is loaded into each of the output ports whose numbers correspond to bit positions in the first mask that are set to be one, such that each output port that is designated in the first mask receives the starting address of the message data in the memory. A broadcast count instruction has a second source operand (a byte count value) equal to the number of bytes in the message data. The broadcast count instruction has a second destination operand (a second multibit mask), there being one bit position in the second mask for each one of the plurality of output ports. The byte count value is sent to each of the output ports whose numbers correspond to bit positions in the second mask register that are set to be one, such that each output port that is designated in the second mask receives the byte count value corresponding to the number of bytes in the message data that are to be transferred from the memory. Once the byte count is initialized, data are transferred from the starting address in memory over each output port designated in the masks, until the byte count is decremented to zero.