Hardware message queues for intra-cluster communication
First Claim
1. A device comprising:
- enqueue circuitry;
said enqueue circuitry being coupled to a memory;
said enqueue circuitry being configured to, without said enqueue circuitry executing software from said memory;
receive an enqueue command that comprises a key with an encrypted code, wherein the key identifies a queue in said memory;
authenticate the encrypted code;
enqueue a queue entry to the queue identified by the received enqueue command in response to receiving said enqueue command if the encrypted code was successfully authenticated.
1 Assignment
0 Petitions
Accused Products
Abstract
A method and apparatus for sending and receiving messages between nodes on a compute cluster is provided. Communication between nodes on a compute cluster, which do not share physical memory, is performed by passing messages over an I/O subsystem. Typically, each node includes a synchronization mechanism, a thread ready to receive connections, and other threads to process and reassemble messages. Frequently, a separate queue is maintained in memory for each node on the I/O subsystem sending messages to the receiving node. Such overhead increases latency and limits message throughput. Due to a specialized coprocessor running on each node, messages on an I/O subsystem are sent, received, authenticated, synchronized, and reassembled at a faster rate and with lower latency. Additionally, the memory structure used may reduce memory consumption by storing messages from multiple sources in the same memory structure, eliminating the need for per-source queues.
-
Citations
18 Claims
-
1. A device comprising:
-
enqueue circuitry; said enqueue circuitry being coupled to a memory; said enqueue circuitry being configured to, without said enqueue circuitry executing software from said memory; receive an enqueue command that comprises a key with an encrypted code, wherein the key identifies a queue in said memory; authenticate the encrypted code; enqueue a queue entry to the queue identified by the received enqueue command in response to receiving said enqueue command if the encrypted code was successfully authenticated. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method comprising a machine-executed operation involving software instructions, wherein said software instructions which, when executed by a computing device, cause performance of steps including;
-
transmitting a particular enqueue command to an enqueue circuitry to enqueue a queue entry into a particular queue stored in a memory coupled to said enqueue circuitry, said particular enqueue command identifying said particular queue; wherein said enqueue circuitry is configured to, without said enqueue circuitry executing software from said memory; receive an enqueue command that comprises a key with an encrypted code, wherein the key identifies a queue of a plurality of queues using data that identifies said queue in said memory; authenticate the encrypted code based on a secret value that is associated with said queue, wherein the secret value is stored in a register in the enqueue circuitry; responsive to receipt of the enqueue command, to enqueue a queue entry to the queue identified by the received enqueue command if the encrypted code was successfully authenticated; dequeuing a queue entry from said queue. - View Dependent Claims (9, 10, 11, 12, 13)
-
-
14. A system comprising:
-
a first enqueue circuitry; said first enqueue circuitry being operably coupled to a first memory and a second memory; said first enqueue circuitry being configured to, without said first enqueue circuitry executing software from said first memory and said second memory; receive a first enqueue command, which comprises a first key with a first encrypted code, wherein said first key identifies a first queue in said first memory; authenticate said first encrypted code based on a first secret value that is associated with said first queue, wherein the first secret value is stored in a first register in the first enqueue circuitry; in response to authenticating said first encrypted code, enqueue a first queue entry in said first memory based on said first key identifying said first memory; receive a second enqueue command, which comprises a second key with a second encrypted code, wherein said second key-identifies a second queue in said second memory; authenticate said second encrypted code based on a second secret value that is associated with said second queue, wherein the second secret value is stored in a second register in the first enqueue circuitry; in response to authenticating said second encrypted code, enqueue a second queue entry in said second memory based on said second key identifying said second memory. - View Dependent Claims (15, 16, 17, 18)
-
Specification