Nothing Special   »   [go: up one dir, main page]

US20080148132A1 - Error detection and correction scheme for multi-level cell NAND flash - Google Patents

Error detection and correction scheme for multi-level cell NAND flash Download PDF

Info

Publication number
US20080148132A1
US20080148132A1 US11/588,475 US58847506A US2008148132A1 US 20080148132 A1 US20080148132 A1 US 20080148132A1 US 58847506 A US58847506 A US 58847506A US 2008148132 A1 US2008148132 A1 US 2008148132A1
Authority
US
United States
Prior art keywords
error correction
write data
data
read
correction code
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.)
Abandoned
Application number
US11/588,475
Inventor
Rajith K. Mavila
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Priority to US11/588,475 priority Critical patent/US20080148132A1/en
Assigned to INTEL CORPORATION reassignment INTEL CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MAVILA, RAJITH K.
Publication of US20080148132A1 publication Critical patent/US20080148132A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk

Definitions

  • Bit errors are sometimes introduced into stored or transmitted data due to, for example, electrical interference or thermal noise. Error correction methods allow data that is read or transmitted to be checked for errors and, when necessary, corrected.
  • Common error correction schemes involve storing redundant information as a code with a unit of data that can be used to determine if errors have been introduced. A new code is calculated as the data is read and compared to the stored code. If the codes are the same, the data does not contain an error. The stored code may be used to reconstruct the data if an error is detected.
  • ECC error correcting codes
  • BCH Hamming codes
  • Reed-Solomon codes One disadvantage of most error correction schemes is that typically only single bit errors can be detected and corrected. Multiple bit errors can be corrected, for example, using BCH and Reed-Solomon codes, but the implementations are complex and costly.
  • FIG. 1 illustrates an error detection and correction system according to an embodiment of the present invention.
  • FIG. 2 illustrates an error detection and correction flow diagram according to an embodiment of the present invention.
  • FIG. 3 illustrates a flash interface system according to an embodiment of the present invention.
  • FIG. 4 illustrates error detection and correction logic according to an embodiment of the present invention.
  • references to “one embodiment,” “an embodiment,” “example embodiment,” “various embodiments,” etc., indicate that the embodiment(s) of the invention so described may include a particular feature, structure, or characteristic, but not every embodiment necessarily includes the particular feature, structure, or characteristic. Further, repeated use of the phrase “in one embodiment” does not necessarily refer to the same embodiment, although it may.
  • processor may refer to any device or portion of a device that processes electronic data from registers and/or memory to transform that electronic data into other electronic data that may be stored in registers and/or memory.
  • a “computing platform” may comprise one or more processors.
  • an example flash memory system 100 may include a boot read-only memory (ROM) 110 , a host controller 120 , error detection and correction logic 130 , and a flash device 140 .
  • the flash memory system 100 may be implemented in an electronic device (not shown).
  • the flash memory system 100 may be implemented in a desktop computer, a network server, a laptop computer, a handheld computer, a tablet computer, a cellular telephone (e.g., a smart phone), a pager, an audio and/or video player (e.g., an MP3 player or a DVD player), a gaming device, a digital camera, a navigation device (e.g., a global position system (GPS) device), a medical device (e.g., a heart rate monitor, a blood pressure monitor, etc.), and/or other suitable relatively stationary, mobile, and/or portable electronic devices.
  • a navigation device e.g., a global position system (GPS) device
  • a medical device e.g., a heart rate monitor, a blood pressure monitor, etc.
  • boot ROM 110 While the boot ROM 110 , the host controller 120 , and the error detection and correction logic 130 are depicted as separate blocks, these components may be integrated within a central processing unit (CPU) 150 .
  • the CPU 150 may be operatively coupled to the flash device 140 via a flash interface 160 .
  • the flash interface 160 may include a bus, and/or a direct link between the boot ROM 110 , the host controller 120 , the error detection and correction logic 130 , and the flash device 140 .
  • the boot ROM 110 may provide boot code to the flash device 140 for initializing the flash device 140 .
  • the host controller 120 e.g., an application processor
  • the host controller 120 may perform a variety of operations for the CPU 150 .
  • the host controller 120 may process operations ranging from running an operating system (OS) or an application to invoking the boot ROM 110 .
  • OS operating system
  • the flash device 140 may include an integrated controller 180 and a flash array 190 .
  • the flash array 190 may store data, code, and/or other suitable information.
  • Flash array 190 may include multi-level cell technology, where two or more bits of information are stored in a single cell, for example, multi-level cell (MLC) NAND flash arrays. Due to the storage of multiple bits in a single cell, adjacent bit errors are more common than in other types of memories. Thus, error correction codes that can only detect and correct single bit errors used in common approaches do not meet the needs of multi-level cell memories.
  • MLC multi-level cell
  • FIG. 1 While the components shown in FIG. 1 are depicted as separate blocks, the functions performed by some of these blocks may be integrated within a single semiconductor circuit or may be implemented using two or more separate integrated circuits. The methods and apparatus described herein are not limited in this regard.
  • FIG. 2 illustrates an error detection and correction flow diagram according to an embodiment of the present invention.
  • an error correction code is generated.
  • the data is separated into two or more bit streams wherein adjacent bits are separated, for example, the odd bits and even bits are separated into two different bit streams, block 202 .
  • An error correction code is calculated for each bit stream, block 204 .
  • the data in its un-separated form is stored in flash device 140 , block 206 .
  • the error correction codes may be stored with the data, or in another location.
  • the methods and apparatus described herein are not limited in this regard.
  • the error correction codes may be stored with adjacent bits separated, for example, such that a code generated from even bits is stored in even bit positions and a code generated from odd bits is stored in odd bit positions.
  • the data Upon subsequent reads of the data, the data is again separated into two or more bit streams, block 208 , and an error correction code is calculated for each bit stream, block 210 .
  • the code generated upon storing the data is compared to the code generated upon reading the data, block 212 . If the codes match, there is no error. If the codes differ, the read data is corrected, block 214 .
  • FIG. 3 illustrates a flash interface system according to an embodiment of the present invention.
  • flash interface system 300 includes system bus interface logic 302 to interface to a host system (not shown) and flash interface logic 304 to interface to a flash device (not shown). The host system may read and write to the flash device through flash interface system 300 .
  • Flash interface 300 performs error detection and correction for host system data accesses utilizing FIFO 306 and data buffer 308 for buffering data before and after error detection and correction logic 310 .
  • Flash interface 300 further includes control and status logic 312 , command buffer 314 and flash interface controller 316 for handling commands, status, and controls for access to the flash device.
  • FIG. 4 illustrates error detection and correction logic according to an embodiment of the present invention.
  • Error detection and correction logic 310 generates error correction codes for data to be written to a flash device and performs error detection and correction for data read from the flash device. Logic is reused for area savings.
  • a multiplexer 402 selects between read data and write data which is then stored in register 404 . The stored data is divided into multiple bit streams separating adjacent bits, for example, dividing even and odd bits into two bit streams.
  • Even error correction code generator 406 and odd error code generator 408 generates codes for the even and odd bit streams, respectively. According to one embodiment of the invention, for every 256 bytes in a given data stream a three byte error correction code is generated.
  • each error code generator outputs three bytes each, so six bytes of error correction code is generated. If the page size is 2048 bytes, each engine goes through the computation process four times, thus generating four sets of six byte error correction codes each (ECC0-3). Any standard SEC/DED (Single error Correction/Double error detection) algorithm may be used. The error correction codes may be written to a spare area of the flash device.
  • error correction codes are generated on the read data using the above mentioned blocks.
  • the stored error correction codes are also read from the spare area, and are exclusive-OR'd (XOR'ed) with the computed error correction codes to generate syndromes in syndrome computation logic 412 .
  • the computed syndrome represents an error pointer. This pointer is transformed to a 64 bit correction vector by correction vector generator 414 , adjusting for the data currently in the data buffer. The appropriate bits of the correction vector change, depending on the bit error location, during the cycle the read data is output from the data buffer.
  • Data correction is performed by XORing the correction vector bit the read data by data correction logic 416 . If there are multiple errors in either of the data streams (even or odd) as indicated by the syndromes, a double bit error status bit is set and no correction is performed.
  • controller data width is 16 bits and memory data width is 8 bits, implying that two devices are connected to a single chip select, another set of even and odd error correction code generators may be used.
  • calculating error correction codes on separated data ensures that a single cell failure of a multi-level cell flash device can be corrected using an SEC/DED algorithm.
  • error detection and correction may support two flash devices on the same chip select.
  • the page length of the flash may be configurable so that, for example, 512 byte and 2048 byte page sizes may be supported.
  • the techniques described above may be embodied in a computer-readable medium for configuring a computing system to execute the method.
  • the computer readable media may include, for example and without limitation, any number of the following: magnetic storage media including disk and tape storage media; optical storage media such as compact disk media (e.g., CD-ROM, CD-R, etc.) and digital video disk storage media; holographic memory; nonvolatile memory storage media including semiconductor-based memory units such as FLASH memory, EEPROM, EPROM, ROM; ferromagnetic digital memories; volatile storage media including registers, buffers or caches, main memory, RAM, etc.; and data transmission media including permanent and intermittent computer networks, point-to-point telecommunication equipment, carrier wave transmission media, the Internet, just to name a few.
  • Computing systems may be found in many forms including but not limited to mainframes, minicomputers, servers, workstations, personal computers, notepads, personal digital assistants, various wireless devices and embedded systems, just to name a few.
  • a typical computing system includes at least one processing unit, associated memory and a number of input/output (I/O) devices.
  • I/O input/output
  • a computing system processes information according to a program and produces resultant output information via I/O devices.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

An error detection and correction scheme for multi-level cell memory arrays is disclosed. By separating adjacent bits of data into multiple bit streams, the likelihood of error correction is increased.

Description

    BACKGROUND DESCRIPTION OF THE RELATED ART
  • Bit errors are sometimes introduced into stored or transmitted data due to, for example, electrical interference or thermal noise. Error correction methods allow data that is read or transmitted to be checked for errors and, when necessary, corrected.
  • Common error correction schemes involve storing redundant information as a code with a unit of data that can be used to determine if errors have been introduced. A new code is calculated as the data is read and compared to the stored code. If the codes are the same, the data does not contain an error. The stored code may be used to reconstruct the data if an error is detected.
  • Common error correction schemes include error correcting codes (ECC), Hamming codes, BCH, and Reed-Solomon codes. One disadvantage of most error correction schemes is that typically only single bit errors can be detected and corrected. Multiple bit errors can be corrected, for example, using BCH and Reed-Solomon codes, but the implementations are complex and costly.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The present invention may be better understood, and its numerous features and advantages made apparent to those skilled in the art by referencing the accompanying drawings.
  • FIG. 1 illustrates an error detection and correction system according to an embodiment of the present invention.
  • FIG. 2 illustrates an error detection and correction flow diagram according to an embodiment of the present invention.
  • FIG. 3 illustrates a flash interface system according to an embodiment of the present invention.
  • FIG. 4 illustrates error detection and correction logic according to an embodiment of the present invention.
  • The use of the same reference symbols in different drawings indicates similar or identical items.
  • DESCRIPTION OF THE EMBODIMENT(S)
  • In the following description, numerous specific details are set forth. However, it is understood that embodiments of the invention may be practiced without these specific details. In other instances, well-known methods, structures and techniques have not been shown in detail in order not to obscure an understanding of this description.
  • References to “one embodiment,” “an embodiment,” “example embodiment,” “various embodiments,” etc., indicate that the embodiment(s) of the invention so described may include a particular feature, structure, or characteristic, but not every embodiment necessarily includes the particular feature, structure, or characteristic. Further, repeated use of the phrase “in one embodiment” does not necessarily refer to the same embodiment, although it may.
  • As used herein, unless otherwise specified the use of the ordinal adjectives “first,” “second,” “third,” etc., to describe a common object, merely indicate that different instances of like objects are being referred to, and are not intended to imply that the objects so described must be in a given sequence, either temporally, spatially, in ranking, or in any other manner.
  • Unless specifically stated otherwise, as apparent from the following discussions, it is appreciated that throughout the specification discussions utilizing terms such as “processing,” “computing,” “calculating,” or the like, refer to the action and/or processes of a computer or computing system, or similar electronic computing device, that manipulate and/or transform data represented as physical, such as electronic, quantities into other data similarly represented as physical quantities.
  • In a similar manner, the term “processor” may refer to any device or portion of a device that processes electronic data from registers and/or memory to transform that electronic data into other electronic data that may be stored in registers and/or memory. A “computing platform” may comprise one or more processors.
  • Referring to FIG. 1, an example flash memory system 100 may include a boot read-only memory (ROM) 110, a host controller 120, error detection and correction logic 130, and a flash device 140. In general, the flash memory system 100 may be implemented in an electronic device (not shown). For example, the flash memory system 100 may be implemented in a desktop computer, a network server, a laptop computer, a handheld computer, a tablet computer, a cellular telephone (e.g., a smart phone), a pager, an audio and/or video player (e.g., an MP3 player or a DVD player), a gaming device, a digital camera, a navigation device (e.g., a global position system (GPS) device), a medical device (e.g., a heart rate monitor, a blood pressure monitor, etc.), and/or other suitable relatively stationary, mobile, and/or portable electronic devices.
  • While the boot ROM 110, the host controller 120, and the error detection and correction logic 130 are depicted as separate blocks, these components may be integrated within a central processing unit (CPU) 150. The CPU 150 may be operatively coupled to the flash device 140 via a flash interface 160. For example, the flash interface 160 may include a bus, and/or a direct link between the boot ROM 110, the host controller 120, the error detection and correction logic 130, and the flash device 140.
  • In general, the boot ROM 110 may provide boot code to the flash device 140 for initializing the flash device 140. The host controller 120 (e.g., an application processor) may perform a variety of operations for the CPU 150. For example, the host controller 120 may process operations ranging from running an operating system (OS) or an application to invoking the boot ROM 110.
  • The flash device 140 may include an integrated controller 180 and a flash array 190. The flash array 190 may store data, code, and/or other suitable information. Flash array 190 may include multi-level cell technology, where two or more bits of information are stored in a single cell, for example, multi-level cell (MLC) NAND flash arrays. Due to the storage of multiple bits in a single cell, adjacent bit errors are more common than in other types of memories. Thus, error correction codes that can only detect and correct single bit errors used in common approaches do not meet the needs of multi-level cell memories.
  • While the components shown in FIG. 1 are depicted as separate blocks, the functions performed by some of these blocks may be integrated within a single semiconductor circuit or may be implemented using two or more separate integrated circuits. The methods and apparatus described herein are not limited in this regard.
  • FIG. 2 illustrates an error detection and correction flow diagram according to an embodiment of the present invention. Before data is written to flash device 140, an error correction code is generated. First, the data is separated into two or more bit streams wherein adjacent bits are separated, for example, the odd bits and even bits are separated into two different bit streams, block 202. An error correction code is calculated for each bit stream, block 204. The data in its un-separated form is stored in flash device 140, block 206.
  • The error correction codes may be stored with the data, or in another location. The methods and apparatus described herein are not limited in this regard. The error correction codes may be stored with adjacent bits separated, for example, such that a code generated from even bits is stored in even bit positions and a code generated from odd bits is stored in odd bit positions.
  • Upon subsequent reads of the data, the data is again separated into two or more bit streams, block 208, and an error correction code is calculated for each bit stream, block 210. The code generated upon storing the data is compared to the code generated upon reading the data, block 212. If the codes match, there is no error. If the codes differ, the read data is corrected, block 214.
  • FIG. 3 illustrates a flash interface system according to an embodiment of the present invention. As illustrated, flash interface system 300 includes system bus interface logic 302 to interface to a host system (not shown) and flash interface logic 304 to interface to a flash device (not shown). The host system may read and write to the flash device through flash interface system 300. Flash interface 300 performs error detection and correction for host system data accesses utilizing FIFO 306 and data buffer 308 for buffering data before and after error detection and correction logic 310. Flash interface 300 further includes control and status logic 312, command buffer 314 and flash interface controller 316 for handling commands, status, and controls for access to the flash device.
  • FIG. 4 illustrates error detection and correction logic according to an embodiment of the present invention. Error detection and correction logic 310 generates error correction codes for data to be written to a flash device and performs error detection and correction for data read from the flash device. Logic is reused for area savings. A multiplexer 402 selects between read data and write data which is then stored in register 404. The stored data is divided into multiple bit streams separating adjacent bits, for example, dividing even and odd bits into two bit streams. Even error correction code generator 406 and odd error code generator 408 generates codes for the even and odd bit streams, respectively. According to one embodiment of the invention, for every 256 bytes in a given data stream a three byte error correction code is generated. For example, if the page size is 512 bytes each error code generator outputs three bytes each, so six bytes of error correction code is generated. If the page size is 2048 bytes, each engine goes through the computation process four times, thus generating four sets of six byte error correction codes each (ECC0-3). Any standard SEC/DED (Single error Correction/Double error detection) algorithm may be used. The error correction codes may be written to a spare area of the flash device.
  • When a page read is performed, error correction codes are generated on the read data using the above mentioned blocks. The stored error correction codes are also read from the spare area, and are exclusive-OR'd (XOR'ed) with the computed error correction codes to generate syndromes in syndrome computation logic 412. The computed syndrome represents an error pointer. This pointer is transformed to a 64 bit correction vector by correction vector generator 414, adjusting for the data currently in the data buffer. The appropriate bits of the correction vector change, depending on the bit error location, during the cycle the read data is output from the data buffer. Data correction is performed by XORing the correction vector bit the read data by data correction logic 416. If there are multiple errors in either of the data streams (even or odd) as indicated by the syndromes, a double bit error status bit is set and no correction is performed.
  • According to one embodiment of the present invention, to support a dual mode where controller data width is 16 bits and memory data width is 8 bits, implying that two devices are connected to a single chip select, another set of even and odd error correction code generators may be used.
  • According to one embodiment of the present invention, calculating error correction codes on separated data ensures that a single cell failure of a multi-level cell flash device can be corrected using an SEC/DED algorithm.
  • According to an embodiment of the present invention, error detection and correction may support two flash devices on the same chip select. The page length of the flash may be configurable so that, for example, 512 byte and 2048 byte page sizes may be supported.
  • The techniques described above may be embodied in a computer-readable medium for configuring a computing system to execute the method. The computer readable media may include, for example and without limitation, any number of the following: magnetic storage media including disk and tape storage media; optical storage media such as compact disk media (e.g., CD-ROM, CD-R, etc.) and digital video disk storage media; holographic memory; nonvolatile memory storage media including semiconductor-based memory units such as FLASH memory, EEPROM, EPROM, ROM; ferromagnetic digital memories; volatile storage media including registers, buffers or caches, main memory, RAM, etc.; and data transmission media including permanent and intermittent computer networks, point-to-point telecommunication equipment, carrier wave transmission media, the Internet, just to name a few. Other new and various types of computer-readable media may be used to store and/or transmit the software modules discussed herein. Computing systems may be found in many forms including but not limited to mainframes, minicomputers, servers, workstations, personal computers, notepads, personal digital assistants, various wireless devices and embedded systems, just to name a few. A typical computing system includes at least one processing unit, associated memory and a number of input/output (I/O) devices. A computing system processes information according to a program and produces resultant output information via I/O devices.
  • Realizations in accordance with the present invention have been described in the context of particular embodiments. These embodiments are meant to be illustrative and not limiting. Many variations, modifications, additions, and improvements are possible. Accordingly, plural instances may be provided for components described herein as a single instance. Boundaries between various components, operations and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of claims that follow. Finally, structures and functionality presented as discrete components in the various configurations may be implemented as a combined structure or component. These and other variations, modifications, additions, and improvements may fall within the scope of the invention as defined in the claims that follow.

Claims (18)

1. A method comprising:
receiving write data;
separating the write data into two or more bit streams, wherein adjacent bits of the write data are separated;
calculating a write error correction code for each of the two or more bit streams;
storing the write data as stored write data; and
storing the write error correction code for each of the two or more bit streams as stored error correction codes.
2. The method as recited in claim 1, wherein storing the write error correction code for each of the two or more bits streams comprises separating adjacent bits of the write error correction for each of the two or more bits streams in storage.
3. The method as recited in claim 1, further comprising:
reading the stored write data as read data;
separating the read data into two or more other bit streams; wherein adjacent bits of the read data are separated;
calculating a read error correction code for each of the two or more other bit streams;
comparing the stored error correction codes with the read error correction code for each of the two or more other bit streams; and
correcting the read data if an error is detected.
4. The method as recited in claim 1, wherein the stored write data is stored in a multi-level cell flash array.
5. The method as recited in claim 1, wherein separating the write data comprises separating even bits of the write data into a first bit stream and separating odd bits of the write data into a second bit stream.
6. The method as recited in claim 1, wherein correcting the read data comprises exclusive-ORing the read data with a correction vector.
7. The method as recited in claim 1, wherein a three byte error correction code is generated for every 256 bytes of write data.
8. An apparatus comprising:
a register to store write data;
two or more error correction code generators to generate error correction codes for the write data, wherein adjacent bits of the write data are sent to a different one of the two or more error correction code generators; and
a memory interface to store the write data and the error correction codes.
9. The apparatus as recited in claim 8, wherein the memory interface is further configured to separate adjacent bits of the write error correction for each of the two or more bits streams in storage.
10. The apparatus as recited in claim 8, the memory interface further to read the stored write data as read data, the two or more error correction code generators further to generate read error correction codes for the read data, wherein adjacent bits of the read data are sent to a different one of the two or more error correction code generators; the apparatus further comprising:
comparator logic to compare the error correction codes with the read error correction codes; and
correction logic to correct the read data if an error is detected.
11. The apparatus as recited in claim 8, wherein the memory interface is configured to store the write data in a multi-level cell flash array.
12. The apparatus as recited in claim 8, wherein even bits of the write data are sent to a first error correction code generator and the odd bits of the write data are sent to a second error correction code generator.
13. The apparatus as recited in claim 8, wherein a three byte error correction code is generated for every 256 bytes of write data.
14. A system comprising:
a multi-level cell flash array;
a register to store write data;
two or more error correction code generators to generate error correction codes for the write data, wherein adjacent bits of the write data are sent to a different one of the two or more error correction code generators; and
a memory interface to store the write data in the multi-level cell flash array as stored write data.
15. The system as recited in claim 14, wherein the memory interface is further configured to separate adjacent bits of error correction codes to be stored in the multi-level cell flash array.
16. The system as recited in claim 14, the memory interface further to read the stored write data as read data, the two or more error correction code generators further to generate read error correction codes for the read data, wherein adjacent bits of the read data are sent to a different one of the two or more error correction code generators; the apparatus further comprising:
comparator logic to compare the error correction codes with the read error correction codes; and
correction logic to correct the read data if an error is detected.
17. The system as recited in claim 14, wherein even bits of the write data are sent to a first error correction code generator and the odd bits of the write data are sent to a second error correction code generator.
18. The system as recited in claim 14, wherein a three byte error correction code is generated for every 256 bytes of write data.
US11/588,475 2006-10-26 2006-10-26 Error detection and correction scheme for multi-level cell NAND flash Abandoned US20080148132A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/588,475 US20080148132A1 (en) 2006-10-26 2006-10-26 Error detection and correction scheme for multi-level cell NAND flash

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/588,475 US20080148132A1 (en) 2006-10-26 2006-10-26 Error detection and correction scheme for multi-level cell NAND flash

Publications (1)

Publication Number Publication Date
US20080148132A1 true US20080148132A1 (en) 2008-06-19

Family

ID=39529090

Family Applications (1)

Application Number Title Priority Date Filing Date
US11/588,475 Abandoned US20080148132A1 (en) 2006-10-26 2006-10-26 Error detection and correction scheme for multi-level cell NAND flash

Country Status (1)

Country Link
US (1) US20080148132A1 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110047442A1 (en) * 2009-08-18 2011-02-24 Viasat, Inc. Forward error correction for memories
US20120185639A1 (en) * 2011-01-14 2012-07-19 Mstar Semiconductor, Inc. Electronic device, memory controlling method thereof and associated computer-readable storage medium
US10191807B2 (en) * 2016-11-09 2019-01-29 SK Hynix Inc. Memory systems and operation method thereof
CN116737446A (en) * 2023-08-16 2023-09-12 江苏华存电子科技有限公司 Storage device high-speed write-in data error correction method based on limited RAM space

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3991278A (en) * 1975-06-13 1976-11-09 Bell Telephone Laboratories, Incorporated Line protection switching system
US4099121A (en) * 1976-06-11 1978-07-04 Communications Satellite Corporation Spatial diversity satellite communications system with error control
US4277844A (en) * 1979-07-26 1981-07-07 Storage Technology Corporation Method of detecting and correcting errors in digital data storage systems
US4365332A (en) * 1980-11-03 1982-12-21 Fairchild Camera And Instrument Corp. Method and circuitry for correcting errors in recirculating memories
US4566105A (en) * 1982-09-13 1986-01-21 Cii Honeywell Bull (Societe Anonyme) Coding, detecting or correcting transmission error system
US5164944A (en) * 1990-06-08 1992-11-17 Unisys Corporation Method and apparatus for effecting multiple error correction in a computer memory
US5263034A (en) * 1990-10-09 1993-11-16 Bull Information Systems Inc. Error detection in the basic processing unit of a VLSI central processor
US5357531A (en) * 1989-12-27 1994-10-18 Nec Corporation Multiframe channel parity counter
US5515529A (en) * 1994-03-25 1996-05-07 Bull Hn Information Syst Central processor with duplicate basic processing units employing multiplexed data signals to reduce inter-unit conductor count
US5917838A (en) * 1998-01-05 1999-06-29 General Dynamics Information Systems, Inc. Fault tolerant memory system
US5930273A (en) * 1996-04-18 1999-07-27 Oki Electric Industry Co., Ltd. STM-N signal error correction coding system and method
US6166950A (en) * 1996-07-10 2000-12-26 Hitachi, Ltd. Nonvolatile semiconductor storage device
US6367046B1 (en) * 1992-09-23 2002-04-02 International Business Machines Corporation Multi-bit error correction system
US6845438B1 (en) * 1997-08-08 2005-01-18 Kabushiki Kaisha Toshiba Method for controlling non-volatile semiconductor memory system by using look up table

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3991278A (en) * 1975-06-13 1976-11-09 Bell Telephone Laboratories, Incorporated Line protection switching system
US4099121A (en) * 1976-06-11 1978-07-04 Communications Satellite Corporation Spatial diversity satellite communications system with error control
US4277844A (en) * 1979-07-26 1981-07-07 Storage Technology Corporation Method of detecting and correcting errors in digital data storage systems
US4365332A (en) * 1980-11-03 1982-12-21 Fairchild Camera And Instrument Corp. Method and circuitry for correcting errors in recirculating memories
US4566105A (en) * 1982-09-13 1986-01-21 Cii Honeywell Bull (Societe Anonyme) Coding, detecting or correcting transmission error system
US5357531A (en) * 1989-12-27 1994-10-18 Nec Corporation Multiframe channel parity counter
US5164944A (en) * 1990-06-08 1992-11-17 Unisys Corporation Method and apparatus for effecting multiple error correction in a computer memory
US5263034A (en) * 1990-10-09 1993-11-16 Bull Information Systems Inc. Error detection in the basic processing unit of a VLSI central processor
US6367046B1 (en) * 1992-09-23 2002-04-02 International Business Machines Corporation Multi-bit error correction system
US5515529A (en) * 1994-03-25 1996-05-07 Bull Hn Information Syst Central processor with duplicate basic processing units employing multiplexed data signals to reduce inter-unit conductor count
US5930273A (en) * 1996-04-18 1999-07-27 Oki Electric Industry Co., Ltd. STM-N signal error correction coding system and method
US6166950A (en) * 1996-07-10 2000-12-26 Hitachi, Ltd. Nonvolatile semiconductor storage device
US6845438B1 (en) * 1997-08-08 2005-01-18 Kabushiki Kaisha Toshiba Method for controlling non-volatile semiconductor memory system by using look up table
US5917838A (en) * 1998-01-05 1999-06-29 General Dynamics Information Systems, Inc. Fault tolerant memory system

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110047442A1 (en) * 2009-08-18 2011-02-24 Viasat, Inc. Forward error correction for memories
US8615700B2 (en) 2009-08-18 2013-12-24 Viasat, Inc. Forward error correction with parallel error detection for flash memories
US20140157089A1 (en) * 2009-08-18 2014-06-05 Viasat, Inc. Forward error correction with parallel error detection for flash memories
US8966347B2 (en) * 2009-08-18 2015-02-24 Viasat, Inc. Forward error correction with parallel error detection for flash memories
US20120185639A1 (en) * 2011-01-14 2012-07-19 Mstar Semiconductor, Inc. Electronic device, memory controlling method thereof and associated computer-readable storage medium
US8656089B2 (en) * 2011-01-14 2014-02-18 Mstar Semiconductor, Inc. Electronic device, memory controlling method thereof and associated computer-readable storage medium
TWI467579B (en) * 2011-01-14 2015-01-01 Mstar Semiconductor Inc Electronic device, method for controlling memory thereof and associated computer-readable storage medium
US10191807B2 (en) * 2016-11-09 2019-01-29 SK Hynix Inc. Memory systems and operation method thereof
CN116737446A (en) * 2023-08-16 2023-09-12 江苏华存电子科技有限公司 Storage device high-speed write-in data error correction method based on limited RAM space
CN116737446B (en) * 2023-08-16 2023-10-24 江苏华存电子科技有限公司 Storage device high-speed write-in data error correction method based on limited RAM space

Similar Documents

Publication Publication Date Title
CN108268340B (en) Method for correcting errors in memory
JP4071940B2 (en) Shared error correction for memory design
KR102190683B1 (en) Error correction method of memory data
US20070268905A1 (en) Non-volatile memory error correction system and method
US7890836B2 (en) Method and apparatus of cache assisted error detection and correction in memory
US8583987B2 (en) Method and apparatus to perform concurrent read and write memory operations
US20120144261A1 (en) Error checking and correcting circuit, memory system compising error checking and correcting circuit, and related methods of operation
US8381085B2 (en) Semiconductor memory device and data processing method thereof
KR20180086816A (en) Memory device and electronic device performing adaptive error correction with pre-checking error rate and method of operating the memory device
US11726665B1 (en) Memory extension with error correction
US20040225944A1 (en) Systems and methods for processing an error correction code word for storage in memory components
US10606690B2 (en) Memory controller error checking process using internal memory device codes
US9189327B2 (en) Error-correcting code distribution for memory systems
US20220035703A1 (en) Memory system including field programmable gate array (fpga) and method of operating same
KR102440705B1 (en) Progressive Length Error Control Codes
US9948322B1 (en) High performance read-modify-write system providing line-rate merging of dataframe segments in hardware
US11409608B2 (en) Providing host-based error detection capabilities in a remote execution device
US20080148132A1 (en) Error detection and correction scheme for multi-level cell NAND flash
CN101634938A (en) Data migration method and data migration device of solid state disk and solid state disk
US9594629B2 (en) Data error correction from cached error correction information
WO2023208231A1 (en) Memory data reading and writing method and system, and memory controller
US7240272B2 (en) Method and system for correcting errors in a memory device
CN116168754A (en) Error correction code circuit, memory device including the same, and method of operating the same
JP2006323434A (en) Data processor and memory correction method therefor
US10740179B2 (en) Memory and method for operating the memory

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTEL CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MAVILA, RAJITH K.;REEL/FRAME:020197/0833

Effective date: 20061024

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION