US20190034268A1 - Fault-tolerant dot product engine - Google Patents

Fault-tolerant dot product engine Download PDF

Info

Publication number
US20190034268A1
US20190034268A1 US15/664,874 US201715664874A US2019034268A1 US 20190034268 A1 US20190034268 A1 US 20190034268A1 US 201715664874 A US201715664874 A US 201715664874A US 2019034268 A1 US2019034268 A1 US 2019034268A1
Authority
US
United States
Prior art keywords
crossbar array
dot product
matrix
values
fault
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US15/664,874
Other versions
US10545821B2 (en
Inventor
Ron M. Roth
Richard H. Henze
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Priority to US15/664,874 priority Critical patent/US10545821B2/en
Assigned to HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP reassignment HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HENZE, RICHARD H., ROTH, RON M.
Publication of US20190034268A1 publication Critical patent/US20190034268A1/en
Priority to US16/712,358 priority patent/US11061766B2/en
Application granted granted Critical
Publication of US10545821B2 publication Critical patent/US10545821B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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
    • 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/0007Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising metal oxide memory material, e.g. perovskites
    • 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
    • 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
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/16Storage of analogue signals in digital stores using an arrangement comprising analogue/digital [A/D] converters, digital memories and digital/analogue [D/A] converters 
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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
    • 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
    • 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

Definitions

  • vector-matrix computations are utilized in data-compression, digital data processing, neural networks, encryption and optimization, among others.
  • Hardware techniques for optimizing these computations have included the use of ASICs, FPGAs, GPUs, and more recently, the design of a Dot-Product Engine based on a crossbar array.
  • the crossbar array is a memristive crossbar array having a number of row lines and a number of column lines intersecting the row lines to form a number of junctions, with memristive memory devices coupled at the junctions and programmed with resistance values.
  • An input voltage signal along each row of the crossbar array is weighted by the conductance of the memristive devices in each column and accumulated as the current output from each column to form a dot product.
  • Inaccuracies while programming the memristive devices in the crossbar array and noise while reading the current output can affect the accuracy of the computations. Inaccuracies may also arise at the junctions if they become shorted, non-programmable or stuck at an open state.
  • FIG. 1 illustrates a schematic diagram of a fault-tolerant computing device for determining a dot product in accordance with various examples
  • FIG. 2 is a schematic diagram of a fault-tolerant computing device for determining a dot product and detecting and/or correcting errors in the dot product in accordance with various examples;
  • FIG. 3 is a schematic diagram of a fault-tolerant dot product engine in accordance with various examples
  • FIG. 4 is a schematic diagram of a fault-tolerant dot product engine in more details.
  • FIG. 5 is a flowchart for detecting and/or correcting errors in a dot product generated by a fault-tolerant dot product engine.
  • a Fault-Tolerant Dot-Product Engine (“FT-DPE”) is disclosed.
  • the FT-DPE detects and/or corrects computational errors while performing a vector-matrix multiplication using a memristive crossbar array.
  • An input vector u of integers and of length l is desired to be multiplied by an l ⁇ k integer matrix A to compute the vector-matrix product uA.
  • Potential inaccuracies in the programming and/or operation of the memristive devices in the memristive crossbar array can lead to an inaccurate computation.
  • fault tolerance in the computation is introduced by adding redundancy in the matrix implemented by the memristive crossbar array.
  • a computation is performed between the input vector of length l and a matrix of length l ⁇ n, with n>k.
  • the input matrix A is encoded with additional entries that result in output codewords that can be used to detect and/or correct errors in the desired computation.
  • An encoder circuit encodes the values in the last in columns of the matrix A from its first k columns and a decoder circuit operates to detect and/or correct any errors in the first k entries of the output dot product vector uA.
  • Fault-tolerant computing device 100 includes a fault-tolerant dot product engine (“FT-DPE”) 105 and an encoder circuit 110 .
  • the FT-DPE 105 receives an input signal corresponding to an input vector u of length l and generates an output signal corresponding to an output vectory y of length n that is a dot product between the input signal u and an l ⁇ n input matrix A.
  • the matrix A is implemented as a crossbar array consisting of l row conductors, n column conductors, and programmable memristors at the junctions of the l rows and n columns, thereby forming l ⁇ n memory locations.
  • Each memory location is set to have a conductance value that is proportional to the matrix value at that memory location.
  • Inaccuracies while programming the memristors in the crossbar array and noise while generating the output signal can affect the accuracy of the dot product computation. Errors may also occur as a result of the junctions in the crossbar array becoming shorted due to faults in the programming process. In another example, a junction in the crossbar array may become non-programmable or get stuck in an open state. As a result of these errors, the actual output vector y may differ from the correct dot product uA between the input vector u and the matrix A.
  • the matrix A is an integer matrix whose entries are from the set ⁇ q , for a prescribed alphabet size q.
  • the matrix A is programmed to be fault-tolerant and self-protect the computations.
  • the l ⁇ n matrix A is programmed to have the following structure:
  • A′ is an l ⁇ k matrix consisting of the first k columns of A
  • the encoder circuit 110 is a dedicated circuit designed to operate according to a given error detection and correction capability. That is, the encoder circuit 110 is implemented to encode A′′ so that a given number of errors are able to he detected and/or corrected in the output vector y. Specifically, the difference between the actual output vector y and the correct dot product uA between the input vector u and the matrix A can be expressed as an error vector e:
  • the number of errors in the error vector e can be quantified as the L 1 norm of e:
  • This norm is also referred to as the Manhattan weight of e, which equals le Manhattan distance between uA and y.
  • Fault-tolerant computing device 200 includes FT-DPE 205 and an encoder circuit 210 , designed to be substantially similarly to the FT-DPE 105 and the encoder circuit 110 of FIG. 1 .
  • the number of errors that the decoder circuit 210 is able to detect and/or correct depends on the design of the redundant matrix A′′.
  • the redundant matrix A′′ is encoded by the encoder circuit 210 to detect up to one L 1 error.
  • the redundant matrix A′′ is designed to be a matrix of size l ⁇ l, with a single column of redundant values added to the input matrix A.
  • the contents of the redundant matrix A′′ depends on A′, but do not depend on the input signal u.
  • A′′ should be set so that the specified error detection and correction capabilities still hold when u is a unit vector.
  • the set of (at least) q k possible contents of row i in matrix A must form a subset of ⁇ q n that, by itself (and independently of the contents of the other rows in A), meets the desired error detection and correction capabilities.
  • the decoding in decoder circuit 215 starts by computing the syndrome of y, which is defined by:
  • the decoding mapping can be simplified to just checking whether the syndrome is zero. A non-zero value indicates that at least two errors have occurred. It is also appreciated that the above encoding and decoding schemes can be enhanced so that more errors can be detected and/or corrected in the output vector. In various examples, enhancing the encoding and decoding schemes may include the application of specific error control codes, such as Berlekamp codes, among others.
  • FT-DPE 300 is designed to be substantially similar to FT-DPE 105 and FT-DPE 205 , and includes a memristive crossbar array 305 .
  • the memristive crossbar array 305 has a number l of row lines and a number n of column lines intersecting the row lines to form l ⁇ n memory locations, with each memory location having a programming memristive element and defining a matrix value.
  • Each memory location is set to have a conductance value that is proportional to the matrix value at that memory location.
  • FT-DPE 305 also includes a number l of digital-to-analog converters 310 coupled to the row lines of the memristive crossbar array 305 to receive an input signal u and a number n of analog-to-digital converters 315 coupled to the column lines of the memristive crossbar array 305 to generate an output signal y.
  • the output signal y is a dot product of the input signal u and the matrix values in the memristive crossbar array 305 .
  • Each entry u i of u is fed into a digital-to-analog converter to produce a voltage level that is proportional to u i .
  • FIG. 4 shows a schematic diagram of a FT-DPE in more details.
  • FT-DPE 400 is designed to be substantially similar to FT-DPE 105 , FT-DPE 205 , and FT-DPE 305 .
  • FT-DPE 400 includes a memristive crossbar array 405 where memristive elements or memristors are disposed at junctions intersecting and electrically coupling row lines and column lines in the crossbar array 405 .
  • Memristance is a property of the electronic component referred to as a memristor.
  • a memristor is a resistor device whose resistance can be changed. If charge flows in one direction through a memristor circuit, the resistance of the memristor will increase. If charge flows in the opposite direction in the memristor circuit, its resistance will decrease. If the flow of charge is stopped by turning off the applied voltage, the memristor will “remember” the last resistance that it had. When the flow of charge starts again, the resistance of the memristor circuit memory cell will be what it was when it was last active.
  • this charge flow must be greater than a certain threshold in order to produce a significant change in the resistance value, for example in order to program a resistance value at each memory location.
  • This threshold operation behavior allows vector-matrix computations to be performed on a Dot-Product Engine below these threshold levels without materially altering the resistance values programmed into the memristor memory array. The array resistance values can subsequently be changed by a programming operation where the charge flow threshold is exceeded.
  • the conductance channels in the memristors of crossbar array 405 may be formed in each of the memristors, such as, for example. memristor 410 .
  • a crossbar can be thought of as an array of memristors that connect each wire in one set of parallel wires (e.g., the row lines) to every member of a second set of parallel wires (e.g., the column lines) that intersects the first set.
  • the row lines and the column lines are perpendicular with respect to each other, but the row lines and the column lines may intersect at any angle.
  • the memristors in crossbar array 405 may be built at the micro- or nano-scale level and used as a component in a wide variety of electronic circuits, such as, for example, bases for memories and logic circuits. When used as a basis for memories, the memristors in crossbar array 405 may be used to store information in the form of resistance values. When used as a logic circuit, the memristors may be employed to represent bits in a field programmable gate array, as the basis for a wired-logic programmable logic array, or, as described herein, as the basis in FT-DPE 405 . The memristors in crossbar array 405 may also find use in a wide variety of other applications. Further, the memristors in crossbar array 405 may be fabricated through any reasonably suitable fabrication process, such as, for example, chemical vapor deposition, sputtering, etching, lithography, or other methods of forming memristors.
  • the memristive crossbar array 405 further includes a number of input values indicated as input signal u.
  • the input values may be read signals used to read the resistance values at each individual memristor at each junction in the crossbar array 405 , and as a way to multiply a matrix value by a vector value at each memristor involved in the calculation.
  • the read signals (or vector signals) may be applied as second input values to the row lines of the memristive crossbar array 405 .
  • the vector signals may represent a vector to be multiplied to the matrix represented by the program signals.
  • the vector signals have a relatively lower voltage value than the first voltages used to program the memristors such that the voltage level applied by the vector signals does not change the resistance values of the memristors as programmed by the first voltages.
  • the vector signals act as read signals in this manner by not changing the resistance values of the memristors.
  • the vector signals interact with the memristors at their respective junctions and the resulting current is collected at the end of each column line by analog current measuring devices 425 , which may be, for example, transimpedance amplifiers.
  • an initial signal may be applied to the memristors before application of the program signals and the vector signals in order to set the resistivity of the memristors to a known value.
  • a crossbar array having a number l of row lines and a number n of column lines intersecting the row lines to form l ⁇ n memory locations is provided ( 500 ).
  • Each memory location in the crossbar array has a programmable memristive element and defines a matrix value.
  • a programming voltage is applied to the memristive element at each l ⁇ k memory location, wherein k ⁇ n, to set the matrix values at each memory location ( 505 ).
  • the matrix value at each memory location is thus proportional to the conductance of the memristive element in that memory location.
  • the crossbar array is designed with additional memory locations to introduce redundancy in the dot product computation that can be used to detect and/or correct errors in the computation.
  • a fully programmed l ⁇ n fault-tolerant crossbar array is provided to perform a dot product computation with an input signal.
  • An input signal is applied at the l row lines of the crossbar array, the input signal corresponding to an input vector of length l to be multiplied by the matrix values at the l ⁇ n memory locations ( 520 ).
  • the input vector signal interacts with the memristive elements at their respective memory locations and the resulting current is collected at the end of each column line.
  • An output signal is then determined at the n column lines of the crossbar array, the output signal corresponding to an output vector of length n that is a dot product of the input vector and the matrix values at the l ⁇ n memory locations ( 520 ).
  • the output vector is computed by reading the currents at analog current measuring devices at the end of the n column lines and then converted into digital values by analog-to-digital converters to form a dot product.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Chemical & Material Sciences (AREA)
  • Probability & Statistics with Applications (AREA)
  • Materials Engineering (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Examples disclosed herein relate to a fault-tolerant dot product engine. The fault-tolerant dot product engine has a. crossbar array having a number l of row lines and a number n of column lines intersecting the row lines to form l×n memory locations, with each memory location having a programmable memristive element and defining a matrix value. A number l of digital-to-analog converters are coupled to the row lines of the crossbar array to receive an input signal and a number n of analog-to-digital converters are coupled to the column lines of the crossbar array to generate an output signal. The output signal is a dot product of the input signal and the matrix values in the crossbar array, wherein a number m<n of the n column lines in the crossbar array are programmed with matrix values used to detect errors in the output

Description

    BACKGROUND
  • The need for fast and efficient vector-matrix computations arises in many applications. For example, vector-matrix computations are utilized in data-compression, digital data processing, neural networks, encryption and optimization, among others. Hardware techniques for optimizing these computations have included the use of ASICs, FPGAs, GPUs, and more recently, the design of a Dot-Product Engine based on a crossbar array.
  • In one example, the crossbar array is a memristive crossbar array having a number of row lines and a number of column lines intersecting the row lines to form a number of junctions, with memristive memory devices coupled at the junctions and programmed with resistance values. An input voltage signal along each row of the crossbar array is weighted by the conductance of the memristive devices in each column and accumulated as the current output from each column to form a dot product.
  • Inaccuracies while programming the memristive devices in the crossbar array and noise while reading the current output can affect the accuracy of the computations. Inaccuracies may also arise at the junctions if they become shorted, non-programmable or stuck at an open state.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The present application may be more fully appreciated in connection with the following detailed description taken in conjunction with the accompanying drawings, in which like reference characters refer to like parts throughout, and in which:
  • FIG. 1 illustrates a schematic diagram of a fault-tolerant computing device for determining a dot product in accordance with various examples;
  • FIG. 2 is a schematic diagram of a fault-tolerant computing device for determining a dot product and detecting and/or correcting errors in the dot product in accordance with various examples;
  • FIG. 3 is a schematic diagram of a fault-tolerant dot product engine in accordance with various examples;
  • FIG. 4 is a schematic diagram of a fault-tolerant dot product engine in more details; and
  • FIG. 5 is a flowchart for detecting and/or correcting errors in a dot product generated by a fault-tolerant dot product engine.
  • DETAILED DESCRIPTION
  • A Fault-Tolerant Dot-Product Engine (“FT-DPE”) is disclosed. The FT-DPE detects and/or corrects computational errors while performing a vector-matrix multiplication using a memristive crossbar array. An input vector u of integers and of length l is desired to be multiplied by an l×k integer matrix A to compute the vector-matrix product uA. Potential inaccuracies in the programming and/or operation of the memristive devices in the memristive crossbar array can lead to an inaccurate computation. As described in more detail herein below, fault tolerance in the computation is introduced by adding redundancy in the matrix implemented by the memristive crossbar array.
  • With added redundancy in the crossbar array, instead of performing a computation between an input vector of length l and a matrix of length l×k, a computation is performed between the input vector of length l and a matrix of length l×n, with n>k. The first k entries in the computation cam/ the result of the computation of interest, while the remaining m=n−k entries contain added redundancy symbols that can be used to detect and/or correct computational errors in the first k entries of the computation.
  • As described in more detail herein below, the input matrix A is encoded with additional entries that result in output codewords that can be used to detect and/or correct errors in the desired computation. The matrix A has its first k columns programmed with the input matrix values for the target computation, while its last m=n−k columns are programmed with values computed according to a desired error correction capability. An encoder circuit encodes the values in the last in columns of the matrix A from its first k columns and a decoder circuit operates to detect and/or correct any errors in the first k entries of the output dot product vector uA.
  • It is appreciated that, in the following description, numerous specific details are set forth to provide a thorough understanding of the examples. However, it is appreciated that the examples may be practiced without limitation to these specific details. In other instances, well-known methods and structures may not be described in detail to avoid unnecessarily obscuring the description of the examples. Also, the examples may be used in combination with each other.
  • Referring now to FIG. 1, a schematic diagram of a fault-tolerant computing device for determining a dot product in accordance with various examples is described. Fault-tolerant computing device 100 includes a fault-tolerant dot product engine (“FT-DPE”) 105 and an encoder circuit 110. The FT-DPE 105 receives an input signal corresponding to an input vector u of length l and generates an output signal corresponding to an output vectory y of length n that is a dot product between the input signal u and an l×n input matrix A. As described in more detail herein below, the matrix A is implemented as a crossbar array consisting of l row conductors, n column conductors, and programmable memristors at the junctions of the l rows and n columns, thereby forming l×n memory locations. Each memory location is set to have a conductance value that is proportional to the matrix value at that memory location.
  • Inaccuracies while programming the memristors in the crossbar array and noise while generating the output signal can affect the accuracy of the dot product computation. Errors may also occur as a result of the junctions in the crossbar array becoming shorted due to faults in the programming process. In another example, a junction in the crossbar array may become non-programmable or get stuck in an open state. As a result of these errors, the actual output vector y may differ from the correct dot product uA between the input vector u and the matrix A. For an integer q≥2, let Σq denote the subset [q
    Figure US20190034268A1-20190131-P00001
    ={0,1, . . . , q−1} of the integer set Z. The matrix A is an integer matrix whose entries are from the set Σq, for a prescribed alphabet size q.
  • In order to detect and/or correct for these errors, the matrix A is programmed to be fault-tolerant and self-protect the computations. As described in more detail herein below, the l×n matrix A is programmed to have the following structure:

  • A=(A′|A″)   (Eq. 1)
  • where A′ is an l×k matrix consisting of the first k columns of A, and A″ is an l×m matrix consisting of the remaining m=n−k columns and generated by the encoder circuit 110 prior to or while programming A′ and A″ into the crossbar array.
  • In various examples, the encoder circuit 110 is a dedicated circuit designed to operate according to a given error detection and correction capability. That is, the encoder circuit 110 is implemented to encode A″ so that a given number of errors are able to he detected and/or corrected in the output vector y. Specifically, the difference between the actual output vector y and the correct dot product uA between the input vector u and the matrix A can be expressed as an error vector e:

  • e=γ−uA   (Eq. 2)
  • The number of errors in the error vector e can be quantified as the L1 norm of e:

  • e∥=∥e∥ 1 =
    Figure US20190034268A1-20190131-P00002
    |e j|  (Eq. 3)
  • This norm is also referred to as the Manhattan weight of e, which equals le Manhattan distance between uA and y.
  • In various examples, the encoder circuit 110 can be implemented to enable a decoder to detect and/or correct a number L1 errors in the output vectory y. In other examples, the encoder circuit 110 can also be implemented to enable a decoder to detect and/or correct a number of errors in the Hamming metric. in this case, the number of errors to be detected and/or corrected equals the number of positions in the output vector y that differ from the correct computation vector c=uA.
  • It is appreciated that the vector c=uA can be expressed as:

  • c=(c′|c″)   (Eq. 4)
  • where C′ is a vector of length k representing the result of the computation uA′ and the vector c″ is a vector of length m=n−k representing the result of the computation u A″. It is appreciated that with A″ generated by the encoder circuit 110, the vector c″ consists of redundancy symbols that can be used to detect and/or correct errors in the vector c′, which therefore represents a target dot product computation. That is, the matrix A can be designed to contain a redundant matrix A″ of a size l×m, with m=n−k depending on the desired error correction capability.
  • Referring now to FIG. 2, a schematic diagram of a fault-tolerant computing device for determining a dot product and detecting and/or correcting errors in the dot product in accordance with various examples is described. Fault-tolerant computing device 200 includes FT-DPE 205 and an encoder circuit 210, designed to be substantially similarly to the FT-DPE 105 and the encoder circuit 110 of FIG. 1. The fault-tolerant computing device 200 also includes a decoder circuit 215 to decode the output vectory y and generate an error-corrected output vector c′=uA′. Specifically, the decoder circuit 215 decodes the redundancy symbols in c″ to produce the error-corrected output vector c′.
  • As described above, the number of errors that the decoder circuit 210 is able to detect and/or correct depends on the design of the redundant matrix A″. In one example, consider the case where the redundant matrix A″ is encoded by the encoder circuit 210 to detect up to one L1 error. In this case, the redundant matrix A″ is designed to be a matrix of size l×l, with a single column of redundant values added to the input matrix A. The matrix A″=
    Figure US20190034268A1-20190131-P00003
    is encoded from A′=
    Figure US20190034268A1-20190131-P00004
    by:

  • a i,k=(
    Figure US20190034268A1-20190131-P00001
    a i,j) mod 2,i∈[l
    Figure US20190034268A1-20190131-P00005
      (Eq. 5)
  • where “mod” denotes modulo 2. That is, one would appreciate that the sum of entries along each row of A is even. It follows by linearity that the sum of entries of an error-free output vector c=(
    Figure US20190034268A1-20190131-P00006
    =u A satisfies the following:

  • (
    Figure US20190034268A1-20190131-P00007
    c j) mod 2=(
    Figure US20190034268A1-20190131-P00008
    (
    Figure US20190034268A1-20190131-P00009
    u i a i,j))mod 2=(
    Figure US20190034268A1-20190131-P00009
    u i
    Figure US20190034268A1-20190131-P00008
    a i,j)mod=0   (Eq. 6)
  • It is appreciated that the contents of the redundant matrix A″depends on A′, but do not depend on the input signal u. In particular, A″ should be set so that the specified error detection and correction capabilities still hold when u is a unit vector. Thus, for every index i, the set of (at least) qk possible contents of row i in matrix A must form a subset of Σq n that, by itself (and independently of the contents of the other rows in A), meets the desired error detection and correction capabilities.
  • An encoding/decoding scheme for correcting one L1 error can be implemented as follows. Given an alphabet size q≥2 and a code length n, let m=[logq(2n+1)] and k=n−m (that is, m is the number of columns containing the added redundancy). Let α=(α0α1 . . . αn−1) be a vector in Zn (where Z is the set of integers) that satisfies the following properties:
      • (i) The entries of α are non-zero distinct elements in [2n+1
        Figure US20190034268A1-20190131-P00010
        .
      • (ii) For any two indexes i,j∈[n
        Figure US20190034268A1-20190131-P00001
        , αij≠2n+1.
      • (iii) αk+j=qj, for j∈[m
        Figure US20190034268A1-20190131-P00001
        .
        The entries in α can be referred to as code locators. Code locators that satisfy conditions (i)-(iii) can be constructed for every q≥2. For example:
      • when qm−1≤n,
        Figure US20190034268A1-20190131-P00011
        ={1,2,3, . . . n},
      • otherwise
        Figure US20190034268A1-20190131-P00012
        =({1,2,3, . . . , n}\{2n+1−qm−1}) ∪{qm−1}
  • For every A′=
    Figure US20190034268A1-20190131-P00013
    , the last m columns in A=(A′|A″) are set so that:

  • Figure US20190034268A1-20190131-P00014
    αi,k+jαk+j=(
    Figure US20190034268A1-20190131-P00015
    αi,jαj)mod (2n+1), i∈[l
    Figure US20190034268A1-20190131-P00001
      (Eq. 6)
  • Conversely, a decoding scheme for decoder circuit 215 to detect and/or correct a single error in the L1 metric can be implemented as follows. Let γ=(
    Figure US20190034268A1-20190131-P00016
    =c+e=uA=e be the output vector that is read at the output of the FT-DPE 205, where e is an error vector having at most one non-zero entry, equaling ±1. The decoding in decoder circuit 215 starts by computing the syndrome of y, which is defined by:

  • s=(γ·αT)mod (2n+1)=(
    Figure US20190034268A1-20190131-P00017
    γjαj)mod (2n+1)   (Eq. 7)
  • It follows then that:

  • s≡uAα T +e·α T ≡e·α T (mod (2n+1))   (Eq. 8)
  • One would appreciate that s=0 when e=0. Otherwise, if e has ±1 at position j (and is zero otherwise), then s≡±αj (mod (2n+1)). Hence, due to conditions (i)-(iii) above, the syndrome s identifies the error location j and the error sign uniquely.
  • It is appreciated that if the coding scheme is to be used to detect two errors (instead of correcting one error), then the decoding mapping can be simplified to just checking whether the syndrome is zero. A non-zero value indicates that at least two errors have occurred. It is also appreciated that the above encoding and decoding schemes can be enhanced so that more errors can be detected and/or corrected in the output vector. In various examples, enhancing the encoding and decoding schemes may include the application of specific error control codes, such as Berlekamp codes, among others.
  • Referring now to FIG. 3, a schematic diagram of a FT-DPE in accordance with various examples is described. FT-DPE 300 is designed to be substantially similar to FT-DPE 105 and FT-DPE 205, and includes a memristive crossbar array 305. The memristive crossbar array 305 has a number l of row lines and a number n of column lines intersecting the row lines to form l×n memory locations, with each memory location having a programming memristive element and defining a matrix value. Each memory location is set to have a conductance value that is proportional to the matrix value at that memory location.
  • FT-DPE 305 also includes a number l of digital-to-analog converters 310 coupled to the row lines of the memristive crossbar array 305 to receive an input signal u and a number n of analog-to-digital converters 315 coupled to the column lines of the memristive crossbar array 305 to generate an output signal y. As described above, the output signal y is a dot product of the input signal u and the matrix values in the memristive crossbar array 305. The matrix values in the memristive crossbar array 305 represent values in a matrix A expressed as in Eq. 1 above and where A′ is an input l×k matrix consisting of the first k columns of A, and A″ is an encoded l×m matrix consisting of the remaining m=n−k columns.
  • Each entry ui of u is fed into a digital-to-analog converter to produce a voltage level that is proportional to ui. The product, y=uA, is then computed by reading the currents at the (grounded) column conductors 320, after being fed into analog-to-digital converters 315. Any errors in the product y=uA can then be detected and/or corrected by a decoder circuit as described above.
  • Attention is now directed at FIG. 4, which shows a schematic diagram of a FT-DPE in more details. FT-DPE 400 is designed to be substantially similar to FT-DPE 105, FT-DPE 205, and FT-DPE 305. FT-DPE 400 includes a memristive crossbar array 405 where memristive elements or memristors are disposed at junctions intersecting and electrically coupling row lines and column lines in the crossbar array 405.
  • Memristance is a property of the electronic component referred to as a memristor. A memristor is a resistor device whose resistance can be changed. If charge flows in one direction through a memristor circuit, the resistance of the memristor will increase. If charge flows in the opposite direction in the memristor circuit, its resistance will decrease. If the flow of charge is stopped by turning off the applied voltage, the memristor will “remember” the last resistance that it had. When the flow of charge starts again, the resistance of the memristor circuit memory cell will be what it was when it was last active.
  • Typically, this charge flow must be greater than a certain threshold in order to produce a significant change in the resistance value, for example in order to program a resistance value at each memory location. This threshold operation behavior allows vector-matrix computations to be performed on a Dot-Product Engine below these threshold levels without materially altering the resistance values programmed into the memristor memory array. The array resistance values can subsequently be changed by a programming operation where the charge flow threshold is exceeded.
  • The conductance channels in the memristors of crossbar array 405 may be formed in each of the memristors, such as, for example. memristor 410. A crossbar can be thought of as an array of memristors that connect each wire in one set of parallel wires (e.g., the row lines) to every member of a second set of parallel wires (e.g., the column lines) that intersects the first set. In the example of FIG. 4, the row lines and the column lines are perpendicular with respect to each other, but the row lines and the column lines may intersect at any angle.
  • The memristors in crossbar array 405 may be built at the micro- or nano-scale level and used as a component in a wide variety of electronic circuits, such as, for example, bases for memories and logic circuits. When used as a basis for memories, the memristors in crossbar array 405 may be used to store information in the form of resistance values. When used as a logic circuit, the memristors may be employed to represent bits in a field programmable gate array, as the basis for a wired-logic programmable logic array, or, as described herein, as the basis in FT-DPE 405. The memristors in crossbar array 405 may also find use in a wide variety of other applications. Further, the memristors in crossbar array 405 may be fabricated through any reasonably suitable fabrication process, such as, for example, chemical vapor deposition, sputtering, etching, lithography, or other methods of forming memristors.
  • The memristive crossbar array 405 further includes a number of input values indicated as input signal u. The input values may be read signals used to read the resistance values at each individual memristor at each junction in the crossbar array 405, and as a way to multiply a matrix value by a vector value at each memristor involved in the calculation. The read signals (or vector signals) may be applied as second input values to the row lines of the memristive crossbar array 405. The vector signals may represent a vector to be multiplied to the matrix represented by the program signals. In one example, the vector signals have a relatively lower voltage value than the first voltages used to program the memristors such that the voltage level applied by the vector signals does not change the resistance values of the memristors as programmed by the first voltages. The vector signals act as read signals in this manner by not changing the resistance values of the memristors.
  • The vector signals interact with the memristors at their respective junctions and the resulting current is collected at the end of each column line by analog current measuring devices 425, which may be, for example, transimpedance amplifiers. The current measured by the devices 425 is then converted into digital values by the analog-to-digital converters 430 to form the output vector y=uA. In various examples, an initial signal may be applied to the memristors before application of the program signals and the vector signals in order to set the resistivity of the memristors to a known value.
  • Referring now to FIG. 5, a method for detecting and/or correcting errors in a dot product is now described. First, a crossbar array having a number l of row lines and a number n of column lines intersecting the row lines to form l×n memory locations is provided (500). Each memory location in the crossbar array has a programmable memristive element and defines a matrix value. Next, a programming voltage is applied to the memristive element at each l×k memory location, wherein k<n, to set the matrix values at each memory location (505). The matrix value at each memory location is thus proportional to the conductance of the memristive element in that memory location.
  • In order to provide fault tolerance in the crossbar array, the crossbar array is designed with additional memory locations to introduce redundancy in the dot product computation that can be used to detect and/or correct errors in the computation. As described above, this is implemented by then encoding matrix values at additional l×m memory locations within the crossbar array from the matrix values at the l×k memory locations according to an error detection capability, wherein n=k+m (510), The encoding is performed by an encoder circuit coupled to the crossbar array. The encoded matrix values are then programmed into the additional l×m memory locations by applying a programming voltage at each additional l×m memory location (515).
  • As a result of steps 500-515, a fully programmed l×n fault-tolerant crossbar array is provided to perform a dot product computation with an input signal. An input signal is applied at the l row lines of the crossbar array, the input signal corresponding to an input vector of length l to be multiplied by the matrix values at the l×n memory locations (520). The input vector signal interacts with the memristive elements at their respective memory locations and the resulting current is collected at the end of each column line. An output signal is then determined at the n column lines of the crossbar array, the output signal corresponding to an output vector of length n that is a dot product of the input vector and the matrix values at the l×n memory locations (520). The output vector is computed by reading the currents at analog current measuring devices at the end of the n column lines and then converted into digital values by analog-to-digital converters to form a dot product. The dot product is a vector of length n consisting of k values corresponding to a target dot product computation between the input vector and the matrix values programmed into the crossbar array, and an additional m=n−k values that can be used by a decoder circuit to detect and/or correct errors in the k values according to the error detection capability.
  • The introduction of fault tolerance in the crossbar array to produce a FT-DPE enables (1) faster processing and more energy efficient of a dot product calculation relative to other methods that do not use memristive devices, and (2) efficient error detection and correction in the dot product computation thereby guaranteeing computation reliability, among other advantages.
  • It is appreciated that the previous description of the disclosed examples is provided to enable any person skilled in the art to make or use the present disclosure. Various modifications to these examples will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other examples without departing from the spirit or scope of the disclosure. Thus, the present disclosure is not intended to be limited to the examples shown herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.

Claims (15)

What is claimed is:
1. A fault-tolerant dot product engine, comprising:
a crossbar array having a number l of row lines and a number n of column lines intersecting the row lines to form l×n memory locations, each memory location comprising a programmable memristive element and defining a matrix value;
a number l of digital-to-analog converters coupled to the row lines of the crossbar array to receive an input signal; and
a number n of analog-to-digital converters coupled to the column lines of the crossbar array to generate an output signal that is a dot product of the input signal and the matrix values in the crossbar array,
wherein a number m<n of the n column lines in the crossbar array are programmed with matrix values used to detect and correct errors in the output signal.
2. The fault-tolerant dot product engine of claim 1, wherein a first number k of values of the output signal represent a target dot product value and a number in of values of the output signal represent redundancy symbols, wherein k=n−m.
3. The fault-tolerant dot product engine of claim 1, further comprising an encoder circuit to encode the matrix values in the in column lines in the crossbar array based on matrix values in a first set of k column lines in the crossbar array, wherein k=n−m.
4. The fault-tolerant dot product engine of claim 2, further comprising a decoder circuit to detect and correct errors in the output signal.
5. The fault-tolerant dot product engine of claim 1, wherein the matrix values in the in column lines of the crossbar array are computed from the matrix values in a first number k of column lines of the crossbar array, wherein k=n−m.
6. The fault-tolerant dot product engine of claim 3, wherein the encoder circuit generates the matrix values according to a desired number of errors to be detected using a Manhattan distance metric.
7. The fault-tolerant dot product engine of claim 3, wherein the encoder circuit generates the matrix values according to a desired number of errors to be detected using a Hamming distance metric.
8. A method for detecting errors in a dot product, comprising:
providing a crossbar array having a number l of row lines and a number n of column lines intersecting the row lines to form l×n memory locations, each memory location comprising a programmable memristive element and defining a matrix value;
applying a programming voltage at each l×k memory location to set matrix values at the l×k memory locations within the crossbar array, wherein k<n;
encoding matrix values at additional l×m memory locations within the crossbar array from the matrix values at the l×k memory locations according to an error detection capability, wherein n=k−m;
applying a programming voltage at each additional l×m memory location;
applying an input signal at the l row lines of the crossbar array, the input signal corresponding to an input vector of length l to be multiplied by the matrix values at the l×n memory locations; and
determining an output signal at the n column lines of the crossbar array, the output signal corresponding to an output vector of length n that is a dot product of the input vector and the matrix values at the l×n memory locations,
wherein a set of in values in the output vector are used to detect errors in a set of k values in the output signal according to the error detection capability.
9. The method of claim 8, wherein encoding matrix values at the additional l×m memory locations within the crossbar array from the matrix values at the l×k memory locations according to an error detection capability comprises providing an encoder circuit coupled to the crossbar array and operating according to the error detection capability.
10. The method of claim 9, wherein operating according to the error detection capability comprises generating the matrix values at the additional l×m memory locations within the crossbar array to detect a predetermined number of errors in the set of k values in the output signal.
11. The method of claim 8, further comprising providing a decoder to detect and correct errors in the set of k values in the output signal.
12. The method of claim 8, wherein determining an output signal at the n column lines of the crossbar array comprises measuring output currents from the n column lines and inputting them into n analog-to-digital converters.
13. A fault-tolerant computing device for determining a dot product, comprising:
a dot product engine having a number l of row lines and a number n of column lines intersecting the row lines to form l×n memory locations in a crossbar array, each memory location comprising a programmable memristive element and defining a matrix value; and
an encoder circuit to generate matrix values for in of the n columns in the dot product engine based on matrix values for a first k of the n columns and according to an error detection capability, wherein n=k+m.
14. The fault-tolerant computing device of claim 13, wherein the dot product engine comprises:
a number l of digital-to-analog converters coupled to the row lines of the crossbar array to receive an input signal; and
a number n of analog-to-digital converters coupled to the column lines of the crossbar array to generate an output signal that is a dot product of the input signal and the matrix values in the crossbar array.
15. The fault-tolerant computing device of claim 14, further comprising a decoder circuit to detect and correct errors in output signals generated by the dot product engine.
US15/664,874 2017-07-31 2017-07-31 Fault-tolerant dot product engine Active US10545821B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US15/664,874 US10545821B2 (en) 2017-07-31 2017-07-31 Fault-tolerant dot product engine
US16/712,358 US11061766B2 (en) 2017-07-31 2019-12-12 Fault-tolerant dot product engine

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US15/664,874 US10545821B2 (en) 2017-07-31 2017-07-31 Fault-tolerant dot product engine

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US16/712,358 Division US11061766B2 (en) 2017-07-31 2019-12-12 Fault-tolerant dot product engine

Publications (2)

Publication Number Publication Date
US20190034268A1 true US20190034268A1 (en) 2019-01-31
US10545821B2 US10545821B2 (en) 2020-01-28

Family

ID=65038786

Family Applications (2)

Application Number Title Priority Date Filing Date
US15/664,874 Active US10545821B2 (en) 2017-07-31 2017-07-31 Fault-tolerant dot product engine
US16/712,358 Active US11061766B2 (en) 2017-07-31 2019-12-12 Fault-tolerant dot product engine

Family Applications After (1)

Application Number Title Priority Date Filing Date
US16/712,358 Active US11061766B2 (en) 2017-07-31 2019-12-12 Fault-tolerant dot product engine

Country Status (1)

Country Link
US (2) US10545821B2 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10452472B1 (en) * 2018-06-04 2019-10-22 Hewlett Packard Enterprise Development Lp Tunable and dynamically adjustable error correction for memristor crossbars
CN111478703A (en) * 2020-04-14 2020-07-31 中国人民解放军国防科技大学 Processing circuit based on memristor cross array and compensation method of output current
CN112308438A (en) * 2020-11-05 2021-02-02 国网天津市电力公司 Energy interconnection system reliability assessment method and device based on state coupling matrix
US20230007220A1 (en) * 2018-06-07 2023-01-05 Micron Technology, Inc. Apparatus and method for image signal processing
CN116521431A (en) * 2022-01-20 2023-08-01 慧与发展有限责任合伙企业 Analog error detection and correction in analog memory crossbar
US12040897B2 (en) * 2019-08-21 2024-07-16 The George Washington University Learning-based high-performance, energy-efficient, fault-tolerant on-chip communication design framework

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11316537B2 (en) * 2019-06-03 2022-04-26 Hewlett Packard Enterprise Development Lp Fault-tolerant analog computing
US11811416B2 (en) * 2021-12-14 2023-11-07 International Business Machines Corporation Energy-efficient analog-to-digital conversion in mixed signal circuitry

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6901422B1 (en) 2001-03-21 2005-05-31 Apple Computer, Inc. Matrix multiplication in a vector processing system
US20050125477A1 (en) 2003-12-04 2005-06-09 Genov Roman A. High-precision matrix-vector multiplication on a charge-mode array with embedded dynamic memory and stochastic method thereof
WO2011002798A2 (en) * 2009-06-30 2011-01-06 Lam Research Corporation Automatic fault detection and classification in a plasma processing system and methods thereof
US8392789B2 (en) * 2009-07-28 2013-03-05 Texas Instruments Incorporated Method and system for decoding low density parity check codes
US8352847B2 (en) 2009-12-02 2013-01-08 Lsi Corporation Matrix vector multiplication for error-correction encoding and the like
US20140368455A1 (en) * 2011-03-15 2014-12-18 Logitech Europe Sa Control method for a function of a touchpad
US9141470B2 (en) * 2012-03-19 2015-09-22 Panasonic Corporation Decoding device
JP6019793B2 (en) * 2012-06-20 2016-11-02 ソニー株式会社 COUNTER, COUNTING METHOD, AD CONVERTER, SOLID-STATE IMAGING ELEMENT, AND ELECTRONIC DEVICE
US8869008B2 (en) 2013-01-17 2014-10-21 Apple Inc. Adaptation of analog memory cell read thresholds using partial ECC syndromes
US9330738B2 (en) * 2014-04-21 2016-05-03 The Mitre Corporation Data storage using analog coding
US9934463B2 (en) 2015-05-15 2018-04-03 Arizona Board Of Regents On Behalf Of Arizona State University Neuromorphic computational system(s) using resistive synaptic devices
JP7144423B2 (en) 2017-01-11 2022-09-29 グロック,インコーポレイテッド Error correction in calculations

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10452472B1 (en) * 2018-06-04 2019-10-22 Hewlett Packard Enterprise Development Lp Tunable and dynamically adjustable error correction for memristor crossbars
US20230007220A1 (en) * 2018-06-07 2023-01-05 Micron Technology, Inc. Apparatus and method for image signal processing
US11991488B2 (en) * 2018-06-07 2024-05-21 Lodestar Licensing Group Llc Apparatus and method for image signal processing
US12040897B2 (en) * 2019-08-21 2024-07-16 The George Washington University Learning-based high-performance, energy-efficient, fault-tolerant on-chip communication design framework
CN111478703A (en) * 2020-04-14 2020-07-31 中国人民解放军国防科技大学 Processing circuit based on memristor cross array and compensation method of output current
CN112308438A (en) * 2020-11-05 2021-02-02 国网天津市电力公司 Energy interconnection system reliability assessment method and device based on state coupling matrix
CN116521431A (en) * 2022-01-20 2023-08-01 慧与发展有限责任合伙企业 Analog error detection and correction in analog memory crossbar
US20230246655A1 (en) * 2022-01-20 2023-08-03 Hewlett Packard Enterprise Development Lp Analog error detection and correction in analog in-memory crossbars
US11804859B2 (en) * 2022-01-20 2023-10-31 Hewlett Packard Enterprise Development Lp Analog error detection and correction in analog in-memory crossbars
US20240039562A1 (en) * 2022-01-20 2024-02-01 Hewlett Packard Enterprise Development Lp Analog error detection and correction in analog in-memory crossbars

Also Published As

Publication number Publication date
US10545821B2 (en) 2020-01-28
US11061766B2 (en) 2021-07-13
US20200133997A1 (en) 2020-04-30

Similar Documents

Publication Publication Date Title
US11061766B2 (en) Fault-tolerant dot product engine
US11740960B2 (en) Detection and correction of data bit errors using error correction codes
US9944520B2 (en) Syndrome of degraded quantum redundancy coded states
US7191379B2 (en) Magnetic memory with error correction coding
US10804938B2 (en) Decoding data using decoders and neural networks
US10498364B2 (en) Error correction circuits and memory controllers including the same
US20200043557A1 (en) Nand flash memory with reconfigurable neighbor assisted llr correction with downsampling and pipelining
Roth Fault-tolerant dot-product engines
US7721177B2 (en) Device and method for determining a position of a bit error in a bit sequence
US20170017545A1 (en) Error correction device, semiconductor storage device, and error correction method
TWI782215B (en) System and method of reducing logic for multi-bit error correcting codes
US8898535B2 (en) Apparatus and method for detecting an error within a coded binary word
Spinner et al. Soft input decoder for high‐rate generalised concatenated codes
Engelberg et al. A comment on the Karpovsky–Taubin code
US8413011B2 (en) Device and method providing 1-bit error correction
US8245106B2 (en) Method for error correction and error detection of binary data
US11316537B2 (en) Fault-tolerant analog computing
US10367529B2 (en) List decode circuits
US20110138249A1 (en) Apparatus and Method for Detecting an Error Within a Plurality of Coded Binary Words Coded by an Error Correction Code
Butov et al. Neural net decoders of nonbinary codes
Kim et al. Hamming product code with iterative process for NAND flash memory controller
Dugar et al. A survey on Hamming codes for error detection
Fujiwara et al. Optimal two-level unequal error control codes for computer systems
Huang et al. Ladder codes: A class of error-correcting codes with multi-level shared redundancy
US20030070130A1 (en) High-efficiency error detection and/or correction code

Legal Events

Date Code Title Description
AS Assignment

Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ROTH, RON M.;HENZE, RICHARD H.;SIGNING DATES FROM 20170728 TO 20170730;REEL/FRAME:043148/0273

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STCB Information on status: application discontinuation

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

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS

STPP Information on status: patent application and granting procedure in general

Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT RECEIVED

STCF Information on status: patent grant

Free format text: PATENTED CASE

MAFP Maintenance fee payment

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

Year of fee payment: 4