Out-of-order data transfer mechanisms for data storage systems
First Claim
Patent Images
1. A data storage system comprising:
- a non-volatile memory array; and
a controller configured to;
receive a read data command from a host system;
retrieve from the host system a scatter gather list (SGL) associated with the read data command, the SGL comprising a plurality of entries associated with a plurality of logical addresses corresponding to logical data units stored in the non-volatile memory array;
generate a memory access table using the SGL, the memory access table comprising a plurality of entries, wherein the plurality of entries includes a respective plurality of physical addresses translated from the plurality of logical addresses of the logical data units, wherein one of the plurality of logical addresses corresponding to one of the logical data units is associated with more than one of the plurality of physical addresses in the memory access table, and wherein one of the plurality of entries in the memory access table comprises a pointer to one of the plurality of entries in the SGL;
generate, based at least in part on the memory access table, a plurality of requests to retrieve the logical data units stored in the non-volatile memory array and retrieve the logical data units, wherein at least some of logical data units are retrieved not in the same order as an order of the retrieval requests or an order of entries in the SGL; and
provide to the host system, based at least in part on the memory access table, at least some of the logical data units retrieved not in the same order as the order of the plurality of retrieval requests.
9 Assignments
0 Petitions
Accused Products
Abstract
A data storage system implements out-of-order data transfer. In one embodiment, the data storage system can retrieve from a host system a scatter gather list (SGL) associated with a data read command and generate a memory access table based on the retrieved SGL. The data storage system can further retrieve data from memory, and at least some data may be retrieved out of order. Retrieved data can be provided to the host system using the memory access table, and at least some data may be provided out of order. Data retrieval performance can be increased.
27 Citations
18 Claims
-
1. A data storage system comprising:
-
a non-volatile memory array; and a controller configured to; receive a read data command from a host system; retrieve from the host system a scatter gather list (SGL) associated with the read data command, the SGL comprising a plurality of entries associated with a plurality of logical addresses corresponding to logical data units stored in the non-volatile memory array; generate a memory access table using the SGL, the memory access table comprising a plurality of entries, wherein the plurality of entries includes a respective plurality of physical addresses translated from the plurality of logical addresses of the logical data units, wherein one of the plurality of logical addresses corresponding to one of the logical data units is associated with more than one of the plurality of physical addresses in the memory access table, and wherein one of the plurality of entries in the memory access table comprises a pointer to one of the plurality of entries in the SGL; generate, based at least in part on the memory access table, a plurality of requests to retrieve the logical data units stored in the non-volatile memory array and retrieve the logical data units, wherein at least some of logical data units are retrieved not in the same order as an order of the retrieval requests or an order of entries in the SGL; and provide to the host system, based at least in part on the memory access table, at least some of the logical data units retrieved not in the same order as the order of the plurality of retrieval requests. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. In a data storage system comprising a non-volatile memory array and a controller, a method of executing data storage operations communicated by a host system, the method comprising:
-
receiving a read data command from the host system; retrieving from the host system a scatter gather list (SGL) associated with the read data command, the SGL comprising a plurality of entries associated with a plurality of logical addresses corresponding to logical data units stored in the non-volatile memory array; generating a memory access table using the SGL, the memory access table comprising a plurality of entries, wherein the plurality of entries includes a respective plurality of physical addresses translated from the plurality of logical addresses of the logical data units, wherein one of the plurality of logical addresses corresponding to one of the logical data units is associated with more than one of the plurality of physical addresses in the memory access table, and wherein one of the plurality of entries in the memory access table comprises a pointer to one of the plurality of entries in the SGL; generating, based at least in part on the memory access table, a plurality of requests to retrieve a plurality of logical data units stored in the non-volatile memory array and retrieving the plurality of logical data units, wherein at least some of the logical data units are retrieved not in the same order as the order of the retrieval requests or the order of the entries in the SGL; and based at least in part on the memory access table, providing to the host system at least some of the logical data units retrieved not in the same order as the order of the plurality of retrieval requests, wherein the method is executed under the control of the controller. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18)
-
Specification