Various embodiments of the present disclosure are generally directed to a method and apparatus for managing data in a memory, such as but not limited to a flash memory.
In accordance with some embodiments, a memory is provided with a plurality of addressable data storage blocks which are arranged into a first set of garbage collection units (GCUs). The blocks are rearranged into a different, second set of GCUs responsive to parametric performance of the blocks.
These and other features which may characterize various embodiments can be understood in view of the following detailed discussion and the accompanying drawings.
The present disclosure generally relates to the management of data in a memory, such as but not limited to a flash memory of a data storage device.
A wide variety of data storage memories are known in the art. Some memories take the form of solid-state memory cells arrayed on a semiconductor substrate. Solid-state memory cells may store data in the form of accumulated electrical charge, selectively oriented magnetic domains, phase change material states, ion migration, and so on. Exemplary solid-state memory cell constructions include, but are not limited to, static random access memory (SRAM), dynamic random access memory (DRAM), non-volatile random access memory (NVRAM), electrically erasable programmable read only memory (EEPROM), flash memory, spin-torque transfer random access memory (STRAM), magnetic random access memory (MRAM) and resistive random access memory (RRAM).
These and other types of memory cells may be programmed to a selected state during a write operation, and the programmed state may be subsequently read during a read operation. A read operation may include the application of a read voltage threshold to the associated memory cell in order to sense the programmed state. An erasure operation can be applied to return a set of memory cells to an initial default programmed state.
Blocks of memory cells may be grouped together into garbage collection units (GCUs), which are allocated and erased as a unit. In some cases, GCUs may be formed by grouping together one erasure block from each plane and die in a memory device. This can enhance operational efficiency since generally only one operation (e.g., an erasure) can be carried out on a per plane and per die basis.
It has been found that erasure blocks in the same GCU may exhibit different parametric performance characteristics. Such variations can adversely impact device performance, since the time or resources necessary to perform a given action, such as a read operation upon a selected GCU, may be limited by the worst performing block in that GCU (e.g., the slowest or otherwise hardest to read block, etc).
Accordingly, various embodiments of the present disclosure are generally directed to improving data management in a memory, such as but not limited to a flash memory array. As explained below, erasure blocks of memory cells in a data storage device are combined to form a first grouping of GCUs. Data write, read and/or erasure operations are carried out to the various GCUs over an extended interval during normal operation of the device.
At the conclusion of the operational interval, the parametric performance of the GCUs is evaluated on a block-by-block basis. Based on the results of the evaluation, the blocks are regrouped into different combinations to form a second grouping of GCUs. The reformatted GCUs have blocks with common parametric performance measurements. In this way, access operations upon the reformatted GCUs encounter reduced variations in performance from block to block.
In further embodiments, the reformatted GCUs are used for different tasks suited to their respective performance levels. Blocks exhibiting relatively faster response performance can be grouped into GCUs dedicated to servicing more frequently accessed data. Blocks exhibiting lower error rates or other degradation effects (e.g., read disturbances, etc.) can be used to store higher priority data, and so on.
In still further embodiments, a currently allocated GCU can be augmented on-the-fly by adding additional blocks to the GCU having similar performance characteristics as the existing blocks in the GCU. This can extend the useful life of the GCU by increasing the total data storage capacity of the GCU and delaying the need to perform a garbage collection operation to erase and return the GCU to service.
These and other features of various embodiments can be understood beginning with a review of
The controller 102 provides top level control for the device, and may be realized as a hardware based or programmable processor. The memory module 104 provides a main data store for the device 100, and may be a solid-state memory array, disc based memory, etc. While not limiting, for purposes of providing a concrete example the device 100 will be contemplated as a non-volatile data storage device that utilizes flash memory in the memory 104 to provide a main memory for a host device (not shown).
The memory 104 takes the form of one or more dies 108. Each die may be realized as an encapsulated integrated circuit (IC) having at least one physical, self-contained semiconductor wafer. The dies 108 may be affixed to a printed circuit board (PCB) to provide the requisite interconnections. Each die incorporates a number of arrays 110, which may be realized as a physical layout of the cells 106 arranged into rows and columns, along with the associated driver, decoder and sense circuitry to carry out access operations (e.g., read/write/erase) upon the arrayed cells.
The arrays 110 are divided into planes 112 which are configured such that a given access operation can be carried out concurrently to the cells in each plane. For example, an array 110 with eight planes 112 can support eight concurrent read operations, one to each plane.
The cells 106 in each plane 112 are arranged into individual erasure blocks 114, which represent the smallest number of memory cells that can be erased at a given time. Each erasure block 114 may in turn be formed from a number of pages (rows) 116 of memory cells. Generally, an entire page worth of data is written or read at a time.
Data are stored to the cell 106 in relation to the amount of accumulated charge on the floating gate 126. A write operation biases the respective doped regions 118 and the control gate 130 to migrate charge from a channel region (CH) across the lower barrier 124 to the floating gate 126. The presence of the accumulated charge on the floating gate tends to place the channel in a non-conductive state from source to drain. Data are stored in relation to the amount of accumulated charge.
A greater amount of accumulated charge will generally require a larger control gate voltage to render the cell conductive from source to drain. Hence, a read operation applies a sequence of voltages to the control gate 130 to identify a voltage magnitude required to place the channel in a conductive state, and the programmed state is determined in relation to the read voltage magnitude. An erasure operation reverses the polarities of the source and drain regions 118 and the control gate 130 to migrate the accumulated charge from the floating gate 126 back to the channel.
The cell 106 can be configured as a single-level cell (SLC) or a multi-level cell (MLC). An SLC stores a single bit; a normal convention is to assign the logical bit value of 1 to an erased cell (substantially no accumulated charge) and a logical bit value of 0 to a programmed cell (presence of accumulated charge). An MLC stores multiple bits, such as two bits. Generally, n bits can be stored using 2n storage states.
An exemplary format for a selected erasure block 114 is depicted in
The GCU 140 is formed of eight (8) erasure blocks 114, and a second GCU 142 is formed of four (4) erasure blocks 114. The GCUs in a given memory may all be the same size, or may have different sizes. All of the erasure blocks 114 may be initially grouped into GCUs, or the GCUs may be formed and allocated (placed into service to store data) as needed during the operational life of the device.
A garbage collection operation generally entails identifying currently valid data within the associated GCU, migrating the valid data to another location (e.g., a different GCU), performing an erasure on each of the erasure blocks in the GCU, and then placing the erased GCU into a reallocation pool pending subsequent allocation.
In accordance with the present disclosure, GCUs such as 140 and 142 are dynamically formatted over the operational life of the device 100 by grouping together erasure blocks 114 exhibiting similar parametric performance. The types of parametric performance metrics utilized in GCU formatting operations can take a variety of forms. One set of performance metrics relates to charge distributions of the various memory cells in the erasure blocks.
At this point it will be noted that the scheme in
The charge distribution ranges in
Other variations in the charge distributions can arise due to operational factors; for example, a phenomenon referred to as read disturbance generally operates to modify the amount of total accumulated charge on a cell due to repeated read operations to the cell, or to adjacent cells. Read disturbance tends to induce drift in the charge distribution, either in terms of more accumulated charge (shift to the left in
The construction of the cells can also impart variation to a charge distribution since manufacturing variations can affect the extent to which charge is transferred across the lower barrier layer. Wear can also contribute to charge distribution variation. The greater the number of write/erasure cycles on a particular cell, generally the less capable the cell may become in terms of both accepting charge during a programming operation and returning charge to the channel during an erasure operation.
It follows that the location and range (e.g., width) of a respective charge distribution can be used to assess erasure block performance.
Distribution 160 is reasonably well behaved and generally has the same range and centered location as the distribution 152 in
The ranges and locations of the respective distributions 160, 162 and 164 can be evaluated by applying a succession of read voltages to the cells in the distribution.
A voltage source 176 applies a suitable voltage VS to the associated bit line 136 coupled to the cell 106. A sense amplifier 178 determines whether the applied voltage is sufficient to place the cell 106 into a conductive state through a comparison with a reference voltage VR from a reference voltage source 180. A resulting bit value is output to an output buffer 182 (e.g., a 0 or 1) responsive to the comparison.
The range and location of the charge threshold population for a set of cells can be determined by using the circuit of
For example, distribution 160 in
The voltages Vb and Vb− can be similarly applied to identify the location of the upper boundary of the distribution, since the voltage Vb will be sufficient to render all of the cells in the population in a conductive state and the voltage Vb− only able to render those cells conductive that fall to the right of voltage line Vb−. Additional read voltage thresholds can be applied as desired, including read voltages with greater resolution (e.g., +/−5%, etc.) as well as read voltages in the medial range between Va+ and Vb−.
This process can be repeated to provide an overall determination of the charge distribution characteristics of an erasure block, by evaluating each of the cells in the erasure block in turn. In some embodiments, a statistically significant sample of memory cells in the erasure block can be evaluated to make the determination. The evaluations can be limited to those cells having a specific programmed value (e.g., 10) or can be extended to cells having all of the programmed values (e.g., 11, 10, 00 and 11).
The evaluated erasure blocks can thereafter be sorted into different categories based on the types of exhibited parametric performance. The performance can include assessment of the location of the distribution such as “centered” versus “shifted low” or “shifted high,” and the width of the distribution such as as “narrow,” “normal” or “wide.” Other characterizations and classifications can be used.
Other parametric performance characterizations can be applied, such as but not limited to data aging, number of reads, number of write/erasure cycles, temperature (at the time of programming and/or ambient localized temperature during operation), observed error rates during data readback operations, whether the programming effort is relatively easy or hard, average elapsed read response time, average elapsed erasure response time, etc.
Parameters may be selected based on observed variation during the operation of a particular memory, so that a large number of available parameters may be initially identified, but only those parameters observed to exhibit sufficient variation are selected for use in the characterization process. Empirical analysis may be used to identify particular parameters that are correlated to different performance characteristics; for example, it may be determined that read error rates are a good indicator of cell reliability and data retention capabilities, and therefore read error rates may be selected as one of the parameters for use in evaluating the various blocks.
In some embodiments, the engine 192 establishes an initial grouping of GCUs in the memory 104, and places the initial GCUs into a reallocation pool 194 for use by the device.
The engine 192 thereafter initiates and accumulates parametric performance data over time, and then, as appropriate, reformats the GCUs into new groupings of erasure blocks with matched parametric performance. It will be appreciated that the reallocation pool 194 may take the form of a table or other data structure that identifies the physical addresses of the various erasure blocks and the associated GCUs, as well as other control data to enable the system to utilize the various GCUs as described herein.
The engine 192 receives inputs from a number of operational modules, such as a read/write/erasure (R/W/E) channel 196, a temperature sensor 198, a counter 200, an error correction code (ECC) circuit 202, a threshold adjustment module 204 and a bloom filter 206. The bloom filter can be used to achieve a running assessment of erasure block performance quality using a weighted analysis such as:
BQ(N)=K1(Mean)+K2(Range)+K3(Temp)+K4(Age)+K5(ECC) (1)
where “BQ(N)” is the erasure block quality measurement value for erasure block N, “Mean” is the average of a charge distribution population for cells in the erasure block, “Range” is the width of the distribution, “Temp” is a temperature value associated with the erasure block, “Age” is an aging value (e.g., number of write/erasure cycles, read operations, etc.), “ECC” is a measure of error rate performance for the erasure block during read operations, and K1-K5 are constants. Other measures can be used, including different combinations and weighting of factors, the use of higher order relations, etc. Empirical analyses can be carried out to select an appropriate quality measure model for a given application.
After an extended operational time interval, the engine 192 measures the parametric performance of the erasure blocks, and uses the measurement results to reformat the GCU 210. As shown in
The GCU reformatting operation can be carried out in a variety of ways. In some embodiments, all of the erasure blocks in the system are evaluated at the same time and new GCU groupings are established across the board. In other embodiments, each time a garbage collection operation takes place to erase an existing GCU and place it into the reallocation pool 194, a search is performed of the various erasure blocks for the existing GCUs in the pool to accumulate erasure blocks with matched performance. An advantage of this latter approach is that the GCU reformatting operation is carried out upon erasure blocks that do not currently store user data, so the impact on existing device operation is reduced.
In further embodiments, a list of unassigned erasure blocks 114 may be maintained in the reallocation pool 194 and a GCU is formed responsive to a host request, such as the presentation of data for storage to the memory 104. Depending on an indicated characteristic of the data (e.g., high priority data, data within a certain predetermined logical block address range, etc.), appropriate erasure blocks are selected for incorporation into the newly formed, allocated GCU. As before, the selected erasure blocks will have similar parametric performance characteristics suitable for the type of input data.
It is contemplated that the erasure blocks that are migrated to a new GCU will be from different planes, arrays and/or dies to improve operational efficiency by permitting the use of concurrent operations thereon. However, such is not necessarily required, since the operational improvements gained by using matched erasure blocks may offset the inability to carry out a maximum number of concurrent operations on those blocks. The scheme readily permits the use of arbitrarily defined sizes of GCUs, so that some GCUs may have a first number of erasure blocks (e.g., 8, etc.) and other GCUs may have a second number of erasure blocks, including non-standard numbers (e.g., 13, etc).
The engine 192 can further be configured to add one or more erasure blocks 114 to a currently allocated GCU. As noted above, the reformatted GCU 210 in
At step 224, normal operation commences during which the various GCUs are allocated for service, data are written thereto, data are read therefrom, and, depending on the application, one or more garbage collection operations are performed to erase and return at least some of the GCUs to service.
The time duration of step 224 can depend on a variety of factors, including total elapsed time, total I/O workload of the device, etc., provided that sufficient operational activity has taken place to allow evaluation of the parametric performance of a sufficient number of the blocks, as indicated at step 226. The parametric evaluation can take a number of different forms, including but not limited to those discussed above in
Once the evaluation has concluded, the erasure blocks are reformatted to form a new, second set (grouping) of GCUs in response to the analyzed parameters, as shown by step 228. It is contemplated, albeit not necessarily required, that evaluated GCUs will tend to lose at least one erasure block in favor of at least one new, replacement erasure block.
Depending on the stability of the system, it is possible that a relatively large amount of GCU reformatting will take place during the early stages of device operation, followed by a relatively longer period of time during which fewer GCU reformatting operations take place over the majority of the lifetime of the device.
Toward the end of the device operational life as erasure blocks begin to show wear, the device may increase the amount of GCU reformatting to identify and retain those erasure blocks still exhibiting good parametric performance. The device 100 can be configured to maintain performance statistics on the various erasure blocks and enact portions of the routine (e.g., steps 2)0, 212) at suitable times when significant changes in performance are detected.
The first set of GCUs has a total number of M GCUs, the second set of GCUs has N GCUs, and the third set of GCUs has P GCUs. The respective total numbers M, N and P can be the same number, or can be different numbers. The respective sizes of the GCUs can also be the same (e.g., each GCU constitutes 8 erasure blocks, etc.), or different.
As shown by
A tracking scheme can be used to track the various GCUs and associated erasure blocks. Generally, it may be beneficial to maintain the same GCU number for a given GCU even if, over time, some or even all of the erasure blocks are ultimately replaced. To this end,
The GCU number field 230 provides an assigned GCU number for the associated GCU, such as GCUs 1-M in
The blocks field 232 can be used to identify the erasure blocks in the associated GCU. The format can vary depending on the requirements of a given application. In some embodiments, the block field data may provide a multi-bit address representation to denote die, plane, array, block, etc. In other embodiments, the blocks may be assigned logical addresses (e.g., blocks 1-R) and a conversion table can be used to determine the physical addresses of the assigned blocks.
The parametric data field 234 can store the parameters around which the GCU is formed (e.g., good error rate performance, etc.). Additionally or alternatively, the actual measured parameter data can be stored in the field 234. The history data field 236 can store a history of the blocks in the GCU, including which blocks have been added (and when), as well as which blocks (if any) have been jettisoned from the initial grouping. In this way, the entire history of a given block (and a given GCU) can be reconstructed for data analysis purposes.
It will now be appreciated that the various embodiments disclosed herein can provide benefits over existing GCU allocation methodologies. A dynamic GCU formation mechanism as disclosed herein can identify and group erasure blocks, or other blocks of memory, to match observed parametric performance. While a flash memory array has been provided as an exemplary environment, such is merely for illustration purposes and is not limiting. The techniques disclosed herein are suitable for use in any number of different types of memories, including volatile and non-volatile memories.
It is to be understood that even though numerous characteristics and advantages of various embodiments of the present disclosure have been set forth in the foregoing description, together with details of the structure and function of various embodiments, this detailed description is illustrative only, and changes may be made in detail, especially in matters of structure and arrangements of parts within the principles of the present disclosure to the full extent indicated by the broad general meaning of the terms in which the appended claims are expressed.