US20120096334A1 - Error Detecting/Correcting Scheme For Memories - Google Patents

Error Detecting/Correcting Scheme For Memories Download PDF

Info

Publication number
US20120096334A1
US20120096334A1 US13/335,725 US201113335725A US2012096334A1 US 20120096334 A1 US20120096334 A1 US 20120096334A1 US 201113335725 A US201113335725 A US 201113335725A US 2012096334 A1 US2012096334 A1 US 2012096334A1
Authority
US
United States
Prior art keywords
page
word
parity
error
memory
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.)
Granted
Application number
US13/335,725
Other versions
US8214729B2 (en
Inventor
Benoit Godard
Jean Michel Daga
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.)
Nera Innovations Ltd
Original Assignee
Atmel 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 Atmel Corp filed Critical Atmel Corp
Priority to US13/335,725 priority Critical patent/US8214729B2/en
Assigned to ATMEL CORPORATION reassignment ATMEL CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BENOIT, GODARD, DAGA, JEAN-MICHEL
Assigned to ATMEL ROUSSET S.A.S. reassignment ATMEL ROUSSET S.A.S. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ATMEL CORPORATION
Publication of US20120096334A1 publication Critical patent/US20120096334A1/en
Application granted granted Critical
Publication of US8214729B2 publication Critical patent/US8214729B2/en
Assigned to MICROCHIP TECHNOLOGY ROUSSET reassignment MICROCHIP TECHNOLOGY ROUSSET CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: ATMEL ROUSSET S.A.S.
Assigned to MICROCHIP TECHNOLOGY INCORPORATED reassignment MICROCHIP TECHNOLOGY INCORPORATED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICROCHIP TECHNOLOGY ROUSSET
Assigned to MICROCHIP TECHNOLOGY INCORPORATED, ATMEL CORPORATION reassignment MICROCHIP TECHNOLOGY INCORPORATED RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Assigned to MICROCHIP TECHNOLOGY INCORPORATED, ATMEL CORPORATION reassignment MICROCHIP TECHNOLOGY INCORPORATED RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Assigned to SONRAI MEMORY LIMITED reassignment SONRAI MEMORY LIMITED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ATMEL CORPORATION, MICROCHIP TECHNOLOGY INC., MICROSEMI CORPORATION
Assigned to NERA INNOVATIONS LIMITED reassignment NERA INNOVATIONS LIMITED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SONRAI MEMORY LIMITED
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Definitions

  • the present invention relates generally to error correction and more particularly to detecting and correcting errors in a memory.
  • Various implementations of an invention for detecting and correcting errors in relation to read operations which differ from write operations of a memory are provided.
  • a method for detecting and correcting errors in a memory is set forth. Such implementations include determining word parity for one or more words on a page of the memory, determining page parity, and detecting and correcting one or more errors by reading one or more words in relation to a read operation of the memory.
  • One or more implementations further include writing an output to the memory.
  • benefits of the various implementations include reduced encoder/decoder complexities, reduced parity overhead requirements, and reduced performance degradation.
  • FIG. 1 depicts a page architecture of a NOR Flash Memory in one implementation where parity bits are positioned at predetermined locations on a page;
  • FIG. 2 depicts a matrix construct for an implementation providing for the sharing of parity bits in relation to a set of generator rules
  • FIG. 3 depicts a parity matrix in accordance with one or more implementations for the particular example of four words each having four bits;
  • FIG. 4 depicts the page buffer which includes a word buffer, a word parity buffer, and a page parity buffer, in accordance with an implementation
  • FIG. 5 depicts a memory system comprised of a memory array, a page buffer, an encoder and a decoder, in accordance with an implementation
  • FIG. 6 depicts an architecture for the parity encoder and parity encoder controller in accordance with an implementation
  • FIG. 7 sets forth a detailed parity encoder structure in accordance with an implementation
  • FIG. 8 depicts a memory read structure in accordance with an implementation thereof having a memory array, sense amplifiers, and an error detector/corrector;
  • FIG. 9 further depicts a schematic representation of the error detector/corrector of FIG. 8 , in accordance with an implementation
  • FIG. 10 provides a detailed schematic of the syndrome calculator in accordance with an implementation
  • FIG. 11 shows the implementation of when the syndrome has been computed and latched into the syndrome register and is then used in the error extraction and correcting block in accordance with an implementation
  • FIG. 12 depicts a method for the error correction in accordance with an implementation
  • FIG. 13 presents a layout of a page using a correction scheme to detect one error per word and to correct one error per group of words in accordance with an implementation
  • detecting and correcting errors in relation to read operations which differ from write operations of the memory are provided.
  • Various implementations detect errors on a per word basis and the detected errors are then corrected on a per page basis for a memory having differing read/write operations.
  • a differing read/write operation may include reading, in the read operation, on a per word basis and writing, in the write operation, on a per page basis.
  • FIG. 1 depicts a page architecture of a NOR Flash Memory 100 in one implementation where parity bits are positioned at predetermined locations on a page.
  • the page 100 shows various words ( 110 , 120 , 130 and 140 ), parity bits ( 111 , 121 , 131 and 141 ), and a page parity having one or more bits ( 150 ).
  • the following symbols are further defined as: “W 0 , . . . , W w-1 ” are the “w” words, where “w” is the number of words per page; “P 0 , . . . , P w-1 ” are word parities and equal the number of words, “w;” “P p ” is the page parity and comprises one or more parity bits defined as the number “p.”
  • each word has a single parity bit (defined as “word parity”) that provides for the detection of one error per word, and “p” parity bits for the page (defined as “page parity”) that provides for correction of up to one error in the page.
  • FIG. 1 sets forth a NOR Flash Memory
  • other memories may also benefit from various implementations herein where such memories also exhibit differing read/write operations.
  • parity bits are to be shared as between the steps or code of error detection (“parity encoding”) and error correction (“Hamming encoding”).
  • generator rules of which the construct is constrained, includes:
  • FIG. 2 depicts a matrix construct 200 for an implementation providing for the sharing of parity bits in relation to a set of generator rules.
  • the generator rules were followed, such as in relation to the number of words in the page, and the matrix G was generated.
  • the following depicted terms are defined as: “P” is a column vector performing one error parity encoding, having length “k” containing l′s, where “k” is the number of bits per word; “H” is a partial Hamming Generator Matrix which is repeated an amount equal to the number of words in the page. “P” and “H” are used frequently in the matrix G to decrease encoding/decoding architecture requirements for the various implementations. Additionally, though not depicted in FIG. 2 , the use of the term “b” is intended to be a bit.
  • a page vector for the memory is then determined, such that the computational product of the matrix G and the page vector determines the number of parity bits via a parity vector.
  • the parity vector product includes:
  • FIG. 3 depicts a parity matrix 300 in accordance with one or more implementations for the particular example of four words each having four bits of Example 1.
  • the number of columns providing a one bit parity encoding for word parity computations equals the number of words in the page.
  • the matrix also satisfies the generator rules such as the condition that the matrix formed be a Hamming Generator matrix having at least two 1's on each line of the generator matrix where each row is linearly independent from another. Additionally the matrix 300 is further decomposable into a set of four sub-matrices depicted at 310 , 320 , 330 and 340 .
  • each word parity block ( 111 , 121 , 131 , and 141 ) comprises 1 word parity bit and the page parity block ( 150 ) comprises three parity bits.
  • an architecture for error protection including an encoder and an error detector and corrector (EDC), is provided.
  • EDC error detector and corrector
  • FIG. 4 depicts the page buffer 400 which includes a word buffer 410 , a word parity buffer 420 , and a page parity buffer 430 , in accordance with an implementation.
  • Data that has been externally provided is written to the memory array via the page buffer 400 and data that has been read from the memory array is externally output via the page buffer 400 .
  • the page buffer 400 is in signal communication with the memory array via bit lines.
  • the page buffer 400 is further depicted in a portion of a flash memory system in accordance with an implementation.
  • FIG. 5 depicts a memory system 500 comprised of a memory array 510 , a page buffer 400 and an encoder 530 . Further, FIG. 5 also depicts a page decode (MUX) 540 in communication with the encoder 530 and a row decoder 550 .
  • the encoder 530 in various implementations, is further comprised of a parity encoder controller 630 and a parity encoder 620 , and is further detailed as depicted in FIG. 6 for the parity encoder and controller architecture.
  • the memory system 500 may comprise a controller and a flash memory device having the memory array 510 , wherein the controller further comprises a processor, a memory control portion, and an error detection/correction circuit of one or more embodiments herein. It will be appreciated by those skilled in the art that the processor in various implementations may control the controller, though software or circuitry may also control the controller.
  • FIG. 6 depicts an architecture 600 for the parity encoder 620 , and parity encoder controller 630 , in accordance with an implementation.
  • FIG. 6 also further sets forth the architectural relation between the word buffer 410 , the word parity buffer 420 and the page parity buffer 430 , previously discussed in FIG. 4 .
  • a word parity bit (such as that of FIG. 1 by example) is computed from a parity encoder 620 controlled by a parity encoder controller 630 .
  • Each word in the word buffer 410 is inserted into the parity encoder 620 via the MUX 610 via line 611 .
  • the MUX 610 is controlled by the parity encoder controller 630 .
  • the parity encoder 620 computes the word parity 625 and the page parity 660 .
  • the word parity bit 625 after being computed, is inserted in a word parity buffer 420 via the MUX 650 which is controlled by the parity encoder controller 630 .
  • a page parity 660 having one or more parity bits is also computed by the parity encoder 620 .
  • the page parity 660 is determined and the page parity bit(s) is inserted in the page parity buffer 430 . Thereafter, once all parity values have been computed and inserted into their respective buffers, the write operation is performed.
  • the parity encoder 620 is further detailed in an implementation in FIG. 7 .
  • FIG. 7 sets forth a detailed parity encoder 620 in accordance with an implementation.
  • the parity encoder 620 receives the words via line 611 and comprises two branches, one for the word parity calculation 710 and another for the page parity calculation at 720 .
  • the word parity calculation branch 710 processes a word 715 of “k” bits and provides an output on 1 bit as shown at 717 .
  • the word parity tree 716 is a simple XOR tree between all of the bits of the word (i.e., computation of the word with the column-vector “P”). At the end of this step, the output is sent to the word parity buffer 420 .
  • the second parity calculation branch 720 processes words 725 of “k” bits to provide an output on “p” bits at 727 .
  • the Partial Hamming Tree 726 is a XOR tree that performs the calculation to determine the product of the word with the matrix H (i.e., the partial Hamming Matrix Generator). Operatively, this calculation is repeated for all of the words of the page at 723 and the result is XORed at 722 with previous computation and registered at 728 . At the end of this process, the content of the register is sent to the page parity buffer 430 .
  • the term “XOR” is well known in the art and refers to an operation that can be executed on two or more binary strings.
  • FIG. 8 depicts a memory read structure 800 in accordance with an implementation thereof having a memory array 510 , sense amplifiers 830 , and an error detector/corrector 810 .
  • an error detector/corrector 810 is inserted after the sense amplifiers 830 , as is further illustrated in FIG. 8 .
  • a row decoder 550 and word decoder 802 are also presented. Words 803 and word parities 804 are read by the memory array 510 and are decoded by the word decoder 802 .
  • status i.e., read done or error notification
  • memory information i.e., read word, corrected word, error sequences
  • FIG. 9 depicts a schematic representation of the error detector/corrector 810 of FIG. 8 , in accordance with an implementation.
  • the error detector/corrector 810 comprises a plurality of registers, including: (1) syndrome register 910 (m+1 bits) for storing the result of the syndrome computation, as further detailed below; (2) read word register 920 (k+m+1 bits) for storing the word that a user wants to read, for instance; and (3) corrected word register 930 (k+m+1 bits) for storing the results of the correction process.
  • the syndrome calculator 940 of FIG. 9 computes the information of the m+1 bits, and inserts them into the syndrome register 910 .
  • the bits contain the information concerning errors.
  • the first bit of the syndrome provides the error detection result of the word that is currently accessed.
  • the first bit of the syndrome is determined to be 1 at 662 if an error has been detected on the word that is currently accessed, while the first bit is determined to be 0 if there is no error detected.
  • the m others bits of the syndrome at 663 provide the rest of the syndrome, once the entire page has been read during a correction process.
  • the syndrome calculator 940 receives data 965 from the sense amplifiers 830 as determined by the input MUX 960 for its calculation.
  • FIG. 10 depicts a detailed schematic of the syndrome calculator 940 in an implementation.
  • Output from the syndrome calculator 940 includes error detection at 941 and both the first bit 662 and the other m bits 663 which are stored in the syndrome register 910 .
  • the stored bits in the syndrome register at 910 are output as (m+1) bits at, and are provided to error extraction and correction 950 . Additional detail is provided herein under the section “syndrome calculator.”
  • the error extraction and correction 950 determines the error pattern and corrects the read word register after the page has been re-read during the correction process. The result of the correction is then placed in the corrected word register 930 .
  • the output multiplexer 970 receives (k+m+1) bits from either the read word register 920 or the corrected word register 930 , in response to whether the word has been corrected or not.
  • the output multiplexer 970 outputs the memory information to the memory output at 806 . In the event there is no corrected word, the bits will be received from the read word register.
  • the error controller 980 performs a number of functions including:
  • FIG. 10 provides a detailed schematic 940 of the syndrome calculator in accordance with an implementation.
  • This syndrome utilizes calculator elements of the parity encoder 700 of FIG. 7 .
  • the syndrome calculator 940 is comprised of two branches, similar to those of the parity encoder ( 700 of FIG. 7 ), where the first branch 1010 computes the error detection signal for a word and the second branch 1020 computes the p bits of the syndrome.
  • the word parity bit is recomputed from the read word 1011 by the word parity tree 716 .
  • the recomputed word parity is depicted at 717 .
  • the recomputed word parity bit is XORed at 1014 with the read word parity to generate the error detection signal at 941 . If the error detection signal is 0, there is no error in the word. If the error detection signal is 1, then there is an error in the word and it is passed to the syndrome register 910 .
  • a re-computation of the page parity is first performed by reading sequentially all the memory words of the page (i.e., similar to the process as the encoding step). When all words are processed, the recomputed page parity is present in the p bits of the recomputed page parity buffer at 1025 and is available in the register 728 . Secondly, the page parity is stored in the register 728 , then it is read and XORed at 1026 with the content of the register 728 to provide the p last bits of the syndrome at 1028 .
  • the first branch is used to detect error in memory words and to signal the error detected to the error controller (i.e., 980 of FIG. 9 ) via the error detection signal 941 .
  • the second branch is used for partial syndrome computation, when error correction is desired.
  • FIG. 11 shows an implementation of when the syndrome 942 has been computed and latched into the syndrome register 910 and is then used in error extraction and correction 950 in accordance with an implementation. From FIG. 11 , the error extraction and correction 950 is further comprised of two further blocks: error extraction 1110 and error correction 1120 .
  • error extraction 1110 is a combinatorial tree, a Look-Up-Table, or similar. Depending on the value of the syndrome at 942 it returns the corresponding error pattern at 1140 . In operation, the size of the combinatorial tree, for various implementations, depends on the word length, not on the page length contradistinctively from a traditional approach involving one page error correction.
  • the error correction block 1120 (bitwise XOR) computes the corrected word by XORing the read word from the read word register 920 with the error pattern of 1140 . The result is then sent to the corrected word register 930 .
  • FIG. 12 depicts a method 1200 for the error correction in accordance with an implementation.
  • the implementation could be that shown in the previous figures but should not be so limited.
  • the method 1200 includes detecting and correcting errors in relation to a memory having differing read/write operations, and comprises the steps of:
  • the read word and read parity word are read from a memory and stored into the read word register 920 (i.e., from FIG. 9 ).
  • the read word and the read parity word are processed by the first branch of the syndrome calculator 940 to compute the error detection signal. If error detection signal is 0, the read done is signaled by the error controller 980 and is output to the read word register 920 . If error detection signal is 1, an error has been detected and the read done signal stays low. The value of the error detection signal is the first bit of the syndrome and is accordingly stored into the first bit of the syndrome register.
  • the syndrome is automatically sent to the error extraction and correction 950 , where it corrects the read word register 920 from the error and sends the result to the corrected word register.
  • the error controller 980 selects the corrected word register 930 and sends it to the output of the memory.
  • the read done signal is set high.
  • a further implementation considers words and groups of words, where a page comprises multiple groups of words.
  • a similar code construction can be derived to detect one error per word and to correct one error per group of words.
  • FIG. 13 presents a layout 1300 of a page using a correction scheme to detect one error per word and to correct one error per group of words in accordance with an implementation.
  • the encoder and decoder complexities depend on the length of the word. Therefore, the encoder and decoder structures remain the same without relation to the number of words in a group of words.
  • parity encoder controller in one or more implementations is to reset register of the parity encoder and to sequence the word processing in the parity encoder.
  • flash memory is well-known in the art and is inclusive but not limited to nonvolatile electrically erasable and programmable read only memory (“EEPROM”), memories which do not need to be refreshed, and other nonvolatile memories.
  • a flash memory system in an implementation/embodiment herein comprises a controller and a flash memory device, wherein the controller further comprises a processor, a memory control portion, and an error detection/correction circuit of one or more embodiments. Further the processor may control the operation of the controller, though software or circuitry may also control the controller.
  • the memory control portion serves as an interface between the controller and the flash memory device.
  • the flash memory device further comprises a memory array and a page buffer, where the memory array further includes a plurality of word lines, a plurality of bit lines, and a plurality of memory cells that are respectively arranged in intersecting portions between the word lines and the bit lines.
  • the memory cells of the memory array are connected to the page buffer via the bit lines. Data that has been externally input is written in the memory array via the page buffer, and data that has been read from the memory array is externally output via the page buffer.
  • Flash memory flash memory
  • memory memory
  • the read and write operations differ from one another as a reading operation may be performed on a per word basis while the writing operation may be performed on a per page basis.
  • Other variations of memories having differing read and write operations are also understood by those skilled in the art as well, for instance a memory may also have a reading operation on a “per group of words” granularity while the writing operation is on a “per page” basis (i.e., in combination creating an “operational paradigm” for a memory having read/write operations which differ in their operational behavior).
  • the phrases “having differing read/write operations,” “having differing read and write operations,” and similar phrases and terms, are intended to mean a situation where a read operation of a memory is of a granularity that is different than that of the programming or writing operation of the memory.
  • a memory having differing read/write operations exists where the read versus write operations of a memory include a reading operation performed on a “per word” granularity and a writing operation performed on a “per page” basis.
  • differing read/write operations also exist for a memory where when compared, the read versus write operations show a difference such as a reading operation on a “group of words” granularity and a writing operation on a “per page” basis.
  • differing read/write operations also exist in a memory where a read operation is performed on a “per word” granularity and a write operation is performed on a “group of words” basis.
  • the term “generator rules” is defined to include: (1) the number of columns of the matrix providing a one bit parity encoding for word parity computations being equal to the number of words in the page,; and (2) the matrix forming a Hamming Generator matrix with at least two 1's on each line of the matrix where each row is linearly independent from another; accordingly, other variations including modifications and additions hereto are also envisioned.

Abstract

A method for detecting and correcting errors in a memory having a read/write paradigm is presented. In these implementations, various approaches to detect errors on a per word or per group of words basis and correct errors on a per group of words or per page basis, respectively, in relation to a memory and its associated differing read/write operations, are provided. For instance, in one implementation, errors are detected on a per word basis and corrected on a per page basis for a NOR Flash Memory having differing read/write operations of reading on a per word basis and writing on a per page basis. Advantageously, benefits of the various implementations include reduced encoder/decoder complexities, reduced parity overhead requirements, and reduced performance degradation.

Description

    FIELD OF THE INVENTION
  • The present invention relates generally to error correction and more particularly to detecting and correcting errors in a memory.
  • BACKGROUND OF THE INVENTION
  • Traditional memory error correction schemes have involved approaches for detecting errors using an error detecting code and correcting the detected errors using an error correcting code. These traditional approaches often insert parity bits for each word of a page of the memory to detect single-bit errors via the error detection capacity of an error correcting code, and thereafter correct the detected single-bit errors via the error correction capacity of the error correcting code. These approaches are often tried to improve the reliability of the content of a page of memory, for instance.
  • Unfortunately, these approaches have proved limiting as their techniques are often overly burdensome in their requirements for overhead and power consumption. For instance, substantial overhead burdens result for NOR Flash Memories, as all of the words of a page of memory and/or each added detection parity bit per word is required to be read as part of the error detection scheme to detect an error per word. These techniques are also inadequate for memories having read operations which differ from their programming (i.e., write) operations, such as the NOR Flash Memory. Similarly, attempts to overcome the inefficiencies by various improvement schemes have also proven inadequate.
  • SUMMARY OF THE INVENTION
  • Various implementations of an invention for detecting and correcting errors in relation to read operations which differ from write operations of a memory are provided. In one or more implementations, a method for detecting and correcting errors in a memory is set forth. Such implementations include determining word parity for one or more words on a page of the memory, determining page parity, and detecting and correcting one or more errors by reading one or more words in relation to a read operation of the memory. One or more implementations further include writing an output to the memory.
  • Advantageously, benefits of the various implementations include reduced encoder/decoder complexities, reduced parity overhead requirements, and reduced performance degradation.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • Further advantages of the various implementations will be apparent to those of ordinary skill in the art in view of the following detailed description in which:
  • FIG. 1 depicts a page architecture of a NOR Flash Memory in one implementation where parity bits are positioned at predetermined locations on a page;
  • FIG. 2 depicts a matrix construct for an implementation providing for the sharing of parity bits in relation to a set of generator rules;
  • FIG. 3 depicts a parity matrix in accordance with one or more implementations for the particular example of four words each having four bits;
  • FIG. 4 depicts the page buffer which includes a word buffer, a word parity buffer, and a page parity buffer, in accordance with an implementation;
  • FIG. 5 depicts a memory system comprised of a memory array, a page buffer, an encoder and a decoder, in accordance with an implementation;
  • FIG. 6 depicts an architecture for the parity encoder and parity encoder controller in accordance with an implementation;
  • FIG. 7 sets forth a detailed parity encoder structure in accordance with an implementation;
  • FIG. 8 depicts a memory read structure in accordance with an implementation thereof having a memory array, sense amplifiers, and an error detector/corrector;
  • FIG. 9 further depicts a schematic representation of the error detector/corrector of FIG. 8, in accordance with an implementation;
  • FIG. 10 provides a detailed schematic of the syndrome calculator in accordance with an implementation;
  • FIG. 11 shows the implementation of when the syndrome has been computed and latched into the syndrome register and is then used in the error extraction and correcting block in accordance with an implementation;
  • FIG. 12 depicts a method for the error correction in accordance with an implementation; and
  • FIG. 13 presents a layout of a page using a correction scheme to detect one error per word and to correct one error per group of words in accordance with an implementation;
  • DETAILED DESCRIPTION
  • The following description is presented to enable one of ordinary skill in the art to make and use the invention, including its various implementations, and is provided in the context of a patent application and its requirements. Various modifications to the embodiments, implementations, and the generic principles and features described herein will be readily apparent to those skilled in the art. Thus, the invention is not intended to be limited to the embodiments, implementations and examples shown, but is to be accorded the widest scope consistent with the principles and features described herein.
  • Parity Bits Calculation
  • In one or more implementations, detecting and correcting errors in relation to read operations which differ from write operations of the memory are provided. Various implementations detect errors on a per word basis and the detected errors are then corrected on a per page basis for a memory having differing read/write operations. For instance, a differing read/write operation may include reading, in the read operation, on a per word basis and writing, in the write operation, on a per page basis.
  • FIG. 1 depicts a page architecture of a NOR Flash Memory 100 in one implementation where parity bits are positioned at predetermined locations on a page. From FIG. 1, the page 100 shows various words (110, 120, 130 and 140), parity bits (111, 121, 131 and 141), and a page parity having one or more bits (150). Further, as reference for FIG. 1 and as used hereinafter, the following symbols are further defined as: “W0, . . . , Ww-1” are the “w” words, where “w” is the number of words per page; “P0, . . . , Pw-1” are word parities and equal the number of words, “w;” “Pp” is the page parity and comprises one or more parity bits defined as the number “p.”
  • From FIG. 1, in accordance with the implementation, each word has a single parity bit (defined as “word parity”) that provides for the detection of one error per word, and “p” parity bits for the page (defined as “page parity”) that provides for correction of up to one error in the page.
  • Although FIG. 1 sets forth a NOR Flash Memory, other memories may also benefit from various implementations herein where such memories also exhibit differing read/write operations.
  • Parity Bits Computation using Parity Matrix Construct
  • To determine the number of parity bits needed, as in that of FIG. 1 for example, a computation based on a matrix construct and a page vector is determined, where the matrix construct provides for the sharing of parity bits in relation to a set of generator rules. In the construct, parity bits are to be shared as between the steps or code of error detection (“parity encoding”) and error correction (“Hamming encoding”). Further, the set of generator rules (“generator rules”), of which the construct is constrained, includes:
      • a. the number of columns of the matrix, providing a one bit parity encoding for word parity computation, is equal to the number of words in the page, s; and,
      • b. the matrix forms a Hamming Generator matrix with at least two 1's on each line of the matrix where each row is linearly independent from another.
  • FIG. 2 depicts a matrix construct 200 for an implementation providing for the sharing of parity bits in relation to a set of generator rules. In constructing the matrix, defined as G at 210, the generator rules were followed, such as in relation to the number of words in the page, and the matrix G was generated. From FIG. 2, the following depicted terms are defined as: “P” is a column vector performing one error parity encoding, having length “k” containing l′s, where “k” is the number of bits per word; “H” is a partial Hamming Generator Matrix which is repeated an amount equal to the number of words in the page. “P” and “H” are used frequently in the matrix G to decrease encoding/decoding architecture requirements for the various implementations. Additionally, though not depicted in FIG. 2, the use of the term “b” is intended to be a bit.
  • Parity Computation
  • Having determined the matrix G, a page vector for the memory is then determined, such that the computational product of the matrix G and the page vector determines the number of parity bits via a parity vector.
  • For an implementation, a page vector is defined as [W0 . . . Ww-1], where [W0]=[b0 0 b1 0 . . . bk-1 0], [Ww-1]=[b0 w-1 b1 w-1 . . . bk-1 w-1]). Then performing the computation of multiplying the page vector by the matrix G, ([W0. . . Ww-1] X G), a parity vector is determined. The parity vector product includes:
      • a. “w” word parity bits in the first “w” columns in relation to P0=W0P, P1=W1P . . . Pw-1=Ww-1P; and,
      • b. “p” page parity bits in the “p” last columns corresponding to Pp=(W0+W1+ . . . +Ww-1) X H; where,
      • c. P0, . . . , Pw-1 (i.e., “w” word parities) is computed independently from each other so only one word may be read with its associated word parity to detect if there is an error present.
  • Therefore, the number of parity bits is computed as:
      • a. Word parity bits=“w”; and,
      • b. Page parity bits=log2(k)+1; where,
      • c. Total parity bits needed=(w+log2(k)+1) to provide 1 error detection per word and 1 error correction per page.
    Parity Computation Example
  • By example (“Example 1”), for one implementation, given four (4) words per page (i.e., “w”=4), where each word contained four (4) bits (i.e., “k”32 4), the matrix is constructed to be the matrix set forth in FIG. 3. FIG. 3 depicts a parity matrix 300 in accordance with one or more implementations for the particular example of four words each having four bits of Example 1.
  • From FIG. 3, the number of columns providing a one bit parity encoding for word parity computations equals the number of words in the page. Further, from FIG. 3, the matrix also satisfies the generator rules such as the condition that the matrix formed be a Hamming Generator matrix having at least two 1's on each line of the generator matrix where each row is linearly independent from another. Additionally the matrix 300 is further decomposable into a set of four sub-matrices depicted at 310, 320, 330 and 340.
  • In the first sub-matrix of FIG. 3, at 310, columns 2, 3 and 4 (312, 313, and 314 respectively) are each null. In the second sub-matrix of FIG. 3, at 320, columns 1, 3 and 4 (321, 323, and 324 respectively) are each null. In the third sub-matrix of FIG. 3, at 330, columns 1, 2, and 4 (331, 332, and 334 respectively) are each null. In the fourth sub-matrix of FIG. 3, at 340, columns 1, 2, and 3 (341, 342, and 343 respectively) are each null. The resulting equivalence in each of the sub-matrices is further depicts that there exists significant optimization of the corresponding encoding and decoding architecture by the various implementations.
  • Accordingly, using Example 1 from above, the computations result as:
  • a. Word parity bits=4,
  • b. Page parity bits=3, and
  • c. Total Parity bits=7.
  • Therefore, from FIG. 1, each word parity block (111, 121, 131, and 141) comprises 1 word parity bit and the page parity block (150) comprises three parity bits. This result provides a reasonable overhead without undue burden and further provides an error detection/correction parity scheme complementary to the differing read/write operations of the memory.
  • Encoding and Parity Bit Insertion
  • In various implementations, an architecture for error protection, including an encoder and an error detector and corrector (EDC), is provided.
  • Encoder for Error Protection
  • By example, in an operational implementation, a process for writing a page into the memory is provided where words intended for writing are first loaded into a word buffer of a page buffer and then written following a user command. FIG. 4 depicts the page buffer 400 which includes a word buffer 410, a word parity buffer 420, and a page parity buffer 430, in accordance with an implementation. Data that has been externally provided is written to the memory array via the page buffer 400 and data that has been read from the memory array is externally output via the page buffer 400. The page buffer 400 is in signal communication with the memory array via bit lines. The page buffer 400 is further depicted in a portion of a flash memory system in accordance with an implementation.
  • FIG. 5 depicts a memory system 500 comprised of a memory array 510, a page buffer 400 and an encoder 530. Further, FIG. 5 also depicts a page decode (MUX) 540 in communication with the encoder 530 and a row decoder 550. The encoder 530, in various implementations, is further comprised of a parity encoder controller 630 and a parity encoder 620, and is further detailed as depicted in FIG. 6 for the parity encoder and controller architecture.
  • In various implementations, the memory system 500 may comprise a controller and a flash memory device having the memory array 510, wherein the controller further comprises a processor, a memory control portion, and an error detection/correction circuit of one or more embodiments herein. It will be appreciated by those skilled in the art that the processor in various implementations may control the controller, though software or circuitry may also control the controller.
  • FIG. 6 depicts an architecture 600 for the parity encoder 620, and parity encoder controller 630, in accordance with an implementation. FIG. 6 also further sets forth the architectural relation between the word buffer 410, the word parity buffer 420 and the page parity buffer 430, previously discussed in FIG. 4.
  • From FIG. 6, via the encoding step, for each word set forth in the word buffer at 410, a word parity bit (such as that of FIG. 1 by example) is computed from a parity encoder 620 controlled by a parity encoder controller 630. Each word in the word buffer 410 is inserted into the parity encoder 620 via the MUX 610 via line 611. The MUX 610 is controlled by the parity encoder controller 630. The parity encoder 620 computes the word parity 625 and the page parity 660. The word parity bit 625, after being computed, is inserted in a word parity buffer 420 via the MUX 650 which is controlled by the parity encoder controller 630. In parallel, or concurrently, a page parity 660 having one or more parity bits, is also computed by the parity encoder 620. Once all words in the word buffer 410 have been processed by the parity encoder 620 via the MUX 610, the page parity 660 is determined and the page parity bit(s) is inserted in the page parity buffer 430. Thereafter, once all parity values have been computed and inserted into their respective buffers, the write operation is performed. The parity encoder 620 is further detailed in an implementation in FIG. 7.
  • Detailed Parity Encoder
  • FIG. 7 sets forth a detailed parity encoder 620 in accordance with an implementation. The parity encoder 620 receives the words via line 611 and comprises two branches, one for the word parity calculation 710 and another for the page parity calculation at 720. The word parity calculation branch 710 processes a word 715 of “k” bits and provides an output on 1 bit as shown at 717. The word parity tree 716 is a simple XOR tree between all of the bits of the word (i.e., computation of the word with the column-vector “P”). At the end of this step, the output is sent to the word parity buffer 420.
  • The second parity calculation branch 720 processes words 725 of “k” bits to provide an output on “p” bits at 727. In the page parity calculation branch 720, the Partial Hamming Tree 726 is a XOR tree that performs the calculation to determine the product of the word with the matrix H (i.e., the partial Hamming Matrix Generator). Operatively, this calculation is repeated for all of the words of the page at 723 and the result is XORed at 722 with previous computation and registered at 728. At the end of this process, the content of the register is sent to the page parity buffer 430. The term “XOR” is well known in the art and refers to an operation that can be executed on two or more binary strings. An exemplary XOR operation includes: (0 XOR 0)=0, (0 XOR 1)=1, (1 XOR 0)=1, (1 XOR 1)=0. Thus, for another example, (0011 XOR 1001)=1010.
  • An Error Detection/Correction Structure
  • It will be appreciated by those skilled in the art that novel solutions concerning the management of the word page are also desired. Using various implementations herein, the management of the word page is also improved by using an error detector/corrector. FIG. 8 depicts a memory read structure 800 in accordance with an implementation thereof having a memory array 510, sense amplifiers 830, and an error detector/corrector 810. In further implementations, an error detector/corrector 810 is inserted after the sense amplifiers 830, as is further illustrated in FIG. 8. A row decoder 550 and word decoder 802 are also presented. Words 803 and word parities 804 are read by the memory array 510 and are decoded by the word decoder 802. Following error decoder correction by the error detector/corrector 810, status (i.e., read done or error notification) is output at the status output 805 and memory information (i.e., read word, corrected word, error sequences) are output at the memory output 806.
  • FIG. 9 depicts a schematic representation of the error detector/corrector 810 of FIG. 8, in accordance with an implementation.
  • From FIG. 9, the error detector/corrector 810 comprises a plurality of registers, including: (1) syndrome register 910 (m+1 bits) for storing the result of the syndrome computation, as further detailed below; (2) read word register 920 (k+m+1 bits) for storing the word that a user wants to read, for instance; and (3) corrected word register 930 (k+m+1 bits) for storing the results of the correction process.
  • The syndrome calculator 940 of FIG. 9 computes the information of the m+1 bits, and inserts them into the syndrome register 910. The bits contain the information concerning errors. The first bit of the syndrome provides the error detection result of the word that is currently accessed. The first bit of the syndrome is determined to be 1 at 662 if an error has been detected on the word that is currently accessed, while the first bit is determined to be 0 if there is no error detected. The m others bits of the syndrome at 663 provide the rest of the syndrome, once the entire page has been read during a correction process. The syndrome calculator 940 receives data 965 from the sense amplifiers 830 as determined by the input MUX 960 for its calculation. FIG. 10 depicts a detailed schematic of the syndrome calculator 940 in an implementation. Output from the syndrome calculator 940 includes error detection at 941 and both the first bit 662 and the other m bits 663 which are stored in the syndrome register 910. The stored bits in the syndrome register at 910 are output as (m+1) bits at, and are provided to error extraction and correction 950. Additional detail is provided herein under the section “syndrome calculator.”
  • Following the syndrome calculator 940′s calculation, the error extraction and correction 950 determines the error pattern and corrects the read word register after the page has been re-read during the correction process. The result of the correction is then placed in the corrected word register 930.
  • The output multiplexer 970 receives (k+m+1) bits from either the read word register 920 or the corrected word register 930, in response to whether the word has been corrected or not. The output multiplexer 970 outputs the memory information to the memory output at 806. In the event there is no corrected word, the bits will be received from the read word register.
  • The error controller 980 performs a number of functions including:
      • a. sequencing the operation during the error correction process;
      • b. checking that only one error or no errors are detected in a page, or, in the alternative, sending an uncorrectable error to the user;
      • c. resetting all the registers of the decoder at 802; and
      • d. informing a user as to the status output 805 that the read operation is done (i.e., read done) at 981 or that too many errors are present in the page so it cannot be corrected (i.e., multiple errors) at 982.
    Syndrome Calculator
  • FIG. 10 provides a detailed schematic 940 of the syndrome calculator in accordance with an implementation. This syndrome utilizes calculator elements of the parity encoder 700 of FIG. 7. The syndrome calculator 940 is comprised of two branches, similar to those of the parity encoder (700 of FIG. 7), where the first branch 1010 computes the error detection signal for a word and the second branch 1020 computes the p bits of the syndrome.
  • For the first branch 1010, to compute the error detection signal, the word parity bit is recomputed from the read word 1011 by the word parity tree 716. The recomputed word parity is depicted at 717. Next, the recomputed word parity bit is XORed at 1014 with the read word parity to generate the error detection signal at 941. If the error detection signal is 0, there is no error in the word. If the error detection signal is 1, then there is an error in the word and it is passed to the syndrome register 910.
  • For the second branch 1020, which computes the p last bits of the syndrome, a re-computation of the page parity is first performed by reading sequentially all the memory words of the page (i.e., similar to the process as the encoding step). When all words are processed, the recomputed page parity is present in the p bits of the recomputed page parity buffer at 1025 and is available in the register 728. Secondly, the page parity is stored in the register 728, then it is read and XORed at 1026 with the content of the register 728 to provide the p last bits of the syndrome at 1028. In this manner, each time a word is read, the first branch is used to detect error in memory words and to signal the error detected to the error controller (i.e., 980 of FIG. 9) via the error detection signal 941. The second branch is used for partial syndrome computation, when error correction is desired.
  • When the syndrome (i.e., the (m+1) bits) has been computed by the syndrome calculator 940 and latched into the syndrome register 910, it is used in the error extraction and correcting block (i.e., 950 of FIG. 9). An example of implementation of such a block is presented in FIG. 11.
  • Error Extraction & Correction
  • FIG. 11 shows an implementation of when the syndrome 942 has been computed and latched into the syndrome register 910 and is then used in error extraction and correction 950 in accordance with an implementation. From FIG. 11, the error extraction and correction 950 is further comprised of two further blocks: error extraction 1110 and error correction 1120.
  • Depending on implementation, error extraction 1110 is a combinatorial tree, a Look-Up-Table, or similar. Depending on the value of the syndrome at 942 it returns the corresponding error pattern at 1140. In operation, the size of the combinatorial tree, for various implementations, depends on the word length, not on the page length contradistinctively from a traditional approach involving one page error correction. Further, the error correction block 1120 (bitwise XOR) computes the corrected word by XORing the read word from the read word register 920 with the error pattern of 1140. The result is then sent to the corrected word register 930.
  • Error Detector/Corrector Sequencing Process
  • FIG. 12 depicts a method 1200 for the error correction in accordance with an implementation. The implementation could be that shown in the previous figures but should not be so limited. The method 1200 includes detecting and correcting errors in relation to a memory having differing read/write operations, and comprises the steps of:
  • 1. At 1210, idling the memory to an IDLE state. A user specifies the address of a word to read and launches the memory operation;
  • 2. At 1220, entering the memory to a read mode. In the read mode, the read word and read parity word are read from a memory and stored into the read word register 920 (i.e., from FIG. 9). In parallel, the read word and the read parity word are processed by the first branch of the syndrome calculator 940 to compute the error detection signal. If error detection signal is 0, the read done is signaled by the error controller 980 and is output to the read word register 920. If error detection signal is 1, an error has been detected and the read done signal stays low. The value of the error detection signal is the first bit of the syndrome and is accordingly stored into the first bit of the syndrome register.
  • 3. At 1230, re-reading the page word by word. Words are sent to the syndrome calculator 940 and the page parity is recomputed and stored into the recomputed page parity buffer. During this step, if an error is detected in another word of the page, there are at least two errors in the page, and the error correction process fails. In response, the multiple error signal is set high and the memory enters in a failure state at 1235. The error controller 980 sets the output multiplexer so that the read word register 920 is sent to the output of the memory.
  • 4. At 1240, reading the page parity from the memory and XORing with the recomputed page parity buffer to provide the last p bits of the syndrome. These last p bits are stored into the syndrome register 910. In parallel, the page parity is read from the memory and is stored in the read word register 920. The syndrome determination is completed and has been stored into the syndrome register 910.
  • 5. At 1250, the syndrome is automatically sent to the error extraction and correction 950, where it corrects the read word register 920 from the error and sends the result to the corrected word register. The error controller 980 selects the corrected word register 930 and sends it to the output of the memory. The read done signal is set high.
  • Additional Capability
  • A further implementation considers words and groups of words, where a page comprises multiple groups of words. A similar code construction can be derived to detect one error per word and to correct one error per group of words.
  • FIG. 13 presents a layout 1300 of a page using a correction scheme to detect one error per word and to correct one error per group of words in accordance with an implementation. As previously discussed, due to repeated sub-matrixes in the generator matrix G, the encoder and decoder complexities depend on the length of the word. Therefore, the encoder and decoder structures remain the same without relation to the number of words in a group of words.
  • Therefore, it will be appreciated by those skilled in the art that various embodiments are able to accommodate other error detection and correction capacities aside from a 1 error detection (1ED) per word and 1 error correction (1EC) per page methodology. For instance, given 1ED per word, it is also possible, in another implementation to construct a 1 error detection (1ED) per word and 1 error correction 2 error detection (1EC2ED) per page code. In such an implementation, an additional column may be added to H (see FIG. 2) and one additional condition may be added to the matrix construction.
  • It will be appreciated by those skilled in the art that one use of the parity encoder controller in one or more implementations is to reset register of the parity encoder and to sequence the word processing in the parity encoder.
  • As used herein, the term “flash memory” is well-known in the art and is inclusive but not limited to nonvolatile electrically erasable and programmable read only memory (“EEPROM”), memories which do not need to be refreshed, and other nonvolatile memories. A flash memory system in an implementation/embodiment herein comprises a controller and a flash memory device, wherein the controller further comprises a processor, a memory control portion, and an error detection/correction circuit of one or more embodiments. Further the processor may control the operation of the controller, though software or circuitry may also control the controller. The memory control portion serves as an interface between the controller and the flash memory device. The flash memory device further comprises a memory array and a page buffer, where the memory array further includes a plurality of word lines, a plurality of bit lines, and a plurality of memory cells that are respectively arranged in intersecting portions between the word lines and the bit lines. The memory cells of the memory array are connected to the page buffer via the bit lines. Data that has been externally input is written in the memory array via the page buffer, and data that has been read from the memory array is externally output via the page buffer. Different types of memories are intended to be included in the terms “flash memory” and “memory” herein as well. For instance in these types of memories, including the NOR Flash Memory, the read and write operations differ from one another as a reading operation may be performed on a per word basis while the writing operation may be performed on a per page basis. Other variations of memories having differing read and write operations are also understood by those skilled in the art as well, for instance a memory may also have a reading operation on a “per group of words” granularity while the writing operation is on a “per page” basis (i.e., in combination creating an “operational paradigm” for a memory having read/write operations which differ in their operational behavior).
  • As used herein, the phrases “having differing read/write operations,” “having differing read and write operations,” and similar phrases and terms, are intended to mean a situation where a read operation of a memory is of a granularity that is different than that of the programming or writing operation of the memory. For instance, a memory having differing read/write operations exists where the read versus write operations of a memory include a reading operation performed on a “per word” granularity and a writing operation performed on a “per page” basis. Similarly, differing read/write operations also exist for a memory where when compared, the read versus write operations show a difference such as a reading operation on a “group of words” granularity and a writing operation on a “per page” basis. Further, differing read/write operations also exist in a memory where a read operation is performed on a “per word” granularity and a write operation is performed on a “group of words” basis.
  • As used in various implementations/embodiments herein, the term “generator rules” is defined to include: (1) the number of columns of the matrix providing a one bit parity encoding for word parity computations being equal to the number of words in the page,; and (2) the matrix forming a Hamming Generator matrix with at least two 1's on each line of the matrix where each row is linearly independent from another; accordingly, other variations including modifications and additions hereto are also envisioned.
  • Although the present invention has been described in accordance with the embodiments shown, one of ordinary skill in the art will readily recognize that there are variations to the embodiments and those variations would be within the spirit and scope of the present invention. Examples of various implementations include memory devices, memory applications, software, firmware, hardware and circuitry, for instance. Accordingly, many modifications may be made by one of ordinary skill in the art without departing from the spirit and scope of the appended claims.

Claims (17)

1-25. (canceled)
26. A system comprising:
a memory array; and
an error detection and correction circuit configured to perform operations comprising:
determining a respective word error detecting bit for each of one or more words on a page of the memory array;
determining a page error detecting bit for the page;
reading a first word from the page;
detecting an error in the first word using the respective word error detecting bit;
correcting the error in the first word using the respective word error detecting bit and the page error detecting bit; and
writing the page with the corrected first word to the memory array.
27. The system of claim 26, wherein the memory array is a NOR flash array.
28. The system of claim 26, wherein determining the page error detecting bit comprises using an error detecting code and the words on the page and the word error detecting bits.
29. The system of claim 26, wherein the error detection and correction circuit comprises an encoder configured to determine the word error detecting bits and the page error detecting bit.
30. The system of claim 26, further comprising a word buffer, one or more parity buffers, and a parity encoder controlled by a parity encoder controller.
31. The system of claim 26, the operations further comprising determining shared parity bits between the word error detecting bits and the page error detecting bit by combining the word error detecting bits with the page error detecting bit.
32. The system of claim 26, wherein determining the word error detecting bits and the page error detecting bits comprises computing a product of a generator matrix and a page vector representing the page.
33. The system of claim 26, wherein the generator matrix forms a Hamming Generator matrix, each row of the generator matrix being linearly independent from each other row.
34. A system comprising:
a memory array; and
an error detection and correction circuit configured to perform operations comprising:
specifying an address of one or more words to read on a page of the memory array;
computing an error detection signal being a first bit of a syndrome;
re-reading the page by re-reading each of the one or more words and determining a page parity for the page;
determining other bits of the syndrome for correcting the error; and
outputting a corrected word to the memory array.
35. The system of claim 34, the operations further comprising idling the memory and entering a read mode for the memory.
36. The system of claim 34, the operations further comprising generating an error detection and correcting code, wherein the code is generated in relation to a read operation and a write operation of the memory.
37. The system of claim 34, the operations further comprising setting a read done signal to a high setting when the error detection signal is of a value of zero.
38. The system of claim 34, wherein re-reading the page further comprises re-computing the page parity and storing the page parity in a recomputed page parity buffer.
39. The system of claim 34, the operations further comprising automatically sending the syndrome for error extraction and correction.
40. The system of claim 34, wherein the memory array is a NOR flash array.
41. The system of claim 34, further comprising a syndrome register configured to latch the syndrome.
US13/335,725 2008-02-14 2011-12-22 Error detecting/correcting scheme for memories Active US8214729B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/335,725 US8214729B2 (en) 2008-02-14 2011-12-22 Error detecting/correcting scheme for memories

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/031,289 US8112699B2 (en) 2008-02-14 2008-02-14 Error detecting/correcting scheme for memories
US13/335,725 US8214729B2 (en) 2008-02-14 2011-12-22 Error detecting/correcting scheme for memories

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US12/031,289 Continuation US8112699B2 (en) 2008-02-14 2008-02-14 Error detecting/correcting scheme for memories

Publications (2)

Publication Number Publication Date
US20120096334A1 true US20120096334A1 (en) 2012-04-19
US8214729B2 US8214729B2 (en) 2012-07-03

Family

ID=40956287

Family Applications (2)

Application Number Title Priority Date Filing Date
US12/031,289 Active 2030-11-23 US8112699B2 (en) 2008-02-14 2008-02-14 Error detecting/correcting scheme for memories
US13/335,725 Active US8214729B2 (en) 2008-02-14 2011-12-22 Error detecting/correcting scheme for memories

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US12/031,289 Active 2030-11-23 US8112699B2 (en) 2008-02-14 2008-02-14 Error detecting/correcting scheme for memories

Country Status (3)

Country Link
US (2) US8112699B2 (en)
CN (1) CN101510448B (en)
TW (1) TW200947449A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108121616A (en) * 2016-11-29 2018-06-05 台湾积体电路制造股份有限公司 Memory circuitry, multiport memory circuit and its operating method

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8719661B1 (en) * 2010-11-15 2014-05-06 Vmware, Inc. Transparent and lightweight recovery from hardware memory errors
US8880970B2 (en) * 2008-12-23 2014-11-04 Conversant Intellectual Property Management Inc. Error detection method and a system including one or more memory devices
KR101678909B1 (en) * 2009-09-17 2016-11-23 삼성전자주식회사 Flash memory system and erase refresh methods for the same
WO2012079216A1 (en) * 2010-12-13 2012-06-21 Mediatek Singapore Pte. Ltd. Nor flash memory controller
EP2798477A4 (en) 2011-12-29 2015-08-26 Intel Corp Aggregated page fault signaling and handline
US9275696B2 (en) * 2012-07-26 2016-03-01 Empire Technology Development Llc Energy conservation in a multicore chip
JP5794240B2 (en) * 2013-02-05 2015-10-14 ソニー株式会社 Error detection and correction apparatus, error detection and correction method, information processing apparatus, and program
US9455020B2 (en) * 2014-06-05 2016-09-27 Micron Technology, Inc. Apparatuses and methods for performing an exclusive or operation using sensing circuitry
US9529671B2 (en) * 2014-06-17 2016-12-27 Arm Limited Error detection in stored data values
KR102193682B1 (en) 2014-08-01 2020-12-21 삼성전자주식회사 Semiconductor memory device having selective ECC function
RU2682843C1 (en) * 2015-03-10 2019-03-21 Тосиба Мемори Корпорейшн Memory device and memory system
US10599518B2 (en) 2015-12-31 2020-03-24 Texas Instruments Incorporated Protecting data memory in a signal processing system
KR20180003320A (en) * 2016-06-30 2018-01-09 삼성전자주식회사 Method for performing recovery of data in product code, memory system and RAID storage system adopting the same
US10269422B2 (en) * 2017-09-08 2019-04-23 Cnex Labs, Inc. Storage system with data reliability mechanism and method of operation thereof
CN109669800B (en) * 2017-10-13 2023-10-20 爱思开海力士有限公司 Efficient data recovery for write path errors
US11438015B2 (en) * 2020-07-10 2022-09-06 Taiwan Semiconductor Manufacturing Company, Ltd. Two-level error correcting code with sharing of check-bits

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4972416A (en) * 1987-11-13 1990-11-20 Matsushita Electric Industrial Co., Ltd. Error detection and correction method
US5410546A (en) * 1993-11-01 1995-04-25 Storage Technology Corporation Apparatus and method for CRC computation over fixed length blocks containing variable length packets of data received out of order
US6510537B1 (en) * 1998-08-07 2003-01-21 Samsung Electronics Co., Ltd Semiconductor memory device with an on-chip error correction circuit and a method for correcting a data error therein
US7213191B2 (en) * 2003-10-24 2007-05-01 Hon Hai Precision Industry Co., Ltd. System and method for securely storing data in a memory
US7779341B2 (en) * 2005-09-07 2010-08-17 Samsung Electronics Co., Ltd. NAND flash memory device performing error detecting and data reloading operation during copy back program operation

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100468367C (en) * 2003-10-29 2009-03-11 鸿富锦精密工业(深圳)有限公司 Solid state storage unit safety storage system and method

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4972416A (en) * 1987-11-13 1990-11-20 Matsushita Electric Industrial Co., Ltd. Error detection and correction method
US5410546A (en) * 1993-11-01 1995-04-25 Storage Technology Corporation Apparatus and method for CRC computation over fixed length blocks containing variable length packets of data received out of order
US6510537B1 (en) * 1998-08-07 2003-01-21 Samsung Electronics Co., Ltd Semiconductor memory device with an on-chip error correction circuit and a method for correcting a data error therein
US7213191B2 (en) * 2003-10-24 2007-05-01 Hon Hai Precision Industry Co., Ltd. System and method for securely storing data in a memory
US7779341B2 (en) * 2005-09-07 2010-08-17 Samsung Electronics Co., Ltd. NAND flash memory device performing error detecting and data reloading operation during copy back program operation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108121616A (en) * 2016-11-29 2018-06-05 台湾积体电路制造股份有限公司 Memory circuitry, multiport memory circuit and its operating method

Also Published As

Publication number Publication date
TW200947449A (en) 2009-11-16
US8214729B2 (en) 2012-07-03
US20090210774A1 (en) 2009-08-20
US8112699B2 (en) 2012-02-07
CN101510448B (en) 2013-05-08
CN101510448A (en) 2009-08-19

Similar Documents

Publication Publication Date Title
US8214729B2 (en) Error detecting/correcting scheme for memories
KR101750662B1 (en) Circuits, apparatuses, and methods for correcting data errors
KR100921748B1 (en) Memory system using the interleaving scheme and method having the same
US7823043B2 (en) Corruption-resistant data porting with multiple error correction schemes
KR100842680B1 (en) Ecc controller for use in flash memory device and memory system including the same
US7937628B2 (en) Method and system for a non-volatile memory with multiple bits error correction and detection for improving production yield
US8762821B2 (en) Method of correcting adjacent errors by using BCH-based error correction coding
US8635508B2 (en) Systems and methods for performing concatenated error correction
US8055982B2 (en) Error correction system and method
US20180167088A1 (en) Error-Correcting Code Method and System with Hybrid Block Product Codes
KR20170056407A (en) Memory system for encoding and decoding data
JP2008165808A (en) Error correction circuit and method for reducing miscorrection probability and semiconductor memory device including the circuit
US10848184B2 (en) Method for controlling storage device with aid of error correction and associated apparatus
US8381085B2 (en) Semiconductor memory device and data processing method thereof
US20090150751A1 (en) Memory system that uses an interleaving scheme and a 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
KR101482684B1 (en) Decoding method and method of operating memory system including the same
US20160283325A1 (en) Errors and erasures decoding from multiple memory devices
US9189327B2 (en) Error-correcting code distribution for memory systems
CN112346903B (en) Redundant array decoding system of independent disk for performing built-in self-test
KR101157516B1 (en) BCH codec with improved data processing efficiency
JP2020046823A (en) Memory system
CN110113058B (en) Coding and decoding method, device, equipment and computer readable storage medium
US20230223961A1 (en) Iterative decoder for correcting dram device failures
Gherman et al. Binary linear ECCs optimized for bit inversion in memories with asymmetric error probabilities

Legal Events

Date Code Title Description
AS Assignment

Owner name: ATMEL CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BENOIT, GODARD;DAGA, JEAN-MICHEL;SIGNING DATES FROM 20080211 TO 20080212;REEL/FRAME:027811/0065

Owner name: ATMEL ROUSSET S.A.S., FRANCE

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ATMEL CORPORATION;REEL/FRAME:027811/0134

Effective date: 20100303

STCF Information on status: patent grant

Free format text: PATENTED CASE

CC Certificate of correction
FPAY Fee payment

Year of fee payment: 4

AS Assignment

Owner name: MICROCHIP TECHNOLOGY INCORPORATED, ARIZONA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROCHIP TECHNOLOGY ROUSSET;REEL/FRAME:051303/0162

Effective date: 20191216

Owner name: MICROCHIP TECHNOLOGY ROUSSET, FRANCE

Free format text: CHANGE OF NAME;ASSIGNOR:ATMEL ROUSSET S.A.S.;REEL/FRAME:051322/0775

Effective date: 20170717

AS Assignment

Owner name: ATMEL CORPORATION, ARIZONA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT;REEL/FRAME:051398/0809

Effective date: 20191220

Owner name: MICROCHIP TECHNOLOGY INCORPORATED, ARIZONA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT;REEL/FRAME:051398/0809

Effective date: 20191220

Owner name: ATMEL CORPORATION, ARIZONA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT;REEL/FRAME:051398/0827

Effective date: 20191220

Owner name: MICROCHIP TECHNOLOGY INCORPORATED, ARIZONA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT;REEL/FRAME:051398/0827

Effective date: 20191220

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8

AS Assignment

Owner name: SONRAI MEMORY LIMITED, IRELAND

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MICROCHIP TECHNOLOGY INC.;ATMEL CORPORATION;MICROSEMI CORPORATION;REEL/FRAME:051799/0956

Effective date: 20200203

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 12

AS Assignment

Owner name: NERA INNOVATIONS LIMITED, IRELAND

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SONRAI MEMORY LIMITED;REEL/FRAME:066778/0178

Effective date: 20240305