Erase operations are performed on a flash memory device by monitoring the entropic nature of the flash memory device. In one implementation, flash abstraction logic, tracks how many physical sectors are free to receive data; track how many physical sectors contain data that is dirty, and compare whether the physical sectors that are free to receive data outnumber the physical sectors that contain data that is dirty. A compactor performs an erase operation of one or more blocks when the physical sectors that contain data that is dirty outnumber the physical sectors that are free to receive data. In another implementation, the flash abstraction logic tracks how many physical sector addresses are free to receive data, and track when the physical sector addresses that are free to receive data are insufficient in quantity to receive write requests from a file system. The compactor executes an erase operation of one or more blocks if the physical sector addresses that are free to receive... |
Citations|
| US5530828 | Jun 22, 1993 | Jun 25, 1996 | Hitachi, Ltd. | Semiconductor storage device including a controller for continuously writing data to and erasing data from a plurality of flash memories | | US5598370 | Apr 26, 1995 | Jan 28, 1997 | International Business Machines Corporation | Nonvolatile memory with cluster-erase flash capability and solid state file apparatus using the same | | US5734816 | Mar 10, 1994 | Mar 31, 1998 | International Business Machines Corporation | Nonvolatile memory with flash erase capability | | US5745418 | Nov 25, 1996 | Apr 28, 1998 | Macronix International Co., Ltd. | Flash memory mass storage system | | US5867641 | Oct 27, 1995 | Feb 2, 1999 | SCM Microsystems (U.S.) Inc. | Flash translation layer cleanup system and method | | US5887198 | Apr 7, 1997 | Mar 23, 1999 | The United States of America as represented by the Secretary of the Navy | Programmable stand-alone drive apparatus for interfacing a host computer with PCMCIA memory cards having multiple formats | | US5937425 | Oct 16, 1997 | Aug 10, 1999 | M-Systems Flash Disk Pioneers Ltd. | Flash file system optimized for page-mode flash technologies | | US5956473 | Nov 25, 1996 | Sep 21, 1999 | Macronix International Co., Ltd. | Method and system for managing a flash memory mass storage system | | US6014724 | Sep 17, 1996 | Jan 11, 2000 | SCM Microsystems (U.S.) Inc. | Flash translation layer block indication map revision system and method | | US6279069 | Dec 26, 1996 | Aug 21, 2001 | Intel Corporation | Interface for flash EEPROM memory arrays | | US6347051 | May 30, 2001 | Feb 12, 2002 | Hitachi, Ltd. | Storage device employing a flash memory |
Referenced by|
| US6762948 | Oct 10, 2002 | Jul 13, 2004 | Samsung Electronics Co., Ltd. | Semiconductor memory device having first and second memory architecture and memory system using the same | | US7076599 | May 25, 2005 | Jul 11, 2006 | Microsoft Corporation | Transactional file system for flash memory | | US7080232 | Feb 27, 2004 | Jul 18, 2006 | Microsoft Corporation | Free sector manager for data stored in flash memory devices | | US7082512 | Nov 4, 2005 | Jul 25, 2006 | Microsoft Corporation | Dynamic data structures for tracking file system free space in a flash memory device | | US7093101 | Nov 4, 2005 | Aug 15, 2006 | Microsoft Corporation | Dynamic data structures for tracking file system free space in a flash memory device | | US7139883 | Nov 21, 2002 | Nov 21, 2006 | Microsoft Corporation | Transactional file system for flash memory | | US7178061 | Nov 21, 2002 | Feb 13, 2007 | Microsoft Corporation | Power failure detection and correction in a flash memory device | | US7272696 | May 4, 2006 | Sep 18, 2007 | Micron Technology, Inc. | Dynamic volume management | | US7340647 | Apr 6, 2006 | Mar 4, 2008 | Microsoft Corporation | Power failure detection and correction in a flash memory device | | US7350105 | Apr 7, 2006 | Mar 25, 2008 | Microsoft Corporation | Power failure detection in a flash memory device | | US7363421 | Jan 13, 2005 | Apr 22, 2008 | STMicroelectronics S.r.l. | Optimizing write/erase operations in memory devices | | US7480760 | Dec 17, 2003 | Jan 20, 2009 | Wegener Communications, Inc. | Rotational use of memory to minimize write cycles | | US7493442 | Dec 13, 2006 | Feb 17, 2009 | Micron Technology, Inc. | Multiple segment data object management | | US7516295 | Feb 7, 2005 | Apr 7, 2009 | Samsung Electronics Co., Ltd. | Method of remapping flash memory | | US7529882 | Jul 25, 2007 | May 5, 2009 | Micron Technology, Inc. | Dynamic volume management for flash memories | | US7533214 | Feb 27, 2002 | May 12, 2009 | Microsoft Corporation | Open architecture flash driver | | US7564721 | May 25, 2006 | Jul 21, 2009 | Micron Technology, Inc. | Method and apparatus for improving storage performance using a background erase | | US7594064 | Nov 14, 2005 | Sep 22, 2009 | Microsoft Corporation | Free sector manager for data stored in flash memory devices | | US7620961 | Nov 21, 2002 | Nov 17, 2009 | Microsoft Corporation | Open-architecture file system | | US7657701 | Jan 3, 2007 | Feb 2, 2010 | The General Electric Company | System and method of flash memory wear leveling using distributed write cycles | | US7676627 | Jan 10, 2007 | Mar 9, 2010 | Micron Technology, Inc. | Single segment data object management | | US7742344 | Jun 25, 2009 | Jun 22, 2010 | Micron Technology, Inc. | Method and apparatus for improving storage performance using a background erase | | US7779426 | Mar 30, 2006 | Aug 17, 2010 | Microsoft Corporation | Describing and querying discrete regions of flash storage | | US7894153 | Feb 8, 2008 | Feb 22, 2011 | Lenovo (Singapore) Pte. Ltd. | Secure data disposal for disk drive |
Claims1. A method for managing erasures on a flash memory device having addressable physical sectors organized as blocks, comprising: - tracking how many physical sectors are free to receive data;
- tracking how many physical sectors contain data that is dirty;
- comparing whether the physical sectors that are free to receive data outnumber the physical sectors that contain data that is dirty; and
- executing an erase operation of one or more blocks when the physical sectors that contain data that is dirty outnumber the physical sectors that are free to receive data.
2. The method as recited in claim 1, further comprising: scheduling the execution of the erase operation as a low priority thread. 3. The method as recited in claim 1, further comprising: - tracking when the physical sectors that are free to receive data are insufficient in quantity to receive write requests from a file system; and
- executing a second erase operation of one or more blocks if the physical sectors that are free to receive data are insufficient in quantity.
4. The method as recited in claim 3, further comprising scheduling the execution of the second erase operation as high priority thread. 5. One or more computer-readable media comprising computer executable instructions that, when executed, perform the method as recited in claim 1. 6. A method for managing erasures on a flash memory device having addressable physical sectors organized as blocks, comprising: - tracking how many physical sectors are free to receive data;
- tracking when the physical sectors that are free to receive data are insufficient in quantity to receive write requests from a file system; and
- executing an erase operation of one or more blocks if the physical sectors that are free to receive data are insufficient in quantity.
7. The method as recited in claim 6, further comprising scheduling the execution of the erase operation as high priority thread. 8. The method as recited in claim 6, further comprising: - tracking how many physical sectors contain data that is dirty;
- comparing whether the physical sectors that are free to receive data outnumber the physical sectors that contain data that is dirty; and
- executing a second erase operation of one or more blocks when the physical sectors that contain data that is dirty outnumber the physical sectors that are free to receive data.
9. The method as recited in claim 8, further comprising: scheduling the execution of the second erase operation as a low priority thread. 10. One or more computer-readable media comprising computer executable instructions that, when executed, perform the method as recited in claim 6. 11. A system for flash memory having addressable locations organized as blocks, comprising: - flash abstraction logic, configured to track how many physical sectors are free to receive data; track how many physical sectors contain data that is dirty, and compare whether the physical sectors that are free to receive data outnumber the physical sectors that contain data that is dirty; and
- a compactor, configured to perform an erase operation of one or more blocks when the physical sectors that contain data that is dirty outnumber the physical sectors that are free to receive data.
12. The system as recited in claim 11, wherein when the compactor performs an erase operation, the compactor advances through a sequence of the physical sector addresses and if a particular physical sector address corresponding to a physical sector in the memory contains valid data, the compactor moves the valid data to a physical sector address corresponding to a physical sector in the memory that is free to receive data before performing the erase operation. 13. The system as recited in claim 11, wherein the compactor performs the erase operation as low priority thread. 14. The system as recited in claim 11, wherein the flash abstraction logic is further configured to track how many physical sector addresses are free to receive data, - track when the physical sector addresses that are free to receive data are insufficient in quantity to receive write requests from a file system; and
- the compactor is further configured to execute an erase operation of one or more blocks if the physical sector addresses that are free to receive data are insufficient in quantity.
15. A system for flash memory having addressable locations organized as blocks, comprising: - flash abstraction logic configured to track how many physical sector addresses are free to receive data, and track when the physical sector addresses that are free to receive data are insufficient in quantity to receive write requests from a file system; and
- a compactor, configured to execute an erase operation of one or more blocks if the physical sector addresses that are free to receive data are insufficient in quantity.
16. The system as recited in claim 15, wherein when the compactor performs an erase operation, the compactor advances through a sequence of the physical sector addresses and if a particular physical sector address corresponding to a physical sector in the memory contains valid data, the compactor moves the valid data to a physical sector address corresponding to a physical sector in the memory that is free to receive data before performing the erase operation. 17. The system as recited in claim 15, wherein the flash abstraction logic is further configured to track how many physical sectors are free to receive data; track how many physical sectors contain data that is dirty, and compare whether the physical sectors that are free to receive data outnumber the physical sectors that contain data that is dirty; and - the compactor, is further configured to perform an erase operation of one or more blocks when the physical sectors that contain data that is dirty outnumber the physical sectors that are free to receive data.
18. The system as recited in claim 15, wherein the compactor performs the erase operation as a high priority thread. 19. One or more computer-readable media comprising computer-executable instructions that, when executed by a computer, causes the computer to: - organize a flash memory having addressable locations into blocks;
- track how many physical sectors are free to receive data;
- track how many physical sectors contain data that is dirty;
- compare whether the physical sectors that are free to receive data outnumber the physical sectors that contain data that is dirty; and
- perform an erase operation of one or more blocks when the physical sectors that contain data that is dirty outnumber the physical sectors that are free to receive data.
20. One or more computer-readable media as recited in claim 19, that causes the computer when performing the erase operation to: - advance through a sequence of the physical sector addresses; and
- if a particular physical sector address corresponding to a physical sector in the memory contains valid data, to move the valid data to a physical sector address corresponding to a physical sector in the memory that is free to receive data before performing the erase operation.
21. One or more computer-readable media as recited in claim 19, wherein the computer treats the erase operation as low priority thread. 22. One or more computer-readable media as recited in claim 19, that causes the computer to: further track how many physical sector addresses are free to receive data, track when the physical sector addresses that are free to receive data are insufficient in quantity to receive write requests from a file system; and perform an erase operation of one or more blocks if the physical sector addresses that are free to receive data are insufficient in quantity. 23. One or more computer-readable media comprising computer-executable instructions that, when executed by a computer, causes the computer to: - organize a flash memory having addressable locations into blocks;
- track how many physical sector addresses are free to receive data;
- track when the physical sector addresses that are free to receive data are insufficient in quantity to receive write requests from a file system; and
- execute an erase operation of one or more blocks if the physical sector addresses that are free to receive data are insufficient in quantity.
24. One or more computer-readable media as recited in claim 23, that causes the computer when performing the erase operation to: - advance through a sequence of the physical sector addresses; and
- if a particular physical sector address corresponding to a physical sector in the memory contains valid data, to move the valid data to a physical sector address corresponding to a physical sector in the memory that is free to receive data before performing the erase operation.
25. One or more computer-readable media as recited in claim 23, that causes the computer to further track how many physical sectors are free to receive data; track how many physical sectors contain data that is dirty, and compare whether the physical sectors that are free to receive data outnumber the physical sectors that contain data that is dirty; and perform an erase operation of one or more blocks when the physical sectors that contain data that is dirty outnumber the physical sectors that are free to receive data. 26. One or more computer-readable media as recited in claim 23, wherein the computer treats the erase operation as a high priority thread. |