Solid-state storage subsystems execute many internal 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 simultaneous or nearly simultaneous execution of internal system commands (e.g. garbage collection commands) and commands received from host systems. Executing garbage collection commands with host-issued commands improves the performance of the storage subsystem by preventing stalls that can occur as a result of the storage subsystem running out of free blocks and being forced to execute garbage collection commands to free up blocks for pending host-issued commands. However, one challenge of executing internal system commands with host system commands is maintaining data consistency while executing both types of commands. For example, a garbage collection command may be issued to read data from a certain logical location “A” that corresponds to a physical location “X” and write the data to a new physical location “Y.” While the read portion of the garbage collection command is completed and the write portion is awaiting execution, a host write command may cause new data to be written to the logical location “A,” thus rendering the data to be written by the pending garbage collection command outdated. If the pending garbage collection write is allowed to execute, it would write the outdated data and cause data consistency issues.
In one embodiment of the invention, a controller manages the simultaneous or nearly simultaneous execution of internal commands and host commands by maintaining validity information on data residing at physical addresses in the solid-state storage subsystem and selectively cancelling a pending internal command if it is determined that the internal command is attempting to write data that has been rendered invalid by another command (e.g. a host-issued write command or another internal command). As will be further described below, the maintenance of validity information and selective execution of internal commands help ensure data consistency while allowing for the simultaneous or nearly simultaneous execution of internal commands and host commands. Although the present disclosure illustrates various embodiments by using garbage collection command examples, the disclosure is not so limited and is applicable to managing the execution of any type of internal system commands (e.g. wear leveling commands) with host-issued commands.
System Overview
In one embodiment, the controller 150 also maintains several data structures to help ensure that commands from the host command queue 142 and the internal command queue 144 are executed in a manner as further described herein to maintain data consistency. The data structures include, in one embodiment, an invalid page table 152 and a mapping table 154. In one embodiment, the invalid page table 152 keeps track of the validity of data located at physical page addresses throughout the non-volatile solid-state memory arrays 160, while the mapping table 154 keeps track of the correspondence between logical block addresses (LBA) and physical addresses in the non-volatile solid-state memory arrays 160.
Command Execution Examples
Managing Write Locations
In one embodiment, the validity value of a particular entry in the invalid page table can be “valid,” “invalid,” or an un-initialized value. In another embodiment, the validity value of a particular entry can be “valid” or “invalid.” In one embodiment, the invalid page table is implemented as a bitmask, and a bit is used to represent the validity of data at a page address. In one embodiment, the mapping table is implemented as an array of physical chunk addresses, and an index into the array is used to represent logical addresses associated with the physical chunk addresses. In one embodiment, one or both of the data structures employ atomic transactions so that pending changes to the data structures must complete before additional data access requests can be processed. This ensures that multiple controller processes (e.g. one handling host commands and another handling internal commands) that are accessing the data structures can read the most current data, thus preventing a process from executing a command that overwrites valid data with invalid data.
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.
This application is a continuation of U.S. application Ser. No. 12/777,771, filed on May 11, 2010 and titled “SYSTEM AND METHOD FOR MANAGING EXECUTION OF INTERNAL COMMANDS AND HOST COMMANDS IN A SOLID-STATE MEMORY,” the disclosure of which is hereby incorporated by reference in its entirety.
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 |
6856556 | Hajeck | Feb 2005 | B1 |
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 |
7126857 | Hajeck | Oct 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 |
7430136 | Merry, Jr. et al. | Sep 2008 | B2 |
7441054 | Wu et al. | Oct 2008 | B2 |
7441067 | Gorobets et al. | Oct 2008 | B2 |
7447807 | Merry et al. | Nov 2008 | B1 |
7457903 | Purdham et al. | Nov 2008 | B2 |
7487286 | Nagano et al. | Feb 2009 | B2 |
7502256 | Merry, Jr. et al. | Mar 2009 | B2 |
7509441 | Merry et al. | Mar 2009 | B1 |
7582868 | Jiang et al. | Sep 2009 | B2 |
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 |
7831783 | Pandit et al. | Nov 2010 | B2 |
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 |
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 |
20090119460 | Lin 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 |
20100174849 | Walston et al. | Jul 2010 | A1 |
20100185806 | Pruthi et al. | Jul 2010 | A1 |
20100250793 | Syu | Sep 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 |
20110099323 | Syu | Apr 2011 | A1 |
20110191566 | Takamiya et al. | Aug 2011 | A1 |
20110231624 | Fukutomi et al. | Sep 2011 | A1 |
20110283049 | Kang et al. | Nov 2011 | A1 |
20120239851 | Calvert et al. | Sep 2012 | 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 |
20130024595 | Subramaniyan et al. | Jan 2013 | 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 |
---|
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. |
http://www.anandtech.com, downloaded from website on Jun. 17, 2011. |
Office Action under U.S. Appl. No. 12/771,771 dated May 22, 2012. |
Office Action under U.S. Appl. No. 12/771,771 dated Oct. 24, 2012. |
Notice of Allowance dated Apr. 2, 2013 in U.S. Appl. No. 12/777,771, 8 pages. |
Office Action dated May 22, 2012 in U.S. Appl. No. 12/778,740, x pages. |
Office Action dated Sep. 28, 2012 in U.S. Appl. No. 12/778,740, x pages. |
Final Office Action dated Apr. 2, 2013 in U.S. Appl. No. 12/778,740, x pages. |
Notice of Allowance dated Aug. 22, 2014 in U.S. Appl. No. 12/778,740 22 pages. |
Ho-Fan Kang, U.S. Appl. No. 12/778,740 filed May 12, 2010, 17 pages. |
Lan D. Phan, U.S. Appl. No. 13/166,985, filed Jun. 23, 2011, 27 pages. |
Ho-Fan Kang, U.S. Appl. No. 13/162,894, filed Jun. 17, 2011 27 pages. |
Webpage for Anandtech, location at http://www.anandtech.com, last accessed on Jun. 17, 2011. |
Hu et al., “Write Amplification Analysis in Flash-Based Solid State Drives”, SYSTOR'09, 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. |
Office Action under U.S. Appl. No. 12/778,740 dated May 22, 2012. |
Office Action under U.S. Appl. No. 12/778,740 dated Sep. 28, 2012. |
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. |
Number | Date | Country | |
---|---|---|---|
Parent | 12777771 | May 2010 | US |
Child | 14303508 | US |