Multiprocessor buffer system
AssigneeDigital Equipment Corporation
InventorsMichael J. Seaman, Stewart F. Bryant
Life of this patent
Estimating the term…
Abstract
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.
Claims27
A computer system, which comprises:
- a first computer device;
- a second computer device;
- a common memory comprising a plurality of buffers for storing messages to be transferred from the first computer device to the second computer device;
- the first computer device and the second computer device each being coupled to the common memory;
- a pointer memory coupled to each of the first computer device and the second computer device, the pointer memory having a set of locations for storing pointers to the plurality of buffers of the common memory, preselected ones of the locations each storing a pointer to a buffer of the common memory that is available for use to store a message;
- and
- a pool of pointers to the plurality of buffers of the common memory that are available for use to store messages;
- the first computer device storing a pointer to at least one of the plurality of buffers and operating to transfer a message to the second computer device by writing the message to the one of the plurality of buffers, reading a preselected location of the pointer memory to obtain an available pointer to the plurality of buffers and writing the pointer to the one of the plurality of buffers to the preselected location of the pointer memory;
- the second computer device operating to read the preselected location of the pointer memory to obtain the pointer to the one of the plurality of buffers storing the message and to thereafter remove a pointer to a buffer available for use from the pool of pointers and to write the removed pointer to the preselected location of the pointer memory.
A mechanism for transferring a message from a first computer device to a second computer device, comprising:
- a common memory comprising a plurality of buffers for storing messages from the first computer device to the second computer device;
- a pointer exchange mechanism for exchanging pointers to the buffers of the common memory between the first and second computer devices;
- and
- a pool of pointers to buffers of the common memory that are available for use to store messages;
- the pool of pointers being coupled to the pointer exchange mechanism;
- the pointer exchange mechanism being adapted to interlock the first and second computer devices to accept a pointer to a buffer containing a message, from the first computer device, on a first condition that a pointer from the pool of pointers is read by the first computer device, and to make the pointer accepted from the first computer device available to the second computer device on a second condition that the second computer device places the pointer in the pool of pointers after utilizing the pointer to read the message in the buffer.
A first computer device adapted for coupling to a second computer device to receive messages from the second computer device, the coupling including a common memory having a plurality of buffers for storing messages from the second computer device to the first computer device and a pointer memory having a set of locations for storing pointers to buffers of the common memory, preselected ones of the locations each storing a pointer to a buffer of the common memory that is available for use to store a message, the first computer device comprising:
- a first module to read a preselected location of the pointer memory for a pointer to a buffer of the common memory storing a message from the second computer device;
- a pool of pointers to buffers of the common memory that are available for use to store messages;
- and
- a second module to write a pointer to a buffer from the pool of pointers to the preselected location after reading the pointer in the location.
A mechanism for transferring a message from a first computer device to preselected ones of a plurality of other computer devices, which comprises:
- a common memory comprising a plurality of buffers for storing messages from the first computer device;
- a pointer exchange mechanism for exchanging pointers to the buffers of the common memory between the first computer device and the preselected ones of the other computer devices, each pointer pointing to one buffer of the common memory and containing a unique identification identifying one of the preselected ones of other computer devices;
- and
- a table having a set of entries, one entry for each unique identification, each entry having a flag set for each one of the preselected ones of the other computer devices to receive the message;
- the pointer exchange mechanism being adapted to interlock the first computer device and the other computer devices to accept from the first computer device, a pointer to a buffer containing a message, for communicating the pointer to each one of the preselected ones of the other computer devices to receive the message, on condition that the unique identification for the pointer be returned to the first computer device by each one of the preselected ones of the other computer devices upon accessing the buffer pointed to by the pointer;
- the first computer device operating to clear the flag in the entry of the table for the unique identification, for each one of the preselected ones of the other computer devices as the unique identification is returned by each one of the preselected ones of the other computer devices, until all of the flags of the entry are cleared.
A first computer device adapted for coupling to a plurality of other computer devices for transferring messages from the first computer device to preselected ones of the other computer devices, the coupling including a common memory comprising a plurality of buffers for storing messages from the first computer device, the first computer device comprising:
- a first module to write a message intended for preselected ones of the other computer devices into a preselected one of the buffers;
- and
- a second module to pass a pointer to the preselected one of the buffers to each of the preselected ones of the other computer devices, the second module marking the pointer with a hook value;
- the second module maintaining a table of hook values with an entry for the hook value of the pointer, the entry comprising a mask to identify each of the preselected ones of the other computer devices;
- the second module adapted for coupling to a pointer exchange mechanism adapted to interlock the first computer device and the other computer devices to accept from the second module, the pointer to the preselected one of the buffers, for communicating the pointer to each one of the preselected ones of the other computer devices to receive the message, on condition that the unique identification for the pointer be returned to the second module by each one of the preselected ones of the other computer devices upon accessing the buffer pointed to by the pointer;
- the second module operating to clear the flag in the entry of the table for the unique identification, for each one of the preselected ones of the other computer devices as the unique identification is returned by each one of the preselected ones of the other computer devices via the pointer exchange mechanism, until all of the flags of the entry are cleared.
A first computer device adapted for coupling to a second computer device to receive a message from the second computer device, the coupling including a common memory comprising a plurality of buffers for storing messages from the second computer device, the second computer device adapted to send to the first computer device pointers to buffers containing messages for the first computer device, each pointer containing a unique hook value for uniquely identifying the first computer device, the first computer device comprising:
- a first module to receive a pointer from the second computer device on condition that the first module return the hook value of the received pointer to the second computer device.
A first computer device adapted for coupling to a second computer device for the transfer of messages from the first computer device to the second computer device, the coupling including a common memory having a plurality of buffers for storing messages and a pool of pointers to buffers available for use to store messages, the pool of pointers being maintained by the second computer device, the first computer device comprising:
- a first module to write a message intended for the second computer device into a preselected one of the buffers of the common memory;
- and
- a second module to pass a pointer to the preselected one of the buffers to the second computer device on condition that the second module acquire a pointer from the pool of pointers via the second computer device when passing the pointer to the preselected one of the buffers.
A first computer device adapted for coupling to a second computer device to receive messages from the second computer device, the coupling including a common memory having a plurality of buffers for storing messages from the second computer device and a pool of pointers to buffers available for use to store messages, the second computer device adapted to send to the first computer device, pointers to buffers of the common memory containing messages for the first computer device, the first computer device comprising:
- a first module to receive a pointer from the second computer device on condition that the first module return a pointer to the second computer device from the pool of pointers.
A method for transferring a message from a first computer device to a second computer device, comprising the steps of:
- providing a common memory comprising a plurality of buffers for storing messages from the first computer device to the second computer device;
- providing a pool of pointers to buffers of the common memory available for use to store messages;
- operating the first computer device to store a message in a preselected buffer of the common memory;
- operating the first computer device to pass a pointer to the preselected buffer to the second computer device;
- and
- operating the second computer device to utilize the pointer to the preselected buffer to access the preselected buffer for the message stored therein;
- and
- operating the second computer device to place the pointer in the pool of pointers upon accessing the preselected buffer.
A method for transferring a message from a first computer device to a second computer device, comprising the steps of:
- providing a common memory comprising a plurality of buffers for storing messages from the first computer device to the second computer device;
- providing a pool of pointers to buffers of the common memory available for use to store messages;
- operating the first computer device to store a message in a preselected buffer of the common memory;
- operating the first computer device to pass a pointer to the preselected buffer to the second computer device;
- and
- operating the second computer device to utilize the pointer to the preselected buffer to access the preselected buffer for the message stored therein and to affect a transfer of a pointer from the pool of pointers to the first computer device a condition for utilizing the pointer to the preselected buffer.
Dependencies are inferred from the claim text.