WO2018005187A1 - Procédés de correction d'erreurs à l'aide de réseaux d'éléments de changement résistifs - Google Patents

Procédés de correction d'erreurs à l'aide de réseaux d'éléments de changement résistifs Download PDF

Info

Publication number
WO2018005187A1
WO2018005187A1 PCT/US2017/038478 US2017038478W WO2018005187A1 WO 2018005187 A1 WO2018005187 A1 WO 2018005187A1 US 2017038478 W US2017038478 W US 2017038478W WO 2018005187 A1 WO2018005187 A1 WO 2018005187A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
error
pattern
subsection
errors
Prior art date
Application number
PCT/US2017/038478
Other languages
English (en)
Inventor
Sheyang NING
Original Assignee
Nantero, Inc.
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
Priority claimed from US15/621,788 external-priority patent/US10261861B2/en
Application filed by Nantero, Inc. filed Critical Nantero, Inc.
Publication of WO2018005187A1 publication Critical patent/WO2018005187A1/fr

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2213/00Indexing scheme relating to G11C13/00 for features not covered by this group
    • G11C2213/70Resistive array aspects
    • G11C2213/71Three dimensional array
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2213/00Indexing scheme relating to G11C13/00 for features not covered by this group
    • G11C2213/70Resistive array aspects
    • G11C2213/77Array wherein the memory element being directly connected to the bit lines and word lines without any access device being used
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2213/00Indexing scheme relating to G11C13/00 for features not covered by this group
    • G11C2213/70Resistive array aspects
    • G11C2213/79Array wherein the access device being a transistor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/04Arrangements for writing information into, or reading information out from, a digital store with means for avoiding disturbances due to temperature effects

Definitions

  • the present disclosure relates generally to error correction methods suitable for use with resistive change element arrays, and, more specifically, to such error correction methods that reduce parity overhead and improve error decoding latency within resistive change element arrays while still maintaining a required correctable bit error rate (BER).
  • BER bit error rate
  • Resistive change devices and arrays are well known in the semiconductor and electronics industry. Such devices and arrays, for example, include, but are not limited to, phase change memory, solid electrolyte memory, metal oxide resistance memory, and carbon nanotube memory such as NRAMTM.
  • Resistive change devices and arrays store information by adjusting a resistive change element, typically comprising some material that can be adjusted between a number of non-volatile resistive states in response to some applied stimuli, within each individual array cell between two or more resistive states.
  • a resistive change element typically comprising some material that can be adjusted between a number of non-volatile resistive states in response to some applied stimuli, within each individual array cell between two or more resistive states.
  • each resistive state within a resistive change element cell can correspond to a data value which can be programmed and read back by supporting circuitry within the device or array.
  • a resistive change element might be arranged to switch between two resistive states: a high resistive state (which might correspond to a logic "0") and a low resistive state (which might correspond to a logic "1 "). In this way, a resistive change element can be used to store one binary digit (bit) of data.
  • a resistive change element might be arranged to switch between four resistive states, so as to store two bits of data.
  • a resistive change element might be arranged to switch between eight resistive states, so as to store three bits of data.
  • a resistive change element might be arranged to switch between 2" resistive states, so as to store n bits of data.
  • a resistive change element may exhibit a higher error rate when attempting to place it into one of its resistive states compared to other resistive states.
  • This error bias can be substantially large.
  • two-state resistive change element with states SET and RESET may show an error distribution of 80% RESET and 20% SET, wherein RESET errors occur four times as often as SET errors.
  • the present disclosure relates to error correction methods for arrays of resistive change elements and, more specifically, to such error correction methods that provide reduced parity overhead and latency while still maintaining a required correctable bit error rate (BER).
  • BER bit error rate
  • the present disclosure provides a method for error correction within a resistive change element array.
  • the method comprises first dividing the array into a plurality of subsections, each subsection comprising one flag cell and a plurality of data cells.
  • Each of the data cells is comprised of a resistive change element capable of being adjusted between two non-volatile resistive states.
  • the method next comprises receiving a set of input data to be programmed into the array.
  • the method then comprises initializing all of the data cells within each subsection to an initial condition and all of the flag cells to a deactivated state.
  • the method then comprises activating the flag cell within any of the subsections in which a data cell failed to initialize and is due to be programmed into a state matching the initial condition according to the set of input data.
  • the method next comprises programming each subsection with an inactivated flag cell according to the input data and each subsection with an activated flag cell according to the logical inverse of the input data to realize a set of programmed data for each subsection.
  • the method next comprises accessing the programmed data during a read operation to realize a set of output data for each subsection.
  • the method comprises inverting said output data for each subsection with an activated flag cell, wherein the step of inverting according to the flag cells provides a first error correction operation.
  • the method further comprises encoding the input data according to a second error correction operation prior to the programming step and decoding the output data according to this second error correction operation subsequent to the accessing step.
  • the second error correction operation is Bose-Chaudhuri-Hocquenghem (BCH) error correction algorithm.
  • BCH Bose-Chaudhuri-Hocquenghem
  • the combined parity overhead from the first error correction operation and the second error correction operation is less than the parity overhead of the second error correction operation used alone for an equivalent correctable bit error rate (BER).
  • the combined decoding latency for the first error correction operation and the second error correction operation is less than the decoding latency of the second error correction operation used alone for an equivalent correctable bit error rate (BER).
  • the first error correction operation corrects initialization errors and the second error correction operation corrects programming errors.
  • the total number of errors does not change no matter which error correction scheme is used.
  • the initialization error will be found as programming error by using conventional error correction scheme, BCH along.
  • the initial condition for a resistive change element array is a RESET state and the first error correction operation is capable of correcting RESET errors.
  • the initial condition for a resistive change element array is a SET state and the first error correction operation is capable of correcting SET errors.
  • the first error correction operation is capable of correcting at least one initialization error per subsection within the resistive change element array.
  • the first error correction operation and the second error correction operation provide a preselected correctable bit error rate (BER).
  • the preselected bit error correction rate is on the order of 0.1%.
  • the preselected bit error correction rate is on the order of 0.2%.
  • the resistive change elements are two-terminal nanotube switching elements comprising a nanotube fabric.
  • the resistive change elements are metal oxide memory elements.
  • the resistive change elements are phase change memory elements.
  • the resistive change element array is a memory array.
  • FIG. 1A illustrates an exemplary layout of a vertically oriented resistive change cell.
  • FIG. IB illustrates an exemplary layout of a horizontally oriented resistive change cell.
  • FIG. 2 is a simplified schematic illustrating an exemplary architecture for an array of resistive change elements wherein FET selection devices are used within the cells of the array.
  • FIG. 3 is table detailing READ and programming voltages required for adjusting or inspecting CELL00 of the array architecture illustrated in FIG. 2.
  • FIG. 4 is a simplified schematic illustrating an exemplary architecture for an array of resistive change elements wherein no selection devices or other current limiting circuitry are used within the cells of the array.
  • FIG. 5 is a perspective drawing illustrating the layout of a 3D array of 1-R resistive change element cells
  • FIG. 6 is a graph plotting parity overhead for memory arrays using conventional Bose-Chaudhuri-Hocquenghem (BCH) error correction algorithms.
  • BCH Bose-Chaudhuri-Hocquenghem
  • FIG. 7A is a graph plotting the error rates observed from an exemplary resistive change element array (both SET and RESET errors).
  • FIG. 7B is a graph plotting breaking out only the RESET errors from the error rates observed from an exemplary resistive change element array (as shown in FIG. 7A).
  • FIG. 7C is a graph plotting breaking out only the SET errors from the error rates observed from an exemplary resistive change element array (as shown in FIG. 7A).
  • FIG. 8A is a diagram of an exemplary resistive element array with 8-kilobyte user data divided into eight blocks with 1 -kilobyte user data, each block using conventional BCH error correction alone.
  • FIG. 8B is a diagram showing a block of FIG. 8A in more detail.
  • FIG. 8C is a table detailing the parity overhead for different correctable bit error rate (BER) for the exemplary 8-kilobyte resistive element array of FIG. 8A (using conventional BCH error correction alone).
  • BER bit error rate
  • FIG. 9A is a diagram of an exemplary resistive element array with 8-kilobyte user data divided into eight blocks with 1 -kilobyte user data, each block divided into four array subsections and using the reverse flag error correction (RFEC) method of the present disclosure.
  • RFEC reverse flag error correction
  • FIG. 9B is a diagram showing a 1 -kilobyte block of FIG. 9A in more detail.
  • FIG. 9C is a table detailing the parity overhead for different correctable bit error rate (BER) for the exemplary resistive element array of FIG. 9A (using the RFEC method of the present disclosure).
  • BER bit error rate
  • FIG. 10 is a flow chart detailing an exemplary programming/read back operation that uses the reverse flag error correction (RFEC) method of the present disclosure.
  • RFEC reverse flag error correction
  • FIG. 11A is a diagram illustrating an exemplary error correction operation according to the RFEC method of the present disclosure used to correct a single RESET error on a cell intended to be written with a logic "0".
  • FIG. 11B is a diagram illustrating an exemplary error correction operation according to the RFEC method of the present disclosure used to correct a single RESET error on a cell intended to be written with a logic "1 ".
  • FIG. llC is a diagram illustrating an exemplary error correction operation according to the RFEC method of the present disclosure used to correct a single SET error.
  • FIG. 11D is a diagram illustrating an exemplary error correction operation according to the RFEC method of the present disclosure used to correct two RESET errors on two cells intended to be written with a logic "0".
  • FIG. HE is a diagram illustrating an exemplary error correction operation according to the RFEC method of the present disclosure used to correct two RESET errors on two cells wherein one is intended to be written with a logic "0" and the other is intended to be written with a logic "1".
  • FIG. 12A is a simplified schematic illustrating an exemplary encoding circuit for use with the RFEC method of the present disclosure.
  • FIG. 12B is a simplified schematic illustrating an exemplary decoding circuit for use with the RFEC method of the present disclosure.
  • FIG. 13A is a table detailing parity overhead for different subsection size configurations on an exemplary array with 8-kilobyte data using the reverse flag error correction (RFEC) method of the present disclosure to obtain a correctable bit error rate (BER) of 0.2%.
  • RFEC reverse flag error correction
  • FIG. 13B is a bar graph comparing the parity overhead of the array configurations detailed in FIG. 13A (using the RFEC method of the present disclosure) with the parity overhead required for conventional BCH methods alone.
  • FIG. 13C is a table detailing parity overhead for different subsection size configurations on an exemplary array with 8-kilobyte data using the RFEC method of the present disclosure to obtain a correctable bit error rate (BER) of 0.3%.
  • BER bit error rate
  • FIG. 13D is a bar graph comparing the parity overhead of the array configurations detailed in FIG. 13C (using the RFEC method of the present disclosure) with the parity overhead required for conventional BCH methods alone.
  • FIG. 14A is a table detailing parity overhead for different subsection size configurations on an exemplary array with 8-kilobyte data using the dual reverse flag error correction (DRFEC) method of the present disclosure to obtain a correctable bit error rate (BER) of 0.2%.
  • DPFEC dual reverse flag error correction
  • FIG. 14B is a bar graph comparing the parity overhead of the array configurations detailed in FIG. 14A (using the DRFEC method of the present disclosure) with the parity overhead required for conventional BCH methods alone.
  • FIG. 14C is a table detailing parity overhead for different subsection size configurations on an exemplary array with 8-kilobyte data using the DRFEC method of the present disclosure to obtain a correctable bit error rate (BER) of 0.3%.
  • BER bit error rate
  • FIG. 14D is a bar graph comparing the parity overhead of the array configurations detailed in FIG. 14C (using the DRFEC method of the present disclosure) with the parity overhead required for conventional BCH methods alone.
  • FIG. 15A is a table detailing parity overhead for different subsection size configurations on an exemplary array with 8-kilobyte data using the advanced bit flip (ABF) method of the present disclosure to obtain a correctable bit error rate (BER) of 0.2%.
  • ABSF advanced bit flip
  • FIG. 15B is a bar graph comparing the parity overhead of the array configurations detailed in FIG. 15A (using the ABF method of the present disclosure) with the parity overhead required for conventional BCH methods alone.
  • FIG. 15C is a table detailing parity overhead for different subsection size configurations on an exemplary array with 8-kilobyte data using the ABF method of the present disclosure to obtain a correctable bit error rate (BER) of 0.3%.
  • BER bit error rate
  • FIG. 15D is a bar graph comparing the parity overhead of the array configurations detailed in FIG. 15C (using the ABF method of the present disclosure) with the parity overhead required for conventional BCH methods alone.
  • FIG. 16A is a bar graph comparing the parity overhead for an exemplary thirty-two subsection array configured for use with the RFEC, DRFEC, and ABF methods of the present disclosure with the parity overhead required for conventional BCH methods alone at five correctable bit error rates.
  • FIG. 16B is a bar graph comparing the parity overhead of the array configurations detailed in FIG. 13A, 14A, and 15A (using the methods of the present disclosure) with the parity overhead required for conventional BCH methods alone to achieve a correctable BER of 0.2%.
  • FIG. 16C is a bar graph comparing the parity overhead of the array configurations detailed in FIG. 13A, 14A, and 15A (using the methods of the present disclosure) with the parity overhead required for conventional BCH methods alone to achieve a correctable BER of 0.3%.
  • FIG. 17A is a diagram of an exemplary resistive element array with 8-kilobyte user data divided into eight blocks with 1 -kilobyte user data, each block divided into four array subsections and using the dual reverse flag error correction (DRFEC) method of the present disclosure.
  • DPFEC dual reverse flag error correction
  • FIG. 17B is a diagram showing a 1-kilobyte block of FIG. 17A in more detail.
  • FIG. 18 is a flow chart detailing an exemplary programming/read back operation that uses the DRFEC method of the present disclosure.
  • FIG. 19A is a diagram illustrating an exemplary error correction operation according to the DRFEC method of the present disclosure used to correct a single RESET error on an odd cell intended to be written with a logic "0".
  • FIG. 19B is a diagram illustrating an exemplary error correction operation according to the DRFEC method of the present disclosure used to correct a single RESET error on an even cell intended to be written with a logic "0".
  • FIG. 19C is a diagram illustrating an exemplary error correction operation according to the DRFEC method of the present disclosure used to correct a single SET error.
  • FIG. 19D is a diagram illustrating an exemplary error correction operation according to the DRFEC method of the present disclosure used to correct two RESET errors on one even and one odd cell intended to be written with a logic "0".
  • FIG. 19E is a diagram illustrating an exemplary error correction operation according to the DRFEC method of the present disclosure used to correct two RESET errors on one even and one odd cell wherein one is intended to be written with a logic "0" and the other is intended to be written with a logic "1".
  • FIG. 19F is a diagram illustrating an exemplary error correction operation according to the DRFEC method of the present disclosure used to correct two RESET errors on two odd cells wherein one is intended to be written with a logic "0" and the other is intended to be written with a logic "1 ".
  • FIG. 20A is a simplified schematic illustrating an exemplary encoding circuit for use with the DFREC method of the present disclosure.
  • FIG. 20B is a simplified schematic illustrating an exemplary decoding circuit for use with the DFREC method of the present disclosure.
  • FIG. 21A is a diagram showing eight exemplary data encoding patterns and corresponding pattern reference codes (PRCs) for use with the three-flag 2-bit advanced bit flip (ABF) method of the present disclosure.
  • PRCs pattern reference codes
  • FIG. 21B is a diagram showing all 24 possible encoding patterns for a 2-bit subset for use with the 2-bit ABF methods of the present disclosure.
  • FIG. 22A is a diagram of an exemplary resistive element array with 8-kilobyte user data divided into eight blocks with 1 -kilobyte user data, each block divided into four array subsections and using the three-flag advanced bit flip (ABF) method of the present disclosure.
  • ABSF three-flag advanced bit flip
  • FIG. 22B is a diagram showing a 1 -kilobyte block of FIG. 22A in more detail.
  • FIG. 23 is a flow chart detailing an exemplary programming/read back operation that uses the ABF methods of the present disclosure.
  • FIG. 24A is a diagram illustrating an exemplary error correction operation according to the three-flag 2-bit ABF method of the present disclosure used to correct two RESET errors on two even cells wherein one is intended to be written with a logic "0" and the other is intended to be written with a logic "1 ".
  • FIG. 24B is a diagram illustrating an exemplary error correction operation according to the three-flag 2-bit ABF method of the present disclosure used to correct two RESET errors on two odd cells intended to be written with a logic "0".
  • FIG. 24C is a diagram illustrating an exemplary error correction operation according to the three-flag 2-bit ABF method of the present disclosure used to correct a single SET error.
  • FIG. 24D is a diagram illustrating an exemplary error correction operation according to the three-flag 2-bit ABF method of the present disclosure used to correct two RESET errors on one even and one odd cell wherein the even cell is intended to be written with a logic "0" and the odd cell is intended to be written with a logic "1 ".
  • FIG. 24E is a diagram illustrating an exemplary error correction operation according to the three-flag 2-bit ABF method of the present disclosure used to correct two RESET errors on one even and one odd cell intended to be written with a logic "0".
  • FIG. 24F is a diagram illustrating an exemplary error correction operation according to the three-flag 2-bit ABF method of the present disclosure used to correct three RESET errors on one even and two odd cells wherein one odd cell is intended to be written with a logic "0" and the others are intended to be written with a logic "1 ".
  • FIG. 25A is a scatter plot showing the parity overhead necessary to achieve five correctable BERs for various subsection sizes using the five-flag 2-bit ABF method.
  • FIG. 25B is a table comparing the parity overhead necessary to achieve a 0.2% correctable BER for each of the DFEC methods of the present disclosure.
  • FIG. 25C is a table showing the optimal subsection configuration and the corresponding parity overhead for each of the DFEC methods of the present disclosure for five correctable BERs.
  • FIG. 26A is a diagram illustrating an exemplary error correction operation according to the five-flag 2-bit ABF method of the present disclosure used to correct at least two initialization errors in a subsection of a resistive change element array.
  • FIG. 26B is a diagram illustrating an exemplary error correction operation according to the five-flag 2-bit ABF method of the present disclosure used to correct a maximum of 100% of initialization errors in a subsection of a resistive change element array due to the favorable error pattern.
  • FIG. 26C is a diagram illustrating an exemplary error correction operation according to the five-flag 2-bit ABF method of the present disclosure used to correct a minimum of 50% of initialization errors in a subsection of a resistive change element array due to the unfavorable error pattern.
  • FIG. 26D is a diagram illustrating an exemplary error correction operation according to the five-flag 2-bit ABF method of the present disclosure used to correct between the minimum and maximum percentage of initialization errors in a subsection of a resistive change element array due to the error pattern.
  • FIG. 26E is a diagram illustrating an exemplary error correction operation according to the five-flag 2-bit ABF method of the present disclosure used to identify the optimal encoding pattern for an exemplary error pattern in a resistive change element array.
  • FIG. 26F is a diagram illustrating an exemplary error correction operation according to the five-flag 2-bit ABF method of the present disclosure used to identify the optimal encoding pattern for an exemplary error pattern in a resistive change element array with an additional matching step.
  • FIG. 27 is a simplified block diagram of a resistive change element array memory system suitable for use with the error correction methods of the present disclosure.
  • the present disclosure relates to error correction methods for resistive change element arrays. More specifically, the present disclosure teaches distributed flag error correction (DFEC) methods for resistive change element arrays that provide reduced parity overhead and reduced latency as compared with traditional error correction methods. Within certain applications the error correction methods of the present disclosure are used in concert with conventional error correction techniques to reduce the number of parity bits required for a desired correctable bit error rate (BER).
  • BER bit error rate
  • a block of resistive change elements within an array is divided into a number of subsections by distributing flag cells across the memory block.
  • the parity overhead added by the distributed flags may be calculated by dividing the number of flag cells by the number of data cells remaining in the subsection (e.g., 1/512 or 0.2% for a 512-bit subsection with one flag bit).
  • the entire subsection is put into an initial state (either a SET or a RESET state, as befits the needs of a specific application).
  • Each subsection is then checked to determine if any cells failed to initialize into the required state.
  • the error pattern (that is, the number and position of errors in the subsection) is then compared to the input data (that is, the data to be written to the subsection) in a data pattern matching (DPM) step. If the input data for an error cell is the opposite of the selected initialization state, then the error cell is already in the desired programming state and there is effectively no error. If the input data does not match the current logical state of the error cell, however, one or more of the subsection flags are activated to indicate the appropriate encoding pattern to apply to the input data in order to correct the error(s) according to a pattern reference code (PRC).
  • PRC pattern reference code
  • the input data for the subsection is then encoded according to the encoding pattern indicated by the pattern reference code (PRC) stored in the flag bits. If the pattern reference code (PRC) indicates there are no effective errors, the input data may remain unchanged. Otherwise the input data is selectively inverted to match the error pattern of the subsection such that the error cells are now in the desired programming state and are no longer effectively an error.
  • PRC pattern reference code
  • the DFEC encoded input data, along with the flag bits activated with the corresponding pattern reference code (PRC) is processed with a conventional error correction method (such as, but not limited to, a Bose-Chaudhuri-Hocquenghem (BCH) error correction algorithm) and then programmed into the subsection.
  • BCH Bose-Chaudhuri-Hocquenghem
  • the input data After the input data is written, it can be read out and decoded using the conventional error correction method to correct any remaining errors, including write errors, data retention errors, and any initialization errors which were not corrected by the DFEC methods. If a flag cell is in an activated state, however, the read data may differ from the input data as it has been further encoded according to a DFEC encoding pattern. A reverse data pattern matching (RDPM) step is then performed, wherein the encoding pattern indicated by PRC stored in the flag bits is reversed to decode the read data and thereby recover the original input data. In this way, the initialization and programming errors in a memory array may be corrected by combining the DFEC methods with a secondary error correction method.
  • RDPM reverse data pattern matching
  • the present disclosure provides three examples of DFEC methods using different numbers of flag bits per subsection which are distributed across a memory block.
  • the number of flag bits used to delimitate a subsection determines the number of error patterns which may be matched to the input data in a data pattern matching (DPM) step.
  • DPM data pattern matching
  • a single flag may match the input data according to two patterns (inverted and not inverted)
  • two flag bits may match the input data according to four patterns
  • three flag bits may match the input data according to eight patterns
  • N flag bits may match the input data according to 2 N patterns.
  • Increasing the number of distributed flag bits may allow the correction of a larger number of errors by employing more complex patterns, thereby reducing the number of parity bits required for a second error correction algorithm while also increasing the DFEC overhead.
  • each method may be ideally suited to correct certain types and patterns of errors, and may introduce differing amounts of latency.
  • the DFEC method employed, and the specific configuration thereof, may therefore be chosen according to the requirements of a specific application, as will be discussed in depth below.
  • RFEC reverse flag error correction
  • single-flag DFEC a single flag bit per subsection is used to indicate that at least one data cell in the subsection is in an incorrect state following initialization (that is, for instance, a cell in a logic "1" state which is due to be programmed to a logic "0").
  • DPM data pattern matching
  • RDPM reverse data pattern matching
  • a second DFEC method uses two flag bits per subsection, referred to as dual reverse flag error correction (DRFEC) or dual-flag DFEC.
  • DPFEC dual reverse flag error correction
  • one flag bit indicates an effective initialization error in the even bits within the subsection while the other indicates an effective initialization error in the odd bits.
  • a DPM step activates one or both of the flags if an effective initialization error is detected in their respective data cells.
  • an effective initialization error is detected in at least one even data cell the even flag bit is activated, and if at least one initialization error is detected in an odd data cell the odd flag bit is activated.
  • a third DFEC method uses the flag bits in each subsection to store a pattern reference code (PRC) which refers to an encoding pattern.
  • PRC pattern reference code
  • all of the data bits within the array are divided into data subsets (that is, groups of two or more data bits grouped together) during the data pattern matching (DPM) and reverse DPM (RDPM) steps.
  • DPM data pattern matching
  • RDPM reverse DPM
  • a DPM step is initiated which matches the input data to the array subsets containing at least one error to select an encoding pattern from a set of reversible encoding patterns.
  • Each encoding pattern provides a way to translate any given logical pattern of bits within each data subset (10, 01, 00, 11, for instance) into an encoded pattern (11 is encoded as 00, or 10 is encoded as 11, for example), so as to correct initialization errors in the subsection.
  • the pattern reference code (PRC) corresponding to the matched encoding pattern is then stored in the flag bits, and the data subsets within the input data are encoded using the matched encoding pattern before being written to the subsection.
  • PRC pattern reference code
  • a RDPM step is initiated during the read operation in which the encoding pattern is reversed to recover the input data.
  • the distributed flag error correction (DFEC) methods of the present disclosure only correct initialization errors (either SET or RESET, whichever was selected for the initialization state).
  • another error correction method such as, but not limited to, a Bose-Chaudhuri-Hocquenghem (BCH) error correction algorithm—is employed to correct the opposite type of error (programming errors), and the remaining initialization errors that DFEC failed to correct. That is, if all cells are initialized to a RESET condition, the DFEC methods of the present disclosure would correct RESET errors and a second error correction algorithm (such as, but not limited to, a BCH error correction algorithm) would be employed to correct SET errors, and remaining RESET errors.
  • BCH Bose-Chaudhuri-Hocquenghem
  • Resistive change cells store information through the use of a resistive change element within the cell. Responsive to electrical stimuli, a resistive change element can be adjusted between at least two non-volatile resistive states. Typically, two resistive states are used: a low resistive state (corresponding, typically, to a logic ⁇ ,' a SET state) and a high resistive state (corresponding, typically, to a logic ' ⁇ ,' a RESET state). In this way, the resistance value of the resistive change element within the resistive change element cell can be used to a store a bit of information (functioning, for example, as a 1-bit memory element).
  • more than two resistive states may be used, allowing a single cell to store more than one bit of information.
  • a resistive change memory cell might adjust its resistive change element between four non-volatile resistive states, allowing for the storage of two bits of information in a single cell.
  • programming is used to describe an operation wherein a resistive change element is adjusted from an initial resistive state to a new desired resistive state.
  • Such programming operations can include a SET operation, wherein a resistive change element is adjusted from a relatively high resistive RESET state (e.g., on the order of 1 ⁇ ) to a relatively low resistive SET state (e.g., on the order of 100 kQ).
  • Such programming operations can also include a RESET operation, wherein a resistive change element is adjusted from a relatively low resistive SET state (e.g., on the order of 100 kQ) to a relatively high resistive RESET state (e.g., on the order of 1 ⁇ ).
  • RESET RESET
  • a resistive change element is adjusted from a relatively low resistive SET state (e.g., on the order of 100 kQ) to a relatively high resistive RESET state (e.g., on the order of 1 ⁇ ).
  • RESET resistive change element is adjusted from a relatively low resistive SET state (e.g., on the order of 100 kQ) to a relatively high resistive RESET state (e.g., on the order of 1 ⁇ ).
  • RESET resistive change element is adjusted from a relatively low resistive SET state (e.g., on the order of 100 kQ) to a relatively high resistive RESET state (e.g., on the order of 1 ⁇ ).
  • resistive change memory cells As an example, the present disclosure is not limited to memory. Indeed, the methods of the present disclosure could be used to adjust the resistance of resistive change elements within logic devices, analog circuitry, sensors, and the like.
  • Resistive change elements include, but are not limited to, two-terminal nanotube switching elements, phase change memory cells, and metal oxide memory cells.
  • Resistive change elements include, but are not limited to, two-terminal nanotube switching elements, phase change memory cells, and metal oxide memory cells.
  • U.S. Patent No. 7,781,862 and U.S. Patent No. 8,013,363 teach non-volatile two-terminal nanotube switches comprising nanotube fabric layers. As described in those patents, responsive to electrical stimuli a nanotube fabric layer can be adjusted or switched among a plurality of non-volatile resistive states, and these non-volatile resistive states can be used to reference informational (logic) states.
  • resistive change elements are well suited for use as nonvolatile memory devices for storing digital data (storing logic values as resistive states) within electronic devices (such as, but not limited to, cell phones, digital cameras, solid state hard drives, and computers).
  • electronic devices such as, but not limited to, cell phones, digital cameras, solid state hard drives, and computers.
  • resistive change elements is not limited to memory applications. Indeed, arrays of resistive change elements as well as the advanced architectures taught by the present disclosure could also be used within logic devices or within analog circuitry.
  • FIG. 1A illustrates the layout of an exemplary resistive change cell that includes a vertically oriented resistive change element (such a structure is sometimes termed a 3D cell by those skilled in the art).
  • a typical field effect transistor (FET) device 130a is formed within a first device layer, including a drain D, a source S, and a gate structure 136a. The structure and fabrication of such an FET device 130a will be well known to those skilled in the art.
  • a resistive change element 110a is formed in a second device layer.
  • Conductive structure 132a electrically couples a first end of resistive change element 110a with the source terminal of FET device 130a.
  • Conductive structure 120a electrically couples a second end of resistive change element 110 with an array source line SL outside the resistive change cell.
  • Conductive structures 134a and 140a electrically couple the drain terminal of FET device 130a with an array bit line BL outside the resistive change cell.
  • An array word line WL is electrically coupled to gate structure 136a.
  • FIG. IB illustrates the layout of an exemplary resistive change cell that includes a horizontally oriented resistive change element (such a structure is sometimes termed a 2D memory cell by those skilled in the art).
  • a typical FET device 130b is formed within a first device layer, including a drain D, a source S, and a gate structure 136b. As with the FET device (130a) depicted in FIG. 1A, the structure and fabrication of such an FET device 130b will be well known to those skilled in the art.
  • a resistive change element 110b is formed in a second device layer.
  • Conductive structure 132b electrically couples a first end of resistive change element 110b with the source terminal of FET device 130b.
  • Conductive structure 120b electrically couples a second end of resistive change element 110b with an array source line SL outside the memory cell.
  • Conductive structures 134b and 140b electrically couple the drain terminal of FET device 130b with an array bit line BL outside the memory cell.
  • An array word line WL is electrically coupled to gate structure 136b.
  • the resistive change element is adjusted between different resistive states by applying electrical stimulus, typically one or more programming pulses of specific voltages and pulse widths, between the bit line (BL) and the source line (SL).
  • electrical stimulus typically one or more programming pulses of specific voltages and pulse widths
  • a voltage is applied to the gate structure (136a in FIG. 1A and 136b in FIG. IB) through the word line (WL), which enables electrical current to flow through the series combination of the FET device (130a in FIG. 1A and 130b in FIG. IB) and the resistive change element (110a in FIG. 1A and 110b in FIG. IB).
  • WL word line
  • the resistive change element (110a in FIG. 1A and 110b in FIG. IB) can be adjusted between a plurality of resistive states.
  • the state of the resistive change element cells depicted in FIGS. 1A and IB can be determined, for example, by applying a DC test voltage, for example, but not limited to, 0.5V, between the source line (SL) and the bit line (BL) while applying a voltage to gate structure (136a in FIG. 1A and 136b in FIG. IB) sufficient to turn on the FET device (130a in FIG. 1A and 130b in FIG. IB) and measuring the current through the resistive change element (110a in FIG. 1A and 110b in FIG. IB). In some applications this current can be measured using a power supply with a current feedback output, for example, a programmable power supply or a sense amplifier. In other applications this current can be measured by inserting a current measuring device in series with the resistive change element (110a in FIG. 1A and 110b in FIG. IB).
  • a DC test voltage for example, but not limited to, 0.5V
  • the state of the resistive change element cells depicted in FIGS. 1A and IB can also be determined, for example, by driving a fixed DC current, for example, but not limited to, 1 ⁇ , through the series combination of the FET device (130a in FIG. 1A and 130b in FIG. IB) and the resistive change element (110a in FIG. 1A and 110b in FIG. IB) while applying a voltage to the gate (136a in FIG. 1A and 136b in FIG. IB) sufficient to turn on the FET device (130a in FIG. 1A and 130b in FIG. IB) and measuring the voltage across the resistive change element (110a in FIG. 1A and 110b in FIG. IB).
  • a fixed DC current for example, but not limited to, 1 ⁇
  • the resistive change element (such as, but not limited to, those depicted in FIGS. 1A and IB) can be formed from a plurality of materials, such as, but not limited to, metal oxide, solid electrolyte, phase change material such as a chalcogenide glass, graphene fabrics, and carbon nanotube fabrics.
  • U.S. Patent No. 7,781,862 to Bertin et al. discloses a two-terminal nanotube switching device comprising a first and second conductive terminals and a nanotube fabric article.
  • Bertin teaches methods for adjusting the resistivity of the nanotube fabric article between a plurality of nonvolatile resistive states.
  • electrical stimulus is applied to at least one of the first and second conductive elements such as to pass an electric current through said nanotube fabric layer.
  • the resistivity of the nanotube article can be repeatedly switched between a relatively high resistive state and relatively low resistive state.
  • these high and low resistive states can be used to store a bit of information.
  • a nanotube fabric as referred to herein for the present disclosure comprises a layer of multiple, interconnected carbon nanotubes.
  • a fabric of nanotubes (or nanofabric), in the present disclosure e.g., a non-woven carbon nanotube (CNT) fabric, may, for example, have a structure of multiple entangled nanotubes that are irregularly arranged relative to one another.
  • the fabric of nanotubes for the present disclosure may possess some degree of positional regularity of the nanotubes, e.g., some degree of parallelism along their long axes.
  • Such positional regularity may be found, for example, on a relatively small scale wherein flat arrays of nanotubes are arranged together along their long axes in rafts on the order of one nanotube long and ten to twenty nanotubes wide. In other examples, such positional regularity maybe found on a larger scale, with regions of ordered nanotubes, in some cases, extended over substantially the entire fabric layer. Such larger scale positional regularity is of particular interest to the present disclosure. Nanotube fabrics are described in more detail in U.S. Patent 6,706,402, which is included by reference in its entirely.
  • resistive change cells and elements within the present disclosure specifically reference carbon nanotube based resistive change cells and elements
  • the methods of the present disclosure are not limited in this regard. Indeed, it will be clear to those skilled in the art that the methods of the present disclosure are applicable to any type of resistive change cell or element (such as, but not limited to, phase change and metal oxide).
  • the array 200 comprises a plurality of cells (CELL00 - CELLxy), each cell including a resistive change element (SW00 - SWxy) and a selection device (Q00 - Qxy).
  • the individual array cells (CELL00 - CELLxy) within resistive change array 200 are selected for reading and programming operations using arrays of source lines (SL[0] - SL[x]), word lines (WL[0] - WL[y]), and bit lines (BL[0] - BL[x]) as will be described below.
  • the selection devices (Q00 - Qxy) used with the individual array cells (CELL00 - CELLxy) are conventional silicon based FETs.
  • arrays are not limited in this regard. Indeed, other circuit elements (such as, but not limited to, diodes or relays) could be used within similar architecture structures to provide cell selection functionality within an array (for example, selection devices such as bipolar devices, and FET devices such as SiGe FETs, FinFETs, and FD-SOI).
  • FIG. 3 is a table 300 describing exemplary programming and READ operations for the resistive change element array 200 shown in FIG. 2.
  • the table lists the word line, bit line, and source line conditions required to perform a RESET operation, a SET operation, and a READ operation on CELL00 of resistive change element array 200. These operations as well as the function of the resistive change element array 200 depicted in FIG. 2 within these operations will be described in detail below.
  • the first column of the table within FIG. 3 describes a RESET operation of CELL00 ⁇ that is, a programming operation which adjusts the resistive state of resistive change element SWOO from a relatively low resistive state to a relatively high resistive state.
  • WL[0] is driven to Vpp, the logic level voltage required to enable select device Q00, while the remaining word lines WL[l:y] are driven to 0V (essentially grounded). In this way, only the select devices in the first row of the array, Q00 - QxO, are enabled (or, "turned on”).
  • BL[0] is driven to VR S T (the programming voltage level required to RESET element SWOO), and SL[0] is driven to 0V.
  • the remaining bit lines, BL[l:x], and the remaining source lines, SL[l:x], are held in high impedance states.
  • VR S T is driven across only the cells in the first column of the array, CELL00 - CELLOy, while Vpp is applied across only WL[0], enabling the first row of the array, CELL00 - CELLxO.
  • the programming voltage VR S T is driven only across SWOO to adjust its resistive state.
  • the other select devices within the array remain isolated from the programming voltage and thus retain their originally programmed resistive state.
  • the second column of the table within FIG. 3 describes a SET operation of CELL00 ⁇ that is, a programming operation which adjusts the resistive state of resistive change element SWOO from a relatively high resistive state to a relatively low resistive state.
  • WL[0] is driven to Vpp, while the remaining word lines, WL[l:y], are driven to 0V (essentially grounded). In this way, only the select devices in the first row of the array, Q00 - QxO are enabled (or "turned on”).
  • SL[0] is driven to V S ET, the programming voltage level required to drive SWOO into a relatively low resistive state, and BL[0] is driven to 0V.
  • V S ET is driven across only the cells in the first column of the array, CELL00 - CELLOy
  • Vpp is driven across only WL[0], enabling the first row of the array, CELL00 - CELLxO.
  • the programming voltage VSET is driven only across SWOO through enabled selection device Q00, changing its resistive state to one of low impedance.
  • the other select devices within the array remain isolated from the programming voltage and thus retain their originally programmed resistive state.
  • the third column of the table within FIG. 3 describes a READ operation of CELLOO, that is, an operation which determines the resistive state of resistive change element SWOO.
  • WL[0] is driven to Vpp, the programming voltage required to enable select device Q00, while the remaining word lines WL[l :y] are held at low voltage (approximately OV in this example) so that only the select devices in the first row of the array Q00 - QxO are enabled (or "turned on”).
  • SL[0] is driven to VRD, the voltage level required to READ the resistive state of SWOO, and BL[0] is driven to OV (essentially grounded).
  • the remaining source lines SL[l :x] and the remaining bit lines BL[l :x] are held in high impedance states.
  • VRD is driven across only the cells in the first column of the array, CELLOO - CELLOy, and Vpp is driven across only WL[0], enabling the first row of the array, CELLOO - CELLxO.
  • the READ voltage VRD is driven only across SWOO, while the other select devices within the array remain isolated from the READ voltage. In this way, current will flow only through resistive change element SWOO, and by measuring that current, the resistive state of SWOO can be determined.
  • Vpp within table 300 is intended as a non-limiting example only.
  • FIG. 4 a second exemplary architecture for a resistive change element array 400 is illustrated in a simplified schematic diagram.
  • the exemplary architecture 400 no selection devices or other current limiting elements are used within the resistive change element cells. That is, each cell is comprised only of a resistive change element that is accessed via two control lines (a word line and a bit line).
  • Such an architecture is sometimes referred to as a 1-R array by those skilled in the art.
  • the array architecture 400 of FIG. 4 can address individual resistive change cells within the array by driving the word lines and bit lines with a specific bias.
  • an access operation to array architecture 400 must provide a sufficient electrical stimulus—as required for a programming (SET or RESET) or READ operation— to a selected array cell and, at the same time, prevent the other cells in the array from experiencing any electrical stimuli that would alter their stored resistive state.
  • Methods and circuits for programming and accessing cells within 1-R array architectures are disclosed in U.S. Patent Nos. 9,263,126 and 9,299,430, both of which are incorporated herein by reference in their entireties.
  • a sufficient READ, SET, or RESET voltage (or current) is applied to WL[0] while BL[0] is driven to ground (0V).
  • the remaining word lines (WL[1] - WL[y]) and the remaining bit lines (BL[1] - BL[x]) are driven at half the voltage (or current) supplied to WL[0].
  • the remaining cells in the array that is, CELL11 - CELLxy ⁇ are unbiased, each of those cells seeing half of the applied programming or READ voltage (or current) on both its associated word line and on its associated bit line, resulting in no voltage drop or current flow across/through the resistive change elements in those cells.
  • the applied programming or READ voltage is applied only over the selected resistive change element SW00, and while some of the unselected cells within the array are partially biased during the access and addressing operation, the electrical stimuli applied to those cells is not sufficient to alter the resistive state of those cells or disturb the programming or READ operation being performed on the selected cell.
  • FIG. 5 is a perspective drawing of a 3D 1-R resistive change element array 500.
  • Resistive change element array 500 is comprised of 1-R resistive change cells arranged in three dimensions (along the x-, y-, and z-axes).
  • a first layer of bit lines (542a, 544a, 546a, and 548a) are disposed along the y-axis, and a first layer of word lines (532a, 534a, 536a, and 538a) are disposed along the x-axis and above this first layer of bit lines.
  • a first layer of resistive change elements 510 is disposed, one resistive change element at each word line and bit line crossing.
  • the resistive change elements are each comprised of a resistive change material 516 (such as, but not limited to, a nanotube fabric layer or a block of phase change material) disposed between a first conductive element 512 and a second conductive element 514. It is desirable, in certain applications, to use these first and second conductive elements (512 and 514, respectively) to provide a conductive path between an array line (a word or bit line) and the actual resistive change material 516.
  • first and second conductive elements should not be seen as limiting with respect to the architecture of 1-R resistive change element arrays.
  • a second layer of bit lines (542b, 544b, 546b, and 548b) is disposed along the y-axis above the first layer of word lines. Between this second layer of bit lines (542b, 544b, 546b, and 548b) and the first layer of words lines (532a, 534a, 536a, and 538a), a second layer of resistive change elements 510 is disposed, one resistive change element at each word line and bit line crossing.
  • a second layer of word lines (532b, 534b, 536b, and 538b) is disposed along the x-axis above the second layer of bits lines (542b, 544b, 546b, and 548b), and a third layer of resistive change elements 510 is disposed, one resistive change element at each word line and bit line crossing.
  • a third layer of resistive change elements 510 is disposed, one resistive change element at each word line and bit line crossing.
  • Arrays of non-volatile, reprogrammable resistive change element arrays are highly desirable within certain applications, for example in solid state drives (SSDs) or as replacements for silicon based flash memory.
  • SSDs solid state drives
  • resistive change elements are scaling smaller, and more compact, denser arrays of such elements are being developed.
  • an improved error correction method that takes advantage of the programming characteristics of resistive change elements (as described in detail above) to improve error correction latency and reduce parity cell overhead is highly desirable.
  • the distributed flag error correction (DFEC) methods of the present disclosure is well suited for such applications.
  • FIG. 6 is a graph 600 plotting parity overhead against correctable bit error rate (BER) for three difference sized memory arrays (512 byte, 1 kilobyte, and 2 kilobyte) using a conventional Bose-Chaudhuri-Hocquenghem (BCH) error correction algorithm.
  • BCH codes are well known by those skilled in the art and form a class of cyclic error-correcting codes that are constructed using finite fields.
  • BCH error correction is commonly used in electronics applications (such as, but not limited to, flash memory, solid state drives, and digital media) and is particularly useful as there is a precise control over the number of errors correctable by the code.
  • the number of parity bits "m" theoretically required to correct one bit error within "n" bits (user data bits plus overhead bits) is given by:
  • the overhead bits include BCH parity bits for error correction.
  • the number of overhead bits is much less than the number of data bits so that the total number of bits, including 512-bytes of data bits plus overhead bits, is less than 8191.
  • the number of BCH parity bits increases for higher correctable BERs. For example, a correctable BER of 0.2% on a block with 512 bytes of user data would require 104 BCH parity bits.
  • the number of parity bits within a block of memory can be used to define the parity overhead, given by the following:
  • this increased parity overhead results in increased latency within the decoding process for the error correction algorithm as well as using increasingly more surface area on a chip.
  • FIG. 7A is a plot 701 characterizing the error rates of an exemplary resistive change element array.
  • the exemplary array used to generate the characterization data in FIG. 7A was a 256-byte array of non-volatile two-terminal nanotube switches comprising nanotube fabric layers, as are taught in U.S. Patent No. 7,781,862 and U.S. Patent No. 8,013,363 and described in detail with respect to FIGS. 1A and IB above.
  • the exemplary array was written through 10 8 write cycles and the total number of errors observed was plotted in FIG. 7A. It should be noted that FIGS.
  • FIGS. 7B and 7C the errors plotted in FIG. 7A are broken out into plots showing the RESET errors (plot 702 in FIG. 7B) and SET errors (plot 703 in FIG. 7C).
  • a RESET error occurs when a programming operation attempts to adjust a resistive change element into a relatively high resistance RESET state (a logic "0") but the cell remains in a relatively low resistance SET state (a logic " 1").
  • a SET error occurs when programming operation attempts to adjust a resistive change element into a relatively low resistance SET state (a logic " 1") but the cell remains in a relatively high resistance RESET state (a logic "0").
  • the exemplary resistive change element array characterized within plots 701, 702, and 703 possesses a significant bias toward RESET errors. That is, when programming this exemplary array, significantly more RESET errors can be expected to occur as compared to SET errors. In this particular example, at 10 8 write cycles, it was found that 80% of the total errors (as plotted in FIG. 7A) were RESET errors and 20% were SET errors. This characteristic bias toward RESET errors makes this exemplary array well suited for the distributed flag error correction (DFEC) methods of the present disclosure, as will be explained in more detail below.
  • DFEC distributed flag error correction
  • resistive change element arrays In addition to the bias toward one type of error, resistive change element arrays also exhibit other characteristics that make them well suited for the DFEC methods of the present disclosure. For example, programming errors within resistive change elements tend to be randomly distributed across the array. That is, unlike, for example, silicon based memory technologies, programming errors within resistive change elements typically do not cluster around a certain region or area of the array and are generally spread uniformly across the array. Additionally, programming errors within resistive change element arrays tend to be temporary and repairable, or, "soft" errors, whereas programming errors in silicon based memories, for example, are typically caused by damaged or otherwise broken cells, referred to as "hard” errors.
  • resistive change elements such as NRAM
  • some types of resistive change elements such as NRAM, that exhibit a RESET error can be corrected by simply repeating a programming operation, or, more commonly, by taking the cell through a full SET/RESET cycle.
  • the DFEC methods of the present disclosure take advantage of these characteristics of resistive change element arrays to provide error correction methods with reduced parity overhead ⁇ and, by extension, improved latency and smaller chip surface area ⁇ as compared with conventional error correction techniques.
  • the DFEC methods of the present disclosure can program ⁇ that is, write data to ⁇ a resistive change element array using a two step process.
  • a first process step all of the cells within a block or subsection of a resistive change element array are initialized to either a RESET or a SET state, as befits the needs of a particular application.
  • the selection of the initialization state for an array is typically dependent on which state can be expected to exhibit a greater percentage of errors.
  • this initialization process adjusts all cells within the block or subsection into a single state, only those cells that are required to store a data value opposite of the initialization state are programmed in a second operation. For example, for an array wherein the initialization condition was RESET, a first programming operation would RESET all of the cells within a block. Then a second programming operation would then SET only those cells that require a logic " 1" according to the data being written, as those cells that require a logic "0" are already in the desired state.
  • FIG. 8A is a diagram illustrating an exemplary resistive change element array 801 configured to use a conventional BCH error correction method alone.
  • the array 801 is divided into eight blocks 820.
  • FIG. 8B illustrates these blocks 820 in more detail in diagram 802. Errors 850 within the array 801 are indicated with an X.
  • each of the blocks 820 include a region of data cells 830 and a region of BCH parity cells 840.
  • the number of parity cells 840 is determined by the correctable BER required for the array and EQ1 (as discussed in detail above). For example, if FIG.
  • the ratio of parity cells to data cells within each block 820 would be 1.4%, as given by EQ2 and discussed in detail above, representing the parity overhead of the block.
  • FIG. 8C is a table 803 detailing the number of BCH parity bits (840 in FIGS.
  • EQ2 parity overhead
  • table 803 similar calculations show that for 0.2%, 0.3%, 0.4%, and 0.5% correctable BER on the resistive change element array configured as detailed in FIG. 8A, parity overheads of 2.9%, 4.4%, 6.0%, and 7.5% are required, respectively.
  • the DFEC methods of the present disclosure may significantly reduce these parity overheads while maintaining the required correctable BER.
  • the reverse-flag error correction (RFEC) method distributes flag bits across a resistive change element array to delimitate each DFEC subsection with a single flag cell.
  • This distributed flag can be used to indicate the presence of at least one initialization error in its subsection and thereby match the input data to the error pattern.
  • the use of a single flag bit allows the input data to be matched to the errors according to two patterns - no effective errors (flag bit is not activated), and at least one effective error (flag bit is activated), as will be described in detail with respect to FIGS. 9A-9C, 10, and 11A-11E. In this way, the single-flag DFEC method of the present disclosure may be guaranteed to correct at least one initialization error per subsection.
  • FIG. 9A this diagram illustrates a resistive change element array 901 configured to use the RFEC method of the present disclosure in concert with a BCH error correction method.
  • array 901 is divided into eight blocks 910, which are illustrated in more detail in FIG. 9B.
  • each block 910 is further divided into four subsections 920.
  • Each of these four subsections 920 includes a region of data cells 920a and a single flag cell 920b for storing a single DFEC flag bit.
  • Each block also includes a region of BCH parity cells 930 configured to correct errors across the entire block 910.
  • Errors may occur across the array, including data bit errors 940, flag bit errors 950, and BCH parity bit errors 960.
  • flag cells 920b provide the ability to correct at least one initialization error within the data bits 920a of each subsection 920, reducing the total number of errors required to be corrected by the BCH error correction algorithm and, in turn, the number of BCH parity cells 930 required for each block 910.
  • this configuration one flag cell per subsection combined with a reduced number of BCH parity cells
  • the flag bits used in the DFEC methods of the present disclosure are only capable of correcting initialization errors within an array. That is, for a resistive change element array that initializes cells into a RESET state during a programming operation, the flag bits will correct only RESET errors within each subsection. And, similarly, for a resistive change element array that initializes cells into a SET state during a programming operation, the flag bits will only correct SET errors within each subsection. Further, the DFEC methods of the present disclosure may only correct initialization errors 940 in data bits 920a. BCH parity bit errors 960 and flag bit errors 950, as well as programming errors, must be corrected by a secondary error correction method.
  • the type of error with greater occurrence should be selected as the initialization condition, as a higher number of errors can be expected to be corrected using the flag cell within each subsection (as will be shown in detail within the discussion of FIG. 10 below).
  • Flag bit cells 920b can therefore be used to reduce the number of bits 930 that a BCH error correction routine will require to achieve a given correctable BER and, in turn, reduce the parity overhead within array 901.
  • RESET errors are not evenly distributed between subsections. Some subsections, such as 970, may not have a RESET error at all, while others, such as 980, may contain multiple errors. As a result, the flag bits in subsections with no errors may be unnecessary, while in subsections with multiple errors the flag bits may be unable to correct all of the errors.
  • the number of flag bits 920b, and by extension the number and size of subsections 920, should therefore be carefully determined based on the RESET error rate, as will be described in more detail in FIGS. 13A-13D and 16A-16C. If too many flag bits are used, many subsections may not have a RESET error and the parity overhead may be unnecessarily large.
  • subsections may have multiple reset errors if too few flag bits are used or the RESET error rate is high.
  • additional flag bits 920b may be used to reduce the subsection size and separate the RESET error bits into different subsections, thereby reducing the reliance on BCH correction.
  • FIG. 9C details this reduction in parity overhead for the resistive change element array configured as detailed in FIG. 9A for a correctable BER of 0.1%.
  • a correctable BER of 0.1 % would require an error correction algorithm to find 8 errors in each block with 1 kilobyte (8192 bit) of data bits plus overhead bits, as shown in the second column of table 903.
  • four flag bits 920b in each block 910 can be statistically expected to correct 3 errors due to the error distribution.
  • a BCH error correction routine will only need to correct 5 additional errors, which due to set errors and multiple RESET errors in one subsection, to achieve the required 0.1% correctable BER (8 total errors over the 1 kilobyte block).
  • 14 BCH parity bits are required to correct a single error in the same 1 -kilobyte block (as indicated by EQ1).
  • only 70 BCH parity cells are required to find the remaining 5 errors compared to the 112 BCH parity cells required for the BCH only configuration shown in FIG. 8C.
  • each block 910 a total of 74 parity cells (70 BCH parity cells 930 and 4 flag cells 920b) and a total parity overhead of 0.9% for a 0.1% correctable BER compared to 112 parity cells and 1.4% parity overhead in the BCH only configuration detailed in FIG. 8C.
  • FIG. 10 is a flow chart illustrating the single-flag DFEC method of the present disclosure used during a programming/read back operation 1000 performed on a single subsection of a resistive change element array (analogous to subsection 920 in array 901 within FIG. 9A).
  • a RESET state is selected as the initialization state for ease of explanation.
  • the methods of the present disclosure are not limited in this regard.
  • the DFEC methods of the present disclosure can be used to correct either SET or RESET errors, as befits the needs of a particular application. As such, the examples of FIGS.
  • a first process step 1012 all of the cells within the subsection are initialized into a RESET condition.
  • the subsection is checked for any RESET errors (that is, the subsection is checked to ensure that no cells failed to be initialized into a relatively high resistive RESET state, corresponding to a logic "0").
  • the programming/read back operation 1000 advances to process step 1050 wherein the input data to be programmed to the subsection is encoded with a BCH ECC algorithm. However, if at least one cell within the subsection remains uninitialized, programming/read back operation 1000 advances to data pattern matching (DPM) step 1022.
  • DPM data pattern matching
  • DPM step 1022 the data values required to be written to the subsection during programming/read back operation 1000 are checked to see if the uninitialized cell (or cells) is due to be programmed into either a SET or a RESET state.
  • process step 1024 if the error cell (or all of the error cells, in the case of multiple initialization errors within the subsection) is due to be programmed into a SET condition there is effectively no error, and the programming/read back operation 1000 advances to process step 1050 wherein the input data to be programmed to the subsection is encoded with a BCH ECC algorithm.
  • the programming/read operation 1000 advances to process step 1030 wherein the subsection's flag bit (960b in FIGS. 9A and 9B) is activated (set to a logic "1 " in this example).
  • the flag bit will be used in reverse data pattern matching (RDPM) step 1082 to decode the DFEC programmed data and recover at least one RESET error within the subsection.
  • RDPM reverse data pattern matching
  • the programming/read back operation 1000 advances to DFEC encoding step 1040 wherein the input data due to be programmed into the subsection is inverted. That is, the input data due to be programmed into the subsection is logically inversed, such that logic " 1 " input data values become logic "0" and logic "0" input data values become logic "1".
  • the programming/read back operation 1000 then advances to process step 1050 wherein the data to be programmed to the subsection, now inverted, is encoded with a BCH ECC algorithm.
  • an "effective error” or “effective initialization error” may be used interchangeably to refer to a data cell which failed to initialize during an initialization step and is due to be programmed into an initialized state according to a set of input data. That is, for example, if a RESET state is selected as the initialization state, an effective error is a data cell which remains in a SET state following initialization of the array and is due to be programmed to a RESET state as per the input data.
  • an initialization error may also occur wherein a data cell fails to initialize into a selected initialization state (RESET, for instance) and remains in the opposite logical state (SET, for instance), but according to the input data is already in the correct state (that is, the cell was due to be programmed to a SET state, for instance). In this case there is an initialization error but not an effective error, as the error may not need to be corrected.
  • RESET selected initialization state
  • a next process step 1070 the programmed data is read out from the memory array and first processed through a BCH ECC decoding algorithm. Once corrected by BCH ECC, the subsection's flag bit (920b in FIGS. 9A and 9B) is checked in reverse data pattern matching (RDPM) step 1082. If the subsection's flag bit is not activated (that is, if the bit was not activated in process step 1030) then the read operation ends in step 1090, as no further processing needs to be done for the data bits in the subsection.
  • RDPM reverse data pattern matching
  • read operation 1000 is advanced to DFEC decoding step 1084 wherein all of the bits in subsections with an activated flag bit are inverted to reflect the actual data values before the data inversion step 1040.
  • the RFEC method of the present disclosure is capable of correcting at least one initialization error within a subsection.
  • the RFEC method may not be able to correct all of the initialization errors in a subsection if it contains multiple errors, depending on the error locations and the user data pattern (as will be discussed in detail within the discussion of FIGS. 11D and HE below).
  • the DFEC methods of the present disclosure are only capable of correcting initialization errors (as occur in process step 1012) and cannot correct programming errors that occur in process step 1060.
  • programming/read back operation 1000 performs a BCH error correction cycle on the subsection— via process steps 1050 and 1070 ⁇ to correct any programming errors that occur within process step 1060, as well as any initialization errors not corrected within process steps 1030 and 1040.
  • FIG. 10 (as well as the examples detailed in FIGS. 11A-11E) makes use of a BCH error correction method, the present disclosure is not limited in this regard.
  • FIGS. 11A-11E detail several examples of the RFEC method of the present disclosure used within different programming/read back operations (1101-1105) on a resistive change element array subsection (analogous to 920 in FIGS. 9A and 9B) that includes four data cells (analogous to 920a in FIGS. 9A and 9B) and one flag cell (analogous to 920b in FIGS. 9A and 9B). It should be noted that in real applications the number of bits in each subsection is much larger than 4. The examples within FIGS.
  • FIGS. 11A-11E describe a resistive change element array configuration wherein cells are initialized into a relatively high resistance RESET state (corresponding to a logic "0"), however, as previously discussed, the methods of the present disclosure are not limited in this regard.
  • the exemplary programming operations in FIGS. 11A-11E are intended as non-limiting illustrative examples of the RFEC method of the present disclosure (as detailed in FIG. 10 and discussed above) applied to different types of error conditions with a resistive change element array. Further, the exemplary programing operation within FIGS. 11A-11E make use of a BCH error correction cycle (within programming steps 1150a-1150e and 1170a-1170e).
  • a first programming step 1110a attempts to initialize all of the bits within the array subsection (all originally in unknown logic states represented by an "X") into a RESET state (logic "0").
  • the second cell within the array subsection fails to initialize, introducing RESET error 1115a into the subsection.
  • a next programming step 1120a (analogous to operations 1022 and 1024 in FIG.
  • the input data 1125a (that is, the data due to be written into the subsection) is checked to see if the uninitialized cell is due to be programmed into a SET or RESET state. As the second cell requires a logic "0" (that is, a RESET state), the uninitialized cell needs to be corrected using the DFEC method of the present disclosure.
  • programming step 1130a activates the subsection's flag bit
  • DPM programming step 1140a (analogous to operation 1040 in FIG. 10) inverts input data 1125a.
  • the inverted data and activated flag bit are initially stored in a chip cache to facilitate BCH ECC processing in programming step 1150a.
  • programming step 1160a (analogous to operation 1060 in FIG. 10), the inverted input data is programmed into the array. As shown in FIG. 11 A, programming step 1160a adjusts the fourth cell of the subsection into SET state, according to the inverted input data.
  • the second cell within the subsection is already in a SET state (due to RESET error 1115a), within certain applications it may not be necessary to perform a SET operation on this cell within programming step 1160a. Within such operations, the uninitialized cell is already within a valid and stable SET state and no further adjustment to the cell is required. In other applications, a SET operation may be performed on the second cell within programming step 1160a to ensure the cell is fully adjusted into a SET state. In either case, the SET condition stored within the second cell of the subsection is now correctly programmed according to the inverted data, correcting RESET error 1115a.
  • a next programming step 1170a the programmed data is read back out of the subsection and processed through a BCH ECC decoding algorithm (analogous to operation 1070 in FIG. 10). Since there are no other errors within this example 1101, the data values within the subsection remain unchanged. As the flag bit is activated (that is, programmed to a logic " 1" within this exemplary programming/read back operation 1101), in RDPM programming step 1180a (analogous to operations 1082 and 1084 in FIG. 10) all of the bits within the subsection are inverted. In this way, the RESET error 1115a introduced during the subsection initialization in programming step 1110a is corrected using a single parity bit.
  • FIG. 11B demonstrates the single- flag DFEC method of the present disclosure when a single initialization error (RESET error) occurs on a data cell intended to be programmed into a SET state.
  • RESET error a single initialization error
  • a first programming step 1110b attempts to initialize all of the bits within the array subsection (all originally in unknown logic states represented by an "X") into a RESET state (logic "0").
  • the third cell within the array subsection fails to initialize, introducing a RESET error 1115b into the subsection.
  • a next programming step 1120b analogous to operations 1022 and 1024 in FIG.
  • the input data 1125b (that is, the data due to be written into the subsection) is checked to see if the uninitialized cell is due to be programmed into a SET or RESET state. Since the third cell requires a logic "1 " (that is, a SET state), the uninitialized cell does not require correction, as it is either already in a valid and stable SET state (as required by input data 1125b) or will be further adjusted into such a state within programming step 1050b. As such, there is no need to invert the input data 1125b as is done within the exemplary operation 1101 of FIG. 11A.
  • the input data and inactivated flag bit are initially stored in a chip cache to facilitate BCH ECC encoding in process step 1150b.
  • the BCH encoded input data is programmed into the array by adjusting the first cell and third cell of the subsection into a SET state, according to the input data 1125b.
  • the third cell within the subsection is already in a SET state (due to RESET error 1115a), within certain applications it may not be necessary to perform a SET operation on this cell within programming step 1160b.
  • the uninitialized cell is already within a valid and stable SET state and no further adjustment to the cell is required.
  • a SET operation may be performed on the third cell within programming step 1160b to ensure the cell is fully adjusted into a SET state. In either case, the SET condition stored within the third cell of the subsection is correctly programmed according to the input data 1125b despite RESET error 1115b being introduced during initialization.
  • a next programming step 1170b the programmed data is read back out of the subsection and processed through a BCH ECC decoding algorithm (analogous to operation 1070 in FIG. 10). Since there are no other errors within this example 1102, the data values within the subsection remain unchanged. The flag bit was never activated (that is, was never programmed to a logic " 1" within this exemplary programming/read back operation 1102) and there is no need to invert the subsection data, as is done within exemplary RDPM programming operation 1101 in FIG. 11 A. In this way, the RESET error 1115b introduced during the subsection initialization in programming step 1110b is corrected.
  • the single- flag DFEC method of the present disclosure is used within an exemplary programming operation 1103 wherein a single programming error (SET error) is introduced on a data cell intended to be programmed into a SET state.
  • a first programming step 1110c (analogous to operations 1012, 1014, and 1016 in FIG. 10) attempts to initialize all of the bits within the array subsection (all originally in unknown logic states represented by an "X") into a RESET state (logic "0").
  • RESET state logic "0"
  • the input data and inactivated flag bit are initially stored in a chip cache to facilitate BCH ECC encoding in process step 1150c.
  • the BCH encoded input data is programmed into the array.
  • programming step 1160c adjusts the first cell and third cell of the subsection into SET state, according to input data 1125b.
  • a SET error 1145c is introduced in the third cell of the subsection during programming step 1160c.
  • the DFEC methods of the present disclosure are only able to correct initialization errors and, as such, cannot be used to correct SET error 1145c.
  • such an error can be corrected, according to the methods of the present disclosure, by employing a second error correction method in concert with the DFEC methods.
  • a next programming step 1170b the programmed data is read back out of the subsection and processed through a BCH ECC decoding algorithm (analogous to operation 1070 in FIG. 10).
  • this BCH ECC decoding corrects the SET error 1145c introduced within programming step 1160c, and the subsection is correctly programmed according to input data 1125c.
  • the flag bit was never activated (that is, was never programmed to a logic " 1 " within this exemplary programming/read back operation 1103), there is no need to invert the subsection data as is done within exemplary RDPM programming operation 1101 in FIG. 11A. In this way, the SET error 1145c introduced within programming step 1160c is corrected.
  • the single-flag DFEC method of the present disclosure is used to correct two initialization errors (RESET errors) on two data cells, both intended to be programmed into a RESET state.
  • RESET errors two initialization errors
  • a first programming step lllOd (analogous to operations 1012, 1014, and 1016 in FIG. 10) attempts to initialize all of the bits within the array subsection (all originally in unknown logic states represented by an "X") into a RESET state (logic "0").
  • the second cell and the fourth cell within the array subsection both fail to initialize, introducing a first RESET error 1115d and a second RESET error 1117d into the subsection.
  • a next programming step 1120d (analogous to operations 1022 and 1024 in FIG. 10), the input data 1125d (that is, the data due to be written into the subsection) is checked to see if the uninitialized cells are due to be programmed into SET or RESET states. As both cells require a logic "0" (that is, a RESET state), both uninitialized cells need to be corrected using the single-flag DFEC method of the present disclosure.
  • programming step 1130d activates the subsection's flag bit
  • DPM programming step 1140d inverts input data 1125d.
  • the inverted data and activated flag bit are initially stored in a chip cache to facilitate BCH ECC encoding in process step 1150d.
  • programming step 1160d (analogous to operation 1060 in FIG. 10), the BCH encoded inverted data is programmed into the array. As shown in FIG. 11D, programming step 1160d adjusts both the second cell and fourth cell of the subsection into a SET state, according to the inverted input data.
  • both the second and fourth cells within the subsection are already in a SET state (due to RESET errors 1115d and 1117d), within certain applications it may not be necessary to perform a SET operation on these cells within programming step 1160d. Within such operations, the uninitialized cells are already within valid and stable SET states and no further adjustment to the cells is required. In other applications, however, a SET operation may be performed on the first and third cells within programming step 1160d to ensure both cells are fully adjusted into a SET state. In either case, the SET conditions stored within the first and third cells of the subsection are now correctly programmed according to the inverted data.
  • a next programming step 1170d the programmed data is read back out of the subsection and processed through a BCH ECC decoding algorithm (analogous to operation 1070 in FIG. 10). Since there are no other errors within this example 1104, the data values within the subsection remain unchanged.
  • the flag bit is activated (that is, programmed to a logic " 1" within this exemplary programming/read back operation 1104), in RDPM programming step 1180d (analogous to operations 1082 and 1084 in FIG. 10) all of the bits within the subsection are inverted, correcting RESET errors 1115d and 1117d. In this way, the two RESET errors 1115d and 1117d introduced during the subsection initialization in programming step lllOd are both corrected using a single parity bit.
  • the single-flag DFEC method of the present disclosure is used to correct two initialization errors (RESET errors) on two data cells: a first error on a data cell intended to be programmed into a RESET state, and a second error on a data cell intended to be programmed into a SET state.
  • RESET errors two initialization errors
  • a first programming step lllOe attempts to initialize all of the bits within the array subsection (all originally in unknown logic states represented by an "X") into a RESET state (logic "0").
  • the first cell and the second cell within the array subsection both fail to initialize, introducing a first RESET error 1115e and a second RESET error 1117e into the subsection.
  • the input data 1125e (that is, the data due to be written into the subsection) is checked to see if the uninitialized cells are due to be programmed into SET or RESET states.
  • the second cell within the subsection is due to be programmed into a RESET state (according to input data 1125e) and the first cell within the subsection is due to be programmed into a SET state (according to input data 1125e).
  • the single-flag DFEC method of the present disclosure will be used to correct the second cell of the subsection.
  • this first operation will leave the first cell of the subsection in an erroneous state that will need to be corrected by a second error correction operation (programming steps 1150e and 1170e).
  • programming step 1130e (analogous to operation 1030 in FIG. 10) activates the subsection's flag bit
  • DPM programming step 1140e analogous to operation 1040 in FIG. 10) inverts input data 1125e.
  • the inverted data and activated flag bit are initially stored in a chip cache to facilitate BCH ECC encoding in process step 1150e.
  • programming step 1160e (analogous to operation 1060 in FIG. 10), the BCH encoded inverted data is programmed into the array. As shown in FIG.
  • programming step 1160e adjusts both the second cell and fourth cell of the subsection into a SET state, according to the inverted input data.
  • the second cell within the subsection is already in a SET state (due to RESET error 1115e)
  • the uninitialized second data cell is already within a valid and stable SET state and no further adjustment to the cell is required.
  • a SET operation may be performed on the second cell within programming step 1160e to ensure the cell is fully adjusted into a SET state. In either case, the SET condition stored within the second cell of the subsection is now correctly programmed according to the inverted data 1145e.
  • a next programming step 1170e the programmed data is read back out of the subsection and processed through a BCH ECC decoding algorithm (analogous to operation 1070 in FIG. 10). As shown in FIG. HE, this BCH ECC decoding corrects RESET error 1115e (introduced within programming step lllOe). Next, as the flag bit is activated (that is, programmed to a logic "1" within this exemplary programming/read back operation 1105), in RDPM programming step 1180e (analogous to operations 1082 and 1084 in FIG. 10) all of the bits within the subsection are inverted, correcting RESET error 1117e.
  • the two RESET errors 1115e and 1117e introduced during the subsection initialization in programming step lllOe are both corrected using the single- flag DFEC method of the present disclosure in concert with a second error correction routine (the BCH error correction cycle of programming steps 1150e and 1170e).
  • FIG. 12A is a simplified schematic diagram illustrating an exemplary encoding circuit 1201 suitable for use with the RFEC method of the present disclosure.
  • exemplary encoding circuit 1201 is arranged for use with a resistive change element array that uses RESET (that is, logic "0") as its initialization state.
  • RESET that is, logic "0”
  • the methods of the present disclosure are not limited in this regard.
  • DFEC methods of the present disclosure can also be used within a resistive change element array that uses a SET state as an initialization condition, and exemplary encoding circuit 1201 is intended only as a non-limiting, illustrative example of a circuit capable of encoding programming data according to the single- flag DFEC method of the present disclosure.
  • an array of AND gates 1225 ANDs together the data cells of a resistive change element array subsection 1210 with input data 1215 (analogous to input data 1025 in FIG. 10) which is inverted through an array of Inverter gates 1220.
  • the outputs of AND gates 1225 are ORed together with OR gate 1230 to provide the flag bit for the subsection 1245.
  • Such a configuration will activate (that is, set to a logic " 1" within this exemplary encoding circuit 1201) flag bit 1245 if any data cell within subsection 1210 fails to initialize (that is, if any data cell is in a SET state) and is intended to be programmed into a RESET state.
  • Such a logic function is analogous to operations 1014, 1016, 1022, 1024, and 1030 within FIG. 10, discussed in detail with respect to that figure above.
  • an array of Exclusive OR gates 1235 selectively inverts the input data 1215 dependent on the state of flag bit 1245.
  • the array of Exclusive OR gates 1235 then provides either the input data 1215 (if flag bit 1245 is not activated) or an inverted version of the input data 1215 (if flag bit 1245 is activated) to be programmed into the array (the program data represented by block 1240 in FIG. 12A).
  • Such a logic function is analogous to operation 1040 within FIG. 10, discussed in detail above.
  • FIG. 12B is a simplified schematic diagram illustrating an exemplary decoding circuit 1202 suitable for use with the single-flag DFEC method of the present disclosure.
  • exemplary decoding circuit 1202 is arranged for use with a resistive change element array that uses RESET (that is, logic "0") as its initialization state.
  • RESET that is, logic "0”
  • DFEC methods of the present disclosure can also be used within a resistive change element array that uses a SET state as an initialization condition, and exemplary decoding circuit 1202 is intended only as a non-limiting, illustrative example of a circuit capable of decoding program data according to the single-flag DFEC method of the present disclosure.
  • an array of Exclusive OR gates 1280 selectively inverts read data 1260 (that is, data read out of an array subsection) dependent on the state of flag bit 1270.
  • the array of Exclusive OR gates 1280 then provides either the read data 1260 (if flag bit 1270 is not activated) or an inverted version of the read data 1260 (if flag bit 1270 is activated) to the output of the resistive change element array 1290.
  • Such a logic function is analogous to operations 1082 and 1084 within FIG. 10, discussed in detail with respect to that figure above.
  • the methods of the present disclosure employ the RFEC method of the present disclosure in concert with a second error correction routine to provide error correction within a resistive change element array at a desired correctable bit error rate (BER) with reduced parity overhead as compared to using a conventional error correction routine alone.
  • BER bit error rate
  • flag bits distributed across a resistive change element array can delimitate DFEC subsections, wherein the distributed flag bits may be used to correct at least one initialization error per subsection in a first operation, and thereby reduce the number of errors required to be corrected by a conventional error correction routine performed within a second operation to achieve a desired correctable BER.
  • the number of flag bits employed may substantially affect the number of errors which may be corrected by the DFEC methods.
  • the overall parity overhead that is, the total number of DFEC flag bits plus the reduced number of parity bits used for the conventional error correction routine
  • the number of flags and the size of the subsections may be selected to optimize the performance and minimize the parity overhead of a resistive change element array, without reducing the effectiveness of the error correction routine.
  • the reduced number of parity cells realized using the DFEC methods of the present disclosure can also reduce decoding latency with an error correction operation.
  • BCH ECC decoding latency, tncc is given by:
  • m is the number of required parity bits to recover one bit error (as given by EQ1)
  • n is BCH ECC code length (that is, the number of data bits, plus the number of flag bits, plus the number of parity bits for secondary error correction scheme which equals tom*t when BCH is used)
  • p is the number of decoding circuits to work in parallel
  • f is the circuit folding factor
  • F is circuit operating frequency in MHz
  • t is the number of BCH ECC correctable bits.
  • the number of BCH ECC correctable bits "t" can be significantly reduced for a required correctable BER.
  • the single-flag DFEC method of the present disclosure can be expected to correct four errors within this exemplary array, "t" within EQ3 can be reduced to 4, resulting in a BCH ECC decoding latency of 0.82 ⁇ &.
  • the decoding latency for the single-flag DFEC method of the present disclosure can be ignored because the method can be implemented using a relatively simple decoding circuit (as discussed with respect to FIG. 12B above).
  • the RFEC method of the present disclosure provides a 16% improvement in total ECC decoding latency. Such an improvement in performance can be highly desirable within certain applications such as, but not limited to, solid state hard drives and non-volatile memory applications.
  • FIGS. 13A-13D, 14A-14D, 15A-15D and 16A-16C illustrate the effects of subsection size selection and correctable BER on the parity overhead and ECC decoding latency within an exemplary resistive element change array for three DFEC methods.
  • FIGS. 13A-13D are directed at the optimization of the single-flag DFEC (RFEC) method of the present disclosure by varying subsection size, while FIGS. 14A-14D and 15A-15D demonstrate this optimization with the dual reverse flag (DRFEC) and three-flag 2-bit advanced bit flip (ABF) methods, respectively.
  • FIGS. 16A-16C provide a comparison of these three DFEC methods of the present disclosure for different correctable BERs and subsection sizes.
  • FIGS. 13A-13D, 14A-14D, 15A- 15D and 16A-16C are for illustrative purposes only in order to highlight the ways in which optimization of the DFEC methods for specific applications may be accomplished.
  • the data presented in FIGS. 13A-13D, 14A-14D, 15A-15D and 16A-16C is exemplary and in no way should be taken to reflect experimental data.
  • the conclusions drawn therefrom may differ according to the properties and performance of a particular resistive change element array and the engineering requirements of real applications.
  • the exemplary resistive change element array used in FIGS. 13A-3D, 14A- 14D, 15A-15D and 16A-16C is an 8 kilobyte array arranged into eight 1 kilobyte blocks of user data, analogous to array 901 in FIG. 9A, array 1701 of FIG. 17A, or array 2201 of FIG. 22A, depending on the DFEC method employed.
  • the error distribution within this exemplary resistive change element array is assumed to be 75% RESET and 25% SET, as described previously in FIGS. 7A-7D, unless otherwise noted. As such, the initialization state of the array is taken to be RESET according to the state which is expected to result in a higher proportion of errors, though the invention is not limited in the initialization state chosen.
  • FIG. 13A is a table 1301 detailing the parity overhead for the exemplary 8 kilobyte resistive change element array with five different subsection sizes, wherein a correctable BER of 0.2% is required. As such, a correctable BER of 0.2% would require an error correction routine to be capable of correcting 16 errors per block (16 errors divided by 8192 bits/block + parity bits/block yielding about 0.2%). Since the exemplary resistive change element array of FIG. 13A can be expected to yield 75% RESET errors and 25% SET errors, a suitable error correction routine for such an array will be required to correct 12 RESET errors and 4 SET errors within each one kilobyte (8192 bit) block of user data. Within the exemplary array of FIG.
  • the RFEC method of the present disclosure is used in a first operation (requiring one flag bit per subsection), and a BCH error correction cycle (requiring parity bits according to EQ. 1 as described above) is used in a second operation (as is described within FIG. 10 and illustrated in FIGS. 11A-11E) to realize a correctable BER of 0.2%.
  • each row of table 1301 demonstrates a single block of this exemplary resistive change element array with one kilobyte of user data divided into a different number of subsections (4, 8, 16, 32, and 64 subsections within the first through fifth rows of table 1301, respectively).
  • the flag bit parity overhead, the BCH parity bit overhead, and the total parity overhead are calculated using EQ1 and EQ2 as described in detail above.
  • the single-flag DFEC method of the present disclosure can be expected to correct at least one RESET error per subsection (RESET being the initialization condition within the exemplary array).
  • RESET being the initialization condition within the exemplary array.
  • the four distributed flag bits within each block will be statistically capable of correcting only three (3) RESET errors per block, as indicated by the fourth column of table 1401, which is less than the ideal case wherein each flag bit corrects at least a single error.
  • the DFEC methods may not be expected to correct all of the errors in the array.
  • the next four rows of table 1301 repeat the above calculations for array blocks that are divided into 8, 16, 32, and 64 subsections, respectively.
  • eight 128-byte subsections are capable of correcting 5 RESET errors in an 8-kilobyte block, leaving only 7 RESET errors and 4 SET errors for the BCH error correction cycle and yielding a total parity overhead of 2.0% and a decoding latency of 1.10 ⁇ &. Parity overhead is further improved, as shown in the third row of table 1301, by using sixteen 64 byte subsections.
  • the DFEC flag bits can be expected to correct 8 RESET errors, leaving only 4 RESET and 4 SET errors for a BCH error correction cycle and yielding a total parity overhead of 1.6% and a decoding latency of 0.98 ⁇ &.
  • FIG. 13B is a bar graph 1302 plotting the parity overhead calculations for each configuration within FIG. 13A compared with the parity overhead of a BCH ECC only configuration (2.7%, as described in detail above).
  • the DFEC configuration that provides the lowest overall parity overhead is a configuration using 16 flag bits to delimitate sixteen 64-byte subsections per block. As described above, such a configuration would use 16 flag bits (1 flag bit for each subsection) to correct 8 RESET errors and 112 BCH parity bits to correct 4 RESET and 4 SET errors, yielding a total parity overhead of 1.6%.
  • FIG. 13C is a table 1303 detailing the parity overhead for an exemplary resistive change element array over five different subsection sizes wherein a correctable BER of 0.3% is required.
  • the exemplary resistive change element array used within the calculations of table 1303 is identical to the array used within FIGS. 13A and 13B, however, in this case RESET errors are expected to occur 83% of the time (for 24 total errors, 20 are expected to be RESET and 4 are expected to be SET errors).
  • a correctable BER of 0.3% requires an error correction routine capable of correcting 24 errors (20 RESET errors and 4 SET errors) within a 1 -kilobyte block of user data.
  • the first row of table 1303 shows that for an array configuration of four 256-byte subsections per 1 kilobyte block, the single- flag DFEC method of the present disclosure can be expected to provide a total parity overhead of 3.6% with a decoding latency of 1.33 for a correctable BER of 0.3% (as compared to a 4.1% parity overhead with a decoding latency of ⁇ . ⁇ for a BCH only system).
  • FIG. 13D it is shown that for a 0.3% correctable BER, the exemplary resistive change element array of FIGS. 13C would use the lowest total parity overhead using a configuration of sixty- four 16-byte subsections per block. Such a configuration would use 64 flag bits (1 flag bit for each subsection) to correct 9 RESET errors and 98 BCH parity bits to correct 3 RESET and 4 SET errors, yielding a total parity overhead of 2.0%. As with the results of FIGS. 13A and 13B, this parity overhead can be compared to an error correction scheme using BCH alone, wherein the BCH error correction cycle would be required to correct all 24 errors.
  • the combination of the DFEC methods of the present disclosure with a second error correction method can be useful as the second error correction method can be used to recover data retention errors as well as programming errors.
  • a second error correction method such as a BCH ECC method, as discussed throughout the present specification
  • the DFEC methods of the present disclosure can only be used to correct initialization errors introduced during a programming operation.
  • other types of errors such as, but not limited to, data retention errors
  • the use of the DFEC methods of the present disclosure in concert with a second error correction scheme can be highly desirable within such applications.
  • FIGS. 14A-14D repeat the above calculations for the dual reverse flag error correction (DRFEC) DFEC method, in which two flags are used to indicate the presence of errors on an even or an odd data bit.
  • DRFEC dual reverse flag error correction
  • the exemplary resistive change element array of FIGS. 14A-14D is identical to that of FIGS. 13A-13D, except that it has been configured to use two flag bits per subsection rather than one.
  • the additional flag bit may allow a greater percentage of errors to be corrected by the DRFEC method, particularly continuous errors (errors occurring on two adjacent data bits).
  • FIG. 14A is a table 1401 detailing the necessary parity overhead to achieve a 0.2% correctable BER in a single resistive change element block at different subsection sizes, using the DRFEC method of the present disclosure.
  • each DRFEC flag may be expected to correct at least one odd and at least one even error in a subsection, an improvement over the single-flag DFEC method described above.
  • a 0.2% BER on a 1-kilobyte block results in 16 errors per block - 12 RESET and 4 SET errors - which occur randomly across the array.
  • the random nature of error occurrence therefore, may require optimization of the subsection size to achieve a given correctable BER with greatest efficiency.
  • the sixth column of table 1401 details the errors remaining after use of the DFEC methods which must be corrected by BCH ECC. As can be seen in the first row, for instance, BCH must correct 7 RESET and 4 SET errors. From EQ1 above, BCH requires 154 parity bits (14 parity bits/error x 11 errors) to correct all remaining errors in the array, yielding a total parity overhead of 2.0%, as seen in the ninth column, which includes both BCH parity bits and eight (8) DFEC flag bits.
  • reducing the number of BCH parity bits may also improve decoding latency according to EQ3, as shown in the tenth column of 1401.
  • Using four subsections, for instance, may reduce the decoding latency from 1.3 for BCH alone to 1.1 for the DRFEC method, while using thirty-two subsections may reduce the latency further to 0.9 ⁇ .
  • smaller subsections, such as those of the thirty-two subsection configuration may reduce the decoding latency despite increasing the overall parity overhead.
  • these tradeoffs may be used to optimize the DFEC configuration employed for a specific application. In this way, the DRFEC method of the present disclosure may be used to improve the efficiency of error correction in a resistive change element array.
  • FIG. 14B depicts the overall parity overhead data displayed in table 1401 graphically in chart 1402.
  • BCH ECC BCH ECC alone
  • 224 parity bits 14 parity bits/error x 16 errors
  • FIG. 14B depicts the overall parity overhead data displayed in table 1401 graphically in chart 1402.
  • all of the DRFEC subsection configurations provide reduced parity overhead compared to BCH ECC alone.
  • the eight and sixteen subsection configurations have nearly identical parity overhead, at 1.6%. In some applications, therefore, since 1.6% also happens to be the smallest parity overhead in these examples, the sixteen subsection configuration may be ideal over the eight subsection configuration, as it possesses lower decoding latency due to the smaller number of BCH parity bits. In this way, the DRFEC configuration may be selected according to the requirements of a specific application.
  • FIG. 14C is a table 1403 detailing the necessary parity overhead to achieve a 0.3% correctable BER in a single resistive change element block at different subsection sizes, using the DRFEC method of the present disclosure.
  • the RESET error proportion in the array is slightly higher, at 83%.
  • 20 RESET and 4 SET errors may be expected.
  • the DFEC flag bits may not be able to correct as many errors as their theoretical maximum due to the statistical nature of the error distribution. Even so, as can be seen in table 1403, the DRFEC method may be used to dramatically reduce the number of BCH parity bits.
  • the sixteen subsection configuration can be expected to correct 14 errors, thereby reducing the number of BCH parity bits from 336 (14 parity bits/error x 24 errors) for BCH alone to 140, and the total parity overhead from 4.1% to 2.1% - nearly a 50% reduction.
  • FIG. 14D plots the data of table 1403 in chart 1404.
  • the DRFEC method may be seen to dramatically reduce the parity overhead compared to BCH alone.
  • the thirty-two subsection configuration may be seen to have the smallest parity overhead - 2.0%.
  • FIG. 14A and 14B at 0.2% BER, in which the optimal configuration was a sixteen subsection block, it is clear that a higher BER requires smaller subsections to separate the errors into separate subsections. This demonstrates the ability to optimize the DFEC configuration based on the expected correctable BER and the requirements of specific applications.
  • FIGS. 15A-15D repeat the above exemplary statistical analysis for the three- flag 2-bit advanced bit flip (ABF) DFEC method of the present disclosure, wherein three flag bits are used to store a pattern reference code (PRC) corresponding to an encoding pattern which encodes a set of input data which has been divided into 2-bit subsets.
  • PRC pattern reference code
  • the exemplary resistive change element array used in these examples is identical to those of FIGS. 13A-13D and 14A-14D above, except that it has been configured with three DFEC flag bits per subsection.
  • FIGS. 15A-15D, and in FIGS. 13A- 13D and 14A-14D above, is exemplary and in no way should be taken to reflect experimental data.
  • the conclusions drawn therefrom may differ according to the properties and performance of a particular resistive change element array and the engineering requirements of real applications.
  • table 1501 details the required BCH parity bits and total parity overhead for five subsection sizes using the three-flag 2-bit ABF method of the present disclosure. As described previously and in more detail below, this ABF method is guaranteed to correct at least two initialization errors per subsection (if two errors in fact occur), leading to a substantially improved error correction rate. This may be seen in the fourth column, wherein the four subsection method may correct 6 RESET errors (compared to the RFEC and DRFEC methods, which may correct only 3 and 5 RESET errors, respectively). Hence, at sixteen subsections, the total parity overhead is reduced to 1.4%, compared to the 2.7% overhead required for BCH alone.
  • the three-flag ABF method is most efficient at sixteen subsections. Increasing the number of subsections further simply increases the flag bit overhead without reducing the number of BCH parity bits. This behavior is similar to that shown in FIGS. 13B and 14B, but is exacerbated by the larger number of flag bits per subsection. That said, as will be discussed in detail with respect to FIGS. 16A-16C, this ABF method is clearly the most effective of the DFEC methods considered at correcting errors, despite significantly reduced efficiency at smaller subsections. This highlights the ability to tailor the DFEC methods to specific applications, both in terms of the DFEC method employed (RFEC, DRFEC, or ABF), and in the specific configurations thereof.
  • FIG. 15C continues this analysis of the three-flag 2-bit ABF method for a correctable BER of 0.3%, detailed in table 1503.
  • the proportion of RESET errors in this case is taken to be 83% (20 RESET errors per 24 total errors) rather than 75%, as in FIG. 15A.
  • the higher number of errors, and higher proportion of RESET errors is expected to impact the optimization of this ABF method by increasing the likelihood of multiple errors in a single subsection.
  • the number of errors corrected by this ABF method does not reach a maximum in the examples provided. That said, however, the lowest total parity overhead still occurs at sixteen subsections - 2.0%, compared to the 4.1% required for BCH alone - while the number of BCH parity bits and decoding latency continues to decrease with smaller subsections.
  • FIG. 15D depicts these results graphically in chart 1504.
  • the total parity overhead decreases rapidly. Beyond this, the increase in flag bit parity overhead outweighs the decrease in BCH parity overhead, but unlike FIG. 15B still provides a reduced parity overhead when compared to BCH alone.
  • the sixteen subsection configuration may therefore be considered the ideal configuration in certain applications.
  • the reduced decoding latency at thirty-two subsections (as a result of the smaller number of BCH parity bits) may be more important than the small increase in parity overhead over the sixteen subsection configuration - 2.2% compared to 2.0%.
  • this ABF method may be more efficient at high correctable BER due to its higher effectiveness at error correction, and may be optimized according to the needs of a specific application.
  • FIG. 16A is a chart 1601 comparing the total parity overhead for the RFEC (single-flag), DRFEC (dual-flag) and three-flag 2-bit ABF methods to BCH alone for different correctable bit error rates.
  • RFEC single-flag
  • DRFEC dual-flag
  • 3-flag 2-bit ABF three-flag 2-bit ABF methods
  • the RFEC method provides slightly lower overhead
  • the DRFEC method significantly reduces the number of BCH parity bits, resulting in lower decoding latency (0.78 ⁇ compared to 0.82 ⁇ ).
  • either method may be considered advantageous.
  • the three-flag ABF method proves more efficient in both parity overhead and decoding latency. As explained previously, this is a result of the higher effectiveness of this ABF method at correcting RESET errors despite requiring a larger number of flag bits. Indeed, at a correctable BER of 0.5%, this ABF method may require a parity overhead of only 2.4% compared to 6.8% for BCH alone. This implies a reduction of nearly 65%. In this way, the DFEC methods of the present disclosure may be used to dramatically reduce the number of BCH parity bits and overall parity overhead required to achieve a given correctable BER.
  • FIG. 16B depicts a chart 1602 comparing the parity overhead required by the RFEC, DRFEC, and the three-flag 2-bit ABF methods of the present disclosure to achieve a correctable BER of 0.2% in five subsection configurations, using the data previously presented in FIGS. 13A, 14A, and 15A. As described previously, and indicated by the arrows in chart 1602, it may be seen that this ABF method is most effective for larger subsections due to its higher effectiveness at RESET error correction. For smaller subsections, such as the thirty-two and sixty-four subsection configurations, the RFEC method proves most efficient.
  • the three-flag 2-bit ABF method may be more effective at higher correctable BER.
  • chart 1603 shows that this ABF methods is again the most efficient of the DFEC methods considered for large subsections, up to the sixteen subsection configuration. At thirty-two subsections, however, the DRFEC method provides the lowest parity overhead, and at sixty-four the RFEC method is most efficient. This demonstrates the ability to tailor the DFEC methods to address the needs of a specific application by optimizing the DFEC method employed, and the specific configuration thereof. Further, FIGS.
  • 13A-13D, 14A-14D, 15A-15D, and 16A-16C show how the DFEC methods of the present disclosure may be used to substantially reduce the total parity overhead and decoding latency required to achieve a given correctable BER for a resistive change element array.
  • the single-flag DFEC method may be used to correct at least a single initialization error per subsection in a resistive change element array. This method, however, provides only a 50% chance of correcting two initialization errors per subsection. Thus, in certain applications wherein the error distribution is expected to result in multiple errors per subsection, or a large degree of continuous errors (that is, errors occurring on two adjacent data bits), the single-flag DFEC method may be insufficient. In these circumstances, two flag bits per subsection may be employed to increase the error correction rate.
  • FIGS. 17A-17B, 18, and 19A-19F teach a second DFEC method using dual flag bits.
  • DPFEC dual reverse flag error correction
  • two flag bits per subsection are distributed across a resistive change element array to delimitate each subsection.
  • these two flag bits are used to indicate the presence of initialization errors within the subsection and to invert the input data accordingly.
  • one flag bit indicates errors on even data bits while the other indicates errors in the odd data bits.
  • the input data may be matched to the error pattern in four ways - no effective errors (neither flag bit is activated), at least one odd error with no effective even errors (only the odd flag bit is activated), at least one even error with no effective odd errors (only the even flag bit is activated), or at least one even and at least one odd error (both flag bits are activated), as will be described in more detail during discussion of FIGS. 18 and 19A- 19F.
  • the dual-flag DFEC method may be guaranteed to correct at least one even and one odd error per subsection.
  • FIG. 17A depicts an exemplary resistive change element array 1701 configured for use with the DRFEC method of the present disclosure in concert with a secondary error correction method, in this case BCH.
  • Resistive change element array 1701 comprises multiple, in this example, eight, BCH ECC memory blocks 1710, which are illustrated in more detail in FIG. 17B.
  • Each memory block 1710 is divided into several, in this example, four, DFEC subsections 1711, which comprise data bits 1711a and two DFEC flag bits 1711b.
  • Each memory block 1710 additionally comprises BCH parity bits 1712.
  • Initialization errors may occur throughout resistive change element array 1701, including data bit errors 1720 which occur in data subsections 1711a, BCH parity errors 1730 which occur in the BCH parity bits 1712, and DFEC flag errors 1740 which occur in DFEC flag bits 1711b.
  • each of the DFEC flag bits 1711b in subsections 1711 are capable of correcting at least one data bit initialization error 1720 per subsection 1711.
  • DFEC flag bit initialization errors 1740, BCH parity bit errors 1730, and all other errors must be corrected by a secondary error correction method.
  • the use of the dual-flag DFEC method may substantially reduce the number of errors required to be corrected by this secondary error correction method for a given BER.
  • the secondary error correction methods require many parity bits 1712 to correct a single error (BCH ECC requires 14 parity bits/error for an 8 kilobyte block, for instance), compared to DFEC methods of the present disclosure which require only a single flag bit to correct a single data bit initialization error 1720, the use of the DFEC methods of the present disclosure may substantially reduce the parity overhead for a given correctable BER.
  • FIG. 17B depicts the exemplary memory block 1710 of FIG. 17A in more detail.
  • memory block 1710 comprises multiple, in this case, four, subsections 1711, as well as parity bits 1712 for use with a selected secondary error correction method (such as, but not limited to, BCH).
  • Subsections 1711 comprise data bits 1711a and DFEC flag bits 1711b.
  • memory block 1710 is configured for the DRFEC method and hence DFEC flag bits 1711b comprise two flag bits 1715a and 1715b, which may be designated even or odd according to the needs of a certain application.
  • flag bit 1715a may indicate even errors within data section 1711b while flag bit 1715b indicates the odd errors
  • flag bit 1715a may indicate odd errors while flag bit 1715b indicates the even errors
  • the invention is not limited in this regard.
  • bits are designated even or odd according to their position within the array in an alternating pattern.
  • the second will be odd, the third even, and so on in an alternating pattern to the end of the data section.
  • the present disclosure refers to the first data bit in a data section as even, but the invention is not limited in this regard.
  • FIG. 18 is a flowchart depicting the use of the dual-flag DFEC method of the present disclosure during a programming/read operation 1800 on a single subsection of a resistive change element array, such as that depicted in FIG. 17A.
  • the initialization state of the array is taken to be RESET (or, logic "0"), but the invention is not limited in this regard.
  • the subsection is initialized, wherein all cells (including both DFEC flags and data cells) are placed into a RESET state.
  • a second process step 1814 the subsection is checked for initialization errors (that is, a cell which has not been placed into a RESET state and instead remains in a SET state) and the process advances to step 1816.
  • step 1816 if there were no initialization errors detected in step 1814, the process advances to step 1850 without employing the DFEC pattern encoding methods. Otherwise the process proceeds to step 1822, wherein the input data (that is, the data due to be written to the subsection) is compared to the error cells. If all of the error cells detected in step 1814 are due to be programmed into a SET state there is effectively no error, as the cells are already in the desired final state. In this case the process advances to step 1850 without employing the DFEC pattern encoding methods.
  • the DFEC methods may be used to correct at least one of the errors and the process proceeds to data pattern matching (DPM) step 1830.
  • DPM data pattern matching
  • the DFEC flag bits are activated according to the position of the error(s) in the block. Thus, if there is at least one even error, the even flag bit is activated, and if there is at least one odd error the odd flag bit is activated. If there are both even and odd errors present in the subsection, then both flag bits will be activated. In some cases, however, wherein the number of effective errors is less than half of the number of total errors, the corresponding flag bit will remain un-activated. Thus, for example, if four total even errors occur but only one is an effective error, the even flag bit may remain un- activated. In these situations, inverting the input data may increase the number of errors.
  • step 1840 the input data is encoded according to the pattern indicated by the pattern reference code (PRC). If only the even flag is activated then only the even input data bits are inverted, and if only the odd flag bit is activated then only the odd input data bits are inverted. If both even and odd flag bits are activated then all of the input data will be inverted, similarly to the single-flag DFEC method discussed previously. In this way, the input data is encoded to match the error pattern present in the array.
  • PRC pattern reference code
  • the original input data (if there were no effective errors), or the DFEC encoded input data, is further encoded using a secondary error correction method (in this case, BCH ECC), including the DFEC flag cells.
  • BCH ECC secondary error correction method
  • the encoded input data is written to the subsection in step 1860, as well as the BCH parity bits, wherein cells requiring a logic "1" according to the encoded input data are SET. At this point, the array has been programmed with the input data and may remain in this state until overwritten.
  • step 1870 a READ operation is performed on the subsection and the READ data is subsequently decoded using the secondary error correction method (in this case, BCH ECC).
  • BCH ECC the secondary error correction method
  • the DFEC flag bits are checked in step 1882. If neither flag bit is activated, then the process proceeds to step 1890 and is complete. If at least one flag bit is active, however, the process advances to reverse data pattern matching (RDPM) step 1884.
  • RDPM reverse data pattern matching
  • RDPM step 1884 the output data is inverted according to the active DFEC flags, or, the pattern reference code (PRC).
  • PRC pattern reference code
  • the DRFEC method of the present disclosure may be capable of correcting at least one odd and one even initialization error per subsection. If the subsection contains multiple even or multiple odd initialization errors, however, the dual-flag method may not be able to correct all of the errors in the subsection. Further, the DFEC methods of the present disclosure are only capable of correcting initialization errors. Therefore, a secondary error correction method, such as BCH, is required to correct programming errors, DFEC flag errors, data retention errors, and any initialization errors that are not corrected by the DFEC methods.
  • BCH secondary error correction method
  • FIGS. 19A-19F illustrate the use of the dual-flag DFEC method of the present disclosure to correct various error patterns in an exemplary resistive change element array subsection.
  • the subsection used in the examples of FIGS. 19A-19F is for illustrative purposes only, and in real applications a subsection may contain a far greater number of data bits than the four depicted. Further, as in previous examples, the initialization state of the subsection is taken to be RESET (logic "0"), but the invention is not limited in this regard.
  • FIG. 19A depicts an exemplary programming/read operation 1901 in which the DRFEC method of the present disclosure is used to correct a single odd error in a subsection.
  • a first operation 1910a analogous to operations 1812, 1814, and 1816, all of the bits in the subsection (including both data and flag bits) are initialized to a RESET state.
  • Data bit 1915a failed to initialize and remains in a SET state. Since an error has been detected, the operation moves to step 1920a, wherein error cell 1915a is compared to the input data 1925a. As can be seen, data cell 1915a needs to be in a RESET state. Thus, the operation proceeds to data pattern matching (DPM) step 1930a.
  • DPM data pattern matching
  • the error cell is identified as an odd bit and the odd flag bit is activated to indicate the presence of an odd error.
  • the input data is encoded according to the data pattern indicated by the activated flags in step 1940a. Since the odd flag bit is activated, all of the odd bits in the input data are inverted.
  • the DFEC encoded input data and flag bits is then further encoded using a secondary error correction method, such as BCH, in step 1950a.
  • the encoded input data is then written to the subsection in step 1960a.
  • the subsection, aside from error cell 1915a, is already in a RESET state, and thus only those bits which require a logic "1", as per the encoded input data, need to be set.
  • Error cell 1915a is already in a SET state, however, and may not require programing, but in certain applications error cell 1915a may be set again to ensure it is fully in a SET state. At this stage, the encoded input data has been written to the subsection and the programming operation ends.
  • step 1970a To retrieve the input data, a READ operation is performed, beginning at step 1970a.
  • step 1970a the memory block is read and the READ data subsequently decoded using the secondary error correction method.
  • RDPM reverse data pattern matching
  • the DFEC encoded output data is decoded according to the PRC indicated by the DFEC flags. In this case, the odd flag bit is active and therefore all odd bits in the output data are inverted.
  • programming/read operation 1901 concludes. In this way, the dual- flag DFEC method of the present disclosure may be used to correct an odd initialization error.
  • the DRFEC method of the present disclosure is used to correct an even error in a subsection.
  • a first operation 1910b analogous to operations 1812, 1814, and 1816, all of the bits in the subsection (including both data and flag bits) are initialized to a RESET state.
  • Even data bit 1916b failed to initialize and remains in a SET state. Since an error has been detected, the operation moves to step 1920b, wherein error cell 1916b is compared to the input data 1925b. As can be seen, data cell 1916b needs to be in a RESET state. Thus, the operation proceeds to data pattern matching (DPM) step 1930b.
  • DPM data pattern matching
  • the error cell is identified as an even bit and the even flag bit is activated to indicate the presence of an even error.
  • the input data is encoded according to the PRC indicated by the activated flags in step 1940b. Since the even flag bit is activated, all of the even bits in the input data are inverted.
  • the DFEC encoded input data and flag bits is then further encoded using a secondary error correction method, such as BCH, in step 1950b.
  • the encoded input data is then written to the subsection in step 1960b.
  • the subsection, aside from error cell 1916b, is already in a RESET state, and thus only those bits which require a logic "1", as per the encoded input data, are set.
  • Error cell 1915b is already in a SET state, however, and may not require programing, but in certain applications error cell 1916b may be set again to ensure it is fully in a SET state. At this stage, the encoded input data has been written to the subsection and the programming operation ends.
  • step 1970b To retrieve the input data, a READ operation is performed, beginning at step 1970b.
  • step 1970b the memory block is read and the READ data subsequently decoded using the secondary error correction method.
  • RDPM reverse data pattern matching
  • the DFEC encoded output data is decoded according to the PRC indicated by the DFEC flags. In this case, the even flag bit is active and therefore all even bits in the output data are inverted.
  • programming/read operation 1902 concludes. In this way, the dual- flag DFEC method of the present disclosure may be used to correct an even initialization error.
  • FIG. 19C illustrates the necessity of a secondary error correction method to ensure that all errors in a subsection can be corrected during a programming/read operation 1903.
  • step 1910c all cells in the subsection are initialized to a RESET state.
  • the input data 1925c remains unchanged, and the DFEC flag bits remain unactivated.
  • step 1950c the input data is encoded using a secondary error correction method, in this case BCH ECC, and then written to the subsection in step 1960c. Since the subsection has been initialized to a RESET state, only those cells which require a SET state need to be written. As can be seen, however, during set process 1960c, cell 1917c failed to set and remains in a RESET state. At this point, input data 1925c has been programmed to the subsection with one error, and will remain in this state until overwritten.
  • a secondary error correction method in this case BCH ECC
  • FIG. 19D demonstrates the correction of a continuous error (that is, two errors occurring on adjacent data bits) using the dual-flag DFEC method of the present disclosure during programming/read operation 1904.
  • a continuous error that is, two errors occurring on adjacent data bits
  • step 1910d all the cells in the subsection are initialized to a RESET state.
  • a continuous error occurs, wherein two data bits, 1915d and 1916d, fail to initialize and remain in a SET state.
  • step 1920d these errors are detected and subsequently compared to input data 1925d to check the desired final state of the error bits.
  • error bits 1915d and 1916d need to be in a RESET state and must be corrected.
  • step 1930d error 1915d is determined to be an odd error, and error 1916d is identified as an even error.
  • both even and odd DFEC flag bits are activated to indicate the presence of both even and odd errors.
  • step 1940d both even and odd bits in input data 1925d are inverted according to the PRC indicated by the activated flag bits. In this case, since both even and odd flag bits are activated, all of the input data is inverted.
  • the DFEC encoded input data, as well as the DFEC flag bits are encoded using a secondary error correction method (in this case BCH ECC) in step 1950d.
  • BCH ECC secondary error correction method
  • the encoded input data and DFEC flag bits are then written to the subsection in step 1960d. Since the subsection has been initialized to a RESET state (aside from error cells 1915d and 1916d), only those cells requiring a SET state need to be written. Following the write process 1960d, the subsection has been programmed with the encoded input data and may remain in this state until overwritten.
  • a READ operation is performed on the subsection.
  • the read data is then decoded using the secondary error correction method in step 1970d. Since at least one DFEC flag bit is activated, the read data is further decoded according to the PRC indicated by the active flag bits in reverse data pattern matching (RDPM) step 1980d. Both even and odd flag bits are active, and thus all of the data bits in the read data are inverted to recover the original input data 1925d, and the operation concludes.
  • RDPM reverse data pattern matching
  • step 1910e all of the bits in the subsection, including both data and flag bits, are initialized to a RESET state in step 1910e.
  • Two cells 1915e and 1916e fail to initialize, however, and remain in a SET state.
  • error cells 1915e and 1916e are compared to input data 1925e to determine whether they are due to be in a SET or RESET state. As can be seen, error cell 1915e needs to be in a RESET state, while error cell 1916e needs to be SET. Since error cell 1916e is already in a SET state, there is effectively no error in this cell.
  • DPM step 1930e activates the DFEC flag bits according to the detected error pattern. Error cell 1915e occurred on an odd bit while even error 1916e does not need to be corrected, thus the odd flag bit is activated to indicate the presence of an odd error while the even flag bit remains unactivated.
  • Input data 1925e is then DFEC encoded according to the PRC indicated by the activated flag bits. Only the odd flag bit is activated, and thus only the odd bits in input data 1925e are inverted.
  • the DFEC encoded input data is further encoded using a secondary error correction method (in this case BCH ECC) in step 1950e.
  • BCH ECC secondary error correction method
  • the encoded input data is then written to the subsection in programming step 1960e. Since the subsection has been initialized to a RESET state (aside from error bits 1915e and 1916e), only those cells requiring a SET state need to be written.
  • Error bit 1916e is already in a SET state, however, and may not need to be programmed, but in certain applications error bit 1916e may be programmed to ensure it is fully in a SET state. Following programming step 1960e, the flag bits and input data 1925e have been written to the subsection, and it may remain in this state until overwritten.
  • a READ operation is performed on the subsection.
  • the read data is then decoded using the secondary error correction method (in this case, BCH ECC) in step 1970e.
  • BCH ECC secondary error correction method
  • the process proceeds to RDPM step 1980e, wherein the encoded read data is further decoded according to the PRC indicated by the activated flags. Only the odd flag bit is active, therefore all of the odd bits in the read data are inverted to recover the original input data 1925e.
  • input data 1925e has been recovered and the operation concludes.
  • the dual-flag DFEC method of the present disclosure may correct at least one initialization error and determine whether an error must be corrected.
  • FIG. 19F demonstrates the use of the dual-flag DFEC method working in concert with a secondary error correction method to correct multiple even or odd errors in programming/read operation 1906.
  • step 1910f the subsection is initialized to a RESET state.
  • Data cells 1915f and 1918f fail to initialize and remain in a SET state.
  • step 1920f error cells 1915f and 1918f are compared to input data 1925f to determine whether the errors need to be corrected. As can be seen, error cell 1915f is due to be SET and does not need to be corrected. Error cell 1918f, however, needs to be in a RESET state. Since a correctable error has been detected, the process proceeds to DPM step 1930f, wherein the DFEC flag bits are activated according to the error pattern detected. Correctable error 1918f occurred on an odd data bit, therefore only the odd flag bit is activated.
  • Input data 1925f is then encoded according to the PRC indicated by the activated flag bits in step 1940f. Since the odd flag bit is activated, all of the odd bits in input data 1925f are inverted. As can be seen, although this process corrects error 1918f, error cell 1915f is now effectively an error, as it now needs to be in a RESET state rather than a SET state according to the DFEC encoded input data. As discussed previously, however, the DFEC methods of the present disclosure are only capable of correcting initialization errors, and thus cannot correct error cell 1915f.
  • input data 1925f is then further encoded using a secondary error correction method (in this case, BCH ECC) in step 1950f.
  • BCH ECC secondary error correction method
  • the encoded input data is then written to the subsection in step 1960f.
  • the subsection has been initialized to a RESET state (aside from error cells 1915f and 1918f), however, and thus only those cells requiring a SET state need to be written.
  • error cell 1918f has been corrected
  • error cell 1915f remains in a SET state despite needing to be in a RESET state, and is now effectively an error.
  • a READ operation is performed on the subsection.
  • the read data is first decoded using the secondary error correction method (in this case, BCH ECC) in step 1970f.
  • error 1915f which could not be corrected by the dual-flag DFEC method, is corrected by the secondary error correction method.
  • the read data is further decoded in RDPM step 1980f.
  • the read data is decoded according to the PRC indicated by the activated flags. Only the odd flag bit is activated, therefore all of the odd bits in the read data are inverted to recover the original input data 1925f.
  • the dual-flag DFEC method may be used in concert with a secondary error correction method to correct multiple odd or even initialization errors in a subsection.
  • FIG. 20A is a simplified schematic diagram illustrating an exemplary encoding circuit 2001 suitable for use with the dual- flag DFEC method of the present disclosure, which handles the error detection, data pattern matching (DPM) and encoding steps described above.
  • exemplary encoding circuit 2001 is arranged for use with a resistive change element array that uses RESET (that is, logic "0") as its initialization state.
  • RESET that is, logic "0"
  • DFEC methods of the present disclosure can also be used within a resistive change element array that uses a SET state as an initialization condition, and exemplary encoding circuit 2001 is intended only as a non-limiting, illustrative example of a circuit capable of encoding programming data according to the DRFEC method of the present disclosure.
  • an array of AND gates 2025 ANDs together the data cells of a resistive change element array subsection 2010 with input data 2015 (analogous to input data 1925a-f in FIGS. 19A-19F) which is inverted through an array of Inverter gates 2020.
  • the outputs of AND gates 2025 are divided between odd and even bits, depending on the position of the attached cell in the subsection.
  • the even bits are then ORed together with OR gate 2030 to provide even flag bit 2052 for the subsection 2010, while the odd bits are then ORed together with OR gate 2035 to provide odd flag bit 2055.
  • Such a configuration will activate (that is, set to a logic "1" within this exemplary encoding circuit 2001) the appropriate flag bit(s) 2052 or 2055 if any data cell within subsection 2010 fails to initialize (that is, if any data cell is in a SET state) and is intended to be programmed into a RESET state, referred to as an effective error.
  • an effective error if at least one effective initialization error occurs on an even bit, even flag bit 2052 will be activated, while if at least one effective initialization error occurs on an odd bit then odd flag bit 2055 will be activated.
  • Such a logic function is analogous to operations 1814, 1816, 1822, 1824, and 1830 within FIG. 18, discussed in detail with respect to that figure above.
  • an array of Exclusive OR gates 2040 selectively inverts the even and odd input data 2015 dependent on the state of flag bits 2052 and 2055. For each bit, the array of Exclusive OR gates 2040 then provides either the input data 2015 (if the corresponding flag bit 2052 or 2055 is not activated) or an inverted version of the input data 2015 (if the corresponding flag bit 2052 or 2055 is activated) to form the program data 2050, which will be programmed into the array in a programming operation.
  • Such a logic function is analogous to operation 1840 within FIG. 18, discussed in detail above.
  • FIG. 20B is a simplified schematic diagram illustrating an exemplary decoding circuit 2002 suitable for use with the dual-flag DFEC method of the present disclosure, which handles the reverse data pattern matching (RDPM) and DFEC decoding steps described above.
  • exemplary decoding circuit 2002 is arranged for use with a resistive change element array that uses RESET (that is, logic "0") as its initialization state.
  • RESET that is, logic "0"
  • DFEC methods of the present disclosure can also be used within a resistive change element array that uses a SET state as an initialization condition, and exemplary decoding circuit 2002 is intended only as a non-limiting, illustrative example of a circuit capable of decoding program data according to the dual-flag DFEC method of the present disclosure.
  • an array of Exclusive OR gates 2080 selectively inverts read data 2060 (that is, data read out of an array subsection) dependent on the position of each bit and the state of the corresponding flag bit 2072 or 2075.
  • read data 2060 that is, data read out of an array subsection
  • each even bit in read data 2060 will be inverted if even flag bit 2072 is active, while each odd bit in read data 2060 will be inverted if odd flag bit 2075 is active.
  • the array of Exclusive OR gates 2080 then provides either the read data 2060 (if the flag bit 2072 or 2075 corresponding to the data bit is not activated) or an inverted version of the read data 2060 (if the flag bit 2072 or 2075 corresponding to the data bit is activated) to form the output data 2090 of the resistive change element array.
  • Such a logic function is analogous to operations 1882 and 1884 within FIG. 18, discussed in detail with respect to that figure above.
  • the dual-flag DFEC method may be used to correct at least one odd and one even initialization error per subsection in a resistive change element array. This method, however, provides only a 75% chance of correcting two initialization errors per subsection, due to the statistical distribution of errors. Thus, in certain applications wherein the error distribution is expected to result in multiple even or odd errors per subsection, the dual- flag DFEC method may be insufficient. In these circumstances, a more advanced form of error pattern matching using two or more flag bits per subsection may be employed to increase the error correction rate.
  • ABF uses distributed flag bits to delimitate subsections within a resistive change element array. Following initialization, these distributed flags may be used to store a pattern reference code (PRC) which identifies an encoding pattern selected during a data pattern matching (DPM) step, wherein the pattern of initialization errors within the subsection is matched to the input data pattern to select an encoding pattern capable of correcting the maximum number of initialization errors.
  • PRC pattern reference code
  • DPM data pattern matching
  • the input data is then encoded so that at least some of the initialization errors may be corrected, as has been described similarly with respect to the single-flag and dual- flag DFEC methods.
  • the ABF method divides the subsections within a resistive change element array and the set of input data into equivalent data subsets comprising at least two data bits.
  • the 2-bit ABF method groups pairs of data bits in the array and the input data into subsets of two bits, so that a set of input data having the pattern (00101110) would be divided into subsets of two bits (00 10111 10).
  • a 3-bit ABF method would divide a set of data into subsets of three bits, while a 4-bit ABF method would divide a set of data into subsets of four bits.
  • 10 11 10) for the 2-bit method would thus be divided into two subsets (0010 1110) for the 4-bit method.
  • encoding patterns may be identified to translate one data pattern to a second data pattern.
  • a subset of input data having the data pattern 10 could be translated to 00, 01, 10 or 11 before being written to the array.
  • a 2-bit subset of data from an initialized array contains a single error, for instance, it may have a data pattern of either 10 or 01, and its corresponding subset in the input data may have a data pattern of either 00, 01, 10 or 11. It may be apparent that if the error pattern matches the input pattern there is effectively no error. Thus, an error pattern of 10 having a corresponding input pattern of 10 or 11 may not be considered an effective error.
  • the input pattern may be translated according to a reversible encoding pattern to correct the error. For example, if an even error occurs (10) with an input pattern of 00, 00 may be translated to 10 or 11 in order to correct the error.
  • the ABF method of the present disclosure may be used to correct initialization errors in a resistive change element array by employing a set of encoding patterns.
  • the ABF method therefore provides a much higher error correction rate by allowing more advanced data patterns to be identified.
  • the number of flags employed for the DFEC methods determines the number of pattern codes which may be stored.
  • a single flag bit provides two patterns
  • two flag bits provides four patterns
  • three flag bits provides eight patterns
  • n flag bits provide 2 n patterns.
  • encoding patterns may be identified for subsets comprising any number of data bits.
  • the present disclosure describes the ABF method using subsets of two data bits, but it will be apparent to those skilled in the art that subsets comprising any number of data bits may be employed.
  • a "data subset” or “subset” may be used interchangeable to refer to two or more data bits which have been grouped together for the purposes of encoding and decoding.
  • a data subset may comprise any number of data bits according to the requirements of a certain application.
  • a data subset may be defined within the design of the resistive change element array itself, or may be defined by a processing element, encoding circuit, decoding circuit, or whatever means best befits a particular application.
  • the invention is not limited in the specific method employed nor in the number of bits grouped into a data subset.
  • Each pattern 2110 has an associated pattern reference code (PRC) 2120 which, when stored in the DFEC flags, indicate which pattern must be employed for DFEC encoding of the input data and decoding of the read data.
  • PRC pattern reference code
  • the encoding process is achieved by selectively inverting bits in a data subset, while the decoding process simply reverses the pattern.
  • the "before" columns correspond to the possible patterns for each data subset in the input data, while the "after” columns represent the corresponding encoded pattern for each input data subset.
  • a pair of bits 00 in the input data will be encoded as 11 when written to the subsection, while a pair of bits 01 in the input data will be encoded as 10.
  • the input data may be encoded and decoded according to an encoding pattern in order to match the pattern of errors to the input data.
  • the ABF method utilizes reversible translation patterns to encode input data for the purposes of error correction.
  • these encoding patterns provide a reversible means to translate every possible logical configuration of bits in a data subset to a separate logical configuration without overlap.
  • the number of possible configurations for a given number of bits in a data subset can be calculated as 2 n , where n is the number of bits.
  • a single bit can have two configurations (1 or 0), two bits can have four combinations (00, 10, 01 and 11), three bits can have eight combinations, and four bits can have sixteen configurations.
  • each configuration must be matched with only a single encoded configuration without overlap to ensure reversibility (for example, an input 11 cannot be translated as both 01 and 10, and input patterns 00 and 10 cannot both translate to 01), the total number of possible encoding patterns may be calculated as 2"!, where n is the number of bits in a subset.
  • n is the number of bits in a subset.
  • the number of bits chosen to form a subset may substantially affect the error correction rate.
  • the 3-bit ABF method which has 40,320 encoding patterns, requires 16 flags (log 2 (40,320)), and the 4-bit ABF method requires 45.
  • Increasing the number of bits in a subset may therefore increase the flag bit overhead, but may also improve the error correction rate by allowing a greater percentage of errors to be corrected.
  • the total set of encoding patterns guarantees the ability to translate each input pattern to any output pattern, not all of these patterns may be necessary for certain applications. Therefore, in certain applications it may be advantageous to select a smaller set of the total set of encoding patterns (such as the eight patterns depicted in FIG. 21A) to simplify the encoding and decoding process.
  • 3. smaller set of encoding patterns may be selected from the total mathematically possible set of encoding patterns according to certain criteria.
  • any combination of two input data patterns within all possible data patterns must be capable of being encoded to all four possible combinations of two errors in two data subsets (10 and 10, 01 and 01, 10 and 01, and 01 and 10).
  • a set of encoding patterns meeting these requirements may be guaranteed to correct up to two errors per subsection, such as the set of 8 patterns depicted in FIG. 21A. If more than two errors occur, however, these patterns may still be able to correct all the errors (as shown in FIG. 24F below) dependent on the error and input data patterns. It will be apparent that using a larger number of flag bits allows a greater number of encoding patterns to be selected.
  • encoding patterns may provide a greater ability to address more than two errors, should they occur, as will be discussed in more detail below.
  • the criteria by which the encoding patterns are selected may vary. For instance, a set of six encoding patterns could be defined to guarantee all input data subsets with a pattern 00 are translated to 11, or all input subsets with 01 are translated to 10. The selection of the eight patterns shown in FIG. 21A is therefore provided only as an example, and such a set of encoding patterns can be defined by whatever criteria may provide a desired encoding result.
  • the number of bits grouped together for the purposes of data pattern matching and DFEC encoding may be selected according to the needs of a specific application. Indeed, it will be apparent to those skilled in the art that encoding patterns may be identified for groups of three data bits, or even larger groups of four or more bits.
  • the subset size, set of encoding patterns, and number of flags employed for the ABF method must be optimized for a given application and are not limited to the examples herein.
  • FIG. 22A depicts an exemplary resistive change element array 2201 configured for use with the three-flag ABF method of the present disclosure in concert with a secondary error correction method, in this case BCH ECC.
  • Resistive change element array 2201 comprises multiple, in this example, eight, BCH ECC memory blocks 2210, which are illustrated in more detail in FIG. 22B.
  • Each memory block 2210 is divided into several, in this example, four, DFEC subsections 2211, which comprise data bits 2211a and three DFEC flag bits 2211b.
  • Each memory block 2210 additionally comprises BCH parity bits 2212. Unlike the previous examples discussed in FIGS.
  • data bits 2211b may be divided into data subsets in order to employ the patterns depicted in FIG. 21 above. These data subsets may be defined by hardware or may be defined during the encoding process, the invention is not limited in this regard. Further, it will be apparent to those skilled in the art that the number of data bits and data subsets per subsection is arbitrary and may be substantially large in real applications.
  • Initialization errors may occur throughout resistive change element array 2201, including data bit errors 2220 which occur in data subsections 2211a, BCH parity errors 2230 which occur in the BCH parity bits 2212, and DFEC flag errors 2240 which occur in DFEC flag bits 2211b.
  • the three DFEC flag bits 2211b in subsections 2211 are capable of correcting at least two data bit initialization errors 2220 per subsection 2211.
  • DFEC flag bit initialization errors 2240, BCH parity bit errors 2230, and all other errors must be corrected by a secondary error correction method.
  • the use of the ABF method may substantially reduce the number of errors required to be corrected by this secondary error correction method for a given BER.
  • the secondary error correction methods require many parity bits 2212 to correct a single error (BCH ECC requires 14 parity bits/error, for instance), compared to three-flag 2- bit ABF method of the present disclosure which requires three flag bits to correct two or more data bit initialization errors 2220, the use of the ABF methods of the present disclosure may substantially reduce the parity overhead for a given correctable BER.
  • FIG. 22B depicts the exemplary memory block 2210 of FIG. 22A in more detail.
  • memory block 2210 comprises multiple, in this case, four, subsections 2211, as well as parity bits 2212 for use with a selected secondary error correction method (such as, but not limited to, BCH).
  • Subsections 2211 comprise data bits 2211a and DFEC flag bits 2211b.
  • memory block 2210 is configured for the three-flag ABF method and hence DFEC flag bits 2211b comprise three flag bits per subsection. As described previously, however, a greater number of flag bits may be employed in certain applications in order to store a larger number of pattern reference codes.
  • data bits 2211a are divided into data subsets, which may comprise two or more data bits.
  • FIG. 23 is a flowchart depicting the use of the advanced bit flip (ABF) methods of the present disclosure during a programming/read operation 2300 on a single subsection of a resistive change element array, such as that depicted in FIG. 22A.
  • the initialization state of the array is taken to be RESET (or, logic "0"), but as described previously the invention is not limited in this regard.
  • the subsection is initialized, wherein all cells (including both DFEC flags and data cells) are placed into a RESET state.
  • step 2314 the subsection is checked for initialization errors (that is, a cell which has not been placed into a RESET state and instead remains in a SET state) and the process advances to step 2316.
  • step 2316 if there were no initialization errors detected in step 2314, the process advances to step 2350 without employing the DFEC pattern encoding methods. Otherwise the process proceeds to step 2322, wherein the input data (that is, the data due to be written to the subsection) is compared to the error cells. If all of the error cells detected in step 2314 are due to be programmed into a SET state there is effectively no error, as the cells are already in the desired final state. In this case the process advances to step 2350 without employing the DFEC pattern encoding methods.
  • the DFEC methods may be used to correct at least one of the errors, and the process proceeds to data pattern matching (DPM) step 2330.
  • DPM data pattern matching
  • the error pattern present in the array is compared to the input data pattern.
  • An appropriate encoding pattern such as those depicted in FIG. 21, is selected to match the input data to the initialization errors in order to correct the errors.
  • PRC pattern reference code
  • step 2345 the input data is encoded according to the pattern indicated by the pattern reference code (PRC) indicated by the DFEC flag cells.
  • PRC pattern reference code
  • the flag cells are activated in the 101 pattern, corresponding to pattern 6 (as shown in FIG. 21)
  • all data subsets in the input data with the pattern 10 are encoded as 01
  • all data subsets in the input data with the pattern 10 are encoded as 01
  • data subsets with the pattern 00 or 11 remain unchanged, as will be illustrated in FIGS. 24A-24F.
  • the input data is encoded to match the error pattern present in the array.
  • the original input data (if there were no effective errors), or the DFEC encoded input data, is further encoded using a secondary error correction method (in this case, BCH ECC), including the DFEC flag cells.
  • BCH ECC secondary error correction method
  • the encoded input data, as well as the BCH parity bits, are written to the subsection in step 2360, wherein cells requiring a logic "1" according to the DFEC encoded input data are SET. At this point, the array has been programmed with the input data and may remain in this state until overwritten.
  • step 2370 a READ operation is performed on the subsection and the READ data is subsequently decoded using the secondary error correction method (in this case, BCH ECC).
  • BCH ECC the secondary error correction method
  • the DFEC flag bits are checked in step 2382. If no flag bits are activated (corresponding to pattern 1), then the process proceeds to step 2390 and is complete. If at least one flag bit is active, however, the process advances to reverse data pattern matching (RDPM) step 2384.
  • RDPM reverse data pattern matching
  • RDPM step 2384 the output data is decoded according to the pattern reference code (PRC) indicated by the active DFEC flags.
  • PRC pattern reference code
  • a set of eight encoding patterns (such as the eight patterns depicted in FIG. 21A) for the ABF methods of the present disclosure may be selected to guarantee the correction of at least two initialization errors per subsection. If the subsection contains more than two initialization errors, however, this set of ABF encoding patterns may not be able to correct all of the errors in the subsection. Further, all of the DFEC methods of the present disclosure, including the ABF methods, are only capable of correcting initialization errors. Therefore, a secondary error correction method, such as BCH, is required to correct programming errors, DFEC flag errors, and any initialization errors that are not corrected by the DFEC methods.
  • BCH secondary error correction method
  • FIGS. 24A-24F discuss the use of the three- flag 2- bit ABF method of the present disclosure. That is, these examples divide a subsection and its corresponding input data into subsets of two bits while employing three flag bits per subsection to store a pattern reference code (PRC) to indicate one of eight encoding patterns. As discussed previously, this set of eight patterns may be preselected from the total set of encoding patterns for a given subset size (see FIG. 21B for the possible encoding patterns for the 2-bit method) according to the needs of a particular application. For ease of explanation, the examples of FIGS. 24A-24F employ the eight patterns shown in FIG.
  • PRC pattern reference code
  • 24A-24F is for illustrative purposes only, and in real applications such a subsection may contain a far greater number of data bits than the sixteen depicted.
  • the data cells have been assigned into subsets of two bits for ease of explanation, the data cells may not necessarily be grouped in the hardware of the array layout, and may be grouped by whatever means or in whatever number or pattern befits a particular application.
  • the initialization state of the subsection is taken to be RESET (logic "0"), but the invention is not limited in this regard.
  • FIG. 24A depicts an exemplary programming/read operation 2401 using the three-flag 2-bit ABF method of the present disclosure to correct two even initialization errors in subsection 2411a.
  • a first process step 2410a all of the cells in subsection 2411a, including flag bits 2412a and data bits 2413a, are initialized into a RESET state, analogous to operation 2312.
  • the subsection is checked for initialization errors in step 2415a.
  • two even cells 2416a have failed to RESET and remain in a SET state, and the process proceeds to step 2420a.
  • DPM data pattern matching
  • the first error pair 10 already corresponds to the input data subset 10 and should not be changed.
  • the second error pair 10 needs to correspond to 00 in the input data.
  • pattern 3 is selected to match the input data to the error pattern so as to translate 00 to 11 (thus correcting error 10) and translating 10 as 10 (correcting error 10).
  • the DFEC flags are activated in step 2425a (analogous to operation 2340) according to the pattern reference code (PRC), which is 010 for pattern 3.
  • PRC pattern reference code
  • step 2430a analogous to operation 2345
  • the input data is encoded with the selected pattern, wherein each input data subset is selectively inverted according to the encoding pattern.
  • the DFEC encoded input data and flag cells are then further encoded using BCH ECC in step 2440a.
  • the encoded input data is then written to the subsection in step 2450a. Since the subsection has already been initialized into a RESET state (aside from error cells 2416a), only those cells requiring a logic 1 according to the encoded input data need to be SET. In some applications, error cells 2416a do not need to be programmed, as they are already in the correct state, however, in other applications the error cells may be programmed to ensure they are fully in a SET state. Following this operation, the encoded input data has been written to the subsection and RESET errors 2416a have been corrected.
  • a READ operation is performed on the subsection.
  • the read data is then decoded using BCH ECC in step 2460a. Since the read data has been encoded using the ABF method, the read data must be further decoded in reverse data pattern matching (RDPM) step 2470a.
  • RDPM reverse data pattern matching
  • the PRC indicated by the activated flag bits is used to identify which ABF pattern is required to decode the read data.
  • the data subsets within the read data are then selectively inverted according to the ABF pattern, which in this case is pattern 3.
  • the read data matches the input data and the operation concludes in step 2480a. In this way, the three-flag 2-bit ABF method of the present disclosure may be used to correct two even initialization errors in a subsection.
  • FIG. 24B depicts an exemplary programming/read operation 2402 which demonstrates the use of the three-flag 2-bit ABF method of the present disclosure to correct two odd initialization errors in a subsection.
  • a first process step 2410a all of the cells in subsection 2411b, including flag bits 2412b and data bits 2413b, are initialized into a RESET state, analogous to operation 2312.
  • the subsection is checked for initialization errors in step 2415b.
  • two odd cells 2416b have failed to RESET and remain in a SET state, and the process proceeds to step 2420b.
  • DPM data pattern matching
  • the error pattern is compared to input data 2422b.
  • both error pairs have the pattern 01, while both corresponding input data pairs require the pattern 10.
  • pattern 5 is selected to match the input data 2422b to the error pattern by translating 10 to 01.
  • the DFEC flags are activated in step 2425b (analogous to operation 2340) according to the pattern reference code (PRC), which is 011 for pattern 5.
  • PRC pattern reference code
  • step 2430b analogous to operation 2345
  • the input data is encoded with the selected pattern, wherein each input data subset is selectively inverted according to the encoding pattern.
  • the DFEC encoded input data and flag cells are then further encoded using BCH ECC in step 2440b.
  • the encoded input data is then written to the subsection in step 2450b. Since the subsection has already been initialized into a RESET state (aside from error cells 2416b), only those cells requiring a logic 1 according to the encoded input data need to be SET. In some applications, error cells 2416b do not need to be programmed, as they are already in the correct state, however, in other applications the error cells may be programmed to ensure they are fully in a SET state. Following this operation, the encoded input data has been written to the subsection and RESET errors 2416b have been corrected.
  • a READ operation is performed on the subsection.
  • the read data is then decoded using BCH ECC in step 2460b. Since the read data has been encoded using the ABF method, the read data must be further decoded in reverse data pattern matching (RDPM) step 2470b.
  • RDPM reverse data pattern matching
  • the PRC indicated by the activated flag bits is used to identify which ABF pattern is required to decode the read data.
  • the data subsets within the read data are then selectively inverted according to the ABF pattern, which in this case is pattern 5.
  • the read data matches the input data and the operation concludes in step 2480b. In this way, the three-flag 2-bit ABF method of the present disclosure may be used to correct two odd initialization errors in a subsection.
  • step 2410c all of the cells in subsection 2411c, including flag bits 2412c and data bits 2413c, are initialized into a RESET state, analogous to operation 2312.
  • step 2415c the subsection is checked for initialization errors in step 2415c.
  • no initialization errors have occurred.
  • step 2440c data pattern matching may be performed in step 2420c to compare the error pattern to input data 2422c. In this case, since there are no effective errors, pattern 1 is selected and the flag bits 2412c are activated according to the PRC, which is 000.
  • the unchanged input data 2422c is encoded using BCH ECC in step 2440c.
  • the encoded input data is then written to the subsection in step 2450c. Since the subsection has already been initialized into a RESET state, only those cells requiring a logic 1 according to the encoded input data need to be SET. During the writing process, however, SET error 2442c occurs, and cell 2442c remains in a RESET state. Following this operation, the encoded input data has been written to the subsection with error 2442c and may remain in this state until overwritten.
  • a READ operation is performed on subsection 2411c.
  • the read data is then decoded using BCH ECC in step 2460c.
  • the read data is compared to the BCH ECC parity bits to identify and correct error 2442c.
  • the original input data 2422c is recovered and the operation may conclude in step 2480c with no further actions taken.
  • the BCH ECC decoded read data may be further decoded using the ABF method in RDPM step 2470c according to the PRC indicated by the activated flags.
  • step 2480c the three-flag 2-bit ABF method of the present disclosure may be used in concert with a secondary error correction method to correct all types of errors.
  • FIG. 24D provides another example of the use of the three-flag 2-bit ABF method of the present disclosure to correct multiple errors in a subsection.
  • a first process step 2410d all of the cells in subsection 2411d, including flag bits 2412d and data bits 2413d, are initialized into a RESET state, analogous to operation 2312.
  • the subsection is checked for initialization errors in step 2415d. As can be seen, two initialization errors 2416d have occurred on one even and one odd cell, which remain in a SET state.
  • DPM step 2420d analogous to data pattern matching (DPM) step 2330, the error pattern is compared to input data 2422d.
  • DPM data pattern matching
  • the first error pair has the pattern 01 and needs to be in the final state 11, so there is effectively no error.
  • the second error pair has the pattern 10 and needs to be in the final state 01.
  • pattern 7 is selected to match the input data 2422d to the error pattern by translating 01 to 11 and 11 to 01.
  • step 2425d analogous to operation 2340
  • PRC pattern reference code
  • step 2430d analogous to operation 2345
  • the input data is encoded with the selected pattern, wherein each input data subset is selectively inverted according to the encoding pattern.
  • the DFEC encoded input data and flag cells are then further encoded using BCH ECC in step 2440d.
  • the encoded input data is then written to the subsection in step 2450d. Since the subsection has already been initialized into a RESET state (aside from error cells 2416d), only those cells requiring a logic 1 according to the encoded input data need to be SET. In some applications, error cells 2416d do not need to be programmed, as they are already in the correct state, however, in other applications the error cells may be programmed to ensure they are fully in a SET state. Following this operation, the encoded input data has been written to the subsection and RESET errors 2416d have been corrected.
  • a READ operation is performed on the subsection.
  • the read data is then decoded using BCH ECC in step 2460d. Since the read data has been encoded using the ABF method, the read data must be further decoded in reverse data pattern matching (RDPM) step 2470d.
  • RDPM reverse data pattern matching
  • the PRC indicated by the activated flag bits is used to identify which ABF pattern is required to decode the read data.
  • the data subsets within the read data are then selectively inverted according to the ABF pattern, which in this case is pattern 7.
  • the read data matches the input data and the operation concludes in step 2480d. In this way, the three-flag 2-bit ABF method of the present disclosure may be used to correct one odd and one even initialization error in a subsection.
  • FIG. 24E depicts an exemplary programming/read operation 2405 which again demonstrates the use of the three-flag 2-bit ABF method of the present disclosure to correct one odd and one even error in a subsection.
  • a first process step 2410e all of the cells in subsection 2411e, including flag bits 2412e and data bits 2413e, are initialized into a RESET state, analogous to operation 2312.
  • the subsection is checked for initialization errors in step 2415e.
  • one odd and one even cell 2416e have failed to RESET and remain in a SET state, and the process proceeds to step 2420e.
  • DPM data pattern matching
  • the first error pair has the pattern 10 and must be corrected to 01.
  • the second error pair has the pattern 01 and must be corrected to 10.
  • pattern 2 is selected to match the input data 2422e to the error pattern by translating 01 to 10 and 10 to 01.
  • the DFEC flags are activated in step 2425e (analogous to operation 2340) according to the pattern reference code (PRC), which is 001 for pattern 2.
  • PRC pattern reference code
  • step 2430e analogous to operation 2345
  • the input data is encoded with the selected pattern, wherein each input data subset is selectively inverted according to the encoding pattern.
  • the DFEC encoded input data and flag cells are then further encoded using BCH ECC in step 2440e.
  • the encoded input data is then written to the subsection in step 2450e. Since the subsection has already been initialized into a RESET state (aside from error cells 2416e), only those cells requiring a logic 1 according to the encoded input data need to be SET. In some applications, error cells 2416e do not need to be programmed, as they are already in the correct state, however, in other applications the error cells may be programmed to ensure they are fully in a SET state. Following this operation, the encoded input data has been written to the subsection and RESET errors 2416e have been corrected.
  • a READ operation is performed on the subsection.
  • the read data is then decoded using BCH ECC in step 2460e. Since the read data has been encoded using the ABF method, the read data must be further decoded in reverse data pattern matching (RDPM) step 2470e.
  • RDPM reverse data pattern matching
  • the PRC indicated by the activated flag bits is used to identify which ABF pattern is required to decode the read data.
  • the data subsets within the read data are then selectively inverted according to the ABF pattern, which in this case is pattern 2.
  • the read data matches the input data and the operation concludes in step 2480e. In this way, the three-flag 2-bit ABF method of the present disclosure may be used to correct one even and one odd initialization error in a subsection.
  • FIG. 24F depicts an exemplary programming/read operation 2406 which demonstrates the ability of the three-flag 2-bit ABF method of the present disclosure to correct more than two errors in a subsection, dependent on the error distribution.
  • a first process step 2410f all of the cells in subsection 2411f, including flag bits 2412f and data bits 2413f, are initialized into a RESET state, analogous to operation 2312.
  • the subsection is checked for initialization errors in step 2415f.
  • three cells 2416f have failed to RESET and remain in a SET state, and the process proceeds to step 2420f.
  • DPM data pattern matching
  • the first error pair has the pattern 11 and must be corrected to 10.
  • the second error pair has the pattern 01 and there is effectively no error.
  • pattern 8 is capable of correcting all three errors that have occurred due to the distribution of errors and the input data pattern.
  • pattern 8 is selected to encode the input data.
  • the DFEC flags are activated in step 2425f (analogous to operation 2340) according to the pattern reference code (PRC), which is 111 for pattern 8.
  • PRC pattern reference code
  • step 2430f analogous to operation 2345
  • the input data is encoded with the selected pattern, wherein each input data subset is selectively inverted according to the encoding pattern.
  • the DFEC encoded input data and flag cells are then further encoded using BCH ECC in step 2440f.
  • the encoded input data is then written to the subsection in step 2450f. Since the subsection has already been initialized into a RESET state (aside from error cells 2416f), only those cells requiring a logic 1 according to the encoded input data need to be SET. In some applications, error cells 2416f do not need to be programmed, as they are already in the correct state, however, in other applications the error cells may be programmed to ensure they are fully in a SET state. Unfortunately, since programming operation 2450f only SETs the cells, one of the errors 2416f remains uncorrected by the ABF method, as it needs to be RESET and is currently in a SET state. Following this operation, the encoded input data has been written to the subsection with an uncorrected initialization error 2452f and may remain in this state until overwritten.
  • a READ operation is performed on the subsection.
  • the read data is then decoded using BCH ECC in step 2460f.
  • the uncorrected error 2452f is detected and corrected by BCH ECC.
  • the read data Since the read data has also been encoded using the ABF method, the read data must be further decoded in reverse data pattern matching (RDPM) step 2470f.
  • RDPM reverse data pattern matching
  • the PRC indicated by the activated flag bits is used to identify which ABF pattern is required to decode the read data.
  • the data subsets within the read data are then selectively inverted according to the ABF pattern, which in this case is pattern 8.
  • the read data matches the input data and the operation concludes in step 2480f.
  • the three-flag 2-bit ABF method of the present disclosure may be used to correct multiple initialization errors in a subsection in concert with a secondary error correction method.
  • a continuous error may be treated as both an even and an odd error without being afforded a separate category. From this, it can be seen that any input pattern translated to 11 will be capable of correcting 100% of its corresponding errors (three errors with pattern 10, 01, and 10 with corresponding input pattern 00 can all be corrected if 00 is translated to 11, for instance). Any input pattern translated to 10 or 01, on the other hand, only has a 50% chance of correcting its corresponding errors in the worst case distribution of errors. Only half set of a set of errors 01, 01, 10 and 10 with corresponding input 11 can be corrected if 11 is translated to 01 or 10, for instance. Usually, however, errors will not be evenly distributed, and any imbalance can improve the number of errors corrected above the minimum of 50%. Finally, any input pattern translated to 00 has a 0% chance to correct any errors.
  • the minimum number of errors which can be corrected may be calculated by:
  • FIGS. 25A-25C show calculations of the parity overhead for the five flag method at different BER and subsection size. It should be noted that the examples of FIGS.
  • 25A-25C are provided as an example of the advantages and disadvantages and general trends of the various DFEC methods of the present disclosure and do not reflect experimental data or expected outcomes.
  • the optimization of the DFEC methods taught herein must be performed taking the particular conditions and requirements of a specific application into account.
  • FIG. 25A shows a plot 2500 of the variation of parity overhead with subsection size at five error rates in an exemplary 8kb memory block using the five- flag 2-bit ABF method.
  • the parity overhead reaches a minimum at a particular number of subsections for each BER, increasing rapidly as the block is divided into more subsections. This behavior is similar to that seen in FIGS. 16B and 16C, wherein the parity overhead reaches a minimum and then increases as more subsections are added.
  • the optimal number of subsections at each BER is greatly reduced compared to the previous methods as a result of its particular scaling behavior, as described previously.
  • FIG. 25B provides a comparison between the parity overhead required for the RFEC, DRFEC, three-flag 2-bit ABF and five-flag 2-bit ABF methods to achieve a correctable BER of 0.2% for a given number of subsections in an exemplary 8kb memory block.
  • the five-flag ABF method provides the lowest overall parity overhead, at 1.05%. This may be compared to the parity overhead of 2.73% required for BCH alone, giving a reduction of nearly 62%.
  • the five-flag method quickly loses efficiency, leading to a parity overhead of 4.47% at 64 subsections - larger than that required for BCH alone. It is thus imperative to select the DFEC method and the particular configuration thereof to meet the requirements of a given application.
  • FIG. 25C provides a comparison of the optimal configuration of each DFEC method for five correctable error rates.
  • the optimal subsection configuration was calculated for each method. It may clearly be seen that the five-flag ABF method requires a significantly reduced number of subsections compared to the other DFEC methods, requiring only a 16 subsections at 0.5% BER compared to the 32 for three- flag ABF, for instance. Again, as discussed previously, this behavior is a result of the error correction scaling of the five-flag ABF method, which provides a guaranteed percentage rather than a discrete number of errors corrected.
  • the parity overhead corresponding to each of the optimal configurations was calculated for each error rate.
  • the five-flag ABF method provides the most efficient solution for all BERs. That said, however, at higher BERs of 0.4% and 0.5%, the parity overhead required for the three-flag ABF method is nearly equal to that of the five-flag method. Since the three- flag method may employ a simpler circuit and reduced processing latency, in these cases it may be advantageous to use only three-flags with a properly selected subset of encoding patterns.
  • the selection of the DFEC method employed may thus be conducted according to an analysis of circuit complexity, latency and chip surface area (related to parity overhead) to optimize the DFEC methods to a particular application. It should be noted again, however, that the analysis presented in FIGS. 25A-C is provided only as an example of the ability to optimize the DFEC method employed and the specific configuration thereof to the requirements of a particular application and does not represent experimental data.
  • FIGS. 26A-26E examples of the five-flag 2-bit ABF method are illustrated.
  • the following examples examine the use of the five-flag ABF method to correct initialization errors in a single subsection of a resistive change element array.
  • this exemplary resistive change element array is assumed to have an initialization state of logic ⁇ ', corresponding to the state expected to result in a greater error rate.
  • the following examples demonstrate the use of two-bit subsets and the set of encoding patterns depicted in FIG. 21B, containing all possible encoding patterns for a two-bit subset.
  • the ABF method is not limited to the use of two-bit subsets, nor to the encoding patterns provided in FIG.
  • FIG. 26A depicts an encoding operation 2600a using the five-flag 2-bit ABF method of the present disclosure to correct multiple initialization errors in subsection 2604a of a resistive change element array.
  • subsection 2604a comprising a plurality of data cells and five flag cells, is initialized in step 2610a.
  • an initialization operation is performed on all of the data cells within subsection 2604a to attempt to place them into an initialized state.
  • subsection 2604a is read to provide array data 2614a, which contains the logical state of each of the data cells in the subsection.
  • two subsets 2616a within array data 2614a contain data cells which failed to initialize and remain in an uninitialized state (in this logic T state) and may be considered error subsets.
  • each error subset 2616a is compared to its corresponding subset in input data 2612a to determine the presence of effective initialization errors. That is, the logical state of the error cells within subsets 2616a is compared to the logical state of their corresponding bits in input data 2612a. If the logical state of the error cells match the logical state of the input data, then effectively no error has occurred, as the cells are already in the desired state. In this case, the input data may not need to be encoded using the ABF method. If at least one effective initialization error is detected, however, then the process proceeds to a data pattern matching (DPM) operation, comprising sorting operation 2620a and matching operation 2630a.
  • DPM data pattern matching
  • this data pattern matching operation attempts to identify an encoding pattern which can correct the maximum number of initialization errors in subsets 2616a.
  • the error subsets and their corresponding input subsets are selected and sorted in step 2620a according to input pattern and error pattern, as illustrated with table 2622a, wherein each of the initialization errors in subsets 2616a are depicted with an X.
  • Table 2622a contains two rows to distinguish even (1 *) and odd (*1) errors, as well as four columns to distinguish each input pattern (00, 01, 10 and 11). It will be apparent that a similar table can be constructed for any given subset size.
  • the initialization errors in subsets 2616a comprise one even error 10 with a corresponding input pattern of 11, and one odd error 01 with a corresponding input pattern of 00, and have been placed into table 2622a accordingly.
  • the error patterns are matched in operation 2630a, comprising steps 2632a, 2634a, and 2636a.
  • Matching operation 2630a first selects the input pattern which has the highest number of corresponding error pairs (that is, pairs of one even and one odd error, as will be explained in more detail in FIG. 26B and 26E) to translate to 11 in step 2632a. In this case, neither input pattern 00 nor input pattern 11 contain an error pair, so the process selects the input pattern with the largest number of total errors.
  • matching operation 2630a proceeds to step 2634a, wherein the remaining three input patterns (01, 10 and 11) are compared to select the input pattern with the largest number of even errors. Since 11 contains one even error, 11 is selected to translate to 10. Thus, rows within the column selected in step 2632a (column A) which translate 11 to 10 are selected, corresponding to rows 2 and 6 in table 2102 of FIG. 21B. The process then selects the input pattern from the remaining two input patterns (01 and 10) which contains the largest number of odd errors. Since neither 01 nor 10 contains an error, the process refers to a default selection. In this case, 01 is selected as default and is chosen to translate as 01.
  • pattern A2 has a 5-bit pattern reference code (PRC) which is stored in the five flag bits in subsection 2604a.
  • PRC pattern reference code
  • encoded input data 2642a may be further processed by a secondary error correction code, such as BCH, to correct any additional errors not corrected in encoding step 2640a.
  • Encoded input data 2642a is then programmed into subsection 2604a in programming step 2650a.
  • a SET operation is performed on each bit in the encoded input data requiring a logic T (since the subsection was initialized to logic ' ⁇ ').
  • the data cells in subsection 2604a have been programmed with encoded input data 2642a to obtain a programmed subsection 2654a, and the five flag cells of subsection 2604a have been programmed with the pattern reference code of encoding pattern employed (pattern A2).
  • programmed subsection 2654a may subsequently be read and decoded by reversing the encoding pattern indicated by the pattern reference code stored in the DFEC flag bits. In this way, the five-flag 2-bit ABF method of the present disclosure may be used to correct at least two initialization errors per subsection.
  • FIG. 26B depicts an encoding operation 2600b using the five-flag 2-bit ABF method of the present disclosure to correct multiple initialization errors in subsection 2604b of a resistive change element array.
  • subsection 2604b comprising a plurality of data cells and five flag cells, is initialized in step 2610b.
  • an initialization operation is performed on all of the data cells within subsection 2604b to attempt to place them into an initialized state.
  • subsection 2604b is read to provide array data 2614b, which contains the logical state of each of the data cells in the subsection.
  • four subsets 2616b within array data 2614b contain data cells which failed to initialize and remain in an uninitialized state (in this logic ' 1 ' state) and may be considered error subsets.
  • each error subset 2616b is compared to its corresponding subset in input data 2612b to determine the presence of effective initialization errors. That is, the logical state of the error cells within subsets 2616b is compared to the logical state of their corresponding bits in input data 2612b. If the logical state of the error cells match the logical state of the input data, then effectively no error has occurred, as the cells are already in the desired state. In this case, the input data may not need to be encoded using the ABF method. If at least one effective initialization error is detected, however, then the process proceeds to a data pattern matching (DPM) operation, comprising sorting operation 2620b and matching operation 2630b.
  • DPM data pattern matching
  • this data pattern matching operation attempts to identify an encoding pattern which can correct the maximum number of initialization errors in subsets 2616b.
  • the error subsets and their corresponding input subsets are selected and sorted in step 2620b according to input pattern and error pattern, as illustrated with table 2622b, wherein each of the initialization errors in subsets 2616b are depicted with an X.
  • Table 2622b contains two rows to distinguish even (1 *) and odd (*1) errors, as well as four columns to distinguish each input pattern (00, 01, 10 and 11). It will be apparent that a similar table can be constructed for any given subset size.
  • the initialization errors in subsets 2616b comprise two even errors 10 with corresponding input patterns of 11 and 10, and two odd errors 01 with corresponding input patterns of 00 and 10, and have been placed into table 2622b accordingly.
  • the error patterns are matched in operation 2630b, comprising steps 2632b, 2634b, and 2636b.
  • Matching operation 2630b first selects the input pattern which has the highest number of corresponding error pairs to translate to 11 in step 2632b. In this case, input pattern 10 contains one even and one odd error, thus it contains one error pair. Since none of the other input patterns contain an error pair, input pattern 10 is selected to translate to 11 and column C is selected from table 2102 of FIG. 21B, which corresponds to the set of encoding patterns which translate 10 to 11.
  • matching operation 2630b proceeds to step 2634b, wherein the remaining three input patterns (00, 01 and 11) are compared to select the input pattern with the largest number of even errors. Since 11 contains one even error, 11 is selected to translate to 10. Thus, rows within the column selected in step 2632b (column C) which translate 11 to 10 are selected, corresponding to rows 1 and 3. The process then selects the input pattern from the remaining two input patterns (00 and 01) which contains the largest number of odd errors. Since 00 contains one odd error, 00 is chosen to translate as 01 and one of the two rows selected in step 2634b (rows 1 and 3) within the column selected in step 2632b (column C) which translate 00 to 01 is selected, corresponding to row 3 of table 2102.
  • pattern C3 has a 5-bit pattern reference code (PRC) which is stored in the five flag bits in subsection 2604b.
  • PRC pattern reference code
  • the encoding pattern selected in matching operation 2630b (pattern C3) is used to encode input data 2612b in step 2640b.
  • pattern C3 the encoding pattern selected in matching operation 2630b
  • all subsets within input data 2612b which have a pattern 00 are translated to 01
  • all subsets with pattern 01 are translated to 00
  • all subsets with pattern 10 are translated to 11
  • all subsets with pattern 11 are translated to 10.
  • input data 2612b is encoded to produce a set of encoded input data 2642b.
  • all four of the error cells in subsets 2616b are now effectively correct, as their logical value matches the value in encoded input data 2642b.
  • encoded input data 2642b may be further processed by a secondary error correction code, such as BCH, to correct any additional errors not corrected in encoding step 2640b.
  • Encoded input data 2642b is then programmed into subsection 2604b in programming step 2650b.
  • a SET operation is performed on each bit in the encoded input data requiring a logic T (since the subsection was initialized to logic ' ⁇ ').
  • the data cells in subsection 2604b have been programmed with encoded input data 2642b to obtain a programmed subsection 2654b, and the five flag cells of subsection 2604b have been programmed with the pattern reference code of encoding pattern employed (pattern C3).
  • programmed subsection 2654b may subsequently be read and decoded by reversing the encoding pattern indicated by the pattern reference code stored in the DFEC flag bits.
  • the five-flag 2-bit ABF method of the present disclosure may be used to correct substantially all initialization errors per subsection, given a certain pattern of errors.
  • FIG. 26C depicts an encoding operation 2600c using the 5-fiag 2-bit ABF method of the present disclosure in order to correct multiple initialization errors which have a worst-case error distribution.
  • subsection 2604c comprising a plurality of data cells and five flag cells, is initialized in step 2610c. Using operations described previously, an initialization operation is performed on all of the data cells within subsection 2604c to attempt to place them into an initialized state.
  • subsection 2604c is read to provide array data 2614c, which contains the logical state of each of the data cells in the subsection.
  • array data 2614c contains the logical state of each of the data cells in the subsection.
  • four subsets 2616c within array data 2614c contain data cells which failed to initialize and remain in an uninitialized state (in this logic T state) and may be considered error subsets.
  • each error subset 2616c is compared to its corresponding subset in input data 2612c to determine the presence of effective initialization errors. That is, the logical state of the error cells within subsets 2616c is compared to the logical state of their corresponding bits in input data 2612c. If the logical state of the error cells match the logical state of the input data, then effectively no error has occurred, as the cells are already in the desired state. In this case, the input data may not need to be encoded using the ABF method. If at least one effective initialization error is detected, however, then the process proceeds to a data pattern matching (DPM) operation, comprising sorting operation 2620c and matching operation 2630c.
  • DPM data pattern matching
  • this data pattern matching operation attempts to identify an encoding pattern which can correct the maximum number of initialization errors in subsets 2616c.
  • the error subsets and their corresponding input subsets are selected and sorted in step 2620c according to input pattern and error pattern, as illustrated with table 2622c, wherein each of the initialization errors in subsets 2616c are depicted with an X.
  • the initialization errors in subsets 2616c comprise four even errors 10, one corresponding to each input pattern, and no odd errors. As will be shown, this is a worst-case error distribution, wherein errors of the same type (odd or even) are distributed evenly across the input patterns.
  • the error patterns are matched in operation 2630c, comprising steps 2632c, 2634c, and 2636c.
  • Matching operation 2630c first selects the input pattern which has the highest number of corresponding error pairs in step 2632c. In this case, none of the input patterns contain an error pair, so the process selects the input pattern with the largest number of total errors. Since all of the patterns contain a single error, the process refers to a default selection. In this case 00 is selected as default, so 00 is selected to translate to 11 and column A is selected from table 2102 of FIG. 21B.
  • matching operation 2630c proceeds to step 2634c, wherein the remaining three input patterns (01, 10 and 11) are compared to select the input pattern with the largest number of even errors. Since all three input patterns 01, 10 and 11 contain a single even error, the process refers to a default selection. In this case 10 is selected as default, so 10 is selected to translate to 10. Thus, rows within the column selected in step 2632c (column A) which translate 10 to 10 are selected, corresponding to rows 1 and 4 in table 2102 of FIG. 21B. The process then selects the input pattern from the remaining two input patterns (01 and 11) which contains the largest number of odd errors. Since neither 01 nor 11 contains an odd error, the process refers to a default selection.
  • pattern Al has been identified as the pattern depicted in column A, row 1, of table 2102, referred to as pattern Al .
  • pattern Al has a 5-bit pattern reference code (PRC) which is stored in the five flag bits in subsection 2604c.
  • PRC pattern reference code
  • the encoding pattern selected in matching operation 2630c (pattern Al) is used to encode input data 2612c in step 2640c.
  • pattern Al the encoding pattern selected in matching operation 2630c
  • all subsets within input data 2612c which have a pattern 00 are translated to 11
  • all subsets with pattern 11 are translated to 00
  • all subsets with pattern 01 or 10 remain unchanged.
  • input data 2612c is encoded to produce a set of encoded input data 2642c.
  • two of the error cells in subsets 2616c are now effectively correct, as their logical value matches the value in encoded input data 2642c, while two error cells remain uncorrected. This corresponds to the worst-case error distribution correction rate of 50%.
  • encoded input data 2642c may be further processed by a secondary error correction code, such as BCH, to correct any additional errors not corrected in encoding step 2640c. This process is necessary to correct the two initialization errors which were not corrected by the ABF method during encoding step 2640c.
  • Encoded input data 2642c is then programmed into subsection 2604c in programming step 2650c. As described previously, in programming step 2650c a SET operation is performed on each bit in the encoded input data requiring a logic T (since the subsection was initialized to logic ' ⁇ ').
  • subsection 2604c Following this programming operation, the data cells in subsection 2604c have been programmed with encoded input data 2642c to obtain a programmed subsection 2654c, and the five flag cells of subsection 2604c have been programmed with the pattern reference code of encoding pattern employed (pattern Al). As can be seen, at this point only half of the initialization errors in subsets 2616c have been corrected.
  • Programmed subsection 2654c must be read and processed by a secondary error correction method before it can be decoded by the ABF method to retrieve the original input data. In this way, the five-flag 2-bit ABF method of the present disclosure may be used to correct at least 50% initialization errors per subsection.
  • FIG. 26D depicts an encoding operation 2600d using the five-flag 2-bit ABF method of the present disclosure in order to correct multiple initialization errors.
  • subsection 2604d comprising a plurality of data cells and five flag cells, is initialized in step 2610d. Using operations described previously, an initialization operation is performed on all of the data cells within subsection 2604d to attempt to place them into an initialized state.
  • subsection 2604d is read to provide array data 2614d, which contains the logical state of each of the data cells in the subsection.
  • array data 2614d contains the logical state of each of the data cells in the subsection.
  • four subsets 2616d within array data 2614d contain data cells which failed to initialize and remain in an uninitialized state (in this logic T state) and may be considered error subsets.
  • each error subset 2616d is compared to its corresponding subset in input data 2612d to determine the presence of effective initialization errors. That is, the logical state of the error cells within subsets 2616d is compared to the logical state of their corresponding bits in input data 2612d. If the logical state of the error cells match the logical state of the input data, then effectively no error has occurred, as the cells are already in the desired state. In this case, the input data may not need to be encoded using the ABF method. If at least one effective initialization error is detected, however, then the process proceeds to a data pattern matching (DPM) operation, comprising sorting operation 2620d and matching operation 2630d.
  • DPM data pattern matching
  • this data pattern matching operation attempts to identify an encoding pattern which can correct the maximum number of initialization errors in subsets 2616d.
  • the error subsets and their corresponding input subsets are selected and sorted in step 2620d according to input pattern and error pattern, as illustrated with table 2622d, wherein each of the initialization errors in subsets 2616d are depicted with an X.
  • the initialization errors in subsets 2616d comprise three odd errors 01, one corresponding to each input pattern 00, 01, and 10, and one even error corresponding to 11.
  • the error patterns are matched in operation 2630d, comprising steps 2632d, 2634d, and 2636d.
  • Matching operation 2630d first selects the input pattern which has the highest number of corresponding error pairs in step 2632d. In this case, none of the input patterns contain an error pair, so the process selects the input pattern with the largest number of total errors. Since all of the patterns contain a single error, the process refers to a default selection. In this case 00 is selected as default, so 00 is selected to translate to 11 and column A is selected from table 2102 of FIG. 21B.
  • matching operation 2630d proceeds to step 2634d, wherein the remaining three input patterns (01, 10 and 11) are compared to select the input pattern with the largest number of even errors. Since only 11 contains an even error, 11 is selected to translate to 10, corresponding to rows 2 and 6 in table 2102 of FIG. 21B. The process then selects the input pattern from the remaining two input patterns (01 and 10) which contains the largest number of odd errors. Since both 01 and 10 contain an odd error, the process refers to a default selection. In this case, 01 is selected as default and is chosen to translate as 01.
  • pattern A2 has a 5 -bit pattern reference code (PRC) which is stored in the five flag bits in subsection 2604d.
  • PRC pattern reference code
  • the encoding pattern selected in matching operation 2630d (pattern A2) is used to encode input data 2612d in step 2640d.
  • pattern A2 the encoding pattern selected in matching operation 2630d
  • all subsets within input data 2612d which have a pattern 00 are translated to 11
  • all subsets with pattern 11 are translated to 10
  • all subsets with pattern 10 are translated to 00
  • all subsets with pattern 01 remain unchanged.
  • input data 2612d is encoded to produce a set of encoded input data 2642d.
  • three of the error cells in subsets 2616d are now effectively correct, as their logical value matches the value in encoded input data 2642d, while two error cells remain uncorrected. This corresponds to an error correction rate of 75%, which is less than the maximum but higher than the minimum correction rate.
  • encoded input data 2642d may be further processed by a secondary error correction code, such as BCH, to correct any additional errors not corrected in encoding step 2640d. This process is necessary to correct the remaining initialization error which was not corrected by the ABF method during encoding step 2640d.
  • Encoded input data 2642d is then programmed into subsection 2604d in programming step 2650d. As described previously, in programming step 2650d a SET operation is performed on each bit in the encoded input data requiring a logic T (since the subsection was initialized to logic ' ⁇ ').
  • subsection 2604d Following this programming operation, the data cells in subsection 2604d have been programmed with encoded input data 2642d to obtain a programmed subsection 2654d, and the five flag cells of subsection 2604d have been programmed with the pattern reference code of encoding pattern employed (pattern A2). As can be seen, at this point only three of the initialization errors in subsets 2616d have been corrected.
  • Pattern A2 the pattern reference code of encoding pattern employed
  • FIG. 26E provides a further demonstration of the data pattern matching process to determine the optimal encoding pattern to address a given error distribution, as well as the handling of continuous errors.
  • FIG. 26E depicts an encoding operation 2600e using the five-flag 2-bit ABF method of the present disclosure in order to correct multiple initialization errors.
  • subsection 2604e comprising a plurality of data cells and five flag cells, is initialized in step 2610e.
  • an initialization operation is performed on all of the data cells within subsection 2604e to attempt to place them into an initialized state.
  • subsection 2604e is read to provide array data 2614e, which contains the logical state of each of the data cells in the subsection.
  • five subsets 2616e within array data 2614e contain data cells which failed to initialize and remain in an uninitialized state (in this logic T state) and may be considered error subsets.
  • each error subset 2616e is compared to its corresponding subset in input data 2612e to determine the presence of effective initialization errors. That is, the logical state of the error cells within subsets 2616e is compared to the logical state of their corresponding bits in input data 2612e. If the logical state of the error cells match the logical state of the input data, then effectively no error has occurred, as the cells are already in the desired state. In this case, the input data may not need to be encoded using the ABF method. If at least one effective initialization error is detected, however, then the process proceeds to a data pattern matching (DPM) operation, comprising sorting operation 2620e and matching operation 2630e.
  • DPM data pattern matching
  • this data pattern matching operation attempts to identify an encoding pattern which can correct the maximum number of initialization errors in subsets 2616e.
  • the error subsets and their corresponding input subsets are selected and sorted in step 2620e according to input pattern and error pattern, as illustrated with table 2622e, wherein each of the initialization errors in subsets 2616e are depicted with an X.
  • the initialization errors in subsets 2616e comprise one even and one odd error corresponding to input pattern 11, two even errors 10 corresponding to input pattern 00, and one even error corresponding to 10.
  • such a continuous error as the one which has occurred with input pattern 11 may be treated as one even and one odd error, even though they have occurred in the same subset.
  • the error patterns are matched in operation 2630e, comprising steps 2632e, 2634e, and 2636e.
  • Matching operation 2630e first selects the input pattern which has the highest number of corresponding error pairs in step 2632e. In this case, one error pair has occurred for input pattern 11, so 11 is selected to translate to 11 and column D is selected from table 2102 of FIG. 21B.
  • matching operation 2630e proceeds to step 2634e, wherein the remaining three input patterns (00, 01 and 10) are compared to select the input pattern with the largest number of even errors. Since 00 contains two even errors, 00 is selected to translate to 10, corresponding to rows 4 and 6 in table 2102 of FIG. 21B. The process then selects the input pattern from the remaining two input patterns (01 and 10) which contains the largest number of odd errors. Since neither 01 nor 10 contain an odd error, the process refers to a default selection. In this case, 01 is selected as default and is chosen to translate as 01.
  • pattern D4 has a 5-bit pattern reference code (PRC) which is stored in the five flag bits in subsection 2604e.
  • PRC pattern reference code
  • the encoding pattern selected in matching operation 2630e (pattern D4) is used to encode input data 2612e in step 2640e.
  • all subsets within input data 2612e which have a pattern 00 are translated to 10
  • all subsets with pattern 10 are translated to 00
  • all subsets with pattern 01 or 11 remain unchanged.
  • input data 2612e is encoded to produce a set of encoded input data 2642e.
  • four of the error cells in subsets 2616e are now effectively correct, as their logical value matches the value in encoded input data 2642e, while one error cell remains uncorrected. This corresponds to an error correction rate of 80%, which is less than the maximum but higher than the minimum correction rate.
  • encoded input data 2642e may be further processed by a secondary error correction code, such as BCH, to correct any additional errors not corrected in encoding step 2640e. This process is necessary to correct the remaining initialization error which was not corrected by the ABF method during encoding step 2640e.
  • Encoded input data 2642e is then programmed into subsection 2604e in programming step 2650e. As described previously, in programming step 2650e a SET operation is performed on each bit in the encoded input data requiring a logic T (since the subsection was initialized to logic ' ⁇ ').
  • subsection 2604e Following this programming operation, the data cells in subsection 2604e have been programmed with encoded input data 2642e to obtain a programmed subsection 2654e, and the five flag cells of subsection 2604e have been programmed with the pattern reference code of encoding pattern employed (pattern D4). As can be seen, at this point only four of the initialization errors in subsets 2616e have been corrected.
  • Pattern D4 the pattern reference code of encoding pattern employed
  • FIG. 26F provides a demonstration of the data pattern matching process to determine the optimal encoding pattern with an additional selection criteria.
  • FIG. 26F depicts an encoding operation 2600f using the five-flag 2-bit ABF method of the present disclosure in order to correct multiple initialization errors.
  • subsection 2604f comprising a plurality of data cells and five flag cells, is initialized in step 2610f.
  • an initialization operation is performed on all of the data cells within subsection 2604f to attempt to place them into an initialized state.
  • subsection 2604f is read to provide array data 2614f, which contains the logical state of each of the data cells in the subsection.
  • four subsets 2616f within array data 2614f contain data cells which failed to initialize and remain in an uninitialized state (in this logic T state) and may be considered error subsets.
  • each error subset 2616f is compared to its corresponding subset in input data 2612f to determine the presence of effective initialization errors. That is, the logical state of the error cells within subsets 2616f is compared to the logical state of their corresponding bits in input data 2612f. If the logical state of the error cells match the logical state of the input data, then effectively no error has occurred, as the cells are already in the desired state. In this case, the input data may not need to be encoded using the ABF method. If at least one effective initialization error is detected, however, then the process proceeds to a data pattern matching (DPM) operation, comprising sorting operation 2620f and matching operation 2630f.
  • DPM data pattern matching
  • this data pattern matching operation attempts to identify an encoding pattern which can correct the maximum number of initialization errors in subsets 2616f.
  • the error subsets and their corresponding input subsets are selected and sorted in step 2620f according to input pattern and error pattern, as illustrated with table 2622f, wherein each of the initialization errors in subsets 2616f are depicted with an X.
  • the initialization errors in subsets 2616f comprise one odd error 01 corresponding to input pattern 11, two odd errors 01 corresponding to input pattern 01, and one even error corresponding to 10.
  • step 2630f the error patterns are matched in operation 2630f, comprising steps 2632f, 2634f, and 2636f, in addition to step 2633f.
  • Matching operation 2630f first selects the input pattern which has the highest number of corresponding error pairs in step 2632f. As can be seen, no error pairs have occurred and the process then selects the input pattern with the highest number of total errors to translate to 11 in step 2633f. Input pattern 01 has two errors and is thus selected to translate to 11, corresponding to column B of FIG. 2 IB.
  • Step 2633f is only performed if no error pairs are detected in step 2632f, and, as demonstrated previously, if multiple input patterns have the same number of errors (if both 00 and 10 have two errors, for instance) then the process may refer to a default setting.
  • matching operation 2630f proceeds to step 2634f, wherein the remaining three input patterns (00, 10 and 11) are compared to select the input pattern with the largest number of even errors. Since 10 contains one even error, 10 is selected to translate to 10, corresponding to rows 1 and 4 in table 2102 of FIG. 21B. The process then selects the input pattern from the remaining two input patterns (00 and 11) which contains the largest number of odd errors. Since input 11 has one odd error, 11 is selected to translate to 01. Thus, one of the two rows selected in step 2634f (rows 1 and 4) within the column selected in step 2632f (column B) which translates 11 to 01 is selected, corresponding to row 1 of table 2102.
  • pattern Bl has a 5-bit pattern reference code (PRC) which is stored in the five flag bits in subsection 2604f.
  • PRC pattern reference code
  • the encoding pattern selected in matching operation 2630f (pattern Bl) is used to encode input data 2612f in step 2640f.
  • pattern Bl the encoding pattern selected in matching operation 2630f
  • all subsets within input data 2612f which have a pattern 01 are translated to 11
  • all subsets with pattern 11 are translated to 01
  • all subsets with pattern 00 or 10 remain unchanged.
  • input data 2612f is encoded to produce a set of encoded input data 2642f.
  • all four of the error cells in subsets 2616f are now effectively correct, as their logical value matches the value in encoded input data 2642f. This corresponds to an error correction rate of 100%, which is only possible because of additional matching step 2633f.
  • encoded input data 2642f may be further processed by a secondary error correction code, such as BCH, to correct any additional errors not corrected in encoding step 2640f. This process is necessary to correct the remaining initialization error which was not corrected by the ABF method during encoding step 2640f.
  • Encoded input data 2642f is then programmed into subsection 2604f in programming step 2650f. As described previously, in programming step 2650f a SET operation is performed on each bit in the encoded input data requiring a logic T (since the subsection was initialized to logic ' ⁇ ').
  • subsection 2604f Following this programming operation, the data cells in subsection 2604f have been programmed with encoded input data 2642f to obtain a programmed subsection 2654f, and the five flag cells of subsection 2604f have been programmed with the pattern reference code of encoding pattern employed (pattern Bl). As can be seen, at this point all four of the initialization errors in subsets 2616f have been corrected, and programmed subsection 2654f may be read and decoded by reversing the encoding pattern to recover the input data. In this way, the five-flag 2-bit ABF method of the present disclosure may be used to correct the maximum number of initialization errors in a subsection.
  • FIG. 27 a system level block diagram is shown illustrating a memory system 2700 comprising a resistive change element array 2740 and suitable for use with the DFEC methods of the present disclosure.
  • a resistive change element array 2740 similar in architecture to the arrays shown in FIGS. 2, 4, and 5.
  • a processor control element 2710 provides an array of address control lines to a bit line driver/buffer circuit 2720 and to a word line driver/buffer circuit 2730.
  • the bit line driver/buffer circuit 2720 then generates an array of bit lines through bit line decoder element 2725 and provides those bit lines to resistive change element array 2740.
  • the word line driver/buffer circuit 2730 generates an array of word lines through word line decoder element 2735 and provides those word lines to resistive change element array 2740.
  • the buffer may be placed first, followed by the decoder, then the driver, or in any other order, the invention is not limited in this regard. Further, in some applications the driver may be unnecessary and may be removed. In this way, electrical stimuli can be provided to the resistive change element array 2740 from processor control element 2710 in order to adjust the state of cells within the array (as described with respect to FIGS. 2, 3, 4, and 5 above).
  • a DFEC encoder circuit 2752 (such as exemplary encoder circuit 1201 in FIG. 12A or 2001 in FIG. 20A) is responsive to resistive change element array 2740 and provides programming data (analogous to 1240 in FIG. 12A or 2050 in FIG. 20A) to a BCH error correction circuit 2754.
  • the BCH error correction circuit 2754 then provides BCH encoded data back to resistive change element array 2740.
  • the resistive change element array 2740 is then able to output read data first through BCH ECC decoder 2762 and then through DFEC decoder circuit 2764 (such as exemplary decoder circuit 1202 in FIG. 12B or 2002 in FIG. 20B).
  • memory system 2700 is able to execute the DFEC methods of the present disclosure as detailed in FIGS. 10, 18 and 23, and described throughout the present specification.
  • DFEC decoder circuit 2764 provides corrected data to an array of sense amplifiers 2774 through an analog multiplexer element 2772. Responsive to control signals from the processor control element 2710, the analog multiplexer element 2772 interconnects the bit lines, words lines, and, in some cases, reference bit lines (as shown in FIG. 2, for example) to the array of sense amplifiers 2774.
  • a system of I/O gates 2776 is responsive to the array of sense amplifiers 2774 and control signals from the processor control element 2710 and is used to temporally latch and store logic values read from the resistive change element array. Responsive to the I/O gate element 2776, a data buffer driver element 2780 provides the corrected data values read from the array back to the processor control element 2710.
  • the processor control element 2710 within the exemplary access and addressing system of FIG. 27 is used to represent a programming operation circuit (or the like) that can be used to apply the different voltages and other conditions to the arrays of bit lines and word lines within a resistive change element array as required by the methods of the present disclosure and discussed with respect to the figures above.
  • a programming operation circuit or the like
  • Such electrical stimuli can be implemented through a variety of structures as best fits the needs of a specific application. For example, FPGAs, PLDs, microcontrollers, logic circuits, or a software program executing on a computer could all be used to execute the dynamic programming operations and dynamic READ operations as detailed in the previous discussions.
  • resistive change memory array architectures of the present disclosure are presented using the exemplary simplified schematics within FIGS. 2, 4, 5, 8B, 9B, 12A-12B, and 20A-20B, and the block diagrams of FIGS. 8A, 9A, 17A, 22A and 25, the methods of the present disclosure should not be limited to those specific electrical circuits depicted. Indeed, it will be clear to those skilled in the art that the electrical circuits depicted in these figures can be altered in a plurality of ways to optimize a circuit to practice the described error correction methods within a specific application.
  • resistive change memory array architectures be representative and inclusive of these variations and not otherwise limited to the specific illustrative parameters detailed.

Landscapes

  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

L'invention porte également sur des procédés de correction d'erreurs pour des réseaux d'éléments de changement résistifs. Un réseau d'éléments de changement résistifs est organisé en une pluralité de sous-sections. Chaque sous-section comprend au moins un bit indicateur et une pluralité de bits de données. Au début d'une opération d'écriture, tous les bits d'une sous-section sont initialisés. Si tous les bits de données ne peuvent pas s'initialiser, le motif d'erreurs est comparé au motif de données d'entrée. Les cellules drapeaux sont ensuite activées pour indiquer le schéma de codage approprié à appliquer aux données d'entrée de manière à correspondre aux erreurs. Les données d'entrée sont ensuite codées selon ce modèle de codage avant d'être écrites dans le réseau. Un second algorithme de correction d'erreurs peut être utilisé pour corriger les erreurs restantes. Pendant une opération de lecture, le schéma de codage indiqué par les bits indicateurs est utilisé pour décoder les données lues et récupérer les données d'entrée initiales.
PCT/US2017/038478 2016-07-01 2017-06-21 Procédés de correction d'erreurs à l'aide de réseaux d'éléments de changement résistifs WO2018005187A1 (fr)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201662357716P 2016-07-01 2016-07-01
US62/357,716 2016-07-01
US15/621,757 2017-06-13
US15/621,788 US10261861B2 (en) 2016-07-01 2017-06-13 Methods for error correction with resistive change element arrays
US15/621,757 US10387244B2 (en) 2016-07-01 2017-06-13 Methods for error correction with resistive change element arrays
US15/621,788 2017-06-13

Publications (1)

Publication Number Publication Date
WO2018005187A1 true WO2018005187A1 (fr) 2018-01-04

Family

ID=60787819

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2017/038478 WO2018005187A1 (fr) 2016-07-01 2017-06-21 Procédés de correction d'erreurs à l'aide de réseaux d'éléments de changement résistifs

Country Status (1)

Country Link
WO (1) WO2018005187A1 (fr)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6584589B1 (en) * 2000-02-04 2003-06-24 Hewlett-Packard Development Company, L.P. Self-testing of magneto-resistive memory arrays
US20060250843A1 (en) * 2005-05-09 2006-11-09 Nantero, Inc. Non-volatile-shadow latch using a nanotube switch
US20080273388A1 (en) * 2007-03-21 2008-11-06 Henry Chin Adjusting resistance of non-volatile memory using dummy memory cells
US20090055708A1 (en) * 2003-11-03 2009-02-26 Yong-Deok Chang Robust error correction encoding/decoding apparatus and method of digital dual-stream broadcast reception/transmission system
US20110038195A1 (en) * 2009-08-12 2011-02-17 Nantero, Inc. Method for resetting a resistive change memory element
US20120069622A1 (en) * 2010-09-17 2012-03-22 Ward Parkinson Sector Array Addressing for ECC Management
WO2015104299A1 (fr) * 2014-01-10 2015-07-16 Commissariat A L'energie Atomique Et Aux Energies Alternatives Procede et circuit pour programmer des cellules de memoire non volatile d'une matrice memoire volatile/non volatile
US20150261602A1 (en) * 2014-03-13 2015-09-17 Katsuyuki Fujita Resistance change memory
US9299430B1 (en) * 2015-01-22 2016-03-29 Nantero Inc. Methods for reading and programming 1-R resistive change element arrays

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6584589B1 (en) * 2000-02-04 2003-06-24 Hewlett-Packard Development Company, L.P. Self-testing of magneto-resistive memory arrays
US20090055708A1 (en) * 2003-11-03 2009-02-26 Yong-Deok Chang Robust error correction encoding/decoding apparatus and method of digital dual-stream broadcast reception/transmission system
US20060250843A1 (en) * 2005-05-09 2006-11-09 Nantero, Inc. Non-volatile-shadow latch using a nanotube switch
US20080273388A1 (en) * 2007-03-21 2008-11-06 Henry Chin Adjusting resistance of non-volatile memory using dummy memory cells
US20110038195A1 (en) * 2009-08-12 2011-02-17 Nantero, Inc. Method for resetting a resistive change memory element
US20120069622A1 (en) * 2010-09-17 2012-03-22 Ward Parkinson Sector Array Addressing for ECC Management
WO2015104299A1 (fr) * 2014-01-10 2015-07-16 Commissariat A L'energie Atomique Et Aux Energies Alternatives Procede et circuit pour programmer des cellules de memoire non volatile d'une matrice memoire volatile/non volatile
US20150261602A1 (en) * 2014-03-13 2015-09-17 Katsuyuki Fujita Resistance change memory
US9299430B1 (en) * 2015-01-22 2016-03-29 Nantero Inc. Methods for reading and programming 1-R resistive change element arrays

Similar Documents

Publication Publication Date Title
US10387244B2 (en) Methods for error correction with resistive change element arrays
US10621116B2 (en) Non-volatile storage device with adaptive data bus inversion
KR101995624B1 (ko) 3차원 메모리 디바이스의 동적 워드 라인 기반 구성을 위한 방법 및 시스템
US9928140B2 (en) Non-volatile memory device and method of operating the same
US10347330B2 (en) Solid state storage device and reading control method thereof for read retry process with optimal read voltage set
US9454414B2 (en) System and method for accumulating soft information in LDPC decoding
US9003224B2 (en) Managing unreliable memory in data storage systems
CN110431532A (zh) 存储器中的分层错误校正码(ecc)操作
US9747159B2 (en) MRAM smart bit write algorithm with error correction parity bits
US10481809B2 (en) Read disturb compensation using weighted programming patterns
US8040713B2 (en) Bit set modes for a resistive sense memory cell array
US11211950B2 (en) Decoding device and decoding method
CN102820063A (zh) 半导体存储装置
TW201044409A (en) Data recovery in a solid state storage system
US10621035B2 (en) Techniques for correcting data errors in memory devices
US20160019127A1 (en) Methods and Systems for Die Failure Testing
KR20200122407A (ko) Nand 데이터 배치 스키마
CN110603530A (zh) 基于位旗标草图的存储器管理的方法及利用所述方法的存储器装置
US10289348B2 (en) Tapered variable node memory
US9524794B1 (en) Constrained data shaping
CN110462593B (zh) 用于提供冗余错误校正的存储器中的错误校正码操作
WO2015085260A1 (fr) Prévention de mauvaise programmation dans une mémoire à semi-conducteurs
WO2018005187A1 (fr) Procédés de correction d'erreurs à l'aide de réseaux d'éléments de changement résistifs
DE102016115177B4 (de) Verfahren zum Betreiben einer Speichervorrichtung und Speichervorrichtung
US11003551B2 (en) Non-volatile storage system with program failure recovery

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 17820947

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 17820947

Country of ref document: EP

Kind code of ref document: A1