In a non-volatile solid-state memory system, host commands as well as internal management commands such as those related to wear leveling and garbage collection are executed on the solid-state memory. Internal management commands typically include erase commands that are used to free blocks for later write requests. When an erase command is executed, it is typically executed on a group of blocks distributed across all dies of memory available on a memory array. Because a typical erase command is relatively long in duration and can occupy all dies of the memory, other commands may need to wait for the completion of the erase command before execution. This can impact overall memory access times.
While certain embodiments of the inventions are described herein, these embodiments have been presented by way of example only, and are not intended to limit the scope of the inventions. 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 inventions. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the inventions.
Overview
A broad overview of a memory storage subsystem in accordance with one embodiment is shown in
In one embodiment, the non-volatile solid-state arrays 160 receive memory commands from the controller 150, which in turn receives memory commands from a host system 130. The host system 130 includes a driver 132 in communication with the controller 150. In one embodiment, commands from the host system 130 provided to the controller 150 are stored as host commands 152 for execution on the non-volatile solid-state memory arrays 160.
In one embodiment, the controller 150 includes a memory management subsystem 156. The memory management subsystem 156 monitors the memory commands executed on non-volatile solid-state memory arrays 160 and requests internal memory management commands 154. For example, the memory management subsystem 156 can be responsible for requesting commands for wear leveling and garbage collection operations. Wear leveling commands generally relate to averaging the number of erase operations across all blocks in a die and preventing blocks from receiving significantly uneven use. Garbage collection commands generally relate to freeing memory which is no longer being used, so that the memory is available for future write commands. A typical garbage collection command would process a unit of memory such as a block by copying valid data within the unit to new location(s) and then erasing the entire unit so that it becomes available for future write commands. Generally, it is preferable for the internal management commands of the memory storage subsystem (e.g., wear leveling and garbage collection) to operate invisibly to the host system, and to place, to the extent possible, the least amount of additional burden on host access times and throughput.
In one embodiment, when the memory management subsystem 156 requests an erase command (e.g., for the purpose of garbage collection), the controller issues the erase command to an entire superblock. Accordingly, when an erase command is issued in the embodiment of
Accessing the memory by using the superblock configuration is helpful because it can increase concurrency in the system. In one embodiment, by using a superblock, when write commands are received, they can be executed on sequential dies within a superblock. For example, while a first die is active on a write command, a subsequent write command will not need to wait on the first die to complete its write command, but instead can be executed on the second die in the superblock, and so on. By grouping the blocks from dies together into a superblock, increased concurrency can be achieved by enabling additional dies to be active at once. In these circumstances, to ensure the superblock is able to receive and execute the concurrent requests to write for a superblock, an erase command is performed for all blocks in a superblock. This ensures that when erased, the superblock is fully available for write concurrency. When an erase command is requested for all dies in a superblock simultaneously, any write command directed to those same dies are delayed and must wait for the erase command to complete, a condition that is termed a “contention.” When this occurs in an embodiment with a single superblock set, to the host system it may appear that the storage subsystem is providing high throughput for write commands and then suddenly stalls.
Multiple Superblock Sets
As an alternative to using the single superblock set configuration that encompasses all of the dies in an array, one embodiment reduces contentions by utilizing multiple superblock sets designated to handle different memory commands, with each superblock set encompassing a portion of the dies in an array.
During operation of the memory storage subsystem, the associated commands for each superblock set may dynamically change in one embodiment. For example, as the host requests write commands to the superblock 340, the superblock 340 may require garbage collection operations. If this occurs, the controller 310 can switch the designation of the superblock sets so that host write commands can be directed to a superblock within the second superblock set 351 (e.g., the superblock 341), and garbage collection operations can be performed on the superblock 340, which is within the first superblock set 350. Host read commands, because they are generally associated with a specific logical address, may require read access to the superblock set 350, in which case such host read commands may need to wait for contention resolution (resolving the contention between the read commands and the erase commands) to access the superblock set 350.
As shown in
In
There are additional variations to the multiple superblock set configuration in other embodiments. First, garbage collection and host commands are used here as examples only, as other internal memory command types may also be used and allocated to the superblock sets as necessary. Second, although only four dies per set are shown in the example illustration of
The allocation of superblock sets to the various command requesters can be performed in a variety of ways. For example, in one embodiment, the controller may have a routine that assigns each superblock set to a specific requester for a particular type of operation (e.g., one or more sets to host write commands and one or more sets to garbage collection commands). In some embodiments, the superblock set(s) associated with the individual requesters can be determined by the controller, and thus unknown to the individual requesters. Instead, the controller will assign a physical write location to a command from the individual requester according to an open superblock in a superblock set associated with that requester. The requester in this scenario may only need to maintain a record of the logical write locations associated with its data.
As an alternative, the requesters may be able to specifically request a particular superblock set. For example, in one embodiment, the memory management subsystem, which handles garbage collection, may have noticed that a particular superblock in a superblock set is more in need of garbage collection than the superblock that is currently being garbage collected. The memory management subsystem may notify a superblock allocation routine on the controller and wait until the routine assigns the particular superblock in need of garbage collection to the memory management subsystem.
In another embodiment, a requester can notify other requesters that the requester is to begin work on a particular superblock. This could either be implemented as a master/slave arrangement or with each requester able to notify the others. For example, the memory management subsystem may determine that a first superblock needs additional free blocks to be generated by garbage collection. The memory management subsystem will then notify the other requesters to use superblocks in other superblock sets. For garbage collection purposes, the memory management subsystem is generally sensitive to the particular superblock it is accessing (preferably freeing memory in the superblock with the most dirty blocks), while host write commands are generally indifferent to the superblock being used and the corresponding physical write location. The memory management subsystem can indicate to the other requesters the superblock(s) for which it will request garbage collection commands, and the other requesters will then address their commands to superblock(s) in other superblock set(s).
Command Processing in Multiple Superblock Set Embodiments
Execution Timing Examples
Although embodiments have been described above as grouping blocks together to form superblocks, alternative groupings of memory units to improve response time and concurrency are possible in keeping with the disclosure above. These alternative groupings could be accomplished at different levels of the memory hierarchy (e.g., dies, planes, pages, etc.) or in systems with different addressable memory structures.
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 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.
The present application is a continuation of U.S. patent application Ser. No. 13/214,132, filed on Aug. 19, 2011 and entitled “SYSTEM AND METHOD FOR REDUCING CONTENTIONS IN SOLID-STATE MEMORY ACCESS,” which claims priority to and the benefit of U.S. Provisional Application No. 61/383,284, filed on Sep. 15, 2010 and titled “SYSTEM AND METHOD FOR REDUCING CONTENTIONS IN SOLID-STATE MEMORY ACCESS,” each of which is hereby incorporated by reference in its entirety.
Number | Name | Date | Kind |
---|---|---|---|
6856556 | Hajeck | Feb 2005 | B1 |
7126857 | Hajeck | Oct 2006 | B2 |
7430136 | Merry, Jr. et al. | Sep 2008 | B2 |
7447807 | Merry et al. | Nov 2008 | B1 |
7502256 | Merry, Jr. et al. | Mar 2009 | B2 |
7509441 | Merry et al. | Mar 2009 | B1 |
7596643 | Merry, Jr. et al. | Sep 2009 | B2 |
7653778 | Merry, Jr. et al. | Jan 2010 | B2 |
7685337 | Merry, Jr. et al. | Mar 2010 | B2 |
7685338 | Merry, Jr. et al. | Mar 2010 | B2 |
7685374 | Diggs et al. | Mar 2010 | B2 |
7733712 | Walston et al. | Jun 2010 | B1 |
7765373 | Merry et al. | Jul 2010 | B1 |
7898855 | Merry, Jr. et al. | Mar 2011 | B2 |
7912991 | Merry et al. | Mar 2011 | B1 |
7936603 | Merry, Jr. et al. | May 2011 | B2 |
7962792 | Diggs et al. | Jun 2011 | B2 |
8078918 | Diggs et al. | Dec 2011 | B2 |
8090899 | Syu | Jan 2012 | B1 |
8095851 | Diggs et al. | Jan 2012 | B2 |
8108692 | Merry et al. | Jan 2012 | B1 |
8122185 | Merry, Jr. et al. | Feb 2012 | B2 |
8127048 | Merry et al. | Feb 2012 | B1 |
8135903 | Kan | Mar 2012 | B1 |
8151020 | Merry, Jr. et al. | Apr 2012 | B2 |
8161227 | Diggs et al. | Apr 2012 | B1 |
8166245 | Diggs et al. | Apr 2012 | B2 |
8243525 | Kan | Aug 2012 | B1 |
8254172 | Kan | Aug 2012 | B1 |
8261012 | Kan | Sep 2012 | B2 |
8296625 | Diggs et al. | Oct 2012 | B2 |
8312207 | Merry, Jr. et al. | Nov 2012 | B2 |
8316176 | Phan et al. | Nov 2012 | B1 |
8341339 | Boyle et al. | Dec 2012 | B1 |
8375151 | Kan | Feb 2013 | B1 |
8392635 | Booth et al. | Mar 2013 | B2 |
8397107 | Syu et al. | Mar 2013 | B1 |
8407449 | Colon et al. | Mar 2013 | B1 |
8423722 | Deforest et al. | Apr 2013 | B1 |
8433858 | Diggs et al. | Apr 2013 | B1 |
8443167 | Fallone et al. | May 2013 | B1 |
8447920 | Syu | May 2013 | B1 |
8458435 | Rainey, III et al. | Jun 2013 | B1 |
8478930 | Syu | Jul 2013 | B1 |
8489854 | Colon et al. | Jul 2013 | B1 |
8503237 | Horn | Aug 2013 | B1 |
8521972 | Boyle et al. | Aug 2013 | B1 |
8549236 | Diggs et al. | Oct 2013 | B2 |
8583835 | Kan | Nov 2013 | B1 |
8601311 | Horn | Dec 2013 | B2 |
8601313 | Horn | Dec 2013 | B1 |
8612669 | Syu et al. | Dec 2013 | B1 |
8612804 | Kang et al. | Dec 2013 | B1 |
8615681 | Horn | Dec 2013 | B2 |
8638602 | Horn | Jan 2014 | B1 |
8639872 | Boyle et al. | Jan 2014 | B1 |
8683113 | Abasto et al. | Mar 2014 | B2 |
8700834 | Horn et al. | Apr 2014 | B2 |
8700950 | Syu | Apr 2014 | B1 |
8700951 | Call et al. | Apr 2014 | B1 |
8706985 | Boyle et al. | Apr 2014 | B1 |
8707104 | Jean | Apr 2014 | B1 |
8713066 | Lo et al. | Apr 2014 | B1 |
8713357 | Jean et al. | Apr 2014 | B1 |
8719531 | Strange et al. | May 2014 | B2 |
8724422 | Agness et al. | May 2014 | B1 |
8725931 | Kang | May 2014 | B1 |
8745277 | Kan | Jun 2014 | B2 |
8751728 | Syu et al. | Jun 2014 | B1 |
8769190 | Syu et al. | Jul 2014 | B1 |
8769232 | Suryabudi et al. | Jul 2014 | B2 |
8775720 | Meyer et al. | Jul 2014 | B1 |
8782327 | Kang et al. | Jul 2014 | B1 |
8788778 | Boyle | Jul 2014 | B1 |
8788779 | Horn | Jul 2014 | B1 |
8788880 | Gosla et al. | Jul 2014 | B1 |
8793429 | Call et al. | Jul 2014 | B1 |
20020053011 | Aiken et al. | May 2002 | A1 |
20020144066 | Talreja et al. | Oct 2002 | A1 |
20040205296 | Bearden | Oct 2004 | A1 |
20050144357 | Sinclair | Jun 2005 | A1 |
20050204091 | Kilbuck et al. | Sep 2005 | A1 |
20060242065 | Jogand-Coulomb | Oct 2006 | A1 |
20070288712 | Zimoto et al. | Dec 2007 | A1 |
20080147968 | Lee et al. | Jun 2008 | A1 |
20100174849 | Walston et al. | Jul 2010 | A1 |
20100250793 | Syu | Sep 2010 | A1 |
20110099323 | Syu | Apr 2011 | A1 |
20110138148 | Friedman et al. | Jun 2011 | A1 |
20110153911 | Sprouse et al. | Jun 2011 | A1 |
20110283049 | Kang et al. | Nov 2011 | A1 |
20120260020 | Suryabudi et al. | Oct 2012 | A1 |
20120278531 | Horn | Nov 2012 | A1 |
20120284460 | Guda | Nov 2012 | A1 |
20120324191 | Strange et al. | Dec 2012 | A1 |
20130132638 | Horn et al. | May 2013 | A1 |
20130145106 | Kan | Jun 2013 | A1 |
20130290793 | Booth et al. | Oct 2013 | A1 |
20140059405 | Syu et al. | Feb 2014 | A1 |
20140101369 | Tomlin et al. | Apr 2014 | A1 |
20140115427 | Lu | Apr 2014 | A1 |
20140133220 | Danilak et al. | May 2014 | A1 |
20140136753 | Tomlin et al. | May 2014 | A1 |
20140149826 | Lu et al. | May 2014 | A1 |
20140157078 | Danilak et al. | Jun 2014 | A1 |
20140181432 | Horn | Jun 2014 | A1 |
20140223255 | Lu et al. | Aug 2014 | A1 |
Entry |
---|
Notice of Allowance dated Feb. 19, 2014 from U.S. Appl. No. 13/214,132, 9 pages. |
Office Action dated Nov. 8, 2013 from U.S. Appl. No. 13/214,132, 18 pages. |
Final Office Action dated Jun. 17, 2013 from U.S. Appl. No. 13/214,132, 20 pages. |
Office Action dated Dec. 20, 2012 from U.S. Appl. No. 13/214,132, 13 pages. |
Interview Summary dated Apr. 24, 2013 from U.S. Appl. No. 13/214,132, 3 pages. |
Number | Date | Country | |
---|---|---|---|
61383284 | Sep 2010 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 13214132 | Aug 2011 | US |
Child | 14266520 | US |