Pseudo cut-through architecture between non-volatile memory storage and remote hosts over a fabric

US9934173B1 · US · B1

Patent metadata
FieldValue
Publication numberUS-9934173-B1
Application numberUS-201615052603-A
CountryUS
Kind codeB1
Filing dateFeb 24, 2016
Priority dateFeb 24, 2016
Publication dateApr 3, 2018
Grant dateApr 3, 2018

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.

An example method of exchanging data between a remote host and a target system includes receiving at least one remote descriptor from the remote host over a front-end fabric at a controller, the at least one remote descriptor specifying a remote buffer in a remote memory of the remote host that is larger than a page size. The method includes adding entries to a table that map the remote buffer to a plurality of page-sized virtual buffers in a virtual address space managed by the controller, generating local descriptors referencing the plurality of paged-sized virtual buffers, receiving a sequence of page-sized direct memory access (DMA) requests at the controller, generating a sequence remote DMA (RDMA) requests from the sequence of DMA requests based on the entries in the table, and sending the sequence of RDMA requests to the remote host over the front-end fabric.

First claim

Opening claim text (preview).

What is claimed is: 1. A method of exchanging data between a remote host and a target system over a front-end fabric, the target system including a nonvolatile memory (NVM) subsystem coupled to a back end fabric having a different transport than the front-end fabric, the method comprising: receiving at least one remote descriptor from the remote host over the front-end fabric at a controller in the target system, the at least one remote descriptor specifying a remote buffer in a remote memory of the remote host that is larger than a page size; adding entries to a table that map the remote buffer to a plurality of page-sized virtual buffers in a virtual address space managed by the controller; generating local descriptors referencing the plurality of paged-sized virtual buffers; receiving a sequence of page-sized direct memory access (DMA) requests at the controller in response to the NVM subsystem consuming the local descriptors; and generating a sequence remote DMA (RDMA) requests from the sequence of DMA requests based on the entries in the table; and sending the sequence of RDMA requests to the remote host over the front-end fabric. 2. The method of claim 1 , wherein the sequence of DMA requests comprises DMA requests to store data, and wherein the method further comprises: receiving a sequence of page-sized data blocks at the controller from the NVM subsystem; storing the sequence of page-sized data blocks in a buffer pool as a source for the sequence of RDMA requests. 3. The method of claim 1 , wherein the sequence DMA requests comprises DMA requests to obtain data, and wherein the method further comprises: designating a buffer pool as a destination for the sequence of RDMA requests; and responding to the DMA requests with a sequence page-sized data blocks stored in the buffer pool. 4. The method of claim 1 , wherein each of the entries in the table relate virtual addresses defining the plurality of page-sized virtual buffers and address information for the remote buffer. 5. The method of claim 4 , wherein each of the entries in the table are indexed by a plurality of most significant bits (MSBs) of the virtual addresses. 6. The method of claim 4 , wherein the address information for the remote buffer includes at least one offset address and at least one tag obtained from the at least one remote descriptor. 7. The method of claim 4 , wherein the entries in the table further relate the virtual addresses to an identifier for the remote host and an identifier for a queue associated with the remote host. 8. The method of claim 1 , wherein the controller includes an address space segmented into the virtual address space and a local address space of a local memory, the virtual address space distinguishable from the local address space by a most significant bit (MSB) of the address space. 9. The method of claim 1 , further comprising: parsing a command capsule received from the remote host at the controller to obtain the at least one remote descriptor. 10. An integrated circuit (IC), comprising: a front-end interface configured for communication with a remote host over a front-end fabric; a back-end interface configured to communication with a nonvolatile memory (NVM) subsystem over a back-end fabric that uses a different transport than the front-end fabric; a controller coupled between the front-end interface and the back-end interface, the controller configured to: receive at least one remote descriptor from the remote host through the front-end interface, the at least one remote descriptor specifying a remote buffer in a remote memory of the remote host that is larger than a page size; add entries to a table that map the remote buffer to a plurality of page-sized virtual buffers in a virtual address space managed by bridge; generate local descriptors referencing the plurality of paged-sized virtual buffers; receive a sequence of page-sized direct memory access (DMA) requests through the back-end interface in response to the NVM subsystem consuming the local descriptors; and generate a sequence remote DMA (RDMA) requests from the sequence of DMA requests based on the entries in the table; and send the sequence of RDMA requests through the front-end interface to the remote host over the front-end fabric. 11. The IC of claim 10 , wherein the sequence of DMA requests comprises DMA requests to store data, and wherein the controller is further configured to: receive a sequence of page-sized data blocks through the back-end interface from the NVM subsystem; store the sequence of page-sized data blocks in a buffer pool as a source for the sequence of RDMA requests. 12. The IC of claim 10 , wherein the sequence DMA requests comprises DMA requests to obtain data, and wherein the controller is further configured to: designate a buffer pool as a destination for the sequence of RDMA requests; and respond to the DMA requests with a sequence page-sized data blocks stored in the buffer pool. 13. The IC of 10 , wherein each of the entries in the table relate virtual addresses defining the plurality of page-sized virtual buffers and address information for the remote buffer. 14. The IC of claim 13 , wherein each of the entries in the table are indexed by a plurality of most significant bits (MSBs) of the virtual addresses. 15. The IC of claim 13 , wherein the address information for the remote buffer includes at least one offset address and at least one tag obtained from the at least one remote descriptor. 16. The IC of claim 13 , wherein the entries in the table further relate the virtual addresses to an identifier for the remote host and an identifier for a queue associated with the remote host. 17. The IC of claim 10 , wherein the controller includes an address space segmented into the virtual address space and a local address space of a local memory, the virtual address space distinguishable from the local address space by a most significant bit (MSB) of the address space. 18. The IC of claim 10 , wherein the controller comprises a circuit. 19. The IC of claim 10 , wherein the controller is further configured to: parse a command capsule received through the front-end interface from the remote host to obtain the at least one remote descriptor. 20. A computer system, comprising: a remote host including a memory, the memory storing a remote buffer that is larger than a page-size; a front-end fabric; a target system coupled to the remote host through the front-end fabric and configured to communicate with the remote host using a remote direct memory access (RDMA) transport; a back-end fabric; a nonvolatile memory (NVM) subsystem coupled to the back-end fabric and configured to communicate using a transport different than the RDMA transport; a controller disposed in the target system configured to: receive at least one remote descriptor from the remote host through the front-end fabric, the at least one remote descriptor specifying the remote buffer; add entries to a table that map the remote buffer to a plurality of page-sized virtual buffers in a virtual address space managed by bridge; generate local descriptors referencing the plurality of paged-sized virtual buffers; receive a sequence of page-sized direct memory access (DMA) requests through the back-end fabric in response to the NVM subsystem consuming the local descriptors; and generate a sequence remote RDMA requests from the sequence of DMA requests based on the entries in the table; and send the sequence of RDMA requests t

Assignees

Inventors

Classifications

  • using buffers · CPC title

  • using burst mode transfer, e.g. direct memory access {DMA}, cycle steal (G06F13/32 takes precedence) · CPC title

  • Electrical coupling · 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 US9934173B1 cover?
An example method of exchanging data between a remote host and a target system includes receiving at least one remote descriptor from the remote host over a front-end fabric at a controller, the at least one remote descriptor specifying a remote buffer in a remote memory of the remote host that is larger than a page size. The method includes adding entries to a table that map the remote buffer …
Who is the assignee on this patent?
Xilinx Inc
What technology area does this patent fall under?
Primary CPC classification G06F13/1673. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Apr 03 2018 00:00:00 GMT+0000 (Coordinated Universal Time) (B1). 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).