WO2013192552A1 - Wear leveling memory using error rate - Google Patents
Wear leveling memory using error rate Download PDFInfo
- Publication number
- WO2013192552A1 WO2013192552A1 PCT/US2013/047115 US2013047115W WO2013192552A1 WO 2013192552 A1 WO2013192552 A1 WO 2013192552A1 US 2013047115 W US2013047115 W US 2013047115W WO 2013192552 A1 WO2013192552 A1 WO 2013192552A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- memory
- groups
- process cycle
- cycle count
- memory cells
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
Definitions
- the present disclosure relates generally to semiconductor memory and methods, and more particularly, to wear leveling memory using error raie.
- Volatile memory can require power to maintain its data and includes random-access memory (RAM), dynamic random access memory (DRAM), and synchronous dynamic random access memory (SDRAM)., among others.
- RAM random-access memory
- DRAM dynamic random access memory
- SDRAM synchronous dynamic random access memory
- Nonvolatile memory can provide persistent data by -retaining stored data when not powered and can include HAND flash memory, NOR flash memory, read only memory (ROM), Electrically Erasable Programmable ROM (EEPROM),
- Erasable Programmable ROM CEPROM Erasable Programmable ROM CEPROM
- resistance variable memory such as phase change random access memory (PCRAM), resistive random access memory (RRA ), and magnetoresistive random access memory (MRAM), among others.
- PCRAM phase change random access memory
- RRA resistive random access memory
- MRAM magnetoresistive random access memory
- a solid state drive can include non-volatile memory (e.g., ND flash memory and NOR flash memory), and/or can include volatile memory (e.g., DRAM and SRAM), among various other types of non- volatile and volatile memory.
- non-volatile memory e.g., ND flash memory and NOR flash memory
- volatile memory e.g., DRAM and SRAM
- SSD can he used to replace hard disk drives as the main storage volume for a computer, as the solid state drive can have advantages over hard drives in terms of performance, size, weight, ruggedness, operating temperature range, and power consumption.
- SSDs can have superior performance when compared to magnetic disk drives due to their lack of moving parts, which may avoid seek time, latency, and other electromechanical delays associated with magnetic disk drives.
- Flash memory cells experience wear due to, for example, damage to a tunnel oxide layer as electrons move therethrough (e.g., via quantum mechanical tunneling) in association with program, and erase operations. As such, the memory cells of an SSD can experience data retention issues over the lifetime of the device.
- some flash memory cells e.g., multilevel cells (LCs)
- LCs multilevel cells
- P/B cycles per ceil can be expected to sustain 10,000 program/erase (P/B) cycles per ceil before an SSD reaches an endurance limitation, which can refer to the number of P/B cycles beyond which the SSD is no longer .reliable.
- the lifetime of an SSD can be determined, for instance, based on its weakest memory device (e.g., die).
- its weakest memory device e.g., die.
- ind.ivi.duai groups of ceils e.g., blocks and/or physical pages
- develo increased bit errors e.g., an amount of bit errors which are not correctable via an error deleciion/correctkm component
- SSD controllers may implement wear leveling algorithms of varying complexity and/or sophistication in order to maintain even wear among cells of the SSD. As an example, some wear leveling algorithms may result in differences in wear among blocks of cells less than 0.5% or less.
- FIG. 1 is a block diagram of an apparatus in the form of a computing system including at least one memory system in accordance a number of embodiments of the present disclosure.
- FIG. 2 illustrates a diagram of a portion of a memory device having groups of memory cells organized as a number of physical blocks in accordance with a number of embodiments of the present disclosure
- figure 5 illustrates a functional flow diagram of a method of operaiing a memory in accordance with a number of embodiments of the present disclosure.
- a number of embodiments comprise: programming data to a selected group of a number of groups of memory cells based, at. least partially, on a process cycle count corresponding to the selected group; determining an error rate corresponding to the selected group; and adjusting the process cycle count corresponding to the selected, group based, at least partially, on the determined error rate corresponding to the selected group.
- a number of embodiments of the present disclosure can. improve wear leveling as compared to previous techniques, which can extend the useful lifetime of a memory apparatus (e.g., an SSD), for instance.
- a number of embodiments can provide benefits such as reducing over provisioning, reducing power consumption, and improving data reliability and/or integrity as compared to previous wear leveling approaches, among other benefits.
- a number of something can refer to one or more such things.
- a number of memory devices can refer to one or more memory devices.
- the designators "N”, “B * ⁇ "R”. and “S” as used herein, particularly with respect to reference numerals in the drawings, indicates that a number of the particular feature so designated can be included with a number of embodiments of the present disclosure.
- FIG. 1 is a block diagram of an apparatus in the form, of a computing system 100 including at least one memory system 104 in accordance a number of embodiments of the present disclosure.
- a memory system 104, a controller 108, or a memory device 1. 10 might also be separately considered an "apparatus".
- the memory system 104 can be a solid state drive (SSD>, for instance, and can include a host interface .106, a controller 108 (e.g., a processor and/or other control circuitry), and a number of memory devices .1 .10- ! , . . ., ! 10-N (e.g., solid state memory devices such as A.
- .D flash devices which provide a storage volume for the memory system 104.
- the controller .1 8, a memory device ⁇ KM to 1 10-N, and/or the host interface 106 can be physically located on a single die or within, a single package (e.g., a managed NAND application).
- a memory e.g., memory devices J 10-1 to 1.10-N
- the controller 108 can be coupled to the host interface 106 and to the memory devices ⁇ 10- 1 , 1 10-N via a plurality of channels and can be used to transfer data between, the memory system 104 and a host 102.
- the interlace 106 can be in the form of a standardized interface.
- the interface 106 can be a serial advanced technology attachment (SATA), periplieral component interconnect express (PCle), or a universal serial bus (USB), among oilier connectors and interfaces.
- interface 1.06 can provide an interface for passing control, address, data, and other signals between the memory system 104 and a host 102 having compatible receptors for the interface 1 6.
- Host 102 can be a host system such as a personal laptop computer, a desktop computer, a digital camera, a mobile telephone, or a memory card reader, among various other types of hosts.
- Host 102 can. include a system motherboard and/ ⁇ backplane and can include a number of .memory access devices (eg., a number of processors).
- he memory devices 1 10-1 , . . ., !. ] 0-N can include a number of arrays of memory cells (e.g., non-volatile memory cells).
- the arrays can be flash arrays with a HAND architecture, for example. However, embodiments are not limited io a particular type of memory array or array architecture.
- the memory cells c n be grouped, for instance, into a number of blocks including a number of physical pages of memory cells.
- a block refers to a group of memory cells that are erased together as a unit. A number of blocks can.
- a memory device may be configured to store 8KB (kilobytes) of user data per page. 12.8 pages of user data per block, 2048 blocks per plane, and 16 planes per device.
- data can be written to and/or read from a memory device of a memory system (e.g., memory devices 1 10-1 , . . ., 1 1 -N of system 104 ⁇ as a page of data, for example.
- a page of data can be referred to as a data transfer size of the memory system.
- Data can be transferred to/from a host (e.g., host 102) in data segments referred to as sectors (e.g., host sectors).
- a sector of data can be referred to as a data transfer size of the host, (0023]
- the controller 108 can communicate with the memory devices
- the controller 108 can include, for example, a number of components in the form of hardware and/or firm ware (e.g., one or more integrated circuits) and/or software for controlling access to the number of memory devices 1 .10-1, .. , , 1 10-N and/or for faci I hating data transfer between the host J 02 and memory devices UO-J, I 10-.N.
- the controller 108 includes a memory management component i 14, which comprises a wear leveling component 116 and an error detection/correction component 1 18.
- controller 108 may include other components (not shown) used in associatio with controlling various memory operations.
- the .memory .management component. .1 .14 can implement wear leveling to control the wear rate on the memory devices .1 ,10-L . . 1 10- .
- Wear leveling ' can reduce the number of process cycles (e.g., program and or erase cycles) performed on a particular group of ceils by spreading the cycles more evenly over an entire array and or device.
- Wear leveling can include dynamic wear leveling to minimize the amount of valid blocks moved to reclaim a block.
- Dynamic wear leveling can include a technique called garbage collection. Garbage collection can include reclaiming (e.g., erasing and making available for programming) blocks that have the most invalid pages (e.g., according to a "greedy algorithm").
- garbage collection can include reclaiming blocks with more than a threshold amount (e.g., quantity) of invalid pages, if sufficient free blocks exist for a programming operation, then, a garbage collection operation may not occur.
- An invalid page for example, can be a page of data, that has been updated to a different page.
- Static wear leveling can include writing static data to blocks that have high program/erase counts to prolong the life of the block,
- the controller 108 can be configured to control (e.g., via memory management component 1.14) wear leveling using error rate in accordance with a number of embodiments described herein. For instance, the error
- the detection/coiTection component 1 18 can be used to detect and/or correct erroneous bits in association with reading data from memory devices 1.1.0-1 to 1 10-N.
- the error detection/correction component 118 can employ error correcting codes (ECC) such as low density parity check (LDPC) codes and Ha mm ing codes, among others), in a n umber of embodiments, and as described further below .in connection with Figures 3-5, the controller 108 can be configured to determine error rates corresponding to groups of memory cells (e.g., blocks and/or pages).
- ECC error correcting codes
- LDPC low density parity check
- Ha mm ing codes among others
- an error -rate e.g., a bit error rate (ber) ⁇ can refer to an amoirai of erroneous bits corresponding to an amount of data read from a memory (e.g., .memory devices 1 10-1 to 1 ! O-N) divided by the total amount of data read.
- the wear le veling component 1 1 can be used to determine the amount of process cycles (e.g., program and/or erase cycles) experienced by individual blocks and/or pages of ceils, for instance.
- process cycle counts can be stored in memory (not shown) on the controller .108 and/or in the memory devices 110-1. to 1 10- . in a number of embodiments, the process cycle counts and/or error rates
- corresponding to groups of memory cells can be tracked and used in association with wear leveling memory as described herein.
- Figure 2 illustrates a diagram of a portion of a memory device
- Memory device 2.10 can be a memory device such as memory devices 1 10- 1 to 1 10-N described in Figure I .
- the memory cells of device 210 can be, for example, non-volatile floating gate flash memory ceils having a AND architecture.
- embodi ments of the present disclosure are not limited to a particular type of memory device.
- memor device 210 may include memory cells other than floating gate flash memory cells and can have an array architecture such as a NOR architecture, for instance.
- memory device 210 comprises a number of physical blocks 219- 1. (BLOCK J ), 2 i 9-2 (BLOCK 2), . . ,, 219-B (BLOCK B) of memor cells.
- the memory cells can be single level cells and/or multilevel cells.
- the number of physical blocks in an array of device 210 may be 128 blocks, 512 blocks, or 1,024 blocks, but embodiments are not.
- 2.1 -2. . . 2.19-B includes memory cells which can be erased together as a unit (e.g., the ceils in each physical block can be erased in a substantially
- each physical block can. be erased together in. a single erase operation., as will be further described herein.
- B contains a number of physical rows 220- 1 , 220-2, , . .., 220-R of memory cells that can each be coupled, to a respective access line (e.g., word line).
- the number of rows in each, physical block can be 32, but embodiments are not limited to a particular number of rows 220- , 220-2, . . ., 220- per block.
- each row 220-1, 220-2, . . ., 220-R can comprise one physical page of cells.
- each, row can comprise multiple physical pages of cells (e.g., one or more even pages associated with even-numbered bit Sines, and one or more odd pages associated with odd numbered bit lines).
- a physical page can be logically divided into an upper page and a Sower page of data, for instance, with each cell in a row contributing one or more bits towards an upper page of data and one or more bits towards a Sower page of data.
- a physical page corresponding to a row can store a number of sectors 222-1, 222-2, . . ., 222-S of data (e.g., an amount of data corresponding to a host sector).
- the sectors 222-1, 222-2, . . ., 222-S may comprise user data as well as overhead data, such as error correction code (ECC) dais and logical block address (LB A) data.
- ECC error correction code
- LB A logical block address
- rows 220-1 , 220-2, . . ., 220-R, and sectors 222-0, 222-1 , . . ., 222-S are possible.
- rows 220-1 , 220-2, , . ., 220-R can each store data corresponding to a single sector which can include, for example, more or less than 512 bytes of data.
- Memory devices such as memory device 210 can have a finite lifetime associated therewith. For instance, the cells of memory device 210 may become unreliable after a particular quantity of process cycles (e.g., program and/or erase (P/E) cycles ⁇ have been performed thereon.
- the particular process cycle count at which, a memory device becomes unreliable can van-' and can depend on various factors such as manufacturing differences ' between devices, operating terapera rates and/or storage temperatures associated with the memory devices, and the error detection/correction capability associated with a memory device, among other factors-
- a product specification ma indicate a process cycle count below which the memory cells are "guaranteed" to maintain reliability.
- Such guaranteed process cycle counts can depend on factors such as whether the cells are single level cells or multi-level cells, for example, and can be values such as I,0QQ cycles, 5,000, cycles, 10,000 cycles, or 100,000 cycles.
- Some memory systems employ over-provisioning (OP) to prolong the lifetime of so SSD, for instance, OP can limit the accessible amount of memory allowed by the controller (e.g., controller 108 shown in Figure I ) to less than the physical amount of memory present in a device.
- the controller e.g., controller 108 shown in Figure I
- an SSD with 64 OB of physical memory can fee over-provisioned to only allow 80% of its memory space to be used such that the memory space of the SSD appears (e.g., to a host) to be 51 GB.
- the over-provisioned 1.3 GB of memory can may not he accessible directly by a host, but can be treated as reserve and used by the controller in association with wear leveling, garbage collection, etc.
- the over-provisioned memory can be used to replace bad blocks (e.g., blocks determined to be unreliable) within the portion of the SSD accessible by the host.
- a block may be determined to be a bad block (e.g., via an error detection/correction component such as 118 shown in f igure 1) based on a determined error rate corresponding thereto, for example.
- a block may also be determined to be a bad block once a process cycle count corresponding thereto reaches or exceeds -a threshold cycle count,
- an SSD may be considered to have reached its end of life once the total bytes written (TBVV j to the SSD (e.g., to the memory devices of the SSD ) has reached a threshold level, which may be indicated as part of a product specification provided by the device manufacturer, for instance.
- blocks of an SSD are retired when they reach or exceed a threshold program and/or erase (P E) cycle count TO spread wear among the blocks of the SSD
- wear leveling can be performed based on the program and/or erase iP/E) cycle counts.
- a block may be selected to receive data in association with a programming operation based on a determination that the block has a lowermost P/E cycle count corresponding thereto.
- some groups of memory cells e.g., blocks and/or pages
- an error rate corresponding to a block of cells may be well below a reliable threshold error .rate despite the block having a reached or exceeded the threshold P. E cycle count used by the wear leveling algorithm to determine when blocks will be retired. Therefore, retiring such groups of memory cells can needlessly reduce the useful life of an SS.D.
- Figure 3 illustrates a method of operating a memory in accordance with a number of embodiments of the present disclosure.
- controller such as- controller 108 shown in Figure 1 can be configured to control the method illustrated in Figure 3.
- the method includes selecting a group of cells to program.
- the group can be a block of cells (e.g., blocks 219-1 to 219- B shown in Figure 2) or a page of cells, among other physical groupings of memory ceils.
- the group to be programmed e.g., to received, data in association with a program operation
- the group to be programmed is selected based, at least partially, on a process cycle count corresponding to . the selected group.
- the group having a lowermost cycle count corresponding thereto may be selected.
- the process cycle counts corresponding to the respective groups can he maintained in memory on the controller and or in the groups of memory cells themselves.
- a number of embodiments include determining which of the respective groups of memory cells is to receive data in association with a program operation based on the maintained process cycle counts until a threshold process cycle count is reached or exceeded, and thereafter (e.g., subsequent to the threshold process cycle count being reached) determining which of the respective groups of memory cells is to receive data in association with a program operation based on determined error rates corresponding to the respective groups of memory cells.
- the method includes determining whether a threshold process cycle count (Tpcc) has been reached or exceeded.
- the Tpcc can be a threshold amount (e.g.., quantity) of program and/or erase cycles performed on. the group, for instance.
- the T cc can be determined, tor example, based on a product specification provided by :a device manufacturer. For instance, the Tpcc may be a particular fraction of the amount of process cycles guaranteed by the product specification. As an example, if an.
- the Tpcc may be 1 ⁇ 2 of ihe guaranteed amount (e.g., 2.500 cycles), 1 ⁇ 2 of the guaranteed amount (e.g., 5,000 cycles), or 3 ⁇ 4 of the guaranteed amount (e.g., 7,500 cycles), in a number of embodiments, the method shown m Figure 3 can include determining whether one of a number of different threshold process cycle counts have been reached or exceeded (e.g., at 332).
- the selected group is programmed (e.g., at 334). Ifit is determined thai the Tpcc of the selected grou has been reached or exceeded, then at 336 an error rate corresponding to the selected group is determined.
- the method of Figure 3 includes determining whether a threshold error rate (Tber) corresponding to the selected group of memory cells has been reached or exceeded, in a number of embodiments, th error rate corresponding to the selected group is only determined if the Tpcc has been reached or exceeded. Responsive to a determination that the Tber of the selected group has not been reached or exceeded, the selected grou is programmed (e.g., at 334). Responsive to a determination that the Tber of the selected group ' has been reached or exceeded, the selected group of ceils can be determined to have reached the end of its useful life. As such, the selected group is retired (e.g., at 340).
- Tber threshold error rate
- the Tber ca be determined, far instance, by an error detection/correction component (e.g., component 1 18 shown in Figure I ), and can be an error rate that is " uncorrectable vi the error detection/correction component.
- an error detection/correction component e.g., component 1 18 shown in Figure I
- embodiments are not limited to a particular Tber.
- Figure 4 illustrates a method of operating a memory in accordance with a number of embodiments of the present disclosure.
- a controller such as control ler 10S shown in Figure 1 can be configured to control the method illustrated in Figure 4.
- the method includes maintaining process cycle counts corresponding to each of a number of respecti ve groups of memory cells.
- the groups can be a blocks of cel ls (e .g., blocks 219-1 to 21 -B shown in Figure 2) or pages of cells, among other physical grou pings of memory cells.
- the process cycle counts can be P/E cycle counts and can be stored in memory (e.g., DRAM) on the controller and/or in the groups of cells themselves (e.g., one b!oek of memory cells may store the process cycle counts
- each block may store the process cycle count corresponding to itself).
- the maintained process cycle counts corresponding to the respective groups of memory cells can be adjusted based on determined error rates corresponding to the .respective groups.
- the error rates corresponding to the groups of memory cells can be determined, for instance, responsive to the process cycle count reaching or exceeding one or more threshold counts.
- embodiments are not so I. trailed, for example, in a number of embodiments, error .rates corresponding to the respecti e groups of memory cells can be determined via a. background sampling process.
- the controller can be used to determine error rates of the respective groups at various times (e.g., while data is being programmed to the memory, read from the memory, erased, and or while an SS.D is not actively processing memory commands).
- adjusting process cycle counts based on determined error rates can include adjusting the process cycle count corresponding to at least one group of memory cells from an actual amount of process cycles performed on the group to an amount of process cycles other than the actual amount of process cycles. For example, if an error rate corresponding to a particular grou of memory cells is determined to be higher relati ve to the error rates
- the process cycle count may be increased .from the actual process cycle count to a higher process cycle count.
- the process cycle count may be decreased f om the actual process cycle count to a lower process cycle count.
- a wear leveling process that selects groups to program based on process cycie counts (e.g., a wear leveling algorithm that selects groups having lowermost process cycle counts) may select a group of cells having a higher actual process cycie count as a result of the process cycle count being lowered due to a low error rate corresponding to the particular group.
- the TB W (e.g.. the total amount of data programmed to an SSD) can be tracked (e.g., via a controller).
- wear leveling can be performed on the memory based on process cycle counts until a threshold amount of data is written to the memory, and thereafter wear leveling can be performed on the memory based on error rates.
- groups of memory cells having high process cycle counts which may be retired (e.g., removed from usage) due to a likelihood of unreliability and/o failure, may remain in usage for an extended period (e.g., beyond a process cycle count ' threshold) due to the group of cells having an acceptably low error rate, j 0045]
- the method of Figure 4 selects a group of me mory cel ls to program based on process cyc le counts if the threshold total bytes written (Ttbw) has not been reached or exceeded, if the Ttbw has been reached or exceeded, then the group of memory cel ls to be programmed is selected based on error rates, as shown at 456.
- the Ttbw may be a lifetime specification of the memory (e.g., a guaranteed TBW according to a product specification), embodiments are not so limited.
- the Ttbw after which a system performs wear leveling based on error rates can be various values which may or may not be related to a TBW provided by a product specification (e.g., of an SSD).
- Figure 5 illustrates a functional flow diagram of a method of operating a memory in accordance with a number of embodiments of the present disclosure.
- Table 56 includes a number of groups of memory cel ls 562 (e.g., groups 1 , 2, 3, G) and process cycle counts 564 corresponding thereto.
- the groups 562 can be blocks of ' memory cells or pages of memory cells such as those described in Figure 2, for instance.. '
- the process cycle counts 562 can be P/E cycle counts and can be maintained in memory and updated as the groups experience subsequent P/E cycles.
- a controller e.g., controller 108 shown in Figure 1
- wear leveling based on the proces cycle counts includes selecting a group to be programmed that, has a lowermost process cycle count. As illustrated in table 560, group 3 is the selected group 565 since the process cycle count 56? (e.g. "X") corresponding to group 3 is less than the process cycle counts
- error rates corresponding to he respective groups 562 can be determined.
- the process cycle counts 564 corresponding to the respective groups 562 can be adjusted based on. determined error rates corresponding to the groups.
- the error rates corresponding to the groups 562 can be determined responsi ve to the process cycle reaching or exceeding one of a number of threshold process cycle counts.
- the error rates corresponding to the groups 562 may be determined only after the groups have experienced each of a number of particular threshold process cycle counts (e.g., after 1 ,000 P/E cycles, after 2,000 P/E cycles, after 5,000, and after 7,500 P/E cycles).
- H wever, embodime ts are not so limited.
- the error rates corresponding to the number of groups 562 may be determined via a background sampling process.
- Table 570 illustrates an adjustment to the process cycle count 569 of the selected group 565 (e.g., group 3) responsive to the determined error rate correspondin thereto, in tins example, the process cycle count 569
- the maintained process cycle counts 564 corresponding to the groups of memory cells 562 can be adjusted (e.g., changed) from an actual value (e.g., "X") to a different value (e.g., a value other than the actual value such as "X + Y"). Adjusting the actual values of the process cycle counts 564 can affect a wear leveling algorithm that selects groups to be programmed based on the process cycle counts corresponding to the groups, associated with the groups (e.g., by causing groups to be programmed more or less frequently due to adjustments to the process cycle counts).
- wear leveling performed on groups of memory cells can include selecting groups to be programmed based on process cycle counts (e.g., 564 ⁇ until a threshold process cycle count, is reached or exceeded, and thereafter selecting groups to be programmed based on determined error rates corresponding to the groups, 'That is, wear leveling can be based on process cycle counts until a threshold process cycle count is reached or exceeded, and then the wear leveling can be based on error rates thereafter (e.g., subsequent to a threshokl process cycle cootH being reached or exceeded).
- process cycle counts e.g., 564 ⁇ until a threshold process cycle count, is reached or exceeded
- determined error rates corresponding to the groups 'That is, wear leveling can be based on process cycle counts until a threshold process cycle count is reached or exceeded, and then the wear leveling can be based on error rates thereafter (e.g., subsequent to a threshokl process cycle cootH being reached or exceeded).
- Using error rales in association with wear leveling as described herein can increase the useful life of a memory (e.g., an SSD), among other benefits, by better accounting for device to device (e.g., die to die) variability as compared t previous wear leveling approaches.
- a number of embodiments of the present disclosure can reduce over provisioning and improve the reliability, data integrity, and/or performance of SSDs as compared io previous wear leveling approaches.
- a number of embodiments comprise: programming data to a selected group of a .number of groups of memory cells based, at least partially, on a proces cycle count corresponding to the selected group; determining an error rate corresponding to the selected group; and adjusting the process cycle count corresponding to the selected group based, at least partially, on the determined error rate corresponding t the selected group.
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Description
WEAR LEVELING MEMORY USING ERROR RATE
Technical Field
[00011 The present disclosure relates generally to semiconductor memory and methods, and more particularly, to wear leveling memory using error raie.
[6002 j Memory devices are typically provided as internal,
semiconductor,, integrated circuits in computers or other electronic devices. There are many different types of memory including volatile and non-volatile memory. Volatile memory can require power to maintain its data and includes random-access memory (RAM), dynamic random access memory (DRAM), and synchronous dynamic random access memory (SDRAM)., among others. Nonvolatile memory can provide persistent data by -retaining stored data when not powered and can include HAND flash memory, NOR flash memory, read only memory (ROM), Electrically Erasable Programmable ROM (EEPROM),
Erasable Programmable ROM CEPROM , and resistance variable memory such as phase change random access memory (PCRAM), resistive random access memory (RRA ), and magnetoresistive random access memory (MRAM), among others.
|0003] Memory devices can be combined together to form a storage volume of a memory system such, as a solid state drive (SSD). A solid state drive can include non-volatile memory (e.g., ND flash memory and NOR flash memory), and/or can include volatile memory (e.g., DRAM and SRAM), among various other types of non- volatile and volatile memory.
(0 041 An SSD can he used to replace hard disk drives as the main storage volume for a computer, as the solid state drive can have advantages over hard drives in terms of performance, size, weight, ruggedness, operating temperature range, and power consumption. For example, SSDs can have superior performance when compared to magnetic disk drives due to their lack of moving parts, which may avoid seek time, latency, and other electromechanical delays associated with magnetic disk drives.
(00051 Flash memory cells experience wear due to, for example, damage to a tunnel oxide layer as electrons move therethrough (e.g., via quantum mechanical tunneling) in association with program, and erase operations. As such, the memory cells of an SSD can experience data retention issues over the lifetime of the device. As an example, some flash memory cells (e.g., multilevel cells ( LCs)) can be expected to sustain 10,000 program/erase (P/B) cycles per ceil before an SSD reaches an endurance limitation, which can refer to the number of P/B cycles beyond which the SSD is no longer .reliable.
(0006] The lifetime of an SSD can be determined, for instance, based on its weakest memory device (e.g., die). As an example, once ind.ivi.duai groups of ceils (e.g., blocks and/or physical pages) within a memory device of an SSD start to develo increased bit errors (e.g., an amount of bit errors which are not correctable via an error deleciion/correctkm component), the entire SSD may be considered to have reached its end of life,
j 0007| to order to spread wear among groups of memory cei ls of an.
SSD. a process known as wear leveling can be used. Such wear leveling can prevent particular cells from experiencing excessive wear as compared to other cells, which can extend the life of an SSD. SSD controllers may implement wear leveling algorithms of varying complexity and/or sophistication in order to maintain even wear among cells of the SSD. As an example, some wear leveling algorithms may result in differences in wear among blocks of cells less than 0.5% or less.
Brief Description of the Drawings
[ 008 j Figure I is a block diagram of an apparatus in the form of a computing system including at least one memory system in accordance a number of embodiments of the present disclosure.
(00091 Figure 2 illustrates a diagram of a portion of a memory device having groups of memory cells organized as a number of physical blocks in accordance with a number of embodiments of the present disclosure,
I'O IOJ Figure 3 i llustrates a method of operating a memory in accordance with a number of embodiments of the present disclosure.
(0011 J Figure 4 illustrates method of operating a memory m accordance with a number of embodiments of the present disclosure.
('00.12] figure 5 illustrates a functional flow diagram of a method of operaiing a memory in accordance with a number of embodiments of the present disclosure.
Petal led .Descrip ion
(0013 j The present disclosure relates to wear leveling memory using error rate, A number of embodiments comprise: programming data to a selected group of a number of groups of memory cells based, at. least partially, on a process cycle count corresponding to the selected group; determining an error rate corresponding to the selected group; and adjusting the process cycle count corresponding to the selected, group based, at least partially, on the determined error rate corresponding to the selected group.
(0014| A number of embodiments of the present disclosure can. improve wear leveling as compared to previous techniques, which can extend the useful lifetime of a memory apparatus (e.g., an SSD), for instance. As described further herein, a number of embodiments can provide benefits such as reducing over provisioning, reducing power consumption, and improving data reliability and/or integrity as compared to previous wear leveling approaches, among other benefits.
{0015] in the following detailed description, of the present disclosure, reference is made to the accompanying drawings that form a part hereof and in which is shown by way of illustration how a number of embodiments of the disclosure may 'be practiced. These embodiments are described in suffic ien t detail to enable those of ordinary skill in the art to practice the embodiments of this disclosure, and it is to be understood thai other embodiments may be utilized and that process, electrical and/or structural changes may be made without departing from the scope of the present disclosure.
(0016] As used herein, "a number of" something can refer to one or more such things. For example, a number of memory devices can refer to one or more memory devices. Additionally, the designators "N", "B*\ "R". and "S" as used herein, particularly with respect to reference numerals in the drawings, indicates
that a number of the particular feature so designated can be included with a number of embodiments of the present disclosure.
{'0017] The figures herein follow a numbering convention in which the first digit or digits correspond to the drawing figure number and the remaining digits identify an element or component in the drawing. Similar elements or components between different figures may be identified by the use of simi lar digits. For example, 110 may .reference element "10" in Figure 1, and a .similar element, may be referenced as 210 in Figure 2. As will be appreciated, elements shown in the various embodiments herein can be added, exchanged, and/or eliminated so as to provide a number of additional embodiments of the present disclosure. In addition, as will be appreciated, the proportion, and the relative scale of the elements provided in the figures are intended to illustrate the embodiments of the present disclosure, and should not be taken in a limiting sense.
(OTIS] Figure 1 is a block diagram of an apparatus in the form, of a computing system 100 including at least one memory system 104 in accordance a number of embodiments of the present disclosure. As used herein, a memory system 104, a controller 108, or a memory device 1. 10 might also be separately considered an "apparatus". The memory system 104 can be a solid state drive (SSD>, for instance, and can include a host interface .106, a controller 108 (e.g., a processor and/or other control circuitry), and a number of memory devices .1 .10- ! , . . ., ! 10-N (e.g., solid state memory devices such as A. .D flash devices), which provide a storage volume for the memory system 104. In a number of embodiments, the controller .1 8, a memory device ί KM to 1 10-N, and/or the host interface 106 can be physically located on a single die or within, a single package (e.g., a managed NAND application). Also, in a number of embodiments, a memory (e.g., memory devices J 10-1 to 1.10-N) can include a single memory device.
|0019j As illustrated in. Figure I , the controller 108 can be coupled to the host interface 106 and to the memory devices ί 10- 1 , 1 10-N via a plurality of channels and can be used to transfer data between, the memory system 104 and a host 102. The interlace 106 can be in the form of a standardized interface. For example, when the memory system 1 4 is used for data storage in a. computing system 100, the interface 106 can be a serial advanced technology attachment
(SATA), periplieral component interconnect express (PCle), or a universal serial bus (USB), among oilier connectors and interfaces. In general, however, interface 1.06 can provide an interface for passing control, address, data, and other signals between the memory system 104 and a host 102 having compatible receptors for the interface 1 6.
002 1 Host 102 can be a host system such as a personal laptop computer, a desktop computer, a digital camera, a mobile telephone, or a memory card reader, among various other types of hosts. Host 102 can. include a system motherboard and/οτ backplane and can include a number of .memory access devices (eg., a number of processors).
|u021 ) T he memory devices 1 10-1 , . . ., !. ] 0-N can include a number of arrays of memory cells (e.g., non-volatile memory cells). The arrays can be flash arrays with a HAND architecture, for example. However, embodiments are not limited io a particular type of memory array or array architecture. As described further 'below in connection with Figure 2, the memory cells c n be grouped, for instance, into a number of blocks including a number of physical pages of memory cells. In a number of embodiments, a block refers to a group of memory cells that are erased together as a unit. A number of blocks can. be included to a plane of memory cells and an array can include a number of planes. As one example, a memory device may be configured to store 8KB (kilobytes) of user data per page. 12.8 pages of user data per block, 2048 blocks per plane, and 16 planes per device.
{002 1 in operation, data can be written to and/or read from a memory device of a memory system (e.g., memory devices 1 10-1 , . . ., 1 1 -N of system 104} as a page of data, for example. As such, a page of data can be referred to as a data transfer size of the memory system. Data can be transferred to/from a host (e.g., host 102) in data segments referred to as sectors (e.g., host sectors). As such, a sector of data can be referred to as a data transfer size of the host, (0023] The controller 108 can communicate with the memory devices
1104 , . . ., 1 10-N to control data read, write, and erase operations, among other operations. The controller 108 can include, for example, a number of components in the form of hardware and/or firm ware (e.g., one or more integrated circuits) and/or software for controlling access to the number of memory devices 1 .10-1, .. , , 1 10-N and/or for faci I hating data transfer between
the host J 02 and memory devices UO-J, I 10-.N. For instance, in the example illustrated in Figure 1, the controller 108 includes a memory management component i 14, which comprises a wear leveling component 116 and an error detection/correction component 1 18. Embodiments am not limited to the example shown in Figure I. For instance, controller 108 may include other components (not shown) used in associatio with controlling various memory operations.
(00241 The .memory .management component. .1 .14 can implement wear leveling to control the wear rate on the memory devices .1 ,10-L . . 1 10- . Wear leveling 'can reduce the number of process cycles (e.g., program and or erase cycles) performed on a particular group of ceils by spreading the cycles more evenly over an entire array and or device. Wear leveling can include dynamic wear leveling to minimize the amount of valid blocks moved to reclaim a block. Dynamic wear leveling can include a technique called garbage collection. Garbage collection can include reclaiming (e.g., erasing and making available for programming) blocks that have the most invalid pages (e.g., according to a "greedy algorithm"). Alternatively, garbage collection can include reclaiming blocks with more than a threshold amount (e.g., quantity) of invalid pages, if sufficient free blocks exist for a programming operation, then, a garbage collection operation may not occur. An invalid page, for example, can be a page of data, that has been updated to a different page.. Static wear leveling can include writing static data to blocks that have high program/erase counts to prolong the life of the block,
(0025] The controller 108 can be configured to control (e.g., via memory management component 1.14) wear leveling using error rate in accordance with a number of embodiments described herein. For instance, the error
detection/coiTection component 1 18 can be used to detect and/or correct erroneous bits in association with reading data from memory devices 1.1.0-1 to 1 10-N. As an example, the error detection/correction component 118 can employ error correcting codes (ECC) such as low density parity check (LDPC) codes and Ha mm ing codes, among others), in a n umber of embodiments, and as described further below .in connection with Figures 3-5, the controller 108 can be configured to determine error rates corresponding to groups of memory cells (e.g., blocks and/or pages). As used herein, an error -rate (e.g., a bit error rate
(ber)} can refer to an amoirai of erroneous bits corresponding to an amount of data read from a memory (e.g., .memory devices 1 10-1 to 1 ! O-N) divided by the total amount of data read. In a number of embodiments , the wear le veling component 1 1 can be used to determine the amount of process cycles (e.g., program and/or erase cycles) experienced by individual blocks and/or pages of ceils, for instance. Such process cycle counts can be stored in memory (not shown) on the controller .108 and/or in the memory devices 110-1. to 1 10- . in a number of embodiments, the process cycle counts and/or error rates
corresponding to groups of memory cells can be tracked and used in association with wear leveling memory as described herein.
|u026) Figure 2 illustrates a diagram of a portion of a memory device
210 having groups of memory cells organized as a number of physical blocks 2.59-i , 21 -2,. . . , 21 -B in accordance with a number of embodimen ts of the present disclosure. Memory device 2.10 can be a memory device such as memory devices 1 10- 1 to 1 10-N described in Figure I , The memory cells of device 210 can be, for example, non-volatile floating gate flash memory ceils having a AND architecture. However, embodi ments of the present disclosure are not limited to a particular type of memory device. For example, memor device 210 may include memory cells other than floating gate flash memory cells and can have an array architecture such as a NOR architecture, for instance. |O027] As shown in Figure 2. memory device 210 comprises a number of physical blocks 219- 1. (BLOCK J ), 2 i 9-2 (BLOCK 2), . . ,, 219-B (BLOCK B) of memor cells. The memory cells can be single level cells and/or multilevel cells. As an example, the number of physical blocks in an array of device 210 may be 128 blocks, 512 blocks, or 1,024 blocks, but embodiments are not.
limited to a particular number of physical blocks.
10028 j In the example shown in Figure 2, each physical block 219-1 ,
2.1 -2. . . 2.19-B includes memory cells which can be erased together as a unit (e.g., the ceils in each physical block can be erased in a substantially
simultaneous manner). For instance, the memory ceils in each physical block can. be erased together in. a single erase operation., as will be further described herein.
|y(i29j As shown in Figure 2, each physical block 2 9-1 , 21 -2, . . ., 219-
B contains a number of physical rows 220- 1 , 220-2, , . .., 220-R of memory cells
that can each be coupled, to a respective access line (e.g., word line). The number of rows in each, physical block can be 32, but embodiments are not limited to a particular number of rows 220- , 220-2, . . ., 220- per block.
|603 J ?\s one of ordinary .skill in the art will appreciate, each row 220-1,
220-2, . . ., 220-R can comprise one or more physical pages of cells. A physical page of cells can refer to a number of memory cells that are programmed and or read together or as a functional group. In the embodiment shown, in Figure 2, each row 220-1, 220-2, . . ,, 220-R can comprise one physical page of cells. However, embodiments of the present disclosure are not so limited. For instance, in one or more embodiments of the present 'disclosure, each, row can comprise multiple physical pages of cells (e.g., one or more even pages associated with even-numbered bit Sines, and one or more odd pages associated with odd numbered bit lines). Additionally, for embodiments including multilevel cells, a physical page can be logically divided into an upper page and a Sower page of data, for instance, with each cell in a row contributing one or more bits towards an upper page of data and one or more bits towards a Sower page of data.
{003! I In the example shown in Figure 2, a physical page corresponding to a row can store a number of sectors 222-1, 222-2, . . ., 222-S of data (e.g., an amount of data corresponding to a host sector). The sectors 222-1, 222-2, . . ., 222-S may comprise user data as well as overhead data, such as error correction code (ECC) dais and logical block address (LB A) data. It is noted that other configurations for the physical blocks 219-1, 219-2, , . ., 219-B, rows 220-1 , 220-2, . . ., 220-R, and sectors 222-0, 222-1 , . . ., 222-S are possible. For example, rows 220-1 , 220-2, , . ., 220-R can each store data corresponding to a single sector which can include, for example, more or less than 512 bytes of data.
[0032| Memory devices such as memory device 210 can have a finite lifetime associated therewith. For instance, the cells of memory device 210 may become unreliable after a particular quantity of process cycles (e.g., program and/or erase (P/E) cycles} have been performed thereon. The particular process cycle count at which, a memory device becomes unreliable can van-' and can depend on various factors such as manufacturing differences 'between devices, operating teraperatitres and/or storage temperatures associated with the memory
devices, and the error detection/correction capability associated with a memory device, among other factors- In various instances, a product specification ma indicate a process cycle count below which the memory cells are "guaranteed" to maintain reliability. Such guaranteed process cycle counts can depend on factors such as whether the cells are single level cells or multi-level cells, for example, and can be values such as I,0QQ cycles, 5,000, cycles, 10,000 cycles, or 100,000 cycles.
{0033] Some memory systems employ over-provisioning (OP) to prolong the lifetime of so SSD, for instance, OP can limit the accessible amount of memory allowed by the controller (e.g., controller 108 shown in Figure I ) to less than the physical amount of memory present in a device. For instance, an SSD with 64 OB of physical memory can fee over-provisioned to only allow 80% of its memory space to be used such that the memory space of the SSD appears (e.g., to a host) to be 51 GB. The over-provisioned 1.3 GB of memory can may not he accessible directly by a host, but can be treated as reserve and used by the controller in association with wear leveling, garbage collection, etc. For instance, the over-provisioned memory can be used to replace bad blocks (e.g., blocks determined to be unreliable) within the portion of the SSD accessible by the host. A block may be determined to be a bad block (e.g., via an error detection/correction component such as 118 shown in f igure 1) based on a determined error rate corresponding thereto, for example. As another example, a block may also be determined to be a bad block once a process cycle count corresponding thereto reaches or exceeds -a threshold cycle count,
|0034| in some instances, an SSD may be considered to have reached its end of life once the total bytes written (TBVV j to the SSD (e.g., to the memory devices of the SSD ) has reached a threshold level, which may be indicated as part of a product specification provided by the device manufacturer, for instance.
[00351 In some previous approaches, blocks of an SSD are retired when they reach or exceed a threshold program and/or erase (P E) cycle count TO spread wear among the blocks of the SSD, wear leveling can be performed based on the program and/or erase iP/E) cycle counts. For instance, a block may be selected to receive data in association with a programming operation based on a determination that the block has a lowermost P/E cycle count corresponding thereto. However, some groups of memory cells (e.g., blocks and/or pages) are
still reliable even after reaching or exceeding the threshold P/B cycle count. Fo example, an error rate corresponding to a block of cells may be well below a reliable threshold error .rate despite the block having a reached or exceeded the threshold P. E cycle count used by the wear leveling algorithm to determine when blocks will be retired. Therefore, retiring such groups of memory cells can needlessly reduce the useful life of an SS.D.
{Θ036| Figure 3 illustrates a method of operating a memory in accordance with a number of embodiments of the present disclosure. A.
controller such as- controller 108 shown in Figure 1 can be configured to control the method illustrated in Figure 3. At 330, the method includes selecting a group of cells to program. The group can be a block of cells (e.g., blocks 219-1 to 219- B shown in Figure 2) or a page of cells, among other physical groupings of memory ceils. The group to be programmed (e.g., to received, data in association with a program operation) can be selected in association with a wear leveling process, for instance.
{00371 hi a number of embodiments, the group to be programmed is selected based, at least partially, on a process cycle count corresponding to. the selected group. Fo instance, the group having a lowermost cycle count corresponding thereto may be selected. The process cycle counts corresponding to the respective groups can he maintained in memory on the controller and or in the groups of memory cells themselves. A number of embodiments include determining which of the respective groups of memory cells is to receive data in association with a program operation based on the maintained process cycle counts until a threshold process cycle count is reached or exceeded, and thereafter (e.g., subsequent to the threshold process cycle count being reached) determining which of the respective groups of memory cells is to receive data in association with a program operation based on determined error rates corresponding to the respective groups of memory cells.
{0038J At 332, the method includes determining whether a threshold process cycle count (Tpcc) has been reached or exceeded. The Tpcc can be a threshold amount (e.g.., quantity) of program and/or erase cycles performed on. the group, for instance. The T cc can be determined, tor example, based on a product specification provided by :a device manufacturer. For instance, the Tpcc may be a particular fraction of the amount of process cycles guaranteed by the
product specification. As an example, if an. SSD product specification indicates that the cells of the SSD are guaranteed up to 10,000 P/E cycles, then the Tpcc may be ½ of ihe guaranteed amount (e.g., 2.500 cycles), ½ of the guaranteed amount (e.g., 5,000 cycles), or ¾ of the guaranteed amount (e.g., 7,500 cycles), in a number of embodiments, the method shown m Figure 3 can include determining whether one of a number of different threshold process cycle counts have been reached or exceeded (e.g., at 332).
10039] In the example shown in Figure 3, if it is determined that the Tpcc of the selected group has not been reached or exceeded, then the selected group is programmed (e.g., at 334). Ifit is determined thai the Tpcc of the selected grou has been reached or exceeded, then at 336 an error rate corresponding to the selected group is determined.
[0040] At 338, the method of Figure 3 includes determining whether a threshold error rate (Tber) corresponding to the selected group of memory cells has been reached or exceeded, in a number of embodiments, th error rate corresponding to the selected group is only determined if the Tpcc has been reached or exceeded. Responsive to a determination that the Tber of the selected group has not been reached or exceeded, the selected grou is programmed (e.g., at 334). Responsive to a determination that the Tber of the selected group 'has been reached or exceeded, the selected group of ceils can be determined to have reached the end of its useful life. As such, the selected group is retired (e.g., at 340). The Tber ca be determined, far instance, by an error detection/correction component (e.g., component 1 18 shown in Figure I ), and can be an error rate that is "uncorrectable vi the error detection/correction component. However, embodiments are not limited to a particular Tber.
00 11 Figure 4 illustrates a method of operating a memory in accordance with a number of embodiments of the present disclosure. A controller such as control ler 10S shown in Figure 1 can be configured to control the method illustrated in Figure 4. At 450, the method includes maintaining process cycle counts corresponding to each of a number of respecti ve groups of memory cells. The groups can be a blocks of cel ls (e .g., blocks 219-1 to 21 -B shown in Figure 2) or pages of cells, among other physical grou pings of memory cells. The process cycle counts can be P/E cycle counts and can be stored in memory (e.g., DRAM) on the controller and/or in the groups of cells themselves
(e.g., one b!oek of memory cells may store the process cycle counts
corresponding to each of a plurality of blocks or each block may store the process cycle count corresponding to itself).
00-42 J In a number of embodiments, and as illustrated at 452, the maintained process cycle counts corresponding to the respective groups of memory cells can be adjusted based on determined error rates corresponding to the .respective groups. The error rates corresponding to the groups of memory cells can be determined, for instance, responsive to the process cycle count reaching or exceeding one or more threshold counts. However, embodiments are not so I. trailed, for example, in a number of embodiments, error .rates corresponding to the respecti e groups of memory cells can be determined via a. background sampling process. For instance, the controller can be used to determine error rates of the respective groups at various times (e.g., while data is being programmed to the memory, read from the memory, erased, and or while an SS.D is not actively processing memory commands).
{00 31 in a number of embodiments, and as described further below in connection with Figure 5, adjusting process cycle counts based on determined error rates can include adjusting the process cycle count corresponding to at least one group of memory cells from an actual amount of process cycles performed on the group to an amount of process cycles other than the actual amount of process cycles. For example, if an error rate corresponding to a particular grou of memory cells is determined to be higher relati ve to the error rates
corresponding to other groups, then the process cycle count may be increased .from the actual process cycle count to a higher process cycle count. Similarly, if an error rate corresponding to a particular group of memory ceils is determined to be lower relative to the error rates corresponding to other groups, then the process cycle count may be decreased f om the actual process cycle count to a lower process cycle count. In this manner, a wear leveling process that selects groups to program based on process cycie counts (e.g., a wear leveling algorithm that selects groups having lowermost process cycle counts) may select a group of cells having a higher actual process cycie count as a result of the process cycle count being lowered due to a low error rate corresponding to the particular group.
1.2
j if 044] 1B a number of embodiments, the TB W (e.g.. the total amount of data programmed to an SSD) can be tracked (e.g., via a controller). As an example, wear leveling can be performed on the memory based on process cycle counts until a threshold amount of data is written to the memory, and thereafter wear leveling can be performed on the memory based on error rates. As such, groups of memory cells having high process cycle counts, which may be retired (e.g., removed from usage) due to a likelihood of unreliability and/o failure, may remain in usage for an extended period (e.g., beyond a process cycle count' threshold) due to the group of cells having an acceptably low error rate, j 0045] A.8 shown at 454, the method of Figure 4 selects a group of me mory cel ls to program based on process cyc le counts if the threshold total bytes written (Ttbw) has not been reached or exceeded, if the Ttbw has been reached or exceeded, then the group of memory cel ls to be programmed is selected based on error rates, as shown at 456. Although the Ttbw may be a lifetime specification of the memory (e.g., a guaranteed TBW according to a product specification), embodiments are not so limited. For instance, the Ttbw after which a system performs wear leveling based on error rates can be various values which may or may not be related to a TBW provided by a product specification (e.g., of an SSD).
(0046| Figure 5 illustrates a functional flow diagram of a method of operating a memory in accordance with a number of embodiments of the present disclosure. Table 56 includes a number of groups of memory cel ls 562 (e.g., groups 1 , 2, 3, G) and process cycle counts 564 corresponding thereto. The groups 562 can be blocks of 'memory cells or pages of memory cells such as those described in Figure 2, for instance.. 'The process cycle counts 562 can be P/E cycle counts and can be maintained in memory and updated as the groups experience subsequent P/E cycles.
[00471 in a number of embodiments, a controller (e.g., controller 108 shown in Figure 1 ) can be configured to control performing wear leveling on the groups 562 based on the maintained process cycle counts 564. In this example, wear leveling based on the proces cycle counts includes selecting a group to be programmed that, has a lowermost process cycle count. As illustrated in table 560, group 3 is the selected group 565 since the process cycle count 56? (e.g.
"X") corresponding to group 3 is less than the process cycle counts
corresponding to the other groups (e.g., "X + 1"),
('0048] in a number of embodiments, and as illustrated at 563, error rates corresponding to he respective groups 562 can be determined. As illustrated in table 570, the process cycle counts 564 corresponding to the respective groups 562 can be adjusted based on. determined error rates corresponding to the groups. The error rates corresponding to the groups 562 can be determined responsi ve to the process cycle reaching or exceeding one of a number of threshold process cycle counts. For example, the error rates corresponding to the groups 562 may be determined only after the groups have experienced each of a number of particular threshold process cycle counts (e.g., after 1 ,000 P/E cycles, after 2,000 P/E cycles, after 5,000, and after 7,500 P/E cycles). H wever, embodime ts are not so limited. For instance, in a number of embodiments, the error rates corresponding to the number of groups 562 may be determined via a background sampling process.
(0049] Table 570 illustrates an adjustment to the process cycle count 569 of the selected group 565 (e.g., group 3) responsive to the determined error rate correspondin thereto, in tins example, the process cycle count 569
corresponding to the selected group 565 is adjusted from "X" to "X + Y". The quantity Ύ' can be a positive or negative value. Thai is, the maintained process cycle count 569 can be increased or decreased responsive to the determined, error rat at 563, As such, in a number of embodiments, the maintained process cycle counts 564 corresponding to the groups of memory cells 562 can be adjusted (e.g., changed) from an actual value (e.g., "X") to a different value (e.g., a value other than the actual value such as "X + Y")„ Adjusting the actual values of the process cycle counts 564 can affect a wear leveling algorithm that selects groups to be programmed based on the process cycle counts corresponding to the groups, associated with the groups (e.g., by causing groups to be programmed more or less frequently due to adjustments to the process cycle counts).
{0050] In a number o embodiments, wear leveling performed on groups of memory cells (e.g., 562) can include selecting groups to be programmed based on process cycle counts (e.g., 564} until a threshold process cycle count, is reached or exceeded, and thereafter selecting groups to be programmed based on determined error rates corresponding to the groups, 'That is, wear leveling can
be based on process cycle counts until a threshold process cycle count is reached or exceeded, and then the wear leveling can be based on error rates thereafter (e.g., subsequent to a threshokl process cycle cootH being reached or exceeded). |w05i | Using error rales in association with wear leveling as described herein can increase the useful life of a memory (e.g., an SSD), among other benefits, by better accounting for device to device (e.g., die to die) variability as compared t previous wear leveling approaches. For example, a number of embodiments of the present disclosure can reduce over provisioning and improve the reliability, data integrity, and/or performance of SSDs as compared io previous wear leveling approaches.
[0052 j T he present disclosure relates to wear leveling memory using error rate. A number of embodiments comprise: programming data to a selected group of a .number of groups of memory cells based, at least partially, on a proces cycle count corresponding to the selected group; determining an error rate corresponding to the selected group; and adjusting the process cycle count corresponding to the selected group based, at least partially, on the determined error rate corresponding t the selected group.
{'0053 J Although specific embodiments have been illustrated and described hereto, those of ordinar skill in the art will appreciate that an arrangement calculated to achieve the same results can be substituted for the specific embodiments shown. This disclosure is intended to cover' adaptations or variations of a number of embodiments of the present disclosure, ft is to be understood that the above description has been made in an illustrative fashion, and not a restrictive one. Combination of the above embodiments, and other embodiments not specifically described herein will be apparent to those of skill in the art upon reviewing the abo ve description, The scope of a number o embodiments of the present disclosure includes other applications in which the above structures and methods are used. Therefore, the scope of a number of embodiments of the present disclosure should be determined with reference to the appended claims, along with the full range of equivalents to which such claims are entitled.
|'0 5 J In the foregoing Detailed Description, some features are grouped, together in a single embodiment for the purpose of streamlining the disclosure;. This method of disclosure is not to be interpreted as reflecting an intention that
the disclosed embodiments of the present disclosure have to use more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus, the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate en.ihodi.ment.
Claims
What is Claimed is:
1 , A method for operating a memory, comprising:
programming data to a seleci ed group of a number of gro ups of memory cells based, at least partially, on a process cycle count corresponding to the selected group;
determining an -error rate corresponding to the selected group; and adjusting the process cycle count corresponding to the selected group based, at least partially, on the determined error rate corresponding to the selecied group.
2, The method of claim i, including determining the error rate
corresponding to the selected group responsive to the process cycle count, corresponding to the selected group reaching or exceeding one of a number of threshold process cycle counts.,
3.. The method of claim I, wherein the method includes determining the error rate corresponding to the selected group only if the process cycle count corresponding to the selected group has reached or exceeded a threshold process cycle count.
4. The method of any one of claims t-3, wherein the method incl udes maintaining a process cycle count for each respective, group of the number of groups of memory cells.
5. The method of any one of claims i-3, including determining the error rate using an error detection/correction component coupled to the memory.
6. T e method of any one of claims i-3, wherein the process cycle count is a program erase cycle count.
7. The method of any one of claims 1 -3, determining an error rate corresponding to the selected group comprises performing a. background
sampling of error rates corresponding to the respective number of groups of memory cells.
S, A method for operating a memory, comprising:
detemrniing a number of error rates each corresponding to a respective one of a number of groups of memory ceils; and
adjusting a maintained process cycle count corresponding to at least one of the number of groups of memory cells responsive to the determined, number of error rates.
9. The method of claim 8, including determining the number of error rates each corresponding to a respec ti ve one of the number of groups of memory cells responsive to a threshold process cycle count of a. number of threshold process cycle counts having been reached or exceeded.
10. The method of claim 8, including adjusting the maintained process cycle count corresponding to the at least one of the number of groups of memory cells responsive only to a. threshold process cycle count of a number of threshold process cycle counts having been reached or exceeded.
1 1 . The method of any one of claims 8-10, including:
maintaini ng process cycl e counts corresponding to each of the respecti ve groups of memory cells;
determining which of the respective groups of memory ceils is to receive data in association with a program operation based on the maintained process cycle counts until a threshold process cycle count is reached or exceeded: and determining which of the respecii ve groups of memory cells is to recei ve data in association with a program operation based on determined error rates corresponding to the respective groups of memory cells subsequent to the threshold process cycle count being reached or exceeded.
1.2. The method of any one of claims 8- 10, wherein determining the number of error rates each corresponding to a respective one of a number of groups of
memory cells includes determining the number of error .rates only at particular threshold process cycle counts.
1.3, A method for operating a memory, comprising:
performing wear leveling on the memory based on a number of process cycle counts each corresponding to a respective one of a. umber of groups of memory cells;
determining a number of error rates each corresponding to a respective one of the number of groups of memory cells;
adjusting the number of process cycle counts corresponding to the respective groups based, at least partially, on the determined error .rates corresponding to the respective groups.
.1 . The method- of claim. .13 , including determining t he number of error rates by using a controller con figured to control determining the number of error rates via a background sampling method.
1.5. The method of claim 13, wherein performing wear leveling includes selecting a particular group of the number of groups of memory cells to receive data in association with a programming operation, the particular grou being a group having a lowermost process cycle count corresponding thereto.
16. The method of claim i 3, wherein adjusting the number of process cycle counts includes adjusting at least one of the number of process cycle counts from an actual amount of process cycles performed on a. respecti ve one of the number of group to an amount of process cycles other than the actual amount of process cycles.
.
17. The meihod of claim 16, wherein adjusting the at least one of the number of process cycle counts from the actual amount of process cycles performed on the respective one of the number of groups to the amount of process cycles other than, the actual amount of process cycles includes decreasing the at least one of the number of process cycle counts responsi ve to the determi ned error ra te corresponding to the respective one of the number of groups.
18. Ilie .method of claim 16, wherein adjusting the at least one of the number of process cycle counts from the actual amount of process cycles performed on the respective one of the number of groups to the amouru of process cycles other than the actual amount of process cy cles includes increasing the at least one of the number of process cycle counts responsive to the determined error rate corresponding to the respective one of the number of groups.
19. An apparatus, comprising;
a memory comprising a number of groups of memory ceils; and a controller coupled to the memory and configured to control:
performing wear level ing on the memory based on a number of process cycle counts each corresponding to a respective one of the number of groups of memory ceils; and
adjusting the process cycle count corresponding to a selected group of the number of groups based, at least partially, on a determined error rate corresponding to the selected group.
20. 'The apparatus of claim 19, wherein the number of groups of memory cells are a number of blocks of memory ceils configured to be erased together in association with an erase operation.
21. The apparatus of claim 19, wherein the number of groups of memor cells are a number of pages of memory ceils configured to be programmed together in association with a programming operation,
22. The apparatus of any one of claims 19-21, wherein the controller is configured t control:
maintaining process cycle counts corresponding to each of the respective groups of memory cells;
determining which of the respective groups of memory cells is to .receive data in association with a program operation based on the maintained process cycle counts until a threshold process cycle count is reached or exceeded; and
determining which of the respective groups of memory cells is to recei ve data in association with & program operation baaed on determined error rates corresponding to the respective- groups of memory cells subsequent to the threshold process cycle count being reached or exceeded.
23. The apparatus of any one of claims 1.9-21, wherein the controller is configured to control determining error rates corresponding to the respecti ve number of groups via a sampling method, that is performed while data is being programmed to the memory in association with a program operation and/or while data is being read from the memory in association with a read operation.
24. An apparatus, comprising:
a memory comprising a number of groups of memory ceils; and
controller coupled to the memory and configured to control;
determmi ig that a process cycle count corresponding to a respective one of the number of groups has reached or exceeded a threshold process cycle count;
determining an error rate corresponding to the respective one of the number of groups; and
retiring the respective one of the number of groups of memory cells responsive to the determined error rate reaching or exceeding a threshold error rate,
25. The apparatus of claim 24, wherein the controller is configured to control:
tracking a total amount of data programmed to the memory; and performing wear leveling on the memory based on error rates corresponding to the respective number of groups only if the total amount of data programmed to the memory reaches or exceeds a. threshold total amount of data,
26. The apparatus of claim 25, wherein the controller is configured to control:
performing wear leveling on the memory based on process cycle counts corresponding to the respective number of groups until the total amount of data programmed to the memor reaches or exceeds the threshold total amount of data.
27. The apparatus of claim 26, wherein the threshold total amoun t of data corresponds to a lifetime specif cation of the memory,
28. The apparatus of any one of claims 24-27, wherein the process cycle count corresponds to an amount of program/erase (P/E) cycles performed on the respective one of the number of groups of memory cells.
29. The apparatus of any one of claims 24-27, wherein the controller is configured to control determining the error rate corresponding to the respective one of the number of groups responsive to the respective one of the number of groups reaching or exceeding the threshold process cycle count.
30. A method for operating a memory, comprising:
selecting a group of memory ceils to program based on process cycle counts if a threshold amount of total data programmed to the memory has not been reached or exceeded; and
if the threshold amount of total data programmed to the memory has bee reached or exceeded, selecting a group of memory cells to be programmed based on error rates.
31. A method for operating a me ory'', comprising:
basing wear leveling on process cycle counts unti l a threshold process cycle count is reached or exceeded; and
basing wear leveling on error rates after the threshold process cycle count is reached or exceeded.
32. A method for operating a memory, comprising:
determining that a process cycle count corresponding to a respecti ve one of a number of groups of memory cells has reached or exceeded a threshold process cycle count;
determining an error rate corresponding t the respective one of the number of groups; and
retiring the respective one of the number of groups of memory cel ls responsive to the determined error rate reaching or exceedin a threshold error rate.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US13/531,139 US20130346812A1 (en) | 2012-06-22 | 2012-06-22 | Wear leveling memory using error rate |
| US13/531,139 | 2012-06-22 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2013192552A1 true WO2013192552A1 (en) | 2013-12-27 |
Family
ID=49769440
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/US2013/047115 Ceased WO2013192552A1 (en) | 2012-06-22 | 2013-06-21 | Wear leveling memory using error rate |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US20130346812A1 (en) |
| TW (1) | TW201413736A (en) |
| WO (1) | WO2013192552A1 (en) |
Families Citing this family (23)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8832506B2 (en) * | 2012-01-20 | 2014-09-09 | International Business Machines Corporation | Bit error rate based wear leveling for solid state drive memory |
| US20130262942A1 (en) * | 2012-03-27 | 2013-10-03 | Yung-Chiang Chu | Flash memory lifetime evaluation method |
| US9147486B2 (en) | 2013-09-05 | 2015-09-29 | Micron Technology, Inc. | Continuous adjusting of sensing voltages |
| KR102085127B1 (en) * | 2013-11-13 | 2020-04-14 | 삼성전자주식회사 | the method of memory controller operation and the non volatile memory device under the control of the memory controller |
| US9411669B2 (en) * | 2014-09-11 | 2016-08-09 | Sandisk Technologies Llc | Selective sampling of data stored in nonvolatile memory |
| US10127157B2 (en) * | 2014-10-06 | 2018-11-13 | SK Hynix Inc. | Sizing a cache while taking into account a total bytes written requirement |
| US9336136B2 (en) | 2014-10-08 | 2016-05-10 | HGST Netherlands B.V. | Apparatus, systems, and methods for providing wear leveling in solid state devices |
| US10078546B2 (en) * | 2014-10-24 | 2018-09-18 | Micron Technology, Inc. | Temperature related error management |
| CN104615503B (en) * | 2015-01-14 | 2018-10-30 | 广东华晟数据固态存储有限公司 | Reduce the flash memory error-detecting method and device influenced on memory interface performance |
| KR102456104B1 (en) | 2015-08-24 | 2022-10-19 | 삼성전자주식회사 | Method for operating storage device changing operation condition depending on data reliability |
| KR102393323B1 (en) | 2015-08-24 | 2022-05-03 | 삼성전자주식회사 | Method for operating storage device determining wordlines for writing user data depending on reuse period |
| KR102333746B1 (en) | 2015-09-02 | 2021-12-01 | 삼성전자주식회사 | Method for operating storage device managing wear level depending on reuse period |
| US11385797B2 (en) | 2015-10-05 | 2022-07-12 | Micron Technology, Inc. | Solid state storage device with variable logical capacity based on memory lifecycle |
| US10055159B2 (en) * | 2016-06-20 | 2018-08-21 | Samsung Electronics Co., Ltd. | Morphic storage device |
| US9837153B1 (en) | 2017-03-24 | 2017-12-05 | Western Digital Technologies, Inc. | Selecting reversible resistance memory cells based on initial resistance switching |
| US10325668B2 (en) * | 2017-04-05 | 2019-06-18 | Micron Technology, Inc. | Operation of mixed mode blocks |
| US10976936B2 (en) | 2017-08-23 | 2021-04-13 | Micron Technology, Inc. | Sensing operations in memory |
| KR102483922B1 (en) * | 2018-08-07 | 2023-01-02 | 삼성전자 주식회사 | Methods and systems for detecting degradation of resistive memory device |
| US11768617B2 (en) * | 2021-07-02 | 2023-09-26 | SK Hynix Inc. | Managing method for flash storage and storage system |
| US12002531B2 (en) | 2021-08-13 | 2024-06-04 | Micron Technology, Inc. | Techniques for retiring blocks of a memory system |
| KR102835604B1 (en) * | 2022-02-15 | 2025-07-17 | 경상국립대학교 산학협력단 | Electronic device for storing data and data storage method using the same |
| US20250291519A1 (en) * | 2024-03-13 | 2025-09-18 | Samsung Electronics Co., Ltd. | Ssd virtualization with thin provisioning |
| US20260064587A1 (en) * | 2024-08-27 | 2026-03-05 | Microchip Technology Incorporated | System and method for dynamic wear leveling |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20090132878A (en) * | 2008-06-23 | 2009-12-31 | 삼성전자주식회사 | Flash memory device and system containing it |
| US20100262766A1 (en) * | 2009-04-08 | 2010-10-14 | Google Inc. | Garbage collection for failure prediction and repartitioning |
| US20100262795A1 (en) * | 2009-04-08 | 2010-10-14 | Steven Robert Hetzler | System, method, and computer program product for analyzing monitor data information from a plurality of memory devices having finite endurance and/or retention |
| US20110173484A1 (en) * | 2010-01-08 | 2011-07-14 | Ocz Technology Group, Inc. | Solid-state mass storage device and method for failure anticipation |
| US20120106259A1 (en) * | 2010-10-29 | 2012-05-03 | Taiwan Semiconductor Manufacturing Company, Ltd. | Adaptive Control of Programming Currents for Memory Cells |
Family Cites Families (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20100332894A1 (en) * | 2009-06-30 | 2010-12-30 | Stephen Bowers | Bit error threshold and remapping a memory device |
| US8479080B1 (en) * | 2009-07-12 | 2013-07-02 | Apple Inc. | Adaptive over-provisioning in memory systems |
| US8806106B2 (en) * | 2010-11-12 | 2014-08-12 | Seagate Technology Llc | Estimating wear of non-volatile, solid state memory |
| US8745318B2 (en) * | 2011-06-28 | 2014-06-03 | Seagate Technology Llc | Parameter tracking for memory devices |
| US8832506B2 (en) * | 2012-01-20 | 2014-09-09 | International Business Machines Corporation | Bit error rate based wear leveling for solid state drive memory |
| US9058281B2 (en) * | 2012-06-01 | 2015-06-16 | Seagate Technology Llc | Allocating memory usage based on quality metrics |
| US9846641B2 (en) * | 2012-06-18 | 2017-12-19 | International Business Machines Corporation | Variability aware wear leveling |
-
2012
- 2012-06-22 US US13/531,139 patent/US20130346812A1/en not_active Abandoned
-
2013
- 2013-06-21 WO PCT/US2013/047115 patent/WO2013192552A1/en not_active Ceased
- 2013-06-24 TW TW102122430A patent/TW201413736A/en unknown
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20090132878A (en) * | 2008-06-23 | 2009-12-31 | 삼성전자주식회사 | Flash memory device and system containing it |
| US20100262766A1 (en) * | 2009-04-08 | 2010-10-14 | Google Inc. | Garbage collection for failure prediction and repartitioning |
| US20100262795A1 (en) * | 2009-04-08 | 2010-10-14 | Steven Robert Hetzler | System, method, and computer program product for analyzing monitor data information from a plurality of memory devices having finite endurance and/or retention |
| US20110173484A1 (en) * | 2010-01-08 | 2011-07-14 | Ocz Technology Group, Inc. | Solid-state mass storage device and method for failure anticipation |
| US20120106259A1 (en) * | 2010-10-29 | 2012-05-03 | Taiwan Semiconductor Manufacturing Company, Ltd. | Adaptive Control of Programming Currents for Memory Cells |
Also Published As
| Publication number | Publication date |
|---|---|
| TW201413736A (en) | 2014-04-01 |
| US20130346812A1 (en) | 2013-12-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| WO2013192552A1 (en) | Wear leveling memory using error rate | |
| CN112447245B (en) | Hybrid read voltage calibration in nonvolatile random access memory | |
| CN114556303B (en) | Update the corrected read voltage offset in the non-volatile random access memory | |
| CN114631147B (en) | Calculate the corrected read voltage offset in non-volatile random access memory | |
| US10621081B2 (en) | Storage device and global garbage collection method of data storage system including the same | |
| US9898215B2 (en) | Efficient management of page retirement in non-volatile memory utilizing page retirement classes | |
| US10866763B2 (en) | Dynamic read based on read statistics | |
| US11726869B2 (en) | Performing error control operation on memory component for garbage collection | |
| WO2019157369A1 (en) | Providing recovered data to a new memory cell at a memory sub-system based on an unsuccessful error correction operation | |
| US20130304970A1 (en) | Systems and methods for providing high performance redundant array of independent disks in a solid-state device | |
| CN110998544A (en) | Perform data recovery operations in memory | |
| US11599416B1 (en) | Memory sub-system using partial superblocks | |
| US9417809B1 (en) | Efficient management of page retirement in non-volatile memory utilizing page retirement classes | |
| US20250124987A1 (en) | Read level compensation for partially programmed blocks of memory devices | |
| US20240192878A1 (en) | Media management | |
| WO2021011416A1 (en) | Read voltage management based on write-to-read time difference | |
| US10783024B2 (en) | Reducing block calibration overhead using read error triage | |
| US20240419543A1 (en) | Proximity based parity data management | |
| CN112328508A (en) | Layer interleaving in multi-layer memory | |
| US12393347B2 (en) | Wear leveling repair in a memory device | |
| US20250342083A1 (en) | Adaptive error recovery when program status failure occurs in a memory device | |
| US20230015066A1 (en) | Memory sub-system for monitoring mixed mode blocks |
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: 13807112 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: 13807112 Country of ref document: EP Kind code of ref document: A1 |