Out of order read transfer with host memory buffer
First Claim
Patent Images
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 Assignments
0 Petitions
Accused Products
Abstract
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.
30 Citations
20 Claims
-
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. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 17)
-
-
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. - View Dependent Claims (10, 11, 18, 19)
-
-
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. - View Dependent Claims (13, 14, 15, 16, 20)
-
Specification