System and method for managing the execution of memory commands in a solid-state memory

Information

  • Patent Grant
  • 8725931
  • Patent Number
    8,725,931
  • Date Filed
    Friday, March 26, 2010
    14 years ago
  • Date Issued
    Tuesday, May 13, 2014
    10 years ago
Abstract
Embodiments of the invention are directed to a storage subsystem comprising a non-volatile solid-state memory array and a controller. In one embodiment, the controller includes a system operation module configured to manage system memory operations and a queue configured to receive memory commands from a host system and the system operation module. The controller is configured to execute, in the memory array, memory commands from the queue in a sequence that is based at least in part on a throttling ratio provided by the system operation module.
Description
BACKGROUND

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.





BRIEF DESCRIPTION OF THE DRAWINGS

Systems and methods which embody the various features of the invention will now be described with reference to the following drawings, in which:



FIG. 1A is a block diagram illustrating a storage subsystem according to one embodiment.



FIG. 1B is a block diagram illustrating a storage subsystem according to another embodiment.



FIG. 2 is a block diagram illustrating a storage subsystem according to yet another embodiment.



FIG. 3 is a flow diagram illustrating a method for managing memory commands in a solid-state storage subsystem according to one embodiment.



FIGS. 4A and 4B illustrate examples of managing memory commands according to one embodiment.



FIG. 5 is a block diagram illustrating an example of executing memory commands according to one embodiment.



FIG. 6 is a block diagram illustrating an example of executing memory commands according to one embodiment.





DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

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



FIG. 1A is a block diagram illustrating a storage subsystem embodiment. As shown, a storage subsystem 140 includes a controller 150, which in turn includes a queue 142 and a system operation module 148. In one embodiment, the queue 142 is implemented as a first-in-first-out (FIFO) data structure. In one embodiment, the queue 142 receives memory commands from a driver 132 residing within a host system 130 and from the system operation module 148. The memory commands from the driver 132 may include write and read commands issued by the host system, while memory commands from the system operation module 148 may include memory commands used to perform data maintenance and internal system operations such as garbage collection and wear leveling.


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 FIG. 1A, in one embodiment, the controller 150 executes the commands in the queue 142 in one or more non-volatile solid-state memory arrays 160.



FIG. 1B is a block diagram illustrating a storage subsystem according to another embodiment. The controller 150 is shown as including a garbage collection module 154, which issues garbage collection commands to the queue 142. The configuration and operation of other components shown in FIG. 1B remain substantially the same as those shown in FIG. 1A.



FIG. 2 is a block diagram illustrating a storage subsystem according to yet another embodiment. In this embodiment, the controller 150 of the storage subsystem 140 includes a host command queue 156 for receiving commands from the driver 132 and a garbage collection command queue 158 for receiving commands from the garbage collection module 154. In one embodiment, the queues 156 and 158 are implemented as FIFO data structures. The controller 150 manages the execution of commands in the two queues 156 and 158 in order to optimize speed and maintain data integrity, as further described below. The configuration and operation of other components shown in FIG. 2 remain substantially the same as those shown in FIG. 1A.


Using a Throttling Ratio to Manage Commands



FIG. 3 is a flow diagram illustrating a method 200 for managing memory commands in a solid-state storage subsystem according to one embodiment. In block 204, the method begins by selecting a target block for garbage collection. In block 206, the method determines a throttling ratio. In one embodiment, the throttling ratio is determined based on a percentage of invalid pages in the selected target block. In block 208, the method provides commands associated with the garbage collection of the target block to a queue within the controller. For example, if the target block has 30 pages of valid data that need to be preserved, the method may issue 30 sets of garbage collection commands, each set including a read and a write command, to copy the 30 pages of valid data to new locations in memory. In block 210, the method executes garbage collection and host commands in the queue(s) in accordance with the throttling ratio determined in block 206.



FIGS. 4A and 4B illustrate examples of managing memory commands according to one embodiment. FIG. 4A shows a table 240 that illustrates an example set of throttling ratios based the percentages of invalid (or valid) pages within a target block that is due to be garbage collected. In the table 240, the first row indicates that if an example target block has 25% pages with invalid data (and hence 75% pages with valid data to be copied and preserved), then the throttling ratio is three garbage collection commands to one host command. The example 3:1 ratio is based on the fact that for every one page containing invalid data that will be freed as a result of garbage collection, three pages of valid data would have to be copied. With reference to FIG. 1B, the queue management logic 144 and/or the controller 150 would execute commands from the queue 142 in the ratio of three garbage collection commands to one host command. In the embodiment shown in FIG. 2, where there are two queues 156 and 158, the controller 150 would execute three commands from the garbage collection command queue 158 for every one command from the host command queue 156. The other rows in the table 240 show other possible throttling ratios based on different percentages of invalid data in the target block. The last row shows that if the target block contains 100% invalid data, no garbage collection commands would be needed since no data in the block would need to be preserved. Thus the queue management logic 144 and/or the controller 150 would be free to execute host commands without a throttling ratio.


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.



FIG. 4B shows a graph 242 that illustrates a potential performance gain from one embodiment of the invention. The example graph 242 compares the performance of a hypothetical controller configured to apply the worst case assumption 4:1 throttling ratio (four garbage collection commands per one host command) to one that dynamically adjusting the throttling ratio as described above. As shown, the controller that utilizes the throttling ratio executes garbage collection commands in a range of fewer than four per one host command. The net result is that proportionally more host commands are executed in the same time period.


Command Execution Examples



FIG. 5 is a block diagram illustrating an example of executing memory commands when a controller (or a queue management logic) is operating under a throttling ratio of 3:1 (three garbage commands to one host command). Although two queues are shown, the same selection method can be applied to embodiments where commands are stored in one queue. As shown in example execution order 252, in accordance with the 3:1 ratio the controller executes three garbage collection commands, then a host command, and then three more garbage collection commands followed by another host command. Alternatively, example execution order 254 shows a different execution order in which six garbage commands are executed first and are followed by two host commands. This variation illustrates the flexibility the controller has in various embodiments to schedule host commands within the confine of the throttling ratio. In this 3:1 ratio example, the host commands can be executed in any order as long they are (1) executed in the order in which they were received from host system, and (2) executed in a time frame in which their execution is offset by a number of garbage collection commands that satisfies the throttling ratio. Thus, as a variation to example execution order 254, the controller may choose to execute the two host commands first and then execute the six garbage collection commands. In one embodiment, a garbage collection command as shown includes two commands, a read command to read data at a valid page address within the block undergoing garbage collection, and a write command to write the data read from the valid page address to a new location in memory. In one embodiment, the host command as shown is a host write command.



FIG. 6 illustrates an alternative embodiment in which the controller (or the queue management logic) distinguishes between the types of memory commands received the host system. As with FIG. 5, although two queues are shown, the same selection method can be applied to embodiments where commands are stored in one queue. The host command queue is shown to include both read and write commands. In this embodiment, the controller can execute as many read commands as needed without regard to the throttling ratio, as long as the read commands are executed in the same order received with respect to other read and write commands. As shown in FIG. 6, the host command queue has a number of host read commands followed by a host write command 268. Example execution order 262 shows the controller executing a number host read commands received from the host system, then three garbage collection commands, and finally the host write command 268. The 3:1 throttling ratio here concerns the host write commands and the garbage collection commands and not the host read commands. Thus five or 10 or more host read commands can be executed as long as the host write commands and garbage collection commands conform to the throttling ratio. Alternatively, example execution order 264 shows the controller executing three garbage collection commands, a number of host read commands, and the host write command 268. Again, the throttling ratio applies to the garbage collection and host write commands and does not limit the number of the host read commands that can be executed within the same time frame. In both example execution orders, the host write command 268 is executed after the host read commands, in the same order in which they were received in the queue, to preserve data integrity. As with FIG. 5, in one embodiment, a garbage collection command as shown includes two commands, a read command to read data at a valid page address within the block undergoing garbage collection, and a write command to write the data read from the valid page address to a new location in memory.


CONCLUSION

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.

Claims
  • 1. A storage subsystem, comprising: a non-volatile solid-state memory array; anda controller comprising: a system operation module configured to manage system memory operations; anda queue configured to receive memory commands from a host system and the system operation module,the controller configured to execute, in the memory array, memory commands from the queue in a sequence based at least in part on a throttling ratio provided by the system operation module by initiating execution of write memory commands and garbage collection commands at a ratio corresponding to the throttling ratio, wherein the memory commands from the host system comprise read memory commands and the write memory commands, and wherein the read memory commands are executed without regard to the throttling ratio.
  • 2. The storage subsystem of claim 1, wherein the system operation module comprises a garbage collection module.
  • 3. The storage subsystem of claim 2, wherein the throttling ratio is based at least in part on a percentage of invalid pages in a current block selected by the garbage collection module for a garbage collection memory operation.
  • 4. The storage subsystem of claim 2, wherein the throttling ratio is calculated by dividing the number of valid pages by the number of invalid pages in a current block selected by the garbage collection module for a garbage collection memory operation.
  • 5. The storage subsystem of claim 2, wherein the controller is configured to execute the memory commands from the host system and the garbage collection module in a sequence that depends on the throttling ratio.
  • 6. The storage subsystem of claim 1, wherein the queue comprises a first queue configured to receive memory commands from the host system and a second queue configured to receive memory commands from the system operation module.
  • 7. The storage subsystem of claim 6, wherein the throttling ratio comprises a number and the controller is further configured to execute, for each command in the first queue, at least a number of memory commands in the second queue specified by the number.
  • 8. The storage subsystem of claim 1, wherein the throttling ratio comprises a first number and a second number and the controller is further configured to execute a number of memory commands from the system operation module specified by the first number for every number of memory commands from the host system specified by the second number.
  • 9. A method of managing memory operations in non-volatile solid-state memory: selecting a target block for a system operation;determining a throttling ratio;providing one or more commands for the system operation to a queue associated with a controller for the non-volatile solid-state memory; andexecuting from the queue the one or more system operation commands and one or more commands received from a host system in a sequence based at least in part on the throttling ratio by initiating execution of write commands and the one or more system operation commands at a ratio corresponding to the throttling ratio, wherein the one or more commands received from the host system comprise read commands and the write commands, and wherein the read commands are executed without regard to the throttling ratio.
  • 10. The method of claim 9, wherein the system operation comprises a garbage collection operation.
  • 11. The method of claim 10, wherein the queue comprises a first queue configured to receive the commands from the host system and a second queue configured to receive the commands for the garbage collection operation.
  • 12. The method of claim 10, wherein the determining a throttling ratio comprises calculating the throttling ratio based on the percentage of invalid pages in the target block.
  • 13. The method of claim 10, wherein the determining a throttling ratio comprises dividing the number of valid pages by the number of invalid pages in the target block.
  • 14. The method of claim 10, wherein the executing comprises: executing, for each command received from the host system, at least a number of the commands for the garbage collection operation specified by the throttling ratio.
  • 15. The method of claim 9, wherein the throttling ratio comprises a first and a second numbers and the executing comprises: executing a number of the system operation commands specified by the first number for every number of the commands received from the host system specified by the second number.
US Referenced Citations (78)
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
Non-Patent Literature Citations (4)
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.