The present invention relates generally to a data storage system, and more particularly to a system for enhancing data reliability through error correction and adjustment.
Data storage systems can include an array of storage mechanisms, such as hard disk drives (HDD), solid state disks (SSD), optical disk drives and tape drives. Each of the storage mechanisms has some deficiency that could lead to loss of the stored data over time. In order to address these issues manufacturers have struggled to define preventive/recovery processes that, when applied to the storage mechanism, can possibly restore the lost data. The typical approach is to add layers of error correction codes (ECC) to the data. This approach can reduce the usable capacity and can be ineffective if the data errors exceed the correction capability of the error correction codes.
In applications where the preservation of the data is of the utmost importance most manufacturers suggest using a back-up strategy that keeps a reserved copy of the data in multiple devices in order to reduce the probability that the data can be lost. The manufacturers of hard disk drives and solid state disks maintain internal spare capacity in order to exchange the storage location of data that is found to have ECC correctable errors.
While hard disk drives can suffer mechanical, magnetic, and electrical failure mechanisms, solid state disks are only susceptible to electrical issues. The non-volatile media of the solid state disks can lose charge due to the age of the media or long data retention times. Each time a storage location of a solid state disk is written or read, the dielectric that surrounds the floating gate is damaged by use. As integrated circuit technology continues to shrink and crystalline layers get thinner, the solid state disks will be increasingly dependent upon data recovery processes to combat the loss of charge in the cells.
Thus, a need still remains for a data storage system with error correction mechanism in order to maintain the integrity of data stored in solid state disks. In view of the growing requirement to archive and store data, it is increasingly critical that answers be found to these problems. In view of the ever-increasing commercial competitive pressures, along with growing consumer expectations and the diminishing opportunities for meaningful product differentiation in the marketplace, it is critical that answers be found for these problems. Additionally, the need to reduce costs, improve efficiencies and performance, and meet competitive pressures adds an even greater urgency to the critical necessity for finding answers to these problems.
Solutions to these problems have been long sought but prior developments have not taught or suggested any solutions and, thus, solutions to these problems have long eluded those skilled in the art.
The present invention provides an improved error correction method and system of a data storage system. In one implementation, improving error correction can include monitoring a data interface bus of a non-volatile memory controller for determining a balance of the data. The balance of the data can be monitored by activating a zero bit counter for detecting a ratio of 1's to 0's on the data interface bus. Since the data was written with a balance of the number of 1's and 0's, any imbalance can be corrected by adjusting a threshold voltage (Vth), based on the ratio of the 1's to the 0's from the zero bit counter, by the non-volatile memory controller.
Certain embodiments of the invention have other steps or elements in addition to or in place of those mentioned above. The steps or elements will become apparent to those skilled in the art from a reading of the following detailed description when taken with reference to the accompanying drawings.
The following embodiments are described in sufficient detail to enable those skilled in the art to make and use the invention. It is to be understood that other embodiments would be evident based on the present disclosure, and that system, process, or mechanical changes may be made without departing from the scope of the present invention.
In the following description, numerous specific details are given to provide a thorough understanding of the invention. However, it will be apparent that the invention may be practiced without these specific details. In order to avoid obscuring the present invention, some well-known circuits, system configurations, and process steps are not disclosed in detail.
The drawings showing embodiments of the system may be drawn not to scale. Similarly, although the views in the drawings for ease of description generally show similar orientations, this depiction in the figures is arbitrary for the most part. Generally, the invention can be operated in any orientation.
The same numbers are used in all the drawing FIGs. to relate to the same elements. The embodiments have been numbered first embodiment, second embodiment, etc. as a matter of descriptive convenience and are not intended to have any other significance or provide limitations for the present invention.
Various embodiments described here include a new approach for error correction in a data storage system. This approach includes a method including: monitoring a data interface bus from a non-volatile memory controller; activating a zero bit counter for detecting a ratio of 1's to 0's on the data interface bus; and adjusting a threshold voltage (Vth), based on the ratio of the 1's to the 0's from the zero bit counter, by the non-volatile memory controller.
An embodiment of the present invention provides a data storage system including: monitoring a data interface bus from a non-volatile memory controller; activating a zero bit counter for detecting a ratio of 1's to 0's on the data interface bus; and adjusting a threshold voltage (Vth), based on the ratio of the 1's to the 0's from the zero bit counter, by the non-volatile memory controller.
Referring now to
The storage power manager 112 can provide operational power and alerts to a controller module 114 and an array 116 of a non-volatile memory device 118. The non-volatile memory device 118 can be NAND flash memory, single-level cell (SLC) flash memory, or multi-level cell (MLC) flash memory. The controller module 114 can be a hardware module having a processor module 120, a processor memory module 122, a zero bit counter 124, a non-volatile memory controller 126, and an error correction module 128.
The processor module 120 can perform maintenance and support tasks for the data storage system 100. The processor memory module 122 can be coupled to the processor module 120 to operate as data cache, temporary storage, instruction storage, and interface state memory.
The zero bit counter 124 is a hardware structure coupled between the non-volatile memory controller 126, and the error correction module 128. The zero bit counter 124 can monitor the transfer of data from the non-volatile memory controller 126 before any error correction is applied by the error correction module 128 and without inducing any latency in the data path. The hardware for the zero bit counter 124 can be a detector that allows the processor module 120 to perform the actual count or a full hardware counter that can provide a status count to the processor module 120, the non-volatile memory controller 126, or a combination thereof.
Data written to the non-volatile memory device 118 can be randomized for either security reasons or for endurance and retention requirements. The resulting data is known to have high entropy, such as 50% 1's and 50% 0's. The number of data bits written at a value of 1 or 0 can be predicted. As the non-volatile memory device 118 ages a ratio of the number of 1's to 0's will change due to charge depletion in the non-volatile memory device 118. The charge depletion can occur due to the age of the data or an excessive number of reads of the data in the non-volatile memory device 118.
In normal operation, spurious data errors can be corrected by the error correction module 128 without re-reading the erroneous data blocks. As the charge is depleted with a given threshold voltage (Vth), the ratio of the number of 1's to 0's will change. If left unchecked, the ratio of 1's to 0's will continue to change beyond the point where the error correction module 128 can correct the data stream.
The processor module 120 can detect the increasing use of the error correction module 128. The processor module 120 can activate the zero bit counter 124 in order to identify a current state of the ratio of 1's to 0's. By analyzing the ratio of 1's to 0's, the processor module 120 can instruct the non-volatile memory controller 126 to adjust the threshold voltage (Vth) values in the non-volatile memory device 118. The output of the zero bit counter 124 can indicate the number of detected data bits that have a zero value. As the charge is depleted from the non-volatile memory device 118, the output of the zero bit counter 124 can provide an indication of the direction and amount of change required in the threshold voltage (Vth) values in order to maintain the ratio of 50% 1's and 50% 0's. The output of the zero bit counter 124 can provide an accurate indication, even if the data becomes uncorrectable, by using the ratio of 1's to 0's in the data stream to set the direction and amount of the threshold voltage (Vth) adjustment needed for the next read operation.
It is understood that the activation of the zero bit counter 124 can be part of an error recovery process or as part of a continuous monitoring of the condition of the data within the non-volatile memory device 118. It is further understood that the adjustments of the threshold voltage (Vth) can be implemented to automatically apply to the non-volatile memory device 118 without intervention of the processor module 120. The ratio of the of 1's to 0's can be a linear indicator of the amount of charge depletion that has taken place in the non-volatile memory device 118 as a result of read activity, age of the data, or a combination thereof.
It has been discovered that the zero bit counter 124 can determine the direction and amount of change required in the threshold voltage (Vth) of the non-volatile memory device 118. The zero bit counter 124 can provide accurate adjustments to the threshold voltage (Vth) of the non-volatile memory device 118 even when the data stream is uncorrectable by the error correction module 128. It has further been discovered that the zero bit counter 124 can quickly identify special data sequences for erase blocks within the non-volatile memory device 118 that have been flagged as spare, recycled, or retired. The zero bit counter 124 can also be used to capture a histogram of the relative state of the erase blocks within the non-volatile memory device 118 for diagnostic or characterization purposes.
The operation of the zero bit counter 124 can apply to the NAND flash memory, the single-level cell (SLC) flash memory, or the multi-level cell (MLC) flash memory. In adjusting the threshold voltage (Vth) of the multi-level cell (MLC) flash memory, there can be two threshold adjustments required to address the least significant page and the most significant page. The relationship of the ratio of the 1's to 0's is maintained through the data of all of the versions of the non-volatile memory device 118.
When using the non-volatile memory device 118 as a multi-level cell (MLC) flash memory the ratio of 1's to 0's in the least significant bit (LSB) page verses the most significant bit (MSB) page can be determined by the zero bit counter 124 to adjust the threshold voltage (Vth). The zero bit counter 124 can be used to tune the parameters for the erase and programming operation on the next write cycle, thus improving the bit error rate on the non-volatile memory device 118 (erase block). The ratio of 1's or 0's in the LSB page to the number of 1's or 0's in the MSB page can be used to adjust either the threshold voltage (Vth) values or the program/erase settings knowing the data in the two pages should have the same number of 1's or 0's as the sibling page.
It has been discovered that by intentionally skewing the ratio of the 1's to 0's for specially flagged erase blocks or pages within the non-volatile memory device 118, the zero bit counter 124 can be used to positively identify the ratio of the 1's to 0's in order to speed-up the identification of the specially flagged erase blocks. By way of an example, the processor module 120 can utilize the zero bit counter 124 during the life-cycle of the erase blocks within the non-volatile memory device 118 to tag the erase blocks as erased, spare, recycled, or retired.
Referring now to
By way of an example, the counter interface register 202 can configure the zero bit counter 124 to communicate directly with the non-volatile memory controller 126 in order to provide continuous feedback on the ratio of the 1's to 0's. The non-volatile memory controller 126 can be configured to utilize the output of the zero bit counter 124 to track changes in bit error rate (BER) of the raw data from the array 116 of the non-volatile memory device 118, which can show-up as the change in ratio of the 1's to 0's. Any changes in a threshold voltage (Vth) 204 can be monitored by the processor module 120 in order to determine when data that has been charge depleted should be re-written in a new location.
In another example, the error correction module 128 can communicate through a data interface bus 206 in order to flag an uncorrectable error correction code (ECC) error 210 to the zero bit counter 124 and the counter interface register 202. Such a communication can trigger the zero bit counter 124 to send the last captured ratio of the 1's to 0's to the non-volatile memory controller 126. The non-volatile memory controller 126 can adjust the threshold voltage (Vth) 204 in the non-volatile memory device 118 in order to prevent a reoccurrence of the uncorrectable error correction code (ECC) error 210 for re-reading the data blocks. These examples require very little support from the processor module 120 during actual data transfers.
It has been discovered that the zero bit counter 124 and the counter interface register 202 can allow the operational performance of the data storage system 100 to be enhanced without adding additional burden on the processor module 120. The reduction in overhead to the processor module 120 can allow implementation of a less expensive version of the processor module 120 or allow the processor module 120 to support an increase in the size of the array 116 of the non-volatile memory device 118 while maintaining a constant performance level of the data storage system 100.
It is understood that the position of the zero bit counter 124, between the non-volatile memory controller 126 and the error correction module 128, can provide the feedback required to maintain the data integrity of the non-volatile memory device 118 prior to any correction being applied to a data stream 208. The uncorrectable error correction code (ECC) error 210 can be coupled between the error correction module 128 and each of the non-volatile memory controller 126. While only a single connection to the error correction module 128 is shown there can be one of the uncorrectable error correction code (ECC) error 210 for each of the non-volatile memory controller 126. This configuration can allow a “per channel” operation of the zero bit counter 124 by the non-volatile memory controller 126.
It is understood that the non-volatile memory device 118 shown in the figures can be any number of the non-volatile memory device 118 dedicated to a particular instance of the non-volatile memory controller 126 representing a discrete channel within the data storage system 100. While the counter interface register 202 is shown having the zero bit counter 124 in a serial chain configuration, this is an example only and a discrete connection between each of the zero bit counter 124 and the counter interface register 202 is possible. The counter interface register 202 can have discrete register sets for each of the zero bit counter 124.
Referring now to
The error correction module 304 can provide the same services as the error correction module 128 of
The processor module 120 can maintain a histogram of the charge in each cell viewed by sweeping the threshold voltage (Vth) 204 in the non-volatile memory device 118 for each of the storage channel 302. The histogram of the threshold voltage (Vth) 204 can be an indicator of the general reliability of the data storage system 100. The speed of change in the threshold voltage (Vth) 204 can be indicative of the charge depletion rate of the non-volatile memory device 118.
It has been discovered that the processor module 120 can maintain the histogram of the threshold voltage (Vth) 204 in the non-volatile memory device 118 for communicating predictive failure information through the system interface 102 of
Referring now to
The error correction module 304 can be coupled to the non-volatile memory controller 126 by the data interface bus 206. A snoop connection 402, such as a high impedance probe connection, can couple the data interface bus 206 to a zero bit counter module 404. The snoop connection 402 can monitor the data interface bus 206 without adding latency to the path. It is critical that the addition of the zero bit counter 124 does not add latency to the data interface bus 206 as any additional latency could alter the data received by the error correction module 304.
The zero bit counter module 404 can be implemented as a full hardware counter, a single cycle half adder, used to accumulate the counts, a software counter operating on a hardware interface, or a combination thereof. The snoop connection 402 can provide a high impedance connection between the zero bit counter 404 and the data interface bus 206 without adding latency to the data interface bus 206.
The zero bit counter 124, having the snoop connection 402 and the zero bit counter module 404, can perform valuable characterization and diagnostic functions by monitoring the charge depletion within the non-volatile memory device 118. The processor module 120 of
It has been discovered that the zero bit counter 124, having the snoop connection 402 and the zero bit counter module 404, can provide reliability and projected failure information that has not been available in solid state disks (SSD's). The processor module 120 of
It has also been discovered that the zero bit counter 124 can be used in the recycling and tagging of erase blocks within the non-volatile memory device 118 by verifying the charge retention of the erase blocks for different duration of write/erase cycles, which can allow the use erase blocks that would have to be retired without the reliability information provided by the data storage system 100. The zero bit counter 124 can also provide the direction and amplitude changes of the threshold voltage (Vth) 204 for erase blocks with unrecoverable ECC errors as determined by the error correction module 304.
Referring now to
The resulting method, process, apparatus, device, product, and/or system is straightforward, cost-effective, uncomplicated, highly versatile, accurate, sensitive, and effective, and can be implemented by adapting known components for ready, efficient, and economical manufacturing, application, and utilization.
Another important aspect of the present invention is that it valuably supports and services the historical trend of reducing costs, simplifying systems, and increasing performance.
These and other valuable aspects of the present invention consequently further the state of the technology to at least the next level.
While the invention has been described in conjunction with a specific best mode, it is to be understood that many alternatives, modifications, and variations will be apparent to those skilled in the art in light of the aforegoing description. Accordingly, it is intended to embrace all such alternatives, modifications, and variations that fall within the scope of the included claims. All matters hithertofore set forth herein or shown in the accompanying drawings are to be interpreted in an illustrative and non-limiting sense.
Number | Name | Date | Kind |
---|---|---|---|
5633823 | Lee | May 1997 | A |
5721705 | Hong et al. | Feb 1998 | A |
5888867 | Wang et al. | Mar 1999 | A |
6034897 | Estakhri et al. | Mar 2000 | A |
6381176 | Kim et al. | Apr 2002 | B1 |
7031210 | Park et al. | Apr 2006 | B2 |
7558109 | Brandman et al. | Jul 2009 | B2 |
7853749 | Kolokowsky | Dec 2010 | B2 |
8000161 | Stan | Aug 2011 | B2 |
8205028 | Sakarda | Jun 2012 | B1 |
8223551 | Sarin et al. | Jul 2012 | B2 |
8397101 | Goss et al. | Mar 2013 | B2 |
8521981 | Strauss | Aug 2013 | B2 |
8560770 | Haines et al. | Oct 2013 | B2 |
8612669 | Syu et al. | Dec 2013 | B1 |
8694811 | Raju et al. | Apr 2014 | B2 |
8725931 | Kang | May 2014 | B1 |
8750052 | Aoki | Jun 2014 | B2 |
8793556 | Northcott et al. | Jul 2014 | B1 |
8799747 | Goss et al. | Aug 2014 | B2 |
8862818 | Ozdemir | Oct 2014 | B1 |
8880838 | Kaiser et al. | Nov 2014 | B2 |
8984216 | Fillingim | Mar 2015 | B2 |
9043668 | Goss et al. | May 2015 | B2 |
9063844 | Higgins et al. | Jun 2015 | B2 |
9069468 | Mehra et al. | Jun 2015 | B2 |
9116401 | Kim et al. | Aug 2015 | B2 |
9201728 | Patapoutian et al. | Dec 2015 | B2 |
9239781 | Jones et al. | Jan 2016 | B2 |
20020156891 | Ulrich et al. | Oct 2002 | A1 |
20060022054 | Elhamias et al. | Feb 2006 | A1 |
20060080505 | Arai et al. | Apr 2006 | A1 |
20070067598 | Fujimoto | Mar 2007 | A1 |
20070079152 | Winick et al. | Apr 2007 | A1 |
20080028246 | Witham | Jan 2008 | A1 |
20080263289 | Hosoya et al. | Oct 2008 | A1 |
20090132756 | Hsieh | May 2009 | A1 |
20090172248 | You | Jul 2009 | A1 |
20090179707 | Higashino | Jul 2009 | A1 |
20090183183 | Muppirala et al. | Jul 2009 | A1 |
20090300238 | Panabaker et al. | Dec 2009 | A1 |
20100082890 | Heo et al. | Apr 2010 | A1 |
20100122019 | Flynn et al. | May 2010 | A1 |
20100223531 | Fukutomi et al. | Sep 2010 | A1 |
20100325340 | Feldman et al. | Dec 2010 | A1 |
20110055455 | Post et al. | Mar 2011 | A1 |
20110078295 | Kavuri et al. | Mar 2011 | A1 |
20110107144 | Ohara | May 2011 | A1 |
20110138100 | Sinclair | Jun 2011 | A1 |
20110173395 | Bhattacharjee et al. | Jul 2011 | A1 |
20120023144 | Rub | Jan 2012 | A1 |
20120057410 | Yu et al. | Mar 2012 | A1 |
20120079348 | Naeimi | Mar 2012 | A1 |
20120079355 | Patapoutian et al. | Mar 2012 | A1 |
20120096217 | Son et al. | Apr 2012 | A1 |
20120185706 | Sistla et al. | Jul 2012 | A1 |
20120203951 | Wood et al. | Aug 2012 | A1 |
20120266011 | Storer et al. | Oct 2012 | A1 |
20120275233 | Sarin et al. | Nov 2012 | A1 |
20120278530 | Ebsen | Nov 2012 | A1 |
20120278531 | Horn | Nov 2012 | A1 |
20120317334 | Suzuki et al. | Dec 2012 | A1 |
20130061019 | Fitzpatrick et al. | Mar 2013 | A1 |
20130073797 | Chowdhury | Mar 2013 | A1 |
20130074093 | Gounares et al. | Mar 2013 | A1 |
20130104005 | Weingarten et al. | Apr 2013 | A1 |
20130205102 | Jones et al. | Aug 2013 | A1 |
20130219248 | Sakurai | Aug 2013 | A1 |
20130232290 | Ish et al. | Sep 2013 | A1 |
20130297986 | Cohen | Nov 2013 | A1 |
20130297988 | Wu | Nov 2013 | A1 |
20130304998 | Palmer | Nov 2013 | A1 |
20130305093 | Jayachandran et al. | Nov 2013 | A1 |
20130326116 | Goss et al. | Dec 2013 | A1 |
20140036589 | Parthasarathy et al. | Feb 2014 | A1 |
20140059359 | Bahirat | Feb 2014 | A1 |
20140156966 | Ellis et al. | Jun 2014 | A1 |
20140158525 | Greene | Jun 2014 | A1 |
20140181370 | Cohen et al. | Jun 2014 | A1 |
20140258769 | Baryudin et al. | Sep 2014 | A1 |
20140372777 | Reller et al. | Dec 2014 | A1 |
20150177999 | Gakhal et al. | Jun 2015 | A1 |
Number | Date | Country |
---|---|---|
WO 2009111174 | Sep 2009 | WO |
Entry |
---|
Online Merriam Webster Dictionary, definition of “Distinct” from Jun. 12, 2011, https://web.archive.org/web/20110612181129/http://www2.merriam-webster.com/cgi-bin/mwdictadu?book=Dictionary&va=distinct. |
Number | Date | Country | |
---|---|---|---|
20150135033 A1 | May 2015 | US |