Efficient non-transparent bridge (NTB) based data transport
US-10983930-B1 · Apr 20, 2021 · US
US11507441B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-11507441-B2 |
| Application number | US-202117154179-A |
| Country | US |
| Kind code | B2 |
| Filing date | Jan 21, 2021 |
| Priority date | Jan 21, 2021 |
| Publication date | Nov 22, 2022 |
| Grant date | Nov 22, 2022 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
A method of performing a remotely-initiated procedure on a computing device is provided. The method includes (a) receiving, by memory of the computing device, a request from a remote device via remote direct memory access (RDMA); (b) in response to receiving the request, assigning processing of the request to one core of a plurality of processing cores of the computing device, wherein assigning includes the one core receiving a completion signal from a shared completion queue (Shared CQ) of the computing device, the Shared CQ being shared between the plurality of cores; and (c) in response to assigning, performing, by the one core, a procedure described by the request. An apparatus, system, and computer program product for performing a similar method are also provided.
Opening claim text (preview).
What is claimed is: 1. A method of performing a remotely-initiated procedure on a computing device, the method comprising: receiving, by memory of the computing device, a request from a remote device via remote direct memory access (RDMA), wherein receiving the request includes receiving, from a remote core specific send queue of the remote device, a request descriptor that describes the request at a shared receive queue (SRQ) of the computing device, the SRQ being shared between a plurality of processing cores of the computing device, and wherein the remote core specific send queue is one of a plurality of core-specific send queues in the remote device that are each paired to a respective remote processing core of the remote device, each remote core specific send queue being configured to synchronize with the SRQ, the remote core specific send queue corresponding to a remote processing core of the remote device having a different local core number than a local core number of one processing core of the plurality of processing cores of the computing device; in response to receiving the request, assigning processing of the request to the one processing core of the plurality of processing cores of the computing device, wherein assigning includes the one processing core receiving a completion signal from the shared completion queue (Shared CQ) of the computing device, the Shared CQ being shared between the plurality of processing cores of the computing device, wherein the completion signal from the Shared CQ reports completed receipt of a request descriptor that describes the request, wherein the assigning further includes, prior to the one processing core receiving the completion signal from the Shared CQ, polling the Shared CQ by the one processing core for a completion signal, the one processing core being the first processing core of the plurality of processing cores to poll the Shared CQ after receipt of the request, each of the plurality of processing cores being configured to poll the Shared CQ when that processing core has available processing cycles; in response to assigning, performing, by the one processing core, a procedure described by the request; and sending a reply to the remote device using a core-specific send queue, each of the plurality of processing cores having a respective core-specific send queue. 2. A method of performing a remotely-initiated procedure on a computing device, the method comprising: allocating, by a first processing core of a plurality of processing cores of the computing device, a memory buffer in which to store a request from a remote device; receiving, by memory of the computing device, the request from the remote device via remote direct memory access (RDMA), wherein receiving the request includes receiving, from a remote core specific send queue of the remote device, a request descriptor that describes the request at a shared receive queue (SRQ) of the computing device, the SRQ being shared between a plurality of processing cores of the computing device, and wherein the remote core specific send queue is one of a plurality of core-specific send queues in the remote device that are each paired to a respective remote processing core of the remote device, each remote core specific send queue being configured to synchronize with the SRQ, the remote core specific send queue corresponding to a remote processing core of the remote device having a different local core number than a local core number of a second processing core of the plurality of processing cores of the computing device different from the first processing core; in response to receiving the request, assigning processing of the request to the second processing core of the plurality of processing cores of the computing device, wherein assigning includes the second core receiving a completion signal from a shared completion queue (Shared CQ) of the computing device, the Shared CQ being shared between the plurality of processing cores of the computing device, wherein the completion signal from the Shared CQ reports completed receipt of a request descriptor that describes the request, wherein the assigning further includes, prior to the second processing core receiving the completion signal from the Shared CQ, polling the Shared CQ by the second processing core for a completion signal, the second processing core being the first processing core of the plurality of processing cores to poll the Shared CQ after receipt of the request, each of the plurality of processing cores being configured to poll the Shared CQ when that processing core has available processing cycles; and in response to assigning, performing, by the second processing core, a procedure described by the request. 3. The method of claim 2 wherein allocating the memory buffer in which to store the request includes allocating the memory buffer from a shared pool of memory of the computing device, the shared pool of memory being shared by the plurality of processing cores. 4. A system for performing a remotely-initiated procedure, the system comprising: a first computing device, the first computing device including a first plurality of processing cores; a network connection; and a second computing device, the second computing device including a second plurality of processing cores, the second computing device being communicatively coupled to the first computing device via the network connection, the second computing device being configured to: receive, by memory of the second computing device, a request from the first computing device via remote direct memory access (RDMA) over the network connection, wherein receipt of the request includes receipt, from a remote core specific send queue of the first computing device, a request descriptor that describes the request at a shared receive queue (SRQ) of the second computing device, the SRQ being shared between the second plurality of processing cores of the second computing device, and wherein the remote core specific send queue is one of a plurality of core-specific send queues in the first computing device that are each paired to a respective remote processing core of the first computing device, each remote core specific send queue being configured to synchronize with the SRQ, the remote core specific send queue corresponding to a remote processing core of the first computing device having a different local core number than a local core number of one processing core of the second plurality of processing cores of the second computing device; in response to receiving the request, assign processing of the request to the one processing core of the second plurality of processing cores of the second computing device, wherein assigning includes the one processing core receiving a completion signal from a shared completion queue (Shared CQ) of the second computing device, the Shared CQ being shared between the second plurality of processing cores of the second computing device, wherein the completion signal from the Shared CQ reports completed receipt of a request descriptor that describes the request, wherein the assigning further includes, prior to the one processing core receiving the completion signal from the Shared CQ, polling the Shared CQ by the one processing core for a completion signal, the one processing core being the first processing core of the second plurality of processing cores to poll the Shared CQ after receipt of receiving the request, each of the second plurality of processing cores being configured to poll the Shared CQ when that processing core has available processing cycles; and in response to assigning, perform, by the one processing core, a procedure described by the request. 5. The system of claim 4 wherein the second computing device is further configured to send a reply to the first computing devic
the resource being the memory · CPC title
Remote procedure calls [RPC]; Web services · CPC title
Distributed shared memory [DSM], e.g. remote direct memory access [RDMA] · CPC title
Message passing systems or structures, e.g. queues · CPC title
Buffers; Shared memory; Pipes · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.