Hardware assisted communication between processors
First Claim
Patent Images
1. A method of performing hardware assisted communication between processors, comprising:
- in response to direction from a first processor, using a first coprocessor to write information in a first block of mirrored memory;
maintaining mirrored memory;
reading, with a second coprocessor, the information from a second block of mirrored memory;
saving the information in memory accessible to a second processor; and
accessing the information with the second processor.
3 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus performs hardware assisted communication between processors. In response to direction from a first processor, a first coprocessor writes information in a first block of mirrored memory. Mirrored memory is maintained, allowing a second coprocessor to read the information from a second block of mirrored memory. The information is saved in memory accessible to a second processor. The information is accessed by the second processor.
-
Citations
31 Claims
-
1. A method of performing hardware assisted communication between processors, comprising:
-
in response to direction from a first processor, using a first coprocessor to write information in a first block of mirrored memory;
maintaining mirrored memory;
reading, with a second coprocessor, the information from a second block of mirrored memory;
saving the information in memory accessible to a second processor; and
accessing the information with the second processor. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method of configuring a plurality of groups, each group containing a processor, a coprocessor and an ASIC, to share work, the method comprising:
-
transferring information between coprocessors through the ASIC with which each coprocessor is grouped, using a bus over which the ASICs are connected;
for each group, configuring a single producer/single consumer queue, wherein the coprocessor is the single producer and the processor is the single consumer;
removing information from the single producer/single consumer queue; and
processing the information using software configured for operation on each processor. - View Dependent Claims (7, 8)
-
-
9. A processor-readable medium, comprising processor-executable instructions for sharing work between remotely located first and second processors, the processor-executable instructions comprising processor-executable instructions for:
-
issuing a command from the first processor to a first coprocessor using a circular buffer, wherein the command comprises an address and a command type;
marshalling information, using the first coprocessor, associated with the address and according to the command type;
copying marshaled information, using the first coprocessor, into a first block of mirrored memory;
notifying a second coprocessor that a de-marshalling job is available;
reading, from a second block of mirrored memory, the de-marshalling job into the second coprocessor;
performing the de-marshalling job with the second coprocessor to obtain de-marshaled information; and
writing the de-marshaled information to a queue, to provide information to the second processor on an available job. - View Dependent Claims (10, 11, 12, 13, 14)
-
-
15. A RAID system, comprising:
-
a plurality of disks;
a plurality of controller cards, each controller card configured for management of disk and client I/O, each controller card comprising;
local memory;
a processor, in communication with the local memory;
a single processor/single consumer queue, defined in the local memory, and configured to be emptied by the processor; and
an assist engine, to transfer work to the queue, the assist engine comprising;
mirrored memory, comprising a local mirrored memory block and a local array ASIC to maintain the local mirrored memory block with respect to mirrored memory blocks on other controller cards; and
a coprocessor, configured to marshal and write information to the local mirrored memory block and to read and de-marshal information obtained from the local mirrored memory block. - View Dependent Claims (16, 17, 18)
-
-
19. A single processor/single consumer queue, comprising:
-
memory, local to a processor, within which the queue is defined;
dispatcher code, resident in operating system code executed by the processor, to transfer information from the queue to the processor; and
an assist engine, to transfer work to the queue, the assist engine comprising;
mirrored memory, comprising a local mirrored memory block and a local array ASIC to maintain the local mirrored memory block; and
a coprocessor, configured to marshal and write information into the local mirrored memory block, and to read and de-marshal information from the mirrored memory block.
-
-
20. A processor-readable medium, comprising processor-executable instructions for transferring information between a first processor and a second processor, the processor-executable instructions comprising processor-executable instructions for:
-
in response to direction from the first processor, using a first coprocessor to write information in a first block of mirrored memory;
maintaining mirrored memory by associating an array ASIC with each block of mirrored memory and by providing communication between the array ASICs associated with each mirrored memory block;
reading, with a second coprocessor, the information from a second block of mirrored memory;
saving the information into a queue defined in memory local to the second processor; and
accessing the information with the second processor. - View Dependent Claims (21, 22, 23, 24)
-
-
25. A system, comprising:
-
means for maintaining mirrored memory;
means for transferring information between coprocessors using mirrored memory, wherein the information is marshaled before being saved into a first section of mirrored memory by a first coprocessor and de-marshaled after being read from a second section of mirrored memory by a second coprocessor;
means for configuring processor/coprocessor pairs to support a single producer/single consumer queue, wherein the coprocessor is a producer and the processor is a consumer;
means for removing information from the single producer/single consumer queue; and
means for processing the information using software configured for operation on each processor. - View Dependent Claims (26, 27, 28)
-
-
29. A system, comprising:
a plurality of controller cards, each controller card comprising;
local memory;
a processor, in communication with the local memory; and
an assist engine, to transfer work to a queue, the assist engine comprising;
mirrored memory, comprising a local mirrored memory block; and
a coprocessor, configured to marshal and write information to the local mirrored memory block and to read and de-marshal information obtained from the local mirrored memory block. - View Dependent Claims (30, 31)
Specification