A distributed computing system having (host and I/O) end nodes, switches,
routers, and links interconnecting these components is provided. The end
nodes use send and receive queue pairs to transmit and receive messages.
The end nodes use completion queues to inform the end user when a message
has been completely sent or received and whether an error occurred during
the message transmission or reception process. A mechanism implements
these queue pairs and completion queues in hardware. A mechanism for
controlling the transfer of work requests from the consumer to the CA
hardware and work completions from the CA hardware to the consumer using
head and tail pointers that reference circular buffers is also provided.
The QPs and CQs do not contain Work Queue Entries and Completion Queue
Entries respectively, but instead contain references to these entries.
This allows them to be efficient and constant in size, while the Work
Queue Entries and Completion Queue Entries themselves can vary in size,
for example to include a variable number of data segments. Additionally,
several mechanisms are provided to improve the overall efficiency of this
process under different memory configurations.
Un système de l'informatique répartie ayant (centre serveur et I/O) des noeuds de fin, des commutateurs, des couteaux, et des liens reliant ensemble ces composants est fourni. L'utilisation de noeuds de fin envoient et reçoivent des paires de file d'attente pour transmettre et recevoir des messages. Les noeuds de fin emploient des files d'attente d'accomplissement pour informer l'utilisateur quand un message a été complètement envoyé ou reçu et si une erreur s'est produite pendant le processus de transmission ou de réception de message. Un mécanisme met en application ces files d'attente de paires et d'accomplissement de file d'attente dans le matériel. Un mécanisme pour commander le transfert des demandes de travail à partir du consommateur aux accomplissements de matériel et de travail de CA à partir du matériel de CA au consommateur en utilisant les indicateurs de tête et de queue qui mettent en référence les amortisseurs circulaires est également fourni. Le QPs et les CQs ne contiennent pas des entrées de file d'attente de travail et des entrées de file d'attente d'accomplissement respectivement, mais contiennent à la place des références à ces entrées. Ceci permet à eux d'être efficace et à la constante dans la taille, alors que les entrées de file d'attente de travail et les entrées de file d'attente d'accomplissement elles-mêmes peuvent changer dans la taille, par exemple pour inclure un nombre variable de segments de données. En plus, plusieurs mécanismes sont fournis pour améliorer l'efficacité globale de ce processus sous différentes configurations de mémoire.