|Publication number||US6914853 B2|
|Application number||US 10/712,432|
|Publication date||Jul 5, 2005|
|Filing date||Nov 12, 2003|
|Priority date||Sep 27, 2001|
|Also published as||US20030058681, US20040095840|
|Publication number||10712432, 712432, US 6914853 B2, US 6914853B2, US-B2-6914853, US6914853 B2, US6914853B2|
|Inventors||Richard L. Coulson|
|Original Assignee||Intel Corporation|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (7), Referenced by (50), Classifications (8), Legal Events (3)|
|External Links: USPTO, USPTO Assignment, Espacenet|
This application is a continuation of prior U.S. Ser. No. 09/966,499 filed Sep. 27, 2001, now abandoned.
1. Field of the Invention
This disclosure relates to destructive readout memories, more particularly to mechanisms to track and level usage in these memories.
2. Background of the Invention
Polymer ferroelectric memories generally comprise a polymer material having ferroelectric properties arranged adjacent to some type of control structures. The control structures may be as simple as metal electrode lines. The control structures manipulate the ferroelectric state of the polymer material. In memory applications, the ferroelectric state having one characteristic is determined to be a data ‘one,’ and a different characteristic is determined to be a data ‘zero.’
These memories are relatively inexpensive on a cost/bit basis, and reasonable simple to manufacture. However, the ferroelectric properties of the polymer material degrade after extensive use. It would be helpful to track access of the memory array to manage usage and wear out of blocks within the array.
It would also be useful to perform the tracking with minimal impact on processing efficiency, as well as requiring a minimal amount of storage.
The invention may be best understood by reading the disclosure with reference to the drawings, wherein:
Memory devices, such as disks or disk caches, are typically laid out in blocks of 512 bytes. Each block of data has metadata associated with it, which may include an error correction code (ECC) that allows checking and correction of errors in that data block. Typically, the ECC is a pre-existing data set, even if the memory has never been accessed, even if the pre-existing data is all zeros. If the memory block is being used as cache memory, there will often be flags and other information may also reside in the metadata section allowing the system to make cache policy decisions. This data may include usage information for replacement of data, etc. This section may also include a wear out counter that tracks the usage history of the block of memory.
The memory controller may not be a separately dedicated controller, but the system processor or another system controller that also handles memory control. However, for purposes of this discussion, this will be referred to as a memory controller, even though it may have many other functions. Similarly, while the memory controller is shown as residing adjacent the blocks of memory in the embodiment of
In one embodiment the memory blocks and memory chip are comprised of polymer ferroelectric memory. This type of memory, like other types of memory cells that have a finite lifetime can also degrade over time or ‘wear out.’ The counter used to track the number of times a particular block has been accessed is referred to here as a ‘wear out counter.’ A wear out counter may be used for any block or other division of a memory that can degrade over time and/or with extensive use, such as repeated access.
A flowchart of one embodiment of a method for tracking memory access using a wear out counter is shown in FIG. 2. The block of memory participates in a memory access cycle at 20. The memory access cycle may be a read cycle or a write cycle as will be discussed with reference to
At 26, the counter is checked against a predetermined threshold of a number of access cycles. The predetermined threshold is a number set depending upon the characteristics of the memory. A memory block that has participated in a memory access cycle more times than that set by the threshold may be in risk of wearing out or failing. At this point the memory controller or software will “remap” this sector of memory and transfer its contents to a new memory location that has not exceeded its wearout threshold. If the counter has not exceeded the threshold at 26, the memory block can continue to participate in memory access cycles with no rectification.
In one embodiment, the memory access cycle may be a read cycle. This is shown in more detail in FIG. 3. The memory access cycle of 20 in
In this example, the sector will be a block of data, as shown in FIG. 1. Typically, this block is 512 Kbytes, but no limitation on the size of the blocks is intended by this example. For that block, the ECC located in the metadata section is used to correct the data, as discussed above. No correction may be necessary, but the correction is performed as needed.
As mentioned previously, the memory block may comprise at least a portion of a polymer ferroelectric memory array. Polymer ferroelectric memories generally comprise a layer of polymer material having ferroelectric properties sandwiched between two layers of electrode lines, where the electrode lines may be arranged as word and bit lines. Polymer ferroelectric memories do not require any transistors for each cell, relying instead upon alterations of the ferroelectric state of a local area of the polymer material to store ones and zeros. One state is determined to be a one, and the opposite polarization state of the region of the polymer between two particular electrodes is determined to be a zero.
These memories have several advantages over conventional memory products available currently. With the lack of transistors, they are relatively simple to manufacture and therefore can be manufactured inexpensively and with higher yields, as there are no circuit components for each cell that may fail. However, when the cells of this type of memory array are accessed for a read, they undergo a ‘destructive’ read. Generally, the process of sensing the polarization state of the cell returns the polarization state of the cell to that state associated with a zero. Therefore, during a read cycle such as that shown in
In the example of
In a write process, an example of which is shown in
Referring back to
As discussed above, the incrementing and writing of the counter does not contribute to any significant overhead with regard to the time and processing overhead of the memory. It is also helpful if the counter does not take up much space in the metadata section of the memory block as well. However, the number of accesses after which the memory block may degrade is on the order of 1012. This is referred to as the usage threshold. In order to count that many cycles, the counter would require 40 bits. If the memory chip has 1 Gigabyte of data on it, that would be 2 million blocks, each requiring 40 bits of a wear out counter, or 80 Megabits of data just for the counters.
As an example, assume the usage threshold is 1012 and the system designer desires a wear out counter using only 4 bits. A 4-bit counter can count up to 16. Therefore, the scaling threshold is the highest number counted by the number of bits divided by the usage level being tracked, in this case 16/1012, or 1.6×10−11. This scaling threshold is used as will be discussed with reference to FIG. 5.
If the random number has a predetermined relationship with the scaling threshold, the wear out counter is incremented at 52. Typically this predetermined relationship will be if the random number is less than the scaling threshold. If the random number is not greater than the scaling threshold, the current value of the wear out counter is written back during one of the memory access cycles as discussed in
Several different factors can affect this process, depending upon the specific application. The counter cannot be too small for a particular application, or probability of it prematurely indicating wear out becomes too high. The number of bits allocated for the random number generation must be appropriate for the threshold being used. Other types of techniques can be used to increment the counter, other than that shown in FIG. 5.
Referring back to
However, tracking the individual block usage has other advantages. Unlike the example above where the wear out counter for a block is incremented in a statistical fashion, rather than for a particular block, tracking the individual blocks allows usage to be leveled across the device. For example, for some reason a particular set of blocks or even an individual block may be accessed more frequently than others. Tracking actual individual usage allows the system to determine which blocks have not been used very much and direct memory traffic to them to level out the usage across the device. The nature and details of these types of processes are beyond the scope of this disclosure, but may be enabled by the use of a wear out counter as discussed above.
The actual implementation of a counter and the tracking may be simple enough to be implemented in hardware using counters and registers within a controller or other logic device. Alternatively, it may be implemented in processor firmware, where only the data for the wear out counter is actually stored in hardware, being stored in the metadata section of the memory block. These choices are left up to the system designer.
Thus, although there has been described to this point a particular embodiment for a method and apparatus for a memory having wear out counters to track usage, it is not intended that such specific references be considered as limitations upon the scope of this invention except in-so-far as set forth in the following claims.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US5222109||Dec 28, 1990||Jun 22, 1993||Ibm Corporation||Endurance management for solid state files|
|US5485595||Oct 4, 1993||Jan 16, 1996||Cirrus Logic, Inc.||Flash memory mass storage architecture incorporating wear leveling technique without using cam cells|
|US5530828||Jun 22, 1993||Jun 25, 1996||Hitachi, Ltd.||Semiconductor storage device including a controller for continuously writing data to and erasing data from a plurality of flash memories|
|US5963970||Dec 20, 1996||Oct 5, 1999||Intel Corporation||Method and apparatus for tracking erase cycles utilizing active and inactive wear bar blocks having first and second count fields|
|US6000006||Aug 25, 1997||Dec 7, 1999||Bit Microsystems, Inc.||Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage|
|US6055180||Jun 17, 1998||Apr 25, 2000||Thin Film Electronics Asa||Electrically addressable passive device, method for electrical addressing of the same and uses of the device and the method|
|US20030046493 *||Aug 31, 2001||Mar 6, 2003||Coulson Richard L.||Hardware updated metadata for non-volatile mass storage cache|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US7689762||May 3, 2007||Mar 30, 2010||Atmel Corporation||Storage device wear leveling|
|US7747813||Sep 7, 2007||Jun 29, 2010||Sandforce, Inc.||Multi-memory device system and method for managing a lifetime thereof|
|US7809900||Sep 7, 2007||Oct 5, 2010||Sandforce, Inc.||System, method, and computer program product for delaying an operation that reduces a lifetime of memory|
|US7849275||Nov 19, 2007||Dec 7, 2010||Sandforce, Inc.||System, method and a computer program product for writing data to different storage devices based on write frequency|
|US7903486||Nov 19, 2007||Mar 8, 2011||Sandforce, Inc.||System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory|
|US7904619||Sep 7, 2007||Mar 8, 2011||Sandforce, Inc.||System, method, and computer program product for reducing memory write operations using difference information|
|US7904672||Nov 19, 2007||Mar 8, 2011||Sandforce, Inc.||System and method for providing data redundancy after reducing memory writes|
|US7904764||Sep 7, 2007||Mar 8, 2011||Sandforce, Inc.||Memory lifetime gauging system, method and computer program product|
|US8090905||Mar 27, 2009||Jan 3, 2012||Sandforce, Inc.||System, method, and computer program product for converting logical block address de-allocation information in a first format to a second format|
|US8090980||Nov 19, 2007||Jan 3, 2012||Sandforce, Inc.||System, method, and computer program product for providing data redundancy in a plurality of storage devices|
|US8108737||Oct 5, 2009||Jan 31, 2012||Sandforce, Inc.||System, method, and computer program product for sending failure information from a serial ATA (SATA) solid state drive (SSD) to a host device|
|US8140712||Jul 17, 2009||Mar 20, 2012||Sandforce, Inc.||System, method, and computer program product for inserting a gap in information sent from a drive to a host device|
|US8230159||Mar 27, 2009||Jul 24, 2012||Lsi Corporation||System, method, and computer program product for sending logical block address de-allocation status information|
|US8230164||Jun 24, 2010||Jul 24, 2012||Lsi Corporation||Techniques for multi-memory device lifetime management|
|US8230183||Jul 26, 2010||Jul 24, 2012||Lsi Corporation||Techniques for prolonging a lifetime of memory by controlling operations that affect the lifetime of the memory|
|US8230184||Nov 30, 2010||Jul 24, 2012||Lsi Corporation||Techniques for writing data to different portions of storage devices based on write frequency|
|US8339881||Mar 7, 2011||Dec 25, 2012||Lsi Corporation||Techniques for increasing a lifetime of blocks of memory|
|US8402184||Mar 7, 2011||Mar 19, 2013||Lsi Corporation||Techniques for reducing memory write operations using coalescing memory buffers and difference information|
|US8504783||Mar 7, 2011||Aug 6, 2013||Lsi Corporation||Techniques for providing data redundancy after reducing memory writes|
|US8516166||Jul 20, 2009||Aug 20, 2013||Lsi Corporation||System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory|
|US8671259||Dec 31, 2012||Mar 11, 2014||Lsi Corporation||Storage system data hardening|
|US8782344 *||Jan 12, 2012||Jul 15, 2014||Fusion-Io, Inc.||Systems and methods for managing cache admission|
|US8819357 *||Jul 12, 2011||Aug 26, 2014||Vmware, Inc.||Method and system for ensuring cache coherence of metadata in clustered file systems|
|US8930606||Jul 2, 2010||Jan 6, 2015||Lsi Corporation||Ordering a plurality of write commands associated with a storage device|
|US9183133||Nov 28, 2007||Nov 10, 2015||Seagate Technology Llc||System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory|
|US9251052||Feb 22, 2013||Feb 2, 2016||Intelligent Intellectual Property Holdings 2 Llc||Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer|
|US20080126685 *||Sep 7, 2007||May 29, 2008||Radoslav Danilak||System, method, and computer program product for reducing memory write operations using an instruction set|
|US20080126719 *||Sep 7, 2007||May 29, 2008||Radoslav Danilak||System, method, and computer program product for delaying an operation that reduces a lifetime of memory|
|US20080126720 *||Sep 7, 2007||May 29, 2008||Radoslav Danilak||Multi-memory device system and method for managing a lifetime thereof|
|US20080126724 *||Sep 7, 2007||May 29, 2008||Radoslav Danilak||System, method, and computer program product for reducing memory write operations using difference information|
|US20080126891 *||Sep 7, 2007||May 29, 2008||Radoslav Danilak||Memory lifetime gauging system, method and computer program product|
|US20080231810 *||Mar 18, 2008||Sep 25, 2008||Catania Louis J||Method of fitting contact lenses|
|US20080276035 *||May 3, 2007||Nov 6, 2008||Atmel Corporation||Wear Leveling|
|US20090129163 *||Nov 19, 2007||May 21, 2009||Radoslav Danilak||System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory|
|US20090132778 *||Nov 19, 2007||May 21, 2009||Radoslav Danilak||System, method and a computer program product for writing data to different storage devices based on write frequency|
|US20100017566 *||Jul 15, 2008||Jan 21, 2010||Radoslav Danilak||System, method, and computer program product for interfacing computing device hardware of a computing device and an operating system utilizing a virtualization layer|
|US20100017588 *||Jul 15, 2008||Jan 21, 2010||Radoslav Danilak||System, method, and computer program product for providing an extended capability to a system|
|US20100064093 *||Sep 9, 2008||Mar 11, 2010||Radoslav Danilak||System, method, and computer program product for converting data in a binary representation to a non-power of two representation|
|US20100146236 *||Dec 8, 2008||Jun 10, 2010||Radoslav Danilak||System, method, and computer program product for rendering at least a portion of data useless in immediate response to a delete command|
|US20100250830 *||Mar 27, 2009||Sep 30, 2010||Ross John Stenfort||System, method, and computer program product for hardening data stored on a solid state disk|
|US20100251009 *||Mar 27, 2009||Sep 30, 2010||Ross John Stenfort||System, method, and computer program product for converting logical block address de-allocation information in a first format to a second format|
|US20110004710 *||Jul 6, 2009||Jan 6, 2011||Ross John Stenfort||System, method, and computer program product for interfacing one or more storage devices with a plurality of bridge chips|
|US20110004718 *||Jul 2, 2009||Jan 6, 2011||Ross John Stenfort||System, method, and computer program product for ordering a plurality of write commands associated with a storage device|
|US20110016233 *||Jul 17, 2009||Jan 20, 2011||Ross John Stenfort||System, method, and computer program product for inserting a gap in information sent from a drive to a host device|
|US20110016239 *||Jul 20, 2009||Jan 20, 2011||Ross John Stenfort||System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory|
|US20110083047 *||Oct 5, 2009||Apr 7, 2011||Ross John Stenfort||System, method, and computer program product for sending failure information from a serial ata (sata) solid state drive (ssd) to a host device|
|US20110125956 *||Jun 24, 2010||May 26, 2011||Sandforce Inc.||Techniques for multi-memory device lifetime management|
|US20110167199 *||Jul 26, 2010||Jul 7, 2011||Sandforce Inc.||Techniques for prolonging a lifetime of memory by controlling operations that affect the lifetime of the memory|
|US20130019067 *||Jul 12, 2011||Jan 17, 2013||Vmware, Inc.||Method and system for ensuring cache coherence of metadata in clustered file systems|
|US20130185508 *||Jan 12, 2012||Jul 18, 2013||Fusion-Io, Inc.||Systems and methods for managing cache admission|
|U.S. Classification||365/236, 365/145, 365/185.11, 365/185.24, 711/103|
|Dec 31, 2008||FPAY||Fee payment|
Year of fee payment: 4
|Feb 13, 2013||FPAY||Fee payment|
Year of fee payment: 8
|Feb 13, 2013||SULP||Surcharge for late payment|
Year of fee payment: 7