WO2010059146A1 - Wear leveling memory cells - Google Patents
Wear leveling memory cells Download PDFInfo
- Publication number
- WO2010059146A1 WO2010059146A1 PCT/US2008/013064 US2008013064W WO2010059146A1 WO 2010059146 A1 WO2010059146 A1 WO 2010059146A1 US 2008013064 W US2008013064 W US 2008013064W WO 2010059146 A1 WO2010059146 A1 WO 2010059146A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- storage
- area
- size
- storage device
- available unused
- Prior art date
Links
- 230000003068 static effect Effects 0.000 claims abstract description 42
- 238000000034 method Methods 0.000 claims description 14
- 238000010586 diagram Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
Definitions
- Flash memory is a particular type of EEPROM 1 Electrically Erasable Programmable Read-Only Memory. Erasing and programming, or writing, in flash memory is performed in blocks of memory cells.
- NAND flash memory is a specific type of flash memory that uses NAND gates to form the memory cells. NAND flash memory is frequently used in removable USB storage devices and thin client hardware. NAND flash memory is often used as a primary storage device for an embedded operating system.
- Memory cells in NAND flash memory wear out over time. Typical memory cells in a NAND flash module last only between 10,000 to 300,000 writes. Reads have no impact on the life of the memory cells.
- Figure 1 is a block diagram illustrating an embodiment of a system for wear leveling memory cells in a storage device.
- Figure 2 is a block diagram illustrating an embodiment of the memory cells of Figure 1.
- Figure 3 is a flow chart illustrating an embodiment of a method for wear leveling memory cells in a storage device.
- Figure 4 is a flow chart illustrating another embodiment of a method for wear leveling memory cells in a storage device.
- FIG. 1 illustrates one embodiment of a wear leveling system 2 for wear leveling memory cells 4.
- Wear leveling system 2 includes a storage device 6 and a boot system 8.
- Storage device 6 is any type of data or program storage device, for example, magnetic, electronic, or optical memory.
- storage device 6 is a flash memory storage device.
- storage device 6 is a NAND flash memory storage device.
- Storage device 6 includes a plurality of memory cells 4. The number of memory cells 4 is directly related to the capacity of the storage device 6 and is typically far greater than may be conveniently illustrated in Figure 1.
- Figure 2 illustrates one embodiment of memory cells 4.
- Memory cells 4 are cells for storing data or information. Memory cells 4 may be logically divided into two different use types. The first is a static area 10 that, in one embodiment, contains the operating system, drivers, and applications and rarely or never changes. The second is a dynamic area 12 containing settings and other data that changes on a regular basis.
- Area of static storage 10 includes all of the cells 4 holding data that infrequently or never changes. Although illustrated in Figure 2 as contiguous cells 4, area of static storage 10 may be either contiguous or noncontiguous.
- Area of available unused storage 12 includes all of the cells 4 that are designated as not holding data. Although illustrated in Figure 2 as contiguous cells 4, area of available unused storage 12 may be either contiguous or noncontiguous.
- Memory cells 4 may also include area of dynamic storage 14. Area of dynamic storage 14 includes all of the cells 4 holding data that frequently changes. Although illustrated in Figure 2 as contiguous cells 4, area of dynamic storage 14 may be either contiguous or noncontiguous.
- Boot system 8 is any combination of hardware and executable code configured to boot storage device 6, discover a size of the available unused storage on storage device 6, and move a portion of area of static storage 10 to available unused storage 12. In one embodiment, moving the area of the static storage to the available unused storage includes copying the portion of area of static storage 10 and freeing the copied area of the static storage to available unused storage. [0015] In one embodiment boot system 6 is further configured to discover a size of area of static storage 10 on storage device 6. In one embodiment, the size of the portion of area of static storage 10 moved to available unused storage 12 is equal in size to the size of the available unused storage.
- boot system 8 includes BIOS (built in operating system) 16.
- BIOS 16 is any combination of hardware and executable code configured to initialize storage device 6.
- BIOS 16 is configured to execute the functions of boot system 8.
- boot system 8 is further configured to evaluate whether booting storage device 6 triggers discovering the size of the available unused storage on storage device 6.
- booting a predetermined number of times triggers the discovering.
- booting a predetermined number of times after a predetermined time period has lapsed since the most recent wear leveling for storage device 6, triggers the discovering.
- a boot with a command to initiate wear leveling triggers the discovering.
- Figure 3 is a flow chart representing steps of one embodiment method for wear leveling memory cells 4 in storage device 6. Although the steps represented in
- System 2 waits 18 until storage device 6 is booted. Storage device 6 is booted 20. In one embodiment, whether booting 20 storage device 6 triggers discovering the size of the available unused storage on storage device 6 is evaluated 22.
- booting 20 does not trigger the discovering, system 2 again waits 18 until storage device 6 is booted. If booting 20 does trigger the discovering, responsive to the boot of storage device 6, a size of the available unused storage 12 on storage device 6 is discovered 24.
- moving 26 the portion of the area of static storage 10 to available unused storage 12 includes copying the portion of area of static storage 10 to the available unused storage 12 and freeing the copied portion of area of static storage
- Figure 4 is a flow chart representing steps of another embodiment method for wear leveling memory cells 4 in storage device 6. Although the steps represented in Figure 4 are presented in a specific order, the technology presented herein can be performed in any variation of this order. Furthermore, additional steps may be executed between the steps illustrated in Figure 4.
- Figure 4 differs from Figure 3 only in the determination of the size of portion of area of static storage 10 to be moved to area of available unused storage 12.
- System 2 waits 18 until storage device 6 is booted. Storage device 6 is booted 20. In one embodiment, whether booting 20 storage device 6 triggers discovering the size of the available unused storage on storage device 6 is evaluated 22.
- booting 20 does not trigger the discovering, system 2 again waits 18 until storage device 6 is booted. If booting 20 does trigger the discovering, responsive to the boot of storage device 6, a size of the available unused storage 12 on storage device 6 is discovered 24. A size of area of static storage 10 on storage device 6 is also discovered 28.
- a portion of area of static storage 10 is moved 26 to area of available unused storage 12.
- the size of the portion moved is equal to the lesser of the size of the available unused storage and the size of area of static storage 10.
- moving 26 the portion of the area of static storage 10 to available unused storage 12 includes copying the portion of area of static storage
- the present invention addresses the condition where a dynamic storage area can wear out, while the static flash area, typically holding an operating system, has thousands of write cycles remaining.
- Implementing the present invention on a storage device acts to level the wear on memory cells of the storage device, potentially extending the useful life of the storage device.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Memory cells in a storage device are wear leveled. The storage device has an area of static storage and an area of available unused storage. The memory cells are wear leveled by first booting the storage device. Responsive to booting the storage device, a size of the available unused storage on the storage device is discovered. A portion of the area of the static storage is moved to the available unused storage.
Description
WEAR LEVELING MEMORY CELLS
BACKGROUND
[001] Flash memory is a particular type of EEPROM1 Electrically Erasable Programmable Read-Only Memory. Erasing and programming, or writing, in flash memory is performed in blocks of memory cells. NAND flash memory is a specific type of flash memory that uses NAND gates to form the memory cells. NAND flash memory is frequently used in removable USB storage devices and thin client hardware. NAND flash memory is often used as a primary storage device for an embedded operating system.
[002] Memory cells in NAND flash memory wear out over time. Typical memory cells in a NAND flash module last only between 10,000 to 300,000 writes. Reads have no impact on the life of the memory cells.
DESCRIPTION OF THE DRAWINGS
[003] Figure 1 is a block diagram illustrating an embodiment of a system for wear leveling memory cells in a storage device.
[004] Figure 2 is a block diagram illustrating an embodiment of the memory cells of Figure 1.
[005] Figure 3 is a flow chart illustrating an embodiment of a method for wear leveling memory cells in a storage device.
[006] Figure 4 is a flow chart illustrating another embodiment of a method for wear leveling memory cells in a storage device.
DETAILED DESCRIPTION
[007] Figure 1 illustrates one embodiment of a wear leveling system 2 for wear leveling memory cells 4. Wear leveling system 2 includes a storage device 6 and a boot system 8.
[008] Storage device 6 is any type of data or program storage device, for example, magnetic, electronic, or optical memory. In one embodiment, storage device 6 is a flash memory storage device. In another embodiment, storage device 6 is a NAND flash memory storage device.
[009] Storage device 6 includes a plurality of memory cells 4. The number of memory cells 4 is directly related to the capacity of the storage device 6 and is typically far greater than may be conveniently illustrated in Figure 1. [0010] Figure 2 illustrates one embodiment of memory cells 4. Memory cells 4 are cells for storing data or information. Memory cells 4 may be logically divided into two different use types. The first is a static area 10 that, in one embodiment, contains the operating system, drivers, and applications and rarely or never changes. The second is a dynamic area 12 containing settings and other data that changes on a regular basis.
[0011] Area of static storage 10 includes all of the cells 4 holding data that infrequently or never changes. Although illustrated in Figure 2 as contiguous cells 4, area of static storage 10 may be either contiguous or noncontiguous. [0012] Area of available unused storage 12 includes all of the cells 4 that are designated as not holding data. Although illustrated in Figure 2 as contiguous cells 4, area of available unused storage 12 may be either contiguous or noncontiguous. [0013] Memory cells 4 may also include area of dynamic storage 14. Area of dynamic storage 14 includes all of the cells 4 holding data that frequently changes. Although illustrated in Figure 2 as contiguous cells 4, area of dynamic storage 14 may be either contiguous or noncontiguous.
[0014] Boot system 8 is any combination of hardware and executable code configured to boot storage device 6, discover a size of the available unused storage on storage device 6, and move a portion of area of static storage 10 to available unused storage 12. In one embodiment, moving the area of the static storage to the available unused storage includes copying the portion of area of static storage 10 and freeing the copied area of the static storage to available unused storage. [0015] In one embodiment boot system 6 is further configured to discover a size of area of static storage 10 on storage device 6. In one embodiment, the size of the portion of area of static storage 10 moved to available unused storage 12 is equal in size to the size of the available unused storage. In an alternative embodiment, the size of the portion moved is equal to the lesser of the size of the available unused storage and the size of area of static storage 10.
[0016] In an embodiment of boot system 8, boot system 8 includes BIOS (built in operating system) 16. BIOS 16 is any combination of hardware and executable code configured to initialize storage device 6. In one embodiment, BIOS 16 is configured to execute the functions of boot system 8.
[0017] In one embodiment, boot system 8 is further configured to evaluate whether booting storage device 6 triggers discovering the size of the available unused storage on storage device 6. Alternative embodiments exist for evaluating whether booting storage device 6 triggers discovering the size of the available unused storage on storage device 6. In one embodiment, booting a predetermined number of times triggers the discovering. In another embodiment, booting a predetermined number of times after a predetermined time period has lapsed since the most recent wear leveling for storage device 6, triggers the discovering. In still another embodiment, a boot with a command to initiate wear leveling triggers the discovering.
[0018] Figure 3 is a flow chart representing steps of one embodiment method for wear leveling memory cells 4 in storage device 6. Although the steps represented in
Figure 3 are presented in a specific order, the technology presented herein can be performed in any variation of this order. Furthermore, additional steps may be executed between the steps illustrated in Figure 3.
[0019] System 2 waits 18 until storage device 6 is booted. Storage device 6 is booted 20. In one embodiment, whether booting 20 storage device 6 triggers discovering the size of the available unused storage on storage device 6 is evaluated 22.
[0020] If booting 20 does not trigger the discovering, system 2 again waits 18 until storage device 6 is booted. If booting 20 does trigger the discovering, responsive to the boot of storage device 6, a size of the available unused storage 12 on storage device 6 is discovered 24.
[0021] A portion of area of static storage 10, equal in size to the size of area of available unused storage 12, is moved 26 to area of available unused storage 12. In one embodiment, moving 26 the portion of the area of static storage 10 to available unused storage 12 includes copying the portion of area of static storage 10 to the
available unused storage 12 and freeing the copied portion of area of static storage
10 to area of available unused storage 12.
[0022] Figure 4 is a flow chart representing steps of another embodiment method for wear leveling memory cells 4 in storage device 6. Although the steps represented in Figure 4 are presented in a specific order, the technology presented herein can be performed in any variation of this order. Furthermore, additional steps may be executed between the steps illustrated in Figure 4.
[0023] Figure 4 differs from Figure 3 only in the determination of the size of portion of area of static storage 10 to be moved to area of available unused storage 12.
Those steps in Figure 4 which are identical to the corresponding step in Figure 3 are given identical reference numbers to the corresponding steps in Figure 3.
[0024] System 2 waits 18 until storage device 6 is booted. Storage device 6 is booted 20. In one embodiment, whether booting 20 storage device 6 triggers discovering the size of the available unused storage on storage device 6 is evaluated 22.
[0025] If booting 20 does not trigger the discovering, system 2 again waits 18 until storage device 6 is booted. If booting 20 does trigger the discovering, responsive to the boot of storage device 6, a size of the available unused storage 12 on storage device 6 is discovered 24. A size of area of static storage 10 on storage device 6 is also discovered 28.
[0026] A portion of area of static storage 10 is moved 26 to area of available unused storage 12. The size of the portion moved is equal to the lesser of the size of the available unused storage and the size of area of static storage 10.
[0027] In one embodiment, moving 26 the portion of the area of static storage 10 to available unused storage 12 includes copying the portion of area of static storage
10 to the available unused storage 12 and freeing the copied portion of area of static storage 10 to area of available unused storage 12.
[0028] The present invention addresses the condition where a dynamic storage area can wear out, while the static flash area, typically holding an operating system, has thousands of write cycles remaining. Implementing the present invention on a storage device acts to level the wear on memory cells of the storage device, potentially extending the useful life of the storage device.
[0029] The foregoing description is only illustrative of the invention. Various alternatives and modifications can be devised by those skilled in the art without departing from the invention. Accordingly, the present invention embraces all such alternatives, modifications, and variances that fall within the scope of the appended claims.
Claims
1. A method for wear leveling memory cells in a storage device having an area of static storage and an area of available unused storage, the method comprising: booting the storage device; responsive to the boot of the storage device, discovering a size of the available unused storage on the storage device; and moving a portion of the area of static storage, equal in size to the size of the available unused storage, to the available unused storage.
2. The method of claim 1 wherein the storage device includes a NAND flash storage.
3. The method of claim 1 further including evaluating whether booting the storage device triggers discovering the size of the available unused storage on the storage device.
4. The method of claim 1 wherein moving the portion of the area of the static storage to the available unused storage includes: copying the portion of the area of static storage, equal in size to the size of the available unused storage, to the available unused storage and freeing the copied portion of the area of the static storage to available unused storage.
5. A method for wear leveling memory cells in a storage device having an area of static storage and an area of available unused storage, the method comprising: booting the storage device; responsive to the boot of the storage device, discovering a size of the available unused storage on the storage device; discovering a size of the area of static storage on the storage device; and moving a portion of the area of the static storage to the available unused storage, the size of the portion moved being equal to the lesser of the size of the available unused storage and the size of the area of static storage.
6. The method of claim 5 wherein the storage device includes a NAND flash storage.
7. The method of claim 5 further including evaluating whether booting the storage device triggers discovering the size of the available unused storage on the storage device.
8. The method of claim 5 wherein moving the portion of the area of the static storage to the available unused storage includes: copying the portion of the area of the static storage to the available unused storage, the size of the portion moved being equal to the lesser of the size of the available unused storage and the size of the area of static storage and freeing the copied portion of the area of the static storage to available unused storage.
9. A system for wear leveling memory cells, the system comprising: a storage device having an area of static storage and an area of available unused storage and a boot system configured to: boot the storage device; discover a size of the available unused storage on the storage device; and move a portion of the area of the static storage, equal in size to the size of the available unused storage, to the available unused storage.
10. The system of claim 9 wherein the storage device includes a NAND flash storage.
11. The system of claim 9 wherein the boot system is further configured to evaluate whether booting the storage device triggers discovering the size of the available unused storage on the storage device.
12. The system of claim 9 wherein moving the portion of the area of the static storage to the available unused storage includes: copying the portion of the area of static storage, equal in size to the size of the available unused storage, to the available unused storage and freeing the copied portion of the area of the static storage to available unused storage.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2008/013064 WO2010059146A1 (en) | 2008-11-24 | 2008-11-24 | Wear leveling memory cells |
TW098139296A TW201025331A (en) | 2008-11-24 | 2009-11-19 | Wear leveling memory cells |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2008/013064 WO2010059146A1 (en) | 2008-11-24 | 2008-11-24 | Wear leveling memory cells |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2010059146A1 true WO2010059146A1 (en) | 2010-05-27 |
Family
ID=42198386
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2008/013064 WO2010059146A1 (en) | 2008-11-24 | 2008-11-24 | Wear leveling memory cells |
Country Status (2)
Country | Link |
---|---|
TW (1) | TW201025331A (en) |
WO (1) | WO2010059146A1 (en) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6016275A (en) * | 1998-03-13 | 2000-01-18 | Lg Semicon Co., Ltd. | Flash memory wear leveling system and method |
US6732221B2 (en) * | 2001-06-01 | 2004-05-04 | M-Systems Flash Disk Pioneers Ltd | Wear leveling of static areas in flash memory |
US20050055495A1 (en) * | 2003-09-05 | 2005-03-10 | Nokia Corporation | Memory wear leveling |
US20070088940A1 (en) * | 2005-10-13 | 2007-04-19 | Sandisk Corporation | Initialization of flash storage via an embedded controller |
US7353325B2 (en) * | 1991-09-13 | 2008-04-01 | Sandisk Corporation | Wear leveling techniques for flash EEPROM systems |
-
2008
- 2008-11-24 WO PCT/US2008/013064 patent/WO2010059146A1/en active Application Filing
-
2009
- 2009-11-19 TW TW098139296A patent/TW201025331A/en unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7353325B2 (en) * | 1991-09-13 | 2008-04-01 | Sandisk Corporation | Wear leveling techniques for flash EEPROM systems |
US6016275A (en) * | 1998-03-13 | 2000-01-18 | Lg Semicon Co., Ltd. | Flash memory wear leveling system and method |
US6732221B2 (en) * | 2001-06-01 | 2004-05-04 | M-Systems Flash Disk Pioneers Ltd | Wear leveling of static areas in flash memory |
US20050055495A1 (en) * | 2003-09-05 | 2005-03-10 | Nokia Corporation | Memory wear leveling |
US20070088940A1 (en) * | 2005-10-13 | 2007-04-19 | Sandisk Corporation | Initialization of flash storage via an embedded controller |
Also Published As
Publication number | Publication date |
---|---|
TW201025331A (en) | 2010-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8745309B2 (en) | Cooperative memory management | |
JP4837731B2 (en) | Flash memory with programmable durability | |
US8699287B2 (en) | Techniques for increasing a lifetime of blocks of memory | |
KR101818578B1 (en) | Handling dynamic and static data for a system having non-volatile memory | |
US9753847B2 (en) | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping | |
US7663933B2 (en) | Memory controller | |
US20100125696A1 (en) | Memory Controller For Controlling The Wear In A Non-volatile Memory Device And A Method Of Operation Therefor | |
US10475516B2 (en) | Data storage device and data erasing method wherein after erasing process, predetermined value is written to indicate completion of said erasing method | |
US8402204B2 (en) | Methods for measuring usable lifespan and replacing an in-system programming code of a memory device, and data storage system using the same | |
TW201810044A (en) | Method of wear leveling for data storage device | |
JP6908789B2 (en) | Multi-level addressing | |
KR102188628B1 (en) | Method and apparatus for restricting writes to solid state memory when an end-of-life condition is reached | |
WO2005094281A2 (en) | Device-level address translation within a programmable non-volatile memory device | |
TWI437569B (en) | Method for managing a plurality of blocks of a flash memory, and associated memory device and controller thereof | |
CN107301015B (en) | System and method for reducing stress on memory devices | |
CN107045423B (en) | Memory device and data access method thereof | |
US11556276B2 (en) | Memory system and operating method thereof | |
US8874981B2 (en) | Method of creating target storage layout table referenced for partitioning storage space of storage device and related electronic device and machine-readable medium | |
US20110087828A1 (en) | Method for enhancing performance of accessing a flash memory, and associated memory device and controller thereof | |
WO2010059146A1 (en) | Wear leveling memory cells | |
CN109426443B (en) | Memory control apparatus and method | |
CN113918086A (en) | Controller and operation method thereof | |
KR20060095133A (en) | Method for operating system program stored in non-volatile memory | |
JP2008225922A (en) | Nonvolatile storage device | |
US20110055459A1 (en) | Method for managing a plurality of blocks of a flash memory, and associated memory device and controller thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 08878323 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 08878323 Country of ref document: EP Kind code of ref document: A1 |