Application programming interface to modify incomplete graph code
US-2024385905-A1 · Nov 21, 2024 · US
US9304896B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-9304896-B2 |
| Application number | US-201313959428-A |
| Country | US |
| Kind code | B2 |
| Filing date | Aug 5, 2013 |
| Priority date | Aug 5, 2013 |
| Publication date | Apr 5, 2016 |
| Grant date | Apr 5, 2016 |
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 data processing node has an inter-node messaging module including a plurality of sets of registers each defining an instance of a GET/PUT context and a plurality of data processing cores each coupled to the inter-node messaging module. Each one of the data processing cores includes a mapping function for mapping each one of a plurality of user level processes to a different one of the sets of registers and thereby to a respective GET/PUT context instance. Mapping each one of the user level processes to the different one of the sets of registers enables a particular one of the user level processes to utilize the respective GET/PUT context instance thereof for performing a GET/PUT action to a ring buffer of a different data processing node coupled to the data processing node through a fabric without involvement of an operating system of any one of the data processing cores.
Opening claim text (preview).
What is claimed is: 1. A data processing node, comprising: an inter-node messaging module including a plurality of sets of registers, wherein each set of registers is configured to define a GET/PUT context instance; and a plurality of data processing cores each coupled to the inter-node messaging module, wherein each of the plurality of data processing cores is configured to map a user level process thereof to one of the plurality of sets of registers and thereby to a respective GET/PUT context instance; wherein the user level process is configured to utilize the respective GET/PUT context instance to perform a GET/PUT action to a ring buffer of a target data processing node, and wherein the target data processing node is coupled to the data processing node through a fabric; and wherein each of the plurality of data processing cores is further configured to modify a memory management unit page table to include a virtual address page for the user level process that maps to a physical address page for the respective GET/PUT context instance. 2. The data processing node of claim 1 , wherein: each of the GET/PUT context instances includes a field for specifying a length of a GET/PUT payload for a respective GET/PUT action; a first element of the ring buffer is configured to store a first GET/PUT payload for a first GET/PUT action of a first user level process; a second element of the ring buffer is configured to store a second GET/PUT payload for a second GET/PUT action of a second user level process; and the first element of the ring buffer is of a different size than the second element of the ring buffer. 3. The data processing node of claim 1 , wherein the user level process is further configured to: determine a status of the respective GET/PUT context instance; and populate the respective GET/PUT context instance with information for the GET/PUT action in response to a determination that a previously instantiated GET/PUT action is completed, wherein the previously instantiated GET/PUT action used the same respective GET/PUT context instance. 4. The data processing node of claim 3 , further comprising: a memory management unit coupled to the plurality of data processing cores; wherein each of the plurality of data processing cores is further configured to modify a page table to include a virtual address page for the user level process that maps to a physical address page for the respective GET/PUT context instance; wherein the memory management unit is configured to translate a virtual address specified at the virtual address page to a physical address specified at the physical address page in response to the user level process populating the respective GET/PUT context instance with information for the GET/PUT action; and wherein the inter-node messaging module is configured to associate the physical address with a GET/PUT module thereof in response to being provided with the physical address and to cause the GET/PUT module to perform the GET/PUT action for the user level process. 5. The data processing node of claim 4 , wherein: each of the GET/PUT context instances includes a field for specifying a length of a GET/PUT payload for a respective GET/PUT action; a first element of the ring buffer is configured to store a first GET/PUT payload for a first GET/PUT action of a first user level process; a second element of the ring buffer is configured to store a second GET/PUT payload for a second GET/PUT action of a second user level process; and the first element of the ring buffer is of a different size than the second element of the ring buffer. 6. The data processing node of claim 1 , further comprising: a memory management unit coupled to the plurality of data processing cores; and a kernel-level driver coupled to the plurality of data processing cores and to the memory management unit; wherein the kernel-level driver is configured to modify a page table to include a virtual address page for the user level process that maps to a physical address page for the respective GET/PUT context instance in response to being called upon by the user level process in association with initiating the GET/PUT action; wherein the user level process is further configured to populate the respective GET/PUT context instance with information for the GET/PUT action in response to determining that a previously instantiated GET/PUT action is completed, and wherein the previously instantiated GET/PUT action used the same respective GET/PUT context instance; wherein the memory management unit is configured to translate a virtual address specified at the virtual address page to a physical address specified at the physical address page in response to population, by the user level process, of the respective GET/PUT context instance with information for the GET/PUT action; and wherein the inter-node messaging module is configured to associate the physical address with a GET/PUT module thereof in response to being provided with the physical address and to cause the GET/PUT module to perform the GET/PUT action for the user level process. 7. The data processing node of claim 1 , wherein: the GET/PUT action is a PUT action; and the respective GET/PUT context instance includes a field that enables a PUT request for the PUT action to include a timestamp value, wherein the time stamp value designates a fabric time at which the PUT action was initiated. 8. The data processing node of claim 7 , wherein: the data processing node is one of a plurality of data processing nodes connected to each other through a fabric; the fabric time is determined using a time synchronization service, wherein the time synchronization service is configured to run across the fabric in a distributed manner on the plurality of data processing nodes; and the time synchronization service is hardware-implemented on each of the plurality of data processing nodes. 9. The data processing node of claim 1 , wherein: the GET/PUT action is a PUT action; the inter-node messaging module is configured to generate a PUT request based on information from the respective GET/PUT context instance; and the PUT request includes fabric time information corresponding to a fabric time at which the PUT action was initiated. 10. The data processing node of claim 1 , wherein: the data processing node is configured to receive a remote node security key from the target data processing node; and a GET/PUT request for the GET/PUT action includes an instance of the remote node security key, wherein the target data processing node is configured to verify authenticity of the GET/PUT request based on the instance of the remote node security key. 11. The data processing node of claim 10 , wherein: the respective GET/PUT context instance includes a field that is configured to hold the remote node security key; and the inter-node messaging module is configured to generate the GET/PUT request based on information from the respective GET/PUT context instance. 12. A data processing system, comprising: a target node including a ring buffer in local memory thereof; and a plurality of initiator nodes connected to each other and to the target node through a fabric, wherein each of the initiator nodes includes: an inter-node messaging module comprising a plurality of sets of registers, wherein each set of registers is configured to define a GET/PUT context instance; and a plurality of data processing cores each coupled to the inter-node messaging module, wherein each of the plurality of data processing cores is configured to map a user level process thereof to one of the sets of registers and thereby to a respective GET/PUT con
Interprogram communication · CPC title
User address space allocation, e.g. contiguous or non contiguous base addressing · CPC title
One dimensional, e.g. linear array, ring · CPC title
Accessing, addressing or allocating within memory systems or architectures (digital input from, or digital output to record carriers, e.g. to disk storage units, G06F3/06) · CPC title
Energy efficient computing, e.g. low power processors, power management or thermal management · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.