EP4540922A1 - Detection and correction of errors using limited error correction data - Google Patents
Detection and correction of errors using limited error correction dataInfo
- Publication number
- EP4540922A1 EP4540922A1 EP23824524.5A EP23824524A EP4540922A1 EP 4540922 A1 EP4540922 A1 EP 4540922A1 EP 23824524 A EP23824524 A EP 23824524A EP 4540922 A1 EP4540922 A1 EP 4540922A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- symbols
- codeword
- elp
- error
- group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1525—Determination and particular use of error location polynomials
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1565—Decoding beyond the bounded minimum distance [BMD]
Definitions
- the disclosure pertains to computing applications, more specifically to systems and techniques that improve reliability of recovering data that may be corrupted during data storage, retrieval, and communication, using limited amounts of error correction data.
- FIG. 1 is a block diagram of an example computer system in which implementations of the disclosure may operate.
- FIG. 2 is a diagram illustrating operations of efficient lightweight detection of memory errors using reduced error locator polynomials, in accordance with some aspects of the present disclosure.
- FIGs. 3A-B are diagrams illustrating operations of key equation solvers that implement lightweight detection of memory fails, in accordance with some aspects of the present disclosure.
- FIG. 4 is a flow diagram illustrating an example method of efficient lightweight detection of memory errors using reduced error locator polynomials, in accordance with some implementations of the present disclosure.
- FIG. 5 is a flow diagram illustrating an example method of detecting and managing failed memory devices, in accordance with some implementations of the present disclosure.
- FIG. 6 depicts a block diagram of an example computer system operating in accordance with one or more aspects of the present disclosure.
- Error correction (EC) techniques operate by storing data in conjunction with additional EC data that is redundant under ideal conditions, but enables to identify parts of data that are lost in transmission or corrupted during write operations or storing of the data. For example, 32 symbols (e.g., bytes, double-bytes, etc.) of data may be stored in a memory device (or communicated over a network) together with 8 symbols of EC code for the data. In some secure memory systems, 40 symbols of data/EC code may be spread over multiple memory chips, so that a failure of any one chip does not result in irreversible loss of the data.
- EC Error correction
- each chip may be accessed using multiple buses (channels), e.g., with 4 (or 2) channels per chip, so that each symbol (or a pair of symbols) is stored and accessed in a respective chip via a separate channel.
- channels channels
- Various codes of error correction may be used, including Reed-Solomon (RS) codes, Bose-Chaudhuri-Hocquenghem (BCH) codes, Hamming codes, and the like. More specifically, a message to be stored (or communicated) may include k symbols m 0 ,m 1 ...
- RS Reed-Solomon
- BCH Bose-Chaudhuri-Hocquenghem
- the combination c(x) m(x)x t + r(x) is divisible by the generator polynomial g(x) and, therefore, inherits the t roots a- ⁇ a ⁇ ... at of the generator polynomial.
- the combination c(x) represents a codeword of n symbols that are stored in the memory (or communicated over network) in lieu of the fc-symbol message m(x).
- a departure of the stored value s(x) from the encoded codeword c(x) may be quantified by evaluating the polynomial s(x) at each of the roots a lt a 2 ...
- the locator constraints ensure that the product of the error locator polynomial and the syndrome polynomial, includes low powers 1, x, x 2 ... x v ⁇ r with coefficients and high powers ... x t+v-1 with coefficients Yet no middle powers x v ... x t-1 are present in the product A(x)S(x), having coefficients that are zero due to the locator constraints.
- additional (non- redundant) data in conjunction with the stored message, e.g., a metadata or some other data.
- one or more additional symbols of data may need to be stored, leaving fewer symbols to store the EC data.
- An EC code (40, 33), which deploys the techniques described above, has a sub-threshold number (t ⁇ 8) of EC symbols and can locate and correct only three errors. Therefore, in the instances of a chip failure, this would result in an irreversible loss of data.
- the existing techniques e.g., Sudan-Guruswami algorithm, allow sub-threshold error correction, but require substantial processing times (e.g., cycling through all possibilities of errors), which reduces memory access (or communication) bandwidth.
- Error correction may be performed to support memory operations (store and read) in N chips.
- Each chip may be configured to store L symbols of data, which may be accomplished using L separate channels.
- the disclosed implementations deploy techniques for sub-threshold detection of a failed chip using fewer than 2L symbols, e.g., 2L — T] symbols.
- the remaining k (N — 2)
- X L + T symbols may be used to store actual message data, and/or or metadata.
- a conventional algorithm would deploy an error locator polynomial with L coefficients/degrees of freedom (one of the L + 1 coefficients being irrelevant due to arbitrary overall scaling).
- identification of a failed memory chip may be successfully performed (in an overwhelming number of cases) using special error labels X e that cause the locator polynomial to have a simplified (reduced) form with one, two, etc., degrees of freedom (free coefficients).
- the error locator polynomial may have a single parameter /?, e.g., with at least some (e.g., L — 1) parameters having certain fixed values (e.g., ones and/or zeros).
- the reduced error locator polynomial A R (x) is capable of detecting a compound failure of up to L symbols storedin any of the N chips, e.g., by determining that the value of the remaining free parameter/? is one of the chip labels, p — PN, associated with a specific chip. More specifically, once the syndrome polynomial S (x) of order 2L — T] is determined to have a non-zero value, the key equation may be solved using the reduced error locator polynomial A R (x).
- the reduced error locator polynomial A R (x) provides a valid solution of the key equation with a specific value p, this value p may be compared with different chip labels Pj for identification of the failed memory chip.
- the reduced error locator polynomial A R (x) may be agnostic as to the number of corrupted symbols on the memory chip (e.g., one, two, etc., and up to L symbols), identification of specific corrupted symbols may be performed in conjunction with other techniques.
- the reduced polynomial-based EC systems and techniques also referred to as lightweight memory fail detector or simply lightweight detector herein
- more conventional techniques e.g., iterative EC techniques.
- L/2 — X or (L — j])/2) or fewer errors are identified by the iterative EC decoder
- the result of the lightweight detector will be consistent with the iterative EC result as long as all errors are in the same chip. If L/2 — x] errors
- the iterative EC decoder may be unable to identify locations of the errors, including determining whether the errors are confined to a single chip or spread across multiple chips.
- the lightweight detector may determine that a specific chip has failed and that no other chips are affected.
- any number of errors may be spread across multiple chips. Accordingly, the system performing the error correction may report errors as uncorrectable.
- the advantages of the disclosed techniques include but are not limited to fast and efficient identification of errors using a limited (sub -threshold) number of error correction symbols beyond the Singleton bound. More specifically, the Singleton bound, which applies to certain classes of codes including Reed-Solomon codes, limits ability of L EC symbols to ensure guaranteed recovery of L/2 symbols (rounded down). Conversely, recovery of more than L/2 corrupted symbols (rounded down) with L or fewer EC symbols is not possible with a complete reliability.
- Such advanced techniques include the Sudan-Guruswami algorithm capable of correcting more than L /2 errors with a high but still imperfect probability.
- FIG. 1 is a block diagram illustrating an example computing device 100 in which implementations of the present disclosure may operate.
- Computing device 100 may be any desktop computer, a tablet, a smartphone, a server (local or remote), a thin/lean client device, a server, a cloud computing node, an edge device, a network switch, a gateway device, a card reader, a wireless sensor node, an Intemet-of-Things (loT) node, an embedded system dedicated to one or more specific applications, and so on.
- Computing device 100 may have one or more processors 102, e.g., central processing units (CPUs), graphics processing units (GPUs), field-programmable gate arrays (FPGA), application-specific integrated circuits (ASICs), and the like.
- CPUs central processing units
- GPUs graphics processing units
- FPGA field-programmable gate arrays
- ASICs application-specific integrated circuits
- Processor refers to a device capable of executing instructions encoding arithmetic, logical, or I/O operations.
- a processor may follow Von Neumann architectural model and may include one or more arithmetic logic units (ALUs), a control unit, and may further have access to a plurality of registers, or a cache 104.
- ALUs arithmetic logic units
- Processor 102 may include one or more processor cores. In implementations, each processor core may execute instructions to run a number of hardware threads, also known as logical processors.
- Various logical processors may be assigned to one or more processes supported by processor 102, although more than one processor core (or a logical processor) may be assigned to a single processor for parallel processing.
- a multi-core processor may simultaneously execute multiple instructions.
- a single-core processor may typically execute one instruction at a time (or process a single pipeline of instructions).
- Computing device 100 may include one or more memory systems 150.
- the memory system 150 may refer to any volatile or non-volatile memory and may include a read-only memory (ROM), a random-access memory (RAM), electrically erasable programmable read-only memory (EEPROM), flash memory, flip-flop memory, or any other device capable of storing data.
- RAM may be a dynamic random-access memory (DRAM), synchronous DRAM (SDRAM), a static memory, such as static random-access memory (SRAM), and the like.
- processor(s) 102 and memory system 150 may be implemented as a single controller, e.g., as an FPGA.
- Memory system 150 may include multiple memory chips 150-1... 150-N. In some implementations, memory chips 150-1... 150-N which may be accessed via memory channels 152 that allow simultaneous write (store) and read (load) operations, e.g., simultaneous storing and/or reading of multiple data symbols.
- Computing device 100 may further include an input/output (I/O) interface 106 to facilitate connection of the computing device 100 to various peripheral hardware devices (not shown in FIG. 1) such as card readers, terminals, printers, scanners, loT devices, and the like.
- Computing device 100 may further include a network interface 108 to facilitate connection to a variety of networks (Internet, wireless local area networks (WLAN), personal area networks (PAN), public networks, private networks, etc.), and may include a radio front end module and other devices (amplifiers, digital-to-analog and analog-to-digital converters, dedicated logic units, etc.) to implement data transfer to/from computing device 100.
- Various hardware components of the computing device 100 may be connected via a system bus 112 that may include its own logic circuits, e.g., a bus interface logic unit (not shown in FIG. 1).
- Computing device 100 may support one or more applications 110.
- Application(s) 110 supported by computing device 100 may include machine-learning application(s), graphics application(s), computational application(s), cryptographic application(s) (such as authentication, encryption, decryption, secure storage application(s), etc.), embedded application(s), external application(s), or any other types of application(s) that may be executed by computing device 100.
- Application(s) 110 may be instantiated on the same computing device 100, e.g., by an operating system executed by the processor 102 and residing in the memory system 150.
- the external application(s) may be instantiated by a guest operating system supported by a virtual machine monitor (hypervisor) operating on the computing device 100.
- the external application(s) may reside on a remote access client device or a remote server (not shown), with the computing device 100 providing computational support for the client device and/or the remote server.
- Computing device 100 may include an error correction (EC) encoder 120 that may receive, from processor 102, a data message to be stored in memory system 150.
- EC encoder 130 may partition the data message into symbols and generate a codeword encoding the data message (e.g., using a generator polynomial, as described above).
- the codeword may include one or more EC symbols.
- the codeword encoding the data message may be stored in memory system 150, e.g., in one or more memory chips 150-j.
- Computing device 100 may include an EC decoder 130 to perform inverse operations of decoding codewords retrieved from memory system 150.
- EC decoder may include an iterative EC decoder 132 that may implement various EC techniques and algorithms, e.g., Reed-Solomon codes, Bose-Chaudhuri-Hocquenghem codes, Hamming codes, and the like.
- EC decoder 130 may further include a Single Error Correction, Double Error Detection (SECDED) decoder 134.
- SECDED Single Error Correction
- SECDED Double Error Detection
- EC decoder 130 may further include a lightweight memory fail detector 140 operating in accordance with various implementations of the instant disclosure.
- Lightweight memory fail detector 140 may use stored symbol/chip labels 141 for reduced ELP construction 142 that may identify a reduced set of error locator polynomials ⁇ A R (x) ⁇ (a subset of all possible error locator polynomials ⁇ A(x) ⁇ ) to be used in memory fail detections.
- a syndrome computation 144 may process the retrieved codeword to generate a syndrome polynomial for the codeword.
- a key equation solver 146 may use the syndrome polynomial to find a solution of the key equation among the reduced set of error location polynomials ⁇ A R (x) ⁇ . The solution of the key equation may indicate in which memory chip one or more corrupted symbols are stored.
- Lightweight memory fail detector 140 may further include an error determination 148 components that identifies errors (corrupted symbols) within the memory chip and corrects the identified errors.
- Any functions or components depicted as part of EC decoder 130 and/or lightweight memory fail detector 140 may be implemented via dedicated hardware circuits configured to perform one or more polynomial operations (e.g., multiplication, addition, inversion, division, differentiation, and the like), or as software modules executed on any suitable processor (e.g., processor 102), or as any combination of dedicated hardware circuits and software modules.
- polynomial operations e.g., multiplication, addition, inversion, division, differentiation, and the like
- processor 102 e.g., processor 102
- FIG. 2 is a diagram illustrating operations 200 of efficient lightweight detection of memory errors using reduced error locator polynomials, in accordance with some aspects of the present disclosure.
- operations 200 may be performed by EC decoder 130 of FIG. 1 using hardware circuits and/or software modules described below.
- N memory chips 150-1... 150-N may store a data that includes N X L symbols, L symbols stored per chip. Each symbol may be stored and then retrieved via a separate access channel, for speed of memory operations (writes, reads, erasures, etc.), although this is not a requirement.
- a stored codeword of N x L symbols may encode a message that is (A — 2) x L + j] symbols long, with J] symbols over the threshold limit that, given conventional error correction techniques, would need 2L symbols to detect a fail of all L symbols (channels) of any given chip.
- the stored codeword s(x) may be read from the memory chips 150-1 ... 150-N via bus 112 and one copy of the stored codeword may be input into error syndrome computation 210.
- error syndrome computation 210 may be implemented as a dedicated hardware circuit or as a software function (module) supported by a general-purpose processor (e.g., processor 102 of FIG. 1).
- Error syndrome computation 210 may treat the stored codeword s(x) as a polynomial of order n — 1 whose coefficients are elements of a Galois field GF(2 q ').
- Error syndrome computation 210 may have access to roots a r , a 2 ... at of a generator polynomial (GP) 212 that was used by EC encoder (e.g., EC encoder 120 of FIG. 1) to generate the codeword.
- Error syndrome computation 210 may compute the error syndromes Sj for each of the GP roots 212.
- the error syndromes are the coefficients of the error syndrome polynomial Some of the coefficients Sj may be zero.
- the error syndrome polynomial S(x) may be provided to a key equation solver (KES) 220.
- the limited subset of the ELP polynomials (reduced ELP 222) may be configured to detect a limited selection of possible error patterns.
- the error pattern that is being searched for by KES 220 may include corruption of one or more of (up to all) L symbols of a single memory chip 150-n.
- the reduced ELP 222 has one parameter (as in the above example).
- the reduced ELP 222 has two (three, etc.) parameters.
- Additional input into KES 220 may include symbol/chip labels 141, such as symbol labels a ⁇ ... a n (to be used as error locators) for various symbols and chip labels ... for various memory chips.
- Such reduced ELP may be capable of detecting one or more corrupted symbols distributed in any way among the corresponding two memory chips but may be agnostic as to the number of corrupted symbols and distribution of the corrupted symbols across the two memory chips.
- Each symbol may be assigned a unique label a e and each chip may have a unique label
- chip labels may be confined to a subfield of the Galois field.
- the symbols may be elements of the Galois field GF(2 8 ) whereas chip labels Pi may be confined to the Galois field GF (2 4 ).
- the solution of the key equation by KES 220 yields the ELP of the reduced form A R (X) with the parameter p equal to one of the chip labels p r — PN, associated with a respective chip. Accordingly, if the reduced ELP A R (x) associated with a particular subset of memory failures (e.g., failures confined within a single chip) indeed provides a solution to the key equation, the remaining degree(s) of freedom determined by KES 220 in the course of solving the key equation identify the chip in which the errors occur. In the instances where the reduced ELP A R (x) does not provide a valid solution of the key-equation with the parameter (3 equal to one of the chip labels ...0 N , the errors are not confined to a single chip.
- the obtained ELP A R (x) may be provided to error locator computation 230 that may determine specific labels X e , of the subset of symbol labels a e associated with the obtained ELP A R (x), and identify corrupted symbols. For example, error locator computation 230 may determine that corrupted symbols are symbols #1 and #3 of chip #6 whose label ? 6 was determined by KES 220. In some implementations, error locator computation 230 may be performed by (or as part of) iterative EC decoder 132. In some implementations, error locator computation 230 may initially assume corruption of all symbols in chip j where errors are located.
- the error values y e may be computed using the ratio of the error-evaluator polynomial computed at the corresponding error locator X e to the derivative of the ELP at the same point, fl(X e )/A'(X e ).
- Error correction computation 250 may then use the obtained error locators ⁇ X e ⁇ and error values ⁇ y e ⁇ to determine the error polynomial, A(x).
- any of the components 210-260 may be implemented using dedicated hardware circuits.
- the functions of some or all of the components 210-260 may be implemented using software modules and processes executed by a general-purpose processor, e.g., a CPU, FPGA, ASIC, and the like.
- FIGs. 3A-B are diagrams illustrating operations of key equation solvers that implement lightweight detection of memory fails, in accordance with some aspects of the present disclosure.
- key equation solver 300 may process error syndrome polynomial S(x) using two branches.
- a first branch may deploy a reduced ELP KES 310, operating as described above in conjunction with FIG. 2.
- a second branch may include a conventional iterative solution of the key equation, which may be performed using multiple iterative KES 320-1, 320-2, ... 320-m.
- the first branch and the second branch may be performed in parallel using separate hardware circuits.
- Each subsequent iterative KES 320-j repeats the same process, e.g., taking/th coefficient Sy of the syndrome polynomial S(x) as an input and determining how the accumulated ELP should be updated, Aj_ x (x) -> Aj(x) to ensure that the updated ELP is consistent with all coefficients evaluated so far, S-L ... Sj.
- the number of EC symbols (and, respectively, the number of coefficients Sy of the syndrome polynomial) may be less than is sufficient (e.g., 2L) to locate and correct L errors.
- the implementation illustrated in FIG. 3A takes advantage of the reduced ELP polynomial output by reduced ELP KES 310.
- the reduced ELP polynomial may have zero coefficients of some powers of x, e.g., x 3 , x 2 , and so on.
- a discrepancy e.g., nonzero value
- the final value of the ELP is then adjusted to remove the existing discrepancies while still being consistent with the previously evaluated coefficients S ⁇ ...
- the obtained ELP may then be used for error locator computation 230 and error values computation 240, in accordance with any known techniques.
- the key equation solver 300 of FIG. 3A may also be used in situations where a chip failure has been detected, but the system has not been shut down yet. For example, memory fails of all L channels of a particular memory chip may have been detected (as described above) over multiple (two or more) data retrievals. The memory system may then be operated in a quarantine mode where chip errors are treated as erasures at known locations (all L symbols of the failed chip). Erasures are treated as symbols that cannot be recognized and may require fewer EC symbols for their correction (for example, two times fewer EC symbols compared with correction of symbols at unknown locations).
- FIG. 3 A depicts another implementation of the key equation solver 301, in which the last iteration is performed by a separate Single Error Correction, Double Error Detection (SECDED) decoder 330.
- SECDED Single Error Correction, Double Error Detection
- the reduced ELP KES 310 may continue monitoring the failed memory chip, e.g., by confirming that successive data retrievals remain consistent with the reduced ELP polynomial A R (x) in which a chip label [J is still the label of the failed chip. In the instances of a spontaneous recovery of the failed chip, the reduced ELP KES 310 may detect that the reduced ELP polynomial A R (x) with the chip label [J has stopped providing a valid solution of the key equation. In the meantime, the iterative KES pipeline 320-1 ... 320-m may detect no further errors in the chip previously marked as failed.
- the quarantine mode can be exited, e.g., after a predetermined threshold number of error-free memory read operations from the chip.
- the normal memory operations may then be resumed.
- FIGs. 4-5 illustrate example methods 400 and 500 that can be used for error detection and correction using limited error correction symbols.
- Methods 400 and 500 and each of their individual functions, routines, subroutines, and/or operations maybe performed by an error correction engine, such as EC decoder 130 in FIG. 1 having dedicated circuits, or a general -purpose processor, such as processor 102 depicted in FIG. 1.
- Various blocks of methods 400 and 500 maybe performed in a different order compared with the order shown in FIG. 4 and FIG. 5. Some blocks may be performed concurrently with other blocks. Some blocks may be optional.
- Methods 400 and 500 may be implemented as part of data write and read operations or as part of a network data communication operation. In certain implementations, a single processing thread may perform methods 400 and 500.
- two or more processing threads may perform methods 400 and 500, each thread executing one or more individual functions, routines, subroutines, or operations of the methods.
- the processing threads implementing methods 400 and 500 may be synchronized (e.g., using semaphores, critical sections, and/or other thread synchronization mechanisms).
- the processing threads implementing methods 400 and 500 may be executed asynchronously with respect to each other.
- Various operations of each of methods 400 and 500 may be performed in a different order compared with the order shown in FIGs. 4-5. Some operations of each of methods 400 and 500 may be performed concurrently with other operations. Some operations may be optional.
- FIG. 4 is a flow diagram illustrating an example method 400 of efficient lightweight detection of memory errors using reduced error locator polynomials, in accordance with some implementations of the present disclosure.
- processing units performing method 400 may obtain a codeword generated by a computer operation applied to an original codeword.
- the original codeword may encode a plurality of multi-bit symbols, e.g., 4-bit symbols, 1-byte symbols, and so on.
- the computer operation may include storing the original codeword in a memory system and reading the codeword from the memory system.
- the obtained codeword may be different from the original codeword because of corruption (occurrence of errors) of some of the symbols.
- the computer operation may include transmitting the original codeword over a network (or a bus) by a first computing device and receiving the codeword by a second computing device.
- the received codeword may be different from the transmitted codeword because of noisy network transmission causing some symbols to be lost or altered.
- the plurality of symbols of the original codeword e.g, n symbols
- includes a number of error correction (EC) symbols e.g., n — k EC symbols.
- the number of EC symbols is less (n — k ⁇ 2L) than twice a number (L) of symbols in each group of symbols of the plurality of groups of symbols.
- each group of symbols of the plurality of groups of symbols is stored in a respective memory device of a plurality of memory devices of the memory system.
- each memory device e.g., separate memory chip of the memory system
- Memory system should be understood as any system capable of storing non- transitory data. “Memory system” may comprise any number of memory devices. “Memory device” should be understood as any part of the memory system, such as a separate memory chip, a separate physical partition of a memory chip, a logical partition, and so on.
- method 400 may continue with the processing units identifying a reduced set of error locator polynomials (ELPs) for the codeword.
- ELPs error locator polynomials
- Each ELP of the reduced set of ELPs may be associated with (i) at least one potential error within a respective group of symbols of a plurality of groups of symbols of the codeword and (ii) absence of potential errors outside the respective group of symbols.
- the polynomial A R (x; ?j) may be associated with potential errors within the z-th group of symbols (e.g., the z-th memory chip or a group of symbols transmitted over the z-th network channel) and also associated with the absence of potential errors in other groups of symbols.
- Each polynomial of the reduced set of ELPs e.g., A R (x; ?j)
- each ELP of the reduced set of ELPs has an order that is equal to the number of symbols (e.g., L) in each group of symbols of the plurality of groups of symbols.
- the reduced set of ELPs may be a subset of polynomials of an order that is equal to a number of symbols in each group of symbols, with one or more coefficients of the reduced set of ELPs belonging to a group of elements consisting of a zero element and a unity element.
- each symbol of the plurality of symbols may be an element of a Galois Field GF(2 t i) having 2 ⁇ elements while coefficients of each ELP of the reduced set of ELPs belong to a subset of the Galois Field GF(2 t i), such as the Galois Field GF(2P) with p ⁇ q.
- the coefficients e.g., 0, of the polynomials A x 4 + x + fi may belong to the Galois Field GF(2 4 ).
- method 400 may continue with the processing units selecting, in view of the plurality of syndrome values, an indicator ELP from the reduced set of ELPs, wherein the indicator ELP is associated with a corrupted group of symbols of the plurality of groups of symbols, the corrupted group of symbols having at least one error.
- the processing units may determine, in the course of solving the key equation, that a particular ELP, e.g., A R (X; ? X ) of the reduced set of ELPs ⁇ A R (x; ?j) ⁇ indeed satisfies the key equation.
- the processing units may identify, using the indicator ELP, the corrupted group of symbols (e.g., the group of symbols associated with group (chip) label .
- identifying, using the indicator ELP, the corrupted group of symbols may further include identifying one or more specific symbols of the group that are corrupted.
- “Corrupted group” should be understood as a group of symbols that has at least one corrupted symbol but may include any number of uncorrupted symbols.
- the processing units performing method 400 may, at block 452, perform a plurality of iterations, wherein each iteration may update an iterative ELP based on a respective syndrome value of the plurality of syndrome values.
- a j-th iteration (of n — k total iterations) may update the iterative ELP in such a way that the updated iterative ELP represents the solution of the key equation with syndrome values S 1 ...Sj.
- the processing units may further updating the iterative ELP (e.g., obtained after all n — k iterations), using a difference between the iterative ELP and the indicator ELP, to obtain a final iterative ELP.
- method 400 may include obtaining the original codeword using the codeword and the final iterative ELP.
- obtaining the original codeword may include operations of blocks 460 and 470.
- the processing units performing method 400 may obtain, using the indicator ELP, an error correction polynomial representing the difference between the (retrieved or received) codeword and the original (stored or transmitted) codeword. More specifically, the obtained ELP (e.g., the final iterative ELP) may be used to determine error locators and error values and construct the error polynomial.
- method 400 may include obtaining the original codeword using the codeword and the error correction polynomial A(x) .
- the processing units may add (e.g., using XOR addition) the error correction polynomial A(x) to the codeword s(x) to recover the value of the original codeword c(x) .
- blocks 410 and 420 may be performed by a first set of (one or more) processing circuits, e.g., a memory access circuit and error syndrome computation 220 circuit (as shown in FIG. 2)
- blocks 430 and 440 may be performed by a second set of (one or more) processing circuits, e.g., by reduced KES 310 (as shown in FIG. 3).
- Blocks 450-470 may be performed by a third set of (one or more) processing circuits, e.g., by iterative KES 320-1 ... 320-m circuits, error locators computation 230 circuit, error values computation 240 circuit, error correction computation 250 circuit, and the like.
- FIG. 5 is a flow diagram illustrating an example method 500 of detecting and managing failed memory devices, in accordance with some implementations of the present disclosure.
- processingunits performing method 500 may include determining, using the indicator ELP, that each symbol of the corrupted group of symbols has an error.
- method 500 may continue with increasing a fail counter for the given memory device. For example, each memory device (e.g., individual memory chip) may have a separate fail counter that counts the number of errors in symbols retrieved from the corresponding memory device.
- method 500 may continue with identifying the given memory device as a failed memory device.
- the threshold value may be a number of consecutive times that all symbols in the given memory device have been corrupted. In some implementations, the threshold value may be a number of consecutive times that at least a predetermined number of symbols (e.g., two out of four symbols, etc.) in the given memory device have been corrupted. In some implementations, the threshold value may be a percentage of corrupted symbols over a predetermined number of the most recent data reads.
- method 500 may continue with the processing units retrieving an additional codeword stored in the memory system.
- the additional codeword may be a subsequent memory read performed after the given memory device has been identified as a failed memory device.
- method 500 may continue with treating each symbol of the additional codeword stored in the given memory device as an erasure during error correction of the additional codeword. In those instances where the errors in symbols retrieved from the memory device previously identified as a failed memory device spontaneously cease to occur, the memory device maybe reclassified as a normal memory device with the symbols retrieved from the memory device no longer considered as erasures.
- FIG. 6 depicts an example computer system 600 that can perform any one or more of the methods described herein, in accordance with some implementations of the present disclosure.
- the computer system may be connected (e.g., networked) to other computer systems in a LAN, an intranet, an extranet, or the Internet.
- the computer system may operate in the capacity of a server in a client-server network environment.
- the computer system may be a personal computer (PC), a tablet computer, a set-top box (STB), a Personal Digital Assistant (PDA), a mobile phone, a camera, a video camera, or any device capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that device.
- PC personal computer
- PDA Personal Digital Assistant
- STB set-top box
- mobile phone a camera
- video camera or any device capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that device.
- the term “computer” shall also be taken to
- the exemplary computer system 600 includes a processing device 602, a main memory 604 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM)), a static memory 606 (e.g., flash memory, static random access memory (SRAM)), and a data storage device 618, which communicate with each other via a bus 630.
- main memory 604 e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM)
- DRAM dynamic random access memory
- SDRAM synchronous DRAM
- static memory 606 e.g., flash memory, static random access memory (SRAM)
- SRAM static random access memory
- Processing device 602 represents one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. More particularly, the processing device 602 may be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets or processors implementing a combination of instruction sets.
- the processing device 602 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like.
- the processing device 602 is configured to execute instructions 622 for implementing EC encoder 120 and EC decoder 130 of FIG. 1 and to perform the operations discussed herein (e.g., methods 400 and 500 of FIGs. 4-5).
- the computer system 600 may further include a network interface device 608.
- the computer system 600 also may include a video display unit 610 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device 612 (e.g., a keyboard), a cursor control device 614 (e.g., a mouse), and a signal generation device 616 (e.g., a speaker).
- a video display unit 610 e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)
- an alphanumeric input device 612 e.g., a keyboard
- a cursor control device 614 e.g., a mouse
- a signal generation device 616 e.g., a speaker
- the video display unit 610, the alphanumeric input device 612, and the cursor control device 614 may be combined into a single component or device (e.g., an
- the data storage device 618 may include a computer-readable storage medium 624 on which is stored the instructions 622 embodying any one or more of the methodologies or functions described herein.
- the instructions 622 may also reside, completely or at least partially, within the main memory 604 and/or within the processing device 602 during execution thereof by the computer system 600, the main memory 604 and the processing device 602 also constituting computer-readable media.
- the instructions 622 may further be transmitted or received over a network via the network interface device 608.
- computer-readable storage medium 624 is shown in the illustrative examples to be a single medium, the term “computer-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions.
- the term “computer-readable storage medium” shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure.
- the term “computer-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical media, and magnetic media.
- the present disclosure also relates to an apparatus for performing the operations herein.
- This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer.
- a computer program may be stored in a computer- readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
- ROMs read-only memories
- RAMs random access memories
- EPROMs electrically erasable programmable read-only memories
- EEPROMs electrically erasable programmable read-only memory
- magnetic or optical cards or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
- a machine-readable medium includes any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer).
- a machine-readable (e.g., computer-readable) medium includes a machine (e.g., a computer) readable storage medium (e.g., read-only memory (“ROM”), random access memory (“RAM’), magnetic disk storage media, optical storage media, flash memory devices, etc.).
- example or “exemplary” are used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “example” or “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs. Rather, use of the words “example” or “exemplary” is intended to present concepts in a concrete fashion.
- the term “or” is intended to mean an inclusive “or” rather than an exclusive “or”. That is, unless specified otherwise, or clear from context, “X includes A or B” is intended to mean any of the natural inclusive permutations.
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
Description
Claims
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202263351912P | 2022-06-14 | 2022-06-14 | |
| PCT/US2023/025223 WO2023244620A1 (en) | 2022-06-14 | 2023-06-13 | Detection and correction of errors using limited error correction data |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| EP4540922A1 true EP4540922A1 (en) | 2025-04-23 |
| EP4540922A4 EP4540922A4 (en) | 2026-06-03 |
Family
ID=89191771
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| EP23824524.5A Pending EP4540922A4 (en) | 2022-06-14 | 2023-06-13 | Error detection and correction using limited error correction data |
Country Status (2)
| Country | Link |
|---|---|
| EP (1) | EP4540922A4 (en) |
| WO (1) | WO2023244620A1 (en) |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7793195B1 (en) * | 2006-05-11 | 2010-09-07 | Link—A—Media Devices Corporation | Incremental generation of polynomials for decoding reed-solomon codes |
| US9442670B2 (en) * | 2013-09-03 | 2016-09-13 | Sandisk Technologies Llc | Method and system for rebalancing data stored in flash memory devices |
| US10567003B2 (en) * | 2017-01-26 | 2020-02-18 | Hewlett Packard Enterprise Development Lp | List decode circuits |
| US10367529B2 (en) * | 2017-01-27 | 2019-07-30 | Hewlett Packard Enterprise Development Lp | List decode circuits |
| US10735030B2 (en) * | 2017-08-07 | 2020-08-04 | Hewlett Packard Enterprise Development Lp | Re-encoding data associated with failed memory devices |
-
2023
- 2023-06-13 EP EP23824524.5A patent/EP4540922A4/en active Pending
- 2023-06-13 WO PCT/US2023/025223 patent/WO2023244620A1/en not_active Ceased
Also Published As
| Publication number | Publication date |
|---|---|
| EP4540922A4 (en) | 2026-06-03 |
| WO2023244620A1 (en) | 2023-12-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10044372B2 (en) | Sliding window list decoder for error correcting codes | |
| US8806295B2 (en) | Mis-correction and no-correction rates for error control | |
| US20210218419A1 (en) | Method, device and apparatus for storing data, computer readable storage medium | |
| US12405852B2 (en) | Decoder for interleaved Reed-Solomon (IRS) with erasure/collaborative | |
| US10601448B2 (en) | Reduced latency error correction decoding | |
| US12170531B2 (en) | Iterative decoder for correcting dram device failures | |
| US20220413959A1 (en) | Systems and methods for multi-use error correcting codes | |
| US8694850B1 (en) | Fast erasure decoding for product code columns | |
| WO2016122515A1 (en) | Erasure multi-checksum error correction code | |
| US9236890B1 (en) | Decoding a super-code using joint decoding of underlying component codes | |
| WO2023244620A1 (en) | Detection and correction of errors using limited error correction data | |
| Ezea et al. | Performance analysis of cyclic redundancy check (crc) error detection technique in the wireless sensor network | |
| US20170161141A1 (en) | Method and apparatus for correcting data in multiple ecc blocks of raid memory | |
| CN107665152A (en) | The interpretation method of a kind of correcting and eleting codes | |
| US12379992B2 (en) | System and method for protecting data | |
| US12375109B2 (en) | Integration of compression algorithms with error correction codes | |
| CN103151078A (en) | A method for generating memory error detection and correction codes | |
| WO2024178012A2 (en) | Correlated multi-codeword error correction coding | |
| RU2637426C1 (en) | Device for storing and transmitting data with error detection | |
| US12191885B1 (en) | Early detection of single bit error on address and data | |
| US12493518B2 (en) | Error correction using on-die parity bit storage and transitional signals | |
| CN119070830B (en) | A fast decoding method for RS(12,9) based on DMR standard | |
| Bu et al. | Design of reliable storage and compute systems with lightweight group testing based non‐binary error correction codes | |
| Schoeny et al. | Error Correction and Detection for Computing Memories Using System Side Information | |
| CN121349757A (en) | Data processing methods, apparatus, electronic devices and storage media |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE |
|
| PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE |
|
| 17P | Request for examination filed |
Effective date: 20250114 |
|
| AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC ME MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
| DAV | Request for validation of the european patent (deleted) | ||
| DAX | Request for extension of the european patent (deleted) | ||
| A4 | Supplementary search report drawn up and despatched |
Effective date: 20260508 |
|
| RIC1 | Information provided on ipc code assigned before grant |
Ipc: H03M 13/15 20060101AFI20260430BHEP Ipc: G06F 3/06 20060101ALI20260430BHEP Ipc: G06F 11/08 20060101ALI20260430BHEP Ipc: G06F 11/10 20060101ALI20260430BHEP Ipc: H03M 13/41 20060101ALI20260430BHEP Ipc: H03M 13/45 20060101ALI20260430BHEP |