This application is related to U.S. patent application Ser. No. 11/769,038, entitled, “SCHEDULING PHASED GARBAGE COLLECTION AND HOUSE KEEPING OPERATIONS IN A FLASH MEMORY SYSTEM,” filed on the same day as the present application; and to U.S. patent application Ser. Nos. 11/726,648 and 11/726,646 all of which are hereby incorporated by reference in the entirety along with all documents referenced in this application.
The present application relates generally to the operation of flash memory, and more specifically to coordinating internal operations with commands received by a host.
A non-volatile memory system such as a flash memory card or drive is used by a host to store information. Therefore, a command received by the host should be serviced quickly and typically will have priority over whatever other operations may be taking place within the system.
Non-volatile memory storage systems may receive, transmit, or issue operations or instructions required to manage data in the memory. Most memory operations received or issued by the non-volatile memory storage system are executed immediately. However, due to different timing limitations (e.g., initialization timeout, write command timeout limitations, and other timing limitations), there might not be enough time allocated to completely execute a memory operation. As a result, the execution of the memory operation may be deferred until the next available timeslot or ignored until the next time the memory operation is triggered. A garbage collection operation is an operation initiated internally (not by a host) to manage the data of the memory system and ensure its reliability. Such operations are initiated by the controller and/or system firmware.
Currently, the memory operations are temporarily stored in the random access memory (RAM) of the non-volatile memory storage system. However, the RAM is configured to store only one of each type of deferred memory operation. For example, if the non-volatile memory storage system needs to refresh a block and, as a result, triggers a garbage collection operation, the garbage collection operation can be stored in the RAM and deferred for execution at a later time. On the other hand, if the non-volatile memory storage system needs to refresh two blocks, both garbage collection operations associated with the refreshes are not stored in the RAM. Furthermore, once a power loss occurs, the information stored in the RAM is lost and the memory operation will not be executed until the next time such memory operation is triggered. Such loss of information can lead to access errors and reduce the reliability of the non-volatile memory storage system. As a result, continuing efforts are being made to improve the storage and processing of memory operations in the non-volatile memory storage system.
The various embodiments of the present invention provide for more efficient use of a memory system through more comprehensive and integrated management of both host commands and internal operations of the memory system.
One aspect involves a priority scheme that integrates internal operations along with host commands. Tasks will be serviced in order of priority, which in some cases will mean that a host command will not be immediately serviced. Certain operations already taking place when a host command is received may be continued if it is efficient to do so. Host commands may also be slightly delayed in certain scenarios. In one embodiment the system may indicate to a host that it is idle although it is executing an operation.
Another aspect relates to an adaptive scheduling system where resources are allocated based on utilization of the memory.
Memory controller 110 includes bus 124 that interfaces with system bus 126 through host interface 104. Memory controller 110 further interfaces with memory 118 through memory interface 108. Host interface 104, processor 106 (e.g., microprocessor, microcontrollers, and other processors), memory interface 108, random access memory (RAM) 112, error correcting code (ECC) circuit 114, and read-only memory (ROM) 116 are in communication by way of bus 124. ROM 116 can store a storage system firmware that includes program instructions for controlling the operation of memory 118. Processor 106 is configured to execute the program instructions loaded from ROM 116 or from non-volatile memory cell array 122. The storage system firmware may be temporarily loaded into RAM 112 and additionally, the RAM may be used to buffer data that are transferred between a host and memory 118. Furthermore, RAM 112 may be configured to store queue 131 of memory operations. ECC circuit 114 can check for errors passing through memory controller 110 between the host and memory 118. If errors are found, ECC circuit 114 can correct a number of error bits, the number depending on the ECC algorithm utilized.
Memory 118 can include array logic 120 and non-volatile memory cell array 122. Non-volatile memory cell array 122 may include a variety or a combination of non-volatile memory structures and technologies. Examples of non-volatile memory technologies include flash memories (e.g., NAND, NOR, Single-Level Cell (SLC/BIN), Multi-Level Cell (MLC), Divided bit-line NOR (DINOR), AND, high capacitive coupling ratio (HiCR), asymmetrical contactless transistor (ACT), and other flash memories), erasable programmable read-only memory (EPROM), electrically-erasable programmable read-only memory (EEPROM), read-only memory (ROM), one-time programmable memory (OTP), and other memory technologies. In addition to RAM 112, queue 130 of memory operations may also be stored in non-volatile memory cell array 122.
Furthermore, array logic 120 interfaces memory controller 110 with non-volatile memory cell array 122 and can provide, for example, addressing, data transfer and sensing, and other support to the non-volatile memory cell array. To support non-volatile memory cell array 122, array logic 120 can include row decoders, column decoders, charge pumps, word line voltage generators, page buffers, input/output buffers, address buffers, and other circuitries.
Often times the memory controller is busy doing something that is not related to the back-end. In such a case, the flash memory can perform operations rather than sit idle. For example, the memory controller may be playing an MP3 song, or running any other application. In such a case, the controller might be busy servicing the host (streaming out the song or otherwise running an application), while the BE might be idle. In this case, it is preferable that house keeping operations are executed during the idle time for the back end. This will decrease the response time, and thereby increase the performance of the system.
In general, BE idle time will be better utilized with embodiments of the present invention. Idle time may also include time between the host commands, and generally refers to time that the flash memory module is not used in servicing a host command.
For example, during a write command, the system can continue executing a housekeeping operation in (the BE flash memory in) the background while the host is sending data to the memory controller. During a read command, while the host is reading from an internal buffer (e.g. in the memory controller), the system can initiate or reinitiate a housekeeping operation in the flash memory.
The memory controller may perform actions related to the front end, which do not involve the flash memory module, or may be performing operations related to the flash memory module of the back end. As such, it may be considered as part of the “back end” and/or the “front end.” Back end manager (“BEM”) 150 comprises back end interface 146 and BE global scheduler 144. BE interface 146 serves to accommodate the particulars of memory 122 so that BE global scheduler (“BES”) 144 can work with various different configurations/types of memory 122. BES 144 may be implemented as firmware to be executed by the memory controller and/or as hard logic within a state machine or the like.
BEM 150 in general, and BES 144 more specifically control the scheduling and servicing of operations required of memory 122. Control signals are sent/received by BES 144 over control lines 142. Data is sent/received by back end interface 146 over data bus 148, which may comprise all or some portion of buses 124 and 126 and control lines 142 of
Host commands 134, internal applications operations 136, housekeeping operations 138, and pending entries in write cache buffer (“WCB”) 140 are all managed by BES 144. In one embodiment the WCB is a portion of the flash memory array, for example a block, that is used as a cache, and may also be referred to as the write buffer block (“WBB”). In other embodiments the WCB may be a standard random access memory cache. Internal application operations 136 are operations required by applications that enhance the basic functionality of the memory system and may be loaded onto the system from time to time. Such application firmware is in addition to the operating firmware of the system. For example, a password management application or home banking software application may be added to a memory card, and such internal (as opposed to host) applications will require servicing by the back end.
During the comparison of step 216, the busy signal will now be asserted, as represented by step 220. At the same time, the BE scheduler will also measure the time until completion of the execution of the current command or operation, as represented by step 228. Alternatively, rather than wait until completion of the execution, the BE scheduler will impose an upper time limit or a window of time. It will then measure elapsed time during the window or until the upper limit has been reached.
The card then executes the highest priority activity, which may not be the host command, as seen in step 224. For example a housekeeping command may be continued if that command has higher priority than the received command.
As described above, in certain embodiments BEM 150 services operations according to priority of the operations. The priority of the operations is delineated in Tables A and B below, reproduced as
Exemplary priority levels “00” through “05 are illustrated in Table B, with “00” being the highest, and “05” being the lowest priority. It should be understood that different prioritization schemes may be utilized other than that shown in Tables A and B, and that they may also change during the lifespan of the card. Cleaning entries from the WBB is very common operation and may have multiple priorities associated with it. For example, a housekeeping operation such as the cleaning of the WBB can have a priority level that varies between “02” and “05.” Other types of housekeeping operations may also be assigned different and variable priority levels. Additionally, host commands can be assigned different priorities. The priorities assigned to the operations may also vary between “02” to “05”, based on the level of utilization of the write buffer block 140. The utilization of the WBB can be determined many ways, but is preferably determined by comparing the number of (valid) entries in the WBB to the total number of entries that the WBB can hold. In other words, in this measure, utilization will be actual entries/capacity of entries.
Performance of audio/video and other high bandwidth applications may be enhanced. Certain applications require a minimum amount of bandwidth to operate properly. For example, audio/video applications require such a minimum bandwidth and predefined timeouts are typically required to accommodate such a requirement. Thus, long operations may not be able to be carried out within the time allowed. Therefore, one embodiment allows for the scheduling of operations to vary with the applications being run by the system. This is referred to as adaptive scheduling. In one embodiment, long operations, such as garbage collections invoked by FAT/DIR updates, may be divided into several shorter operations in order to meet the pre-defined timeouts imposed by those applications. Thus, the overall performance rating of a given product, such as the SD AV performance class rating, is increased and the buffer size requirements on the host are decreased.
In another embodiment, BEM 150 services operations according to the utilization of the memory. This ensures that the write cache does not become full and is always available when needed.
Number | Name | Date | Kind |
---|---|---|---|
5640529 | Hasburn | Jun 1997 | A |
5912848 | Bothwell | Jun 1999 | A |
6493807 | Martwick | Dec 2002 | B1 |
6704835 | Garner | Mar 2004 | B1 |
6763424 | Conley | Jul 2004 | B2 |
6779045 | Kendall et al. | Aug 2004 | B2 |
7093071 | Rudelic | Aug 2006 | B2 |
7437499 | Durante et al. | Oct 2008 | B2 |
7441071 | Traister et al. | Oct 2008 | B2 |
7444461 | Traister et al. | Oct 2008 | B2 |
7444462 | Traister et al. | Oct 2008 | B2 |
7451265 | Traister et al. | Nov 2008 | B2 |
7987332 | Traister | Jul 2011 | B2 |
20020051394 | Tobita et al. | May 2002 | A1 |
20020091826 | Comeau et al. | Jul 2002 | A1 |
20040089717 | Harari et al. | May 2004 | A1 |
20050073884 | Gonzalez et al. | Apr 2005 | A1 |
20050091445 | Chang et al. | Apr 2005 | A1 |
20050144365 | Gorobets et al. | Jun 2005 | A1 |
20050172067 | Sinclair | Aug 2005 | A1 |
20050172074 | Sinclair | Aug 2005 | A1 |
20050172084 | Jeddeloh | Aug 2005 | A1 |
20050195635 | Conley et al. | Sep 2005 | A1 |
20060020744 | Sinclair et al. | Jan 2006 | A1 |
20060020745 | Conley et al. | Jan 2006 | A1 |
20060136655 | Gorobets et al. | Jun 2006 | A1 |
20060161724 | Bennett et al. | Jul 2006 | A1 |
20060161728 | Bennett et al. | Jul 2006 | A1 |
20060184718 | Sinclair et al. | Aug 2006 | A1 |
20060184719 | Sinclair | Aug 2006 | A1 |
20060184720 | Sinclair et al. | Aug 2006 | A1 |
20060184722 | Sinclair | Aug 2006 | A1 |
20060239080 | Li | Oct 2006 | A1 |
20070022241 | Sinclair | Jan 2007 | A1 |
20070028040 | Sinclair | Feb 2007 | A1 |
20070033376 | Sinclair et al. | Feb 2007 | A1 |
20080034174 | Traister et al. | Feb 2008 | A1 |
20080034175 | Traister et al. | Feb 2008 | A1 |
20080082728 | Traister et al. | Apr 2008 | A1 |
20080086619 | Traister et al. | Apr 2008 | A1 |
20080235466 | Traister | Sep 2008 | A1 |
20080235480 | Traister | Sep 2008 | A1 |
20080294814 | Gorobets | Nov 2008 | A1 |
20090006720 | Traister | Jan 2009 | A1 |
Number | Date | Country |
---|---|---|
WO 2006120679 | Nov 2006 | WO |
WO 2008115720 | Sep 2008 | WO |
WO 2009003038 | Dec 2008 | WO |
Entry |
---|
Partial Search Report mailed Sep. 29, 2008 in Application No. PCT/US2008/068187. |
International Search Report and Written Opinion mailed Mar. 18, 2009 in Application No. PCT/US2008/068187. |
U.S. Office Action mailed Sep. 17, 2009 in U.S. Appl. No. 11/769,038. |
U.S. Final Office Action mailed Mar. 8, 2010 in U.S. Appl. No. 11/769,038. |
EP Office Action mailed Nov. 4, 2010 in Application No. 08771928.2. |
PCT International Search Report and Written Opinion dated Jul. 30, 2008 issued in PCT/US2008/056418. |
PCT International Preliminary Report on Patentability and Written Opinion of the International Searching Authority dated Sep. 22, 2009 issued in PCT/US2008/056418. |
Taiwanese Office Action dated Mar. 8, 2012 issued in TW 097108560. |
PCT International Preliminary Report on Patentability and Written Opinion dated Jan. 5, 2010 issued in PCT/US2008/068187. |
Taiwanese Office Action dated Nov. 15, 2011 issued in TW 097123547. |
Number | Date | Country | |
---|---|---|---|
20090006719 A1 | Jan 2009 | US |