Out of order read transfer with host memory buffer

US10642496B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10642496-B2
Application numberUS-201615088692-A
CountryUS
Kind codeB2
Filing dateApr 1, 2016
Priority dateApr 1, 2016
Publication dateMay 5, 2020
Grant dateMay 5, 2020

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 storage device may utilize a host memory buffer for re-ordering commands in a submission queue. Out of order commands in a submission queue that uses host virtual buffers that are not the same size may be difficult to search. Accordingly, commands in a submission queue may be correctly ordered in a host memory buffer before being put into the host virtual buffers. When the commands are in order, the search operation for specific data is improved.

First claim

Opening claim text (preview).

We claim: 1. A method for data transfer in a memory device, the method comprising: receiving a read command from a host, wherein the read command specifies segments of data to be read from non-volatile memory in the memory device; dynamically allocating memory space in a host memory buffer in the host for the read command, wherein a size of the allocated memory space is equal to a total data a transfer size of the read command; reading the segments of data from the non-volatile memory in an order different from an order specified in the read command; storing the segments of data in the host memory buffer, wherein each segment of data is stored in a location in the host memory buffer that corresponds to a location of the segment of data in the order specified in the read command, wherein even though the segments of data are read out of order from the non-volatile memory, the segments of data are stored in order in the host memory buffer; determining whether a last segment of data was read from the non-volatile memory; in response to determining that the last segment of data was read from the non-volatile memory, performing the following in parallel: reading the segments of data stored in the host memory buffer in the order in which they are stored in the host memory buffer; identifying memory locations in a host memory that are designated as a host buffer for data transfers using a scatter gather list (SGL); and transferring the segments of data from the host memory buffer to the locations in the host buffer identified in the SGL, wherein the segments of data are transferred in the order in which they are stored in the host memory buffer; and de-allocating the memory space in the host memory buffer. 2. The method of claim 1 , wherein the host memory buffer is a portion allocated from memory on the host. 3. The method of claim 1 , wherein the host buffer is distinct from the host memory buffer. 4. The method of claim 1 , wherein the stored segments of data are transferred to a plurality of host buffers of different sizes. 5. The method of claim 1 , wherein the host buffer and the host memory buffer are stored in the host. 6. The method of claim 1 , wherein each of the plurality of segments of the SGL comprises: descriptors that include a pointer; and an indication of the size of the host buffer. 7. The method of claim 1 , wherein the read commands received from the host reference data that is out of order. 8. The method of claim 7 , wherein the data that is out of order is re-ordered by using an offset in the host memory buffer. 9. A host device configured to be connected to a memory device, the host device comprising: one or more host buffers; a host memory buffer; and a controller configured to: send a read command to a memory device, wherein the read command specifies segments of data to be read from non-volatile memory in the memory device; store segments of data received from the memory device in the host memory buffer, wherein each segment of data is stored in a location in the host memory buffer that corresponds to a location of the segment of data in the order specified in the read command, wherein even though the segments of data are read out of order from the nonvolatile memory, the segments of data are stored in order in the host memory buffer; determine whether a last segment of data was stored in the host memory buffer; and in response to determining that the last segment of data was stored in the host memory buffer, perform the following in parallel: read the segments of data stored in the host memory buffer in the order in which they are stored in the host memory buffer; identify locations in the one or more host buffers for data transfers using a scatter gather list (SGL); and transfer the segments of data from the host memory buffer to the locations in the one or more host buffers that are identified by the memory device, wherein the segments of data are transferred in the order in which they are stored in the host memory buffer. 10. The host device of claim 9 , wherein the memory device utilizes a non-volatile memory express (NVMe) protocol. 11. The host device of claim 10 , wherein the host memory buffer is storage in the host device according to the NVMe protocol. 12. A system for data transfer in a memory, the system comprising: a non-volatile memory; means for receiving a read command from a host, wherein the read command specifies segments of data to be read from the non-volatile memory; means for allocating memory space in a host memory buffer for the read command, wherein a size of the allocated memory space is equal to a total data transfer size of the read command; means for reading the segments of data from the non-volatile memory in an order different from an order specified in the read command; means for storing the segments of data in the host memory buffer, wherein each segment of data is stored in a location in the host memory buffer that corresponds to a location of the segment of data in the order specified in the read command, wherein even though the segments of data are read out of order from the non-volatile memory, the segments of data are stored in order in the host memory buffer; means for determining whether a last segment of data was read from the non-volatile memory; means for, in response to determining that the last segment of data was read from the nonvolatile memory, performing the following in parallel: reading the segments of data stored in the host memory buffer in the order in which they are stored in the host memory buffer; identifying memory locations in a host memory that are designated as a host buffer for data transfers using a scatter gather list (SGL); and transferring the segments of data from the host memory buffer to the locations in the host buffer identified in the SGL, wherein the segments of data are transferred in the order in which they are stored in the host memory buffer; and means for de-allocating the memory space in the host memory buffer. 13. The system of claim 12 , wherein the host buffer is accessed by the host. 14. The system of claim 12 , wherein a size of the host buffer varies based on the read command. 15. The system of claim 12 , wherein the host memory buffer and the host buffer are memories in the host. 16. The system of claim 12 , wherein the read command received from the host references data that is out of order and is re-ordered with the host memory buffer. 17. The method of claim 1 , wherein the non-volatile memory comprises a three-dimensional memory. 18. The host device of claim 9 , wherein the non-volatile memory comprises a three-dimensional memory. 19. The host device of claim 9 , wherein the memory device is embedded in the host device. 20. The system of claim 12 , wherein the non-volatile memory comprises a three-dimensional memory.

Assignees

Inventors

Classifications

  • Non-volatile semiconductor memory arrays · CPC title

  • Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS] · CPC title

  • Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays · CPC title

  • Allocation or management of cache space · CPC title

  • Command handling arrangements, e.g. command buffers, queues, command scheduling · 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 US10642496B2 cover?
A storage device may utilize a host memory buffer for re-ordering commands in a submission queue. Out of order commands in a submission queue that uses host virtual buffers that are not the same size may be difficult to search. Accordingly, commands in a submission queue may be correctly ordered in a host memory buffer before being put into the host virtual buffers. When the commands are in ord…
Who is the assignee on this patent?
Sandisk Technologies Inc
What technology area does this patent fall under?
Primary CPC classification G06F3/061. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue May 05 2020 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 7 related publications on this page (citations in our corpus or others sharing the same primary CPC).