This disclosure relates to data storage systems for computer systems. More particularly, the disclosure relates to out-of-order data transfer for data storage systems.
Data storage systems provide storage for user data of a host system. A host system can utilize direct memory access (DMA) for retrieving user data stored in a data storage system and for transferring user data to data storage system memory. DMA can offload data retrieval and transfer tasks from the central processing unit (CPU) of the host system, which can increase efficiency. DMA can further utilize scatter gather process for transferring data to and from multiple areas in the data storage system memory. In certain cases, using the scatter gather process can result in transfer of data in a single DMA transaction. However, during data retrieval, the scatter gather process can expect user data stored in the data storage system memory to arrive in a certain order, which may introduce undesirable inefficiencies and overhead. Accordingly, it is desirable to provide more efficient data transfer mechanisms, particularly when data is transferred out of order.
Systems and methods that embody the various features of the invention will now be described with reference to the following drawings, in which:
While certain embodiments are described, these embodiments are presented by way of example only, and are not intended to limit the scope of protection. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms. Furthermore, various omissions, substitutions, and changes in the form of the methods and systems described herein may be made without departing from the scope of protection.
Data storage systems provide storage for user data communicated by host systems. A host system can utilize DMA with scatter gather process for efficiently retrieving user data stored in multiple areas of memory of a data storage system and for storing user data in multiple areas of data storage system memory. User data may be stored in non-consecutive memory locations in data storage system memory. Further, user data may be retrieved from data storage system memory in order that is different from the order expected by the host system. For example, the expected order may be the order of read data commands communicated by the host system to the data storage system. In some instances, such out-of-order data retrieval may reduce the efficiency of the data retrieval process. For example, the data storage system may need to buffer user data retrieved out-of-order so that the data can be provided to the host system in the expected order.
Embodiments of the present invention are directed to out-of-order data transfer mechanisms. In one embodiment, a host system can use scatter gather mechanism for retrieving and storing data in a data storage system. The data storage system can retrieve from the host system a scatter gather list (SGL) associated with a data read command and generate a memory access table based on the scatter gather list. The data storage system can further retrieve data from data storage system memory (e.g., non-volatile memory array). 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. Accordingly, data transfer performance can be increased.
The controller 130 can be configured to receive data and/or storage access commands from a storage interface module 112 (e.g., a device driver) of a host system 110. Storage access commands communicated by the storage interface 112 can include write data and read data commands issued by the host system 110. Storage access commands can be communicated by the data transfer module 114. Read and write commands can specify a logical address (e.g., logical block addresses or LBAs) used to access the data storage system 120A. The controller 130 can execute the received commands in the non-volatile memory array 150.
Data storage system 120A can store data communicated by the host system 110. In other words, the data storage system 120A can act as memory storage for the host system 110. To facilitate this function, the controller 130 can implement a logical interface. The logical interface can present to the host system 110 data storage system's memory as a set of logical addresses (e.g., contiguous address) where host data can be stored. Internally, the controller 130 can map logical addresses to various physical locations or addresses in the non-volatile memory array 150 and/or other storage modules. The controller 130 includes a data transfer module 132 configured to perform transfer of data between the data storage system 120A and the host system 110 (e.g., via the data transfer module 114). Transfer of data can include both retrieving of data stored in the non-volatile memory array 150 and storing data in the non-volatile memory array 150.
Out-of-Order Data Transfer
In one embodiment, the non-volatile memory array 150 includes or is divided into physical memory units. For example, the non-volatile memory array 150 may be divided into blocks, which may be further divided into pages. Memory units can be grouped together into chunks. For example, the non-volatile memory array 150 can include 512 Byte pages, which can be grouped into 4 KB chunks. Other suitable page sizes can be used, such as 1 KB, 2 KB, etc., and other suitable chunk sizes can be used, such as 520 Bytes, 528 Bytes, 1 KB, 2 KB, etc. Grouping of physical memory units into chunks may be done for various reasons, such as efficiently accessing memory, for example, when non-volatile memory 150 includes dies, planes, channels, etc. which may be accessed in parallel or substantially in parallel.
In one embodiment, as is explained above, the host system 110 can be configured to access memory of the data storage system (e.g., data storage system 220) using the logical interface. For example, the host system 110 can access memory of the data storage system in data blocks, sectors, etc., such as for example 512 Bytes, 2 KB, 4 KB, etc. The entries of SGL 210 can specify addresses of such data units used by the host system 110. With reference to
In one embodiment, the memory access table 230a can be generated based on the SGL 210. Each entry in the SGL 210, which may correspond to an address of a logical data unit, can be translated or transformed into one or more addresses corresponding to one or more physical memory units or one or more logical groupings of physical memory units. For example, if the SGL 210 specifies addresses of 4 KB data units and the data storage system 220 uses 512 Byte chunks, each entry of SGL 210 may be associated with four entries in the memory access table 230a. As is illustrated in
As is shown in
In some embodiments, the number of entries N in a grouping (e.g., 235b) of the memory access table 230b can be any suitable number, such as 3, 4, 5, 10, etc. Using this approach, the size of the memory access table 230b can be smaller than the size of the memory access table 230a, as memory access table 230b has fewer entries. Such reduction in the size of the memory access table can be particularly suitable for generating memory access tables corresponding to heavily fragmented scatter gather lists. For example, when the memory access table 230b has three entries in a grouping (N=3), an entry having an address or pointer to a corresponding SGL entry can provide a layer of indirection that allows for reduction of the number of entries in the grouping and, consequently, reduction of the number of entries in the memory access table. A suitable tradeoff between reducing the number of entries and performing additional look-up operations can be achieved.
In block 608, the process 600 provides retrieved data to the host system 110. This can be accomplished by associating memory access table entries corresponding to retrieved data with corresponding SGL entries. Data can be provided to the host system 110 out of order. For example, data can be retrieved out of order, and using the associations between memory access table entries and corresponding SGL 210 entries, data can be provided to the host system 110 without having to buffer and reassemble data so that it is in the expected order. After providing retrieved data to the host system, the process 600 terminates.
If the counter is not less than the chunk size, the process transitions to block 710 where it determines whether the counter is equal to the chunk size. If this is the case, the SGL 210 entry fetched in block 702 corresponds to the last entry of a chunk. For example, with reference to
If the counter is greater than the chunk size, which indicates that the retrieved data spans across a chunk boundary, the process 700 transitions to block 714. Here, the retrieved data is associated with two memory access table entries. The first memory access table entry is associated with the address of the retrieved data (e.g., the starting address) and the chunk size. This entry can correspond to the last entry of a chunk. The second memory access table entry is associated with the address corresponding to the address of the retrieved data+chunk size, which corresponds a first entry of the next chunk, and size corresponding to counter−chunk size, which corresponds to the remaining size of the retrieved data. In one embodiment, the first and second memory access table entries are consecutive entries. In another embodiment, the first and second memory access table entries are nonconsecutive entries. After completing block 714, the process 700 terminates.
Embodiments of the data storage system disclosed herein are configured to perform out-of-order data transfer. In one embodiment, a data storage system can retrieve from a host system a SGL associated with a data read command and generate a memory access table based on the 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 which may be manifested by the improvements in the efficiency and speed of the data transfer process.
Those skilled in the art will appreciate that in some embodiments, out-of-order data transfer mechanisms disclosed herein can be during writing or programming data to a data storage system memory. Further, out-of-order data transfer mechanisms disclosed herein can be utilized irrespective of whether a scatter and gather process is used during data transfer. Additional system components can be utilized, and disclosed system components can be combined or omitted. The actual steps taken in the disclosed processes, such as the processes illustrated in
While certain embodiments have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the protection. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms. Furthermore, various omissions, substitutions and changes in the form of the methods and systems described herein may be made without departing from the spirit of the protection. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the protection. For example, the systems and methods disclosed herein can be applied to hard disk drives, hybrid hard drives, and the like. In addition, other forms of storage (e.g., DRAM or SRAM, battery backed-up volatile DRAM or SRAM devices, EPROM, EEPROM memory, etc.) may additionally or alternatively be used. As another example, the various components illustrated in the figures may be implemented as software and/or firmware on a processor, ASIC/FPGA, or dedicated hardware. Also, the features and attributes of the specific embodiments disclosed above may be combined in different ways to form additional embodiments, all of which fall within the scope of the present disclosure. Although the present disclosure provides certain preferred embodiments and applications, other embodiments that are apparent to those of ordinary skill in the art, including embodiments which do not provide all of the features and advantages set forth herein, are also within the scope of this disclosure. Accordingly, the scope of the present disclosure is intended to be defined only by reference to the appended claims.
Number | Name | Date | Kind |
---|---|---|---|
5625800 | Brayton et al. | Apr 1997 | A |
5838950 | Young et al. | Nov 1998 | A |
6078990 | Frazier | Jun 2000 | A |
6687767 | Butterfield | Feb 2004 | B2 |
6823403 | Gulick et al. | Nov 2004 | B2 |
7127534 | Jackson | Oct 2006 | B2 |
7464198 | Martinez et al. | Dec 2008 | B2 |
7603490 | Biran | Oct 2009 | B2 |
7620749 | Biran | Nov 2009 | B2 |
7676611 | Hui et al. | Mar 2010 | B2 |
7743191 | Liao | Jun 2010 | B1 |
8074026 | Kim et al. | Dec 2011 | B2 |
8082372 | Barry et al. | Dec 2011 | B2 |
8090789 | O'Shea et al. | Jan 2012 | B1 |
8578097 | Kim et al. | Nov 2013 | B2 |
8578356 | Pritchard et al. | Nov 2013 | B1 |
20020091844 | Craft et al. | Jul 2002 | A1 |
20070011398 | Van Niekerk | Jan 2007 | A1 |
20070208820 | Makhervaks et al. | Sep 2007 | A1 |
20110082985 | Haines et al. | Apr 2011 | A1 |
20110145598 | Smith et al. | Jun 2011 | A1 |
20110225378 | Hara | Sep 2011 | A1 |
20110314199 | Jeddeloh | Dec 2011 | A1 |
20120011335 | Asnaashari | Jan 2012 | A1 |
Entry |
---|
“Ordered.” Merriam-Webster.com. Merriam-Webster, n.d. [online], [retrieved on Dec. 1, 2014]. Retrieved from the Internet <http://www.merriam-webster.com/dictionary/ordered>. |
“Ordered.” The American Heritage® Dictionary of the English Language, Fifth Edition copyright © 2014 by Houghton Mifflin Harcourt Publishing Company. All rights reserved. [online], [retrieved on Dec. 1, 2014]. Retrieved from the Internet <https://www.ahdictionary.com/word/search.html?q=ordered>. |
“Associated.” The American Heritage® Dictionary of the English Language, Fifth Edition copyright © 2014 by Houghton Mifflin Harcourt Publishing Company. All rights reserved. [online], [retrieved Dec. 3, 2014]. Retrieved from the internet <https://www.ahdictionary.com/word/search.html?q=associated&submit.x=48&submit.y=21>. |
“Associate.” Merriam-Webster.com. Merriam-Webster, n.d. [online], [retrieved on Dec. 3, 2014]. Retrieved from the internet <http://www.merriam-webster.com/dictionary/associate>. |