Remote memory ring buffers in a cluster of data processing nodes

US9304896B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9304896-B2
Application numberUS-201313959428-A
CountryUS
Kind codeB2
Filing dateAug 5, 2013
Priority dateAug 5, 2013
Publication dateApr 5, 2016
Grant dateApr 5, 2016

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

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.

First claim

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

Assignees

Inventors

Classifications

  • G06F9/54Primary

    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

  • G06F12/00Primary

    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

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9304896B2 cover?
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…
Who is the assignee on this patent?
Iii Holdings 2 Llc
What technology area does this patent fall under?
Primary CPC classification G06F9/54. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Apr 05 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).