Solid-state storage subsystems execute many commands in the course of their normal operation. For example, garbage collection is frequently performed on memory blocks that may contain both valid and invalid data. When such a memory block is selected for garbage collection, the garbage collection operation copies valid data within the memory block to a new location in memory and then erases the entire memory block, making the entire block available for future data writes. In addition to garbage collection operations, solid-state storage subsystems also perform read and write operations as dictated by memory commands issued by host systems.
Systems and methods which embody the various features of the invention will now be described with reference to the following drawings, in which:
While certain embodiments of the inventions have been described, 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
Solid-state storage subsystems perform internal system operations such as garbage collection and wear leveling to improve performance and longevity. Embodiments of the invention are directed to managing the execution of commands related to these internal system operations and commands received from host systems.
One challenge of executing internal system commands (e.g. garbage collection commands) with host system commands is the ability to maintain a consistent execution throughput of host system commands, and in particular, host write commands. For example, if garbage collection commands do not free up blocks fast enough to keep up with host write commands, the storage subsystem may eventually run out of free blocks for additional host write commands. Once this occurs, storage subsystem performance is dramatically degraded as host write commands are stalled until the necessary garbage collection commands are executed to free up more blocks for writing.
One method to prevent stalling is to simply execute N garbage collection commands for every host command, whereby N is the worst case write amplification of the storage subsystem. The worst case write amplification is based at least in part on the amount of over provisioning (additional storage capacity) in the storage subsystem, and reflects the theoretical upper limit of the number of garbage collection commands required as a result of a write operation that necessitates a garbage collection operation. For example, a worst case write amplification of four means that at worst four garbage collection commands are needed per one host write command. In such an example, the controller of the storage subsystem system may prevent stalling by simply executing four garbage collection commands for every host write command. However, to always execute a number of garbage collection commands based on the worst case write amplification unnecessarily reduces the execution throughput of host commands, because in practice not every block undergoing garbage collection reaches the worst case write amplification.
In one embodiment of the invention, a garbage collection module determines a throttling ratio based on the number of pages containing invalid data within a current block undergoing garbage collection, and the throttling ratio is used by a controller to determine the number of garbage collection commands executed per a host system command at a particular point in time. Because the throttling ratio is dynamically determined based on the amount of invalid data within the current block undergoing garbage collection, the controller can optimize the execution ratio of garbage collection and host system commands while preventing stalled execution of host system commands.
System Overview
In one embodiment, the queue 142 includes queue management logic 144 to manage the flow of commands from the driver 132 and/or the system operation module 148. In other embodiments, the queue management logic may reside within the system operation module 148 and/or the driver 132, or the controller 150 may perform the functions of queue management without the dedicated queue management logic 144. The queue management logic is configured to manage the flow of the commands into and/or out of the queue so that they are executed in an optimized manner as further described herein while maintaining data integrity by preserving the order in which commands are issued by the host driver 132. As further shown in
Using a Throttling Ratio to Manage Commands
In one embodiment, the throttling ratio is calculated by dividing the number of invalid pages in a block selected for garbage collection by the number of total pages in the block. In one embodiment, the quotient of the division is rounded up to a nearest pre-set ratio. For example, a quotient of 0.18 may be rounded to 0.2, which is translated into a pre-set ratio of four garbage collection commands to one host command. In other embodiments, the ratio may be two integers greater than one such as 3:2, 5:2, 7:3, etc. and the number of garbage collection commands in the ratio may be smaller than the number of host commands (e.g. 2:3, 1:5, 1:4, etc.). In other embodiments, the host system may issue a command to temporarily or permanently override the throttling ratio determined by the garbage collection module. Additionally, the throttling ratio may be adjusted based on other monitored conditions of the storage subsystem such observed wear level, erase counts, temperature, and/or voltage spikes.
Command Execution Examples
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 |
---|---|---|---|
5093780 | Sunahara | Mar 1992 | A |
5123094 | MacDougall | Jun 1992 | A |
5634099 | Andrews et al. | May 1997 | A |
6088740 | Ghaffari et al. | Jul 2000 | A |
6205521 | Schumann | Mar 2001 | B1 |
6338122 | Baumgartner et al. | Jan 2002 | B1 |
6475062 | Kubota et al. | Nov 2002 | B1 |
6678801 | Greim et al. | Jan 2004 | B1 |
6757781 | Williams et al. | Jun 2004 | B2 |
6760820 | Henson et al. | Jul 2004 | B2 |
6862151 | Hoskins et al. | Mar 2005 | B2 |
6969989 | Mei | Nov 2005 | B1 |
7082494 | Thelin et al. | Jul 2006 | B1 |
7114041 | Hammitt et al. | Sep 2006 | B2 |
7174467 | Helms et al. | Feb 2007 | B1 |
7310699 | Sinclair | Dec 2007 | B2 |
7313641 | Koch et al. | Dec 2007 | B2 |
7315917 | Bennett et al. | Jan 2008 | B2 |
7340580 | Kinoshita | Mar 2008 | B2 |
7363396 | Liu et al. | Apr 2008 | B2 |
7363421 | Di Sena et al. | Apr 2008 | B2 |
7366826 | Gorobets et al. | Apr 2008 | B2 |
7406547 | Haines et al. | Jul 2008 | B2 |
7424587 | Caulkins et al. | Sep 2008 | B2 |
7441054 | Wu et al. | Oct 2008 | B2 |
7441067 | Gorobets et al. | Oct 2008 | B2 |
7457903 | Purdham et al. | Nov 2008 | B2 |
7487286 | Nagano et al. | Feb 2009 | B2 |
7582868 | Jiang et al. | Sep 2009 | B2 |
7831783 | Pandit et al. | Nov 2010 | B2 |
20010034809 | Ogawa | Oct 2001 | A1 |
20020040413 | Okada et al. | Apr 2002 | A1 |
20020083111 | Row et al. | Jun 2002 | A1 |
20040193743 | Byers et al. | Sep 2004 | A1 |
20050193081 | Gruber et al. | Sep 2005 | A1 |
20050204187 | Lee et al. | Sep 2005 | A1 |
20060155917 | Di Sena et al. | Jul 2006 | A1 |
20060161724 | Bennett et al. | Jul 2006 | A1 |
20070016721 | Gay | Jan 2007 | A1 |
20070033332 | Sinclair et al. | Feb 2007 | A1 |
20070043900 | Yun | Feb 2007 | A1 |
20070186032 | Sinclair et al. | Aug 2007 | A1 |
20070186065 | Lee et al. | Aug 2007 | A1 |
20080082736 | Chow et al. | Apr 2008 | A1 |
20080091872 | Bennett et al. | Apr 2008 | A1 |
20080126685 | Danilak | May 2008 | A1 |
20080126719 | Danilak | May 2008 | A1 |
20080126720 | Danilak | May 2008 | A1 |
20080126891 | Danilak | May 2008 | A1 |
20080155166 | James et al. | Jun 2008 | A1 |
20080235443 | Chow et al. | Sep 2008 | A1 |
20080263305 | Shu et al. | Oct 2008 | A1 |
20080282024 | Biswas et al. | Nov 2008 | A1 |
20080288717 | Torabi | Nov 2008 | A1 |
20080307164 | Sinclair | Dec 2008 | A1 |
20090012976 | Kang et al. | Jan 2009 | A1 |
20090017220 | Muller et al. | Jan 2009 | A1 |
20090070502 | Noha et al. | Mar 2009 | A1 |
20090116475 | Krzyzanowski et al. | May 2009 | A1 |
20090129163 | Danilak | May 2009 | A1 |
20090150599 | Bennett | Jun 2009 | A1 |
20090154026 | Jiang et al. | Jun 2009 | A1 |
20090172250 | Allen et al. | Jul 2009 | A1 |
20090172258 | Olbrich et al. | Jul 2009 | A1 |
20090172260 | Olbrich et al. | Jul 2009 | A1 |
20090271562 | Sinclair | Oct 2009 | A1 |
20090313501 | Hallivuori | Dec 2009 | A1 |
20100023672 | Gorobets et al. | Jan 2010 | A1 |
20100037009 | Yano et al. | Feb 2010 | A1 |
20100185806 | Pruthi et al. | Jul 2010 | A1 |
20100262760 | Swing et al. | Oct 2010 | A1 |
20110022778 | Schibilla et al. | Jan 2011 | A1 |
20110055455 | Post et al. | Mar 2011 | A1 |
20110055458 | Kuehne | Mar 2011 | A1 |
20110191566 | Takamiya et al. | Aug 2011 | A1 |
20110231624 | Fukutomi et al. | Sep 2011 | A1 |
20120239851 | Calvert et al. | Sep 2012 | A1 |
20130024595 | Subramaniyan et al. | Jan 2013 | A1 |
Entry |
---|
Hu et al., “Write Amplification Analysis in Flash-Based Solid State Drives”, SYSTOR'09, Haifa, 2009, Zurich Research Laboratory,copyright 2009 IBM Corporation, downloaded on May 12, 2010 from https://www.research.ibm.com/haifa/conferences/systor2009/papers/2—2—2.pdf, 13 pages. |
Taratorin, Alexander M. and Klaas B. Klassen, Observation of Recording Pole Instability in Perpendicular Recording, IEEE Transaction on Magnetics, vol. 42, No. 10, Oct. 2006, pp. 2267-2269. |
Webpage for Anandtech, located at www.anandtech.com, accessed on Jun. 17, 2011. |
Notice of Allowance dated Apr. 2, 2013 issued in U.S. Appl. No. 12/777,771, 8 pages. |