This application claims the benefit of German Patent Application No. 102019120801.7, filed on Aug. 1, 2019, which application is hereby incorporated herein by reference in its entirety.
This disclosure relates to devices and methods for data storage.
Errors can occur in the storage of data values in data value memory cells. When the content of data value memory cells is read out, the read out content can be verified and, if necessary, corrected in order to increase the reliability of computer systems. Errors can thereby be corrected, and the effects of errors, for example on the mode of operation of a circuit, can thus be reduced or totally avoided. Conventional approaches in this respect require a comparatively large chip area for redundant data storage or cause problems in the wiring of the components required for this purpose due to intersecting lines.
According to one example embodiment, a storage device is provided. The storage device includes a multiplicity of data value memory cells; a multiplicity of check value memory cells, where at least one of the multiplicity of data value memory cells is assigned to two of the check value memory cells, and where at least one of the multiplicity of check value memory cells is assigned to two of the data value memory cells; and a correction circuit is configured to output a corrected data value when reading out a selected data value memory cell of the at least one of the multiplicity of data value memory cells, based on a content of the selected data value memory cell and based on contents of the two check value memory cells assigned to the selected data value memory cell.
According to a further example embodiment, a method is provided for reading memory cells in a storage device. Here, the storage device includes a multiplicity of data value memory cells and a multiplicity of check value memory cells, where at least one of the multiplicity of data value memory cells is assigned to two of the check value memory cells. Here, the method includes: receiving a content of a selected data value memory cell of a multiplicity of data value memory cells; receiving contents from two check value memory cells of a multiplicity of check value memory cells, wherein the two check value memory cells are assigned to the selected data value memory cell; and defining a corrected data value based on: the content of the selected data value memory cell, and the contents of the two check value memory cells assigned to the selected data value memory cell.
According to a further example embodiment, a method is provided for writing memory cells. The method includes: writing a check value as a content of a check value memory cell, where the check value memory cell is assigned to two data value memory cells and where the check value is based on data values to be stored of the assigned data value memory cells; and writing the data values to be stored to the assigned data value memory cells.
Different example embodiments are described in detail below with reference to the attached drawings. These example embodiments are to be regarded merely as an example and are not to be interpreted as limiting. Some of the described features or components, for example, can be omitted from other example embodiments and/or can be replaced by alternative features or components. Features or components of different example embodiments can be combined to form further example embodiments. Variations and modifications which are described with regard to one example embodiment can be applied to other example embodiments also. Features or components other than those described or shown can furthermore be provided, for example features or components used in conventional devices for data storage.
Direct connections or couplings which are shown in the drawings or are described below, i.e. electrical connections or couplings without intermediate elements (for example simple metal conductor paths) can also be implemented by means of an indirect connection or coupling, i.e. a connection or coupling which comprises one or more additional intermediate elements, and vice versa, as long as the general mode of operation of the connection or coupling, for example a provision of a voltage, a provision of a current, a conduction of an electromagnetic wave or a provision of a control signal, is maintained.
The methods described above and below can also be stored as instructions on a physically present storage medium for control by means of a computer, for example as instructions for a correction circuit described below, for example in firmware. The correction circuit can be implemented on a PC comprising a memory and a processor, but also as a hard-wired logic circuit, an ASIC or other example embodiment.
The same reference numbers denote the same or similar elements in the figures. The figures are schematic representations of different example embodiments. Element shown in the figures are not necessarily presented true-to-scale. Instead, the different elements shown in the figures are presented in such a way that their function and general purpose is understandable to the person skilled in the art.
Numerical values specified in connection with example embodiments are provided for explanatory purposes only. Numerical values are not to be interpreted as limiting and are dependent on the choice of parameters and a respective implementation.
A storage device is generally to be understood to mean a device in which data can be stored. A storage device of this type can comprise e.g. a random access memory (RAM), a read-only memory (ROM), a flash memory, an EPROM, an EEPROM, fuses such as electrical fuses or laser fuses and/or other memory types. Fuses of this type can be conducting or non-conducting and can therefore similarly store data.
Storage devices can comprise memory cells, for example data value memory cells and/or check value memory cells. Check value memory cells can be designed here as structurally identical to data value memory cells or may differ from them. In cases where the check value memory cells are structurally identical to the data value memory cells, the difference does not result from the respective structural design of the memory cells themselves, but from the connection and use within the storage device. Unless otherwise indicated, general explanations of memory cells refer to both data value memory cells and check value memory cells.
Memory cells can be implemented, for example as flip-flops, latches or as memory cells of an addressable memory. Memory cells can be configured to store single bits or a plurality of bits. Bits can form a bit sequence consisting of a number of bits.
Memory cells can be configured to store one or more data values, in particular 1-bit values. Data values can be one or more bits here. The bits can be represented as digital signals.
Memory cells can be elements of a scan path.
Data values can be stored in memory cells, for example, for a certain number of clock pulses or for a specific time. Data values can be read out from memory cells. If no error occurs, the value of a data value does not change during storage and/or read-out. In other words, if no error occurs, the same data value can be read out from a memory cell as the data value that was written to the memory cell.
If the data value which is read out from a data value memory cell differs from the value which was written to the data value memory cell, an error has occurred.
In the description below, i-bit values are used as examples of data values.
In cases where a memory cell stores a single bit as content, an error, viewed at the level of the individual memory cell, means that during the read-out of the memory cell, the negated data value of the data value which was previously stored as content in the data value memory cell is obtained.
A correction circuit is understood to mean a circuit which is configured to correct errors. In cases where no error occurs, the correction circuit can be configured to provide the read out data value or a multiplicity of read out data values.
Errors can occur due to different causes, for example due to external influences such as radiation and/or heat, but also due to other factors, for example errors can occur through ageing.
A distinction can be made between permanent errors and temporary errors. Temporary errors are sometimes also referred to as time-limited, volatile or transient errors.
A permanent error can consist, for example, in that a memory cell always outputs the data value 0 always the data value 1 during read-out. The cause of this may, for example, be that the memory cell itself has been damaged, for example through ageing.
A temporary error can occur, for example, as a result of the content of a memory cell being changed from 0 to 1, for example by ionizing radiation. The memory cell itself can remain undamaged here, so that, during a new write cycle, the memory cell stores a (new) content correctly.
Errors caused, for example, by ionizing radiation, can occur in individual memory cells or in physically adjacent memory cells, e.g. in memory cells which are arranged spatially adjacent in the layout/in the chip. Errors in individual memory cells result in i-bit errors in which only one bit in a bit sequence read from a plurality of memory cells is errored.
Errors in two physically adjacent memory cells result in adjacent 2-bit errors in which two adjacent bits in the bit sequence read out from the plurality of memory cells are errored. Adjacent 2-bit errors can occur, for example, as a result of ionizing radiation. It may be desirable to design memory cells as compact and/or to arrange them in close spatial proximity, for example, in order to reduce the costs of storage devices and/or increase the data density per device volume. However, the risk of adjacent 2-bit errors can increase as a result.
The problems caused by errors in connection with storage devices are explained in detail below in connection with
The storage device 100A has four data value memory cells 11, 12, 13, 14. The data value memory cells 11 to 14 are configured to store data values x1 to x4 as contents. The storage can take place here during a write procedure. The storage of the contents of the data value memory cells can take place for a required time, e.g. for the duration of one or more clock pulses. In other cases, the storage can also take place constantly, for example if the storage device 100A is intermittently disconnected from a power supply. In such examples, the data value memory cells can be implemented as non-volatile memory cells or can be coupled to a power supply, for example a battery.
At a later time, for example during a read procedure, the content of one or more data value memory cells can be read out. The read out data values x1′ to x4′ are obtained as a result.
If no error occurs, x1′=x1, x2′=x2, x3′=x3 and x4′=x4 apply. However, if an error has occurred, for example in the data value memory cell 11, and errored value x1′ unequal to x1 is read from the data value memory cell 11. If the data value memory cell is a data value memory cell which is configured to store one bit, an error causes the following to apply:
x1′=x1⊕1.
Here, ⊕ designates the modulo 2 addition or the Exclusive-OR (XOR) operation which is synonymous.
A correction of one or more errors is not provided in the storage device 100A shown in
A corresponding procedure is followed for the data values x2 to x4 also which are stored in each case in triplicate in memory cells 221-223, 231-233 and 241-243 and whose specific values x21′ to x23′, x31′ to x33′ and x41′ to x43′ are present at the respective three inputs of the majority deciders 252, 253 and 254, so that corrected data values x2V to x4V can be obtained.
A single error in a data value memory cell, for example an error in the data value memory cell 211, is corrected here by the majority deciders. However, if, for example, an error occurs in two adjacent data value memory cells, for example an adjacent 2-bit error as described above, the respective majority decider outputs an errored value, so that errors of this type cannot be corrected. The redundancy of
Two of the check value memory cells 2001 are assigned to at least one of the multiplicity of data value memory cells 2000 and two of the data value memory cells 2000 are assigned to at least one of the multiplicity of check value memory cells 2001. In
The storage device 2010 further comprises a correction circuit 2002 which is configured to output a corrected data value during the read-out of a selected data value memory cell (in the example shown, the data value memory cell 2000A is selected) of the at least one of the multiplicity of data value memory cells 2000 based on a content of the selected data value memory cell (here 2000A) and based on contents of the two check value memory cells (here 2001A, 2001B) assigned to the selected data value memory cell.
As a result, the required number of memory cells, with the same or improved suitability for error correction, can be reduced, for example, compared with the example shown in
The at least one of the multiplicity of check value memory cells (e.g., 2001A, 2001B) can be configured to store a check value based on data values to be stored in the two data value memory cells assigned to it. The data value to be stored is the data value which is intended to be stored in the data value memory cell. In the error-free case, the content of the data value memory cell then matches the data to be stored. According to an example embodiment, at least one of the multiplicity of check value memory cells is configured to store a check value by combining the data values to be stored in the exactly two data value memory cells assigned to it.
The storage devices 103, 104, 105 and 108 are configured in each case to receive and store data values x1-x4 and to provide corrected data values x1cor-x4cor. It should be noted here that the number of data values to be stored and the number of corresponding memory cells are merely examples, and more or fewer data values to be stored can also be used. In such cases, the devices shown here can be continued, for example as a repeating or as a modified repeating pattern, in order to be able to store more data values to be stored. However, a reduction to fewer memory cells is also possible. The examples shown here can also be arranged differently. It is similarly possible to combine the example embodiments shown here, for example so that x2cor is defined as in the example embodiment shown in
The example embodiment of the storage device 103 shown in
The storage device 103 shown in
The operation of the device shown in
At 901 in
If a reading and/or writing are performed for only a subset of data value memory cells, the one or more memory cells of this subset can be referred to as selected memory cell(s).
At 902, a writing of check values to memory cells is performed. Two data value memory cells, i.e. the data value memory cells 312, 314 are assigned in each case to the check value memory cells, i.e. the data value memory cells 312, 314 to the check value memory cell 313, the data value memory cells 314, 316 to the check value memory cell 315, and the data value memory cells 316, 318 to the check value memory cell 317. For these check value memory cells, the check value to be stored is based on the data values to be stored in the assigned data value memory cells. A check value c2, for example, which is to be stored in the check value memory cell 313 in
The check values for these check value memory cells to which two data value memory cells are assigned can be formed on the basis of an XOR operation or XNOR operation performed on the data values which are to be stored in the two data value memory cells assigned to the respective check value memory cell.
An XOR operation and an XNOR operation behave inversely in relation to one another, i.e. if the result of the XOR operation is 1, the result of the XNOR operation is 0, and vice versa. The information content in both cases is therefore the same.
The XOR operation or XNOR operation can be performed, for example, by means of a logic element. In the example embodiments shown in
Only one data value memory cell is assigned in each case to the check value memory cells 311 and 319 which are located at the “edge” of the storage device 103, i.e. the data value memory cell 312 is assigned to the check value memory cell 311 and the data value memory cell 318 is assigned to the check value memory cell 319. In these check value memory cells, the data value to be stored in the assigned data value memory cell is stored in each case as a check value, e.g. the data value x1 to be stored is stored as the check value c1 in the check value memory cell 311.
A method for reading out a storage device which has been written in this way with contents will now be described with reference to
It should initially be noted that the read out contents of the data value memory cells and check value memory cells, compared with the data values and check values to be stored, are indicated by an apostrophe. If no error occurs, the values match one another.
At 1010, the method comprises receiving a content of a selected data value memory cell of a multiplicity of data value memory cells. The selected data value memory cell is the data value memory cell whose content is intended to be read out. For example, the content x2′ of the data value memory cell 314 as the selected memory cell in
At 1030, the method 1000 comprises defining a corrected data value based on:
In the above example shown in
In the storage device 103 shown in
The method shown in
In particular, in the example embodiment shown in
The definition of the corrected data value x2cor shown in
The methods shown in
The method 1100 shown In
The methods described here can be implemented, for example, in the form of a write and/or read control device, for example a write and/or read circuit. The methods for reading, but also additionally or alternatively the methods for writing can also be part of the correction circuit. Distributed implementations among different functional units are also possible.
As mentioned above, these methods are not limited to the example embodiment shown in
The mode of operation of the storage device 103 shown in
In the example embodiment of the storage device 103, the data values x1 to x4 are 1-bit values. Generally speaking, data values, for example bits, x1 . . . xn can be considered. Two consecutive bits x1, x+1 in each case form a check value in
A check bit ci+1 is defined in
The consecutive bits x2, x3 form the check bit c3=x2⊕x3. The consecutive bits x3, x4 form the check bit c4=x3⊕x4. c1=x1 and c5=x4 further apply to the example embodiment shown in
The two check bits c1 and c5 for n3 can be formed in some example embodiments by a single check bit c1,n=c1,4=x1⊕xn=x1⊕x4. This is shown in the example embodiment in
Since the check bits are formed in each case from only two, furthermore adjacent, data bits, the formation of the check bits requires only one gate delay. The geometric complexity of the storage device can be minimized and/or the speed of the storage and/or read procedures can be improved as a result.
A small hardware outlay and/or a short time delay can therefore be achieved through such definitions of check values as described here, above and below.
The check bits are therefore defined as a parity of consecutive bits. In the example shown in Figure, c2, c3, c4 are in each case the parity of the consecutive bits x1, x2 and x2, x3 and x3, x4. Check bits of this type can also be referred to as parity bits. In the example shown in
As mentioned, n+1=5 XOR elements 321 to 325 are present for reading out the storage device 103. The XOR elements 321 and 325 have two inputs and one output. The XOR elements 322, 323 and 324 have three inputs and one output. The correction values a1 to a5 are formed herewith.
The output of the check value memory cell 311 is connected to a first input of the XOR element 321 to whose second input the output of the memory cell 312 is connected. The output of the data value memory cell 312 is additionally in contact with the first input of the combinatorial element 331 which outputs the corrected data value x1cor at its output. The output of the data value memory cell 312 is further connected to the second input of the XOR element 322.
The output of the check value memory cell 313 is connected to the first input of the XOR element 322.
The output of the data value memory cell 314 is connected to the third input of the XOR element 322. The output of the data value memory cell 314 is additionally in contact with the first input of the combinatorial element 332 which outputs the corrected data value x2cor at its output if the value x2′ corrected. The output of the memory cell 314 is further connected to the second input of the XOR element 323.
The output of the check value memory cell 315 is connected to the first input of the XOR element 323.
The output of the data value memory cell 316 is connected to the third input of the XOR element 323. The output of the data value memory cell 316 is additionally in contact with the first input of the combinatorial element 333 which outputs the corrected data value x3cor at its output if the value x3′ is corrected. The output of the data value memory cell 316 is further connected to the second input of the XOR element 324.
The output of the check value memory cell 317 is connected to the first input of the XOR element 324.
The output of the data value memory cell 318 is connected to the third input of the XOR element 324. The output of the data value memory cell 318 is additionally in contact with a first input of the combinatorial element 334 which outputs the corrected data value x4cor at its output if the value x4′ is corrected. The output of the data value memory cell 318 is further connected to the second input of the XOR element 325.
Specifically, the output of the memory cell 319 is connected to the first input of the XOR element 325 for this purpose.
The output of the XOR element 321 at which the correction value a1 is output is fed to a second input of the combinatorial element 331.
The output of the XOR element 322 at which the correction value a2 is output is fed to a third input of the combinatorial element 331 and to a second input of the combinatorial element 332.
The output of the XOR element 323 at which the correction value a3 is output is fed to a third input of the combinatorial element 332 and to a second input of the combinatorial element 333.
The output of the XOR element 324 at which the correction value a4 is output is fed to a third input of the combinatorial element 333 and to a second input of the combinatorial element 334.
The output of the XOR element 325 which carries the binary value a5 is fed to the third input of the combinatorial element 334.
The combinatorial elements 331 to 334 of the storage device can further be configured:
The combinatorial elements 331 to 334 of the storage device 103 shown in
Here, the first logical operation can comprise an AND operation or a NAND operation, and the second logical operation can comprise an XOR operation or an XNOR operation.
The combinatorial elements 331, 332, 333 and 334 output the corrected data values, in this case corrected data bits, x1cor, x2cor, x3cor and x4cor at their outputs. These combinatorial elements are designed so that they form the values:
x1cor=x1′⊕(a1∧a2),
x2cor=x2′⊕(a2∧a3),
x3cor=x3′⊕(a3∧a4), and
x4cor=x4′⊕(a4∧a5)
and find them at their outputs. Here, A is the AND operation.
How errors are hereby corrected is explained below.
In the example shown in
As described, the combinatorial element 332 is designed so that is forms the value
x2cor=f(x2′,a2,a3)=x2′⊕(a2∧a3)
and outputs it at its output. The read out contents of the memory cells 312-316, i.e. x1′, c2′, x2′, c3′ and x3′, are incorporated herein.
If only the output of the data value memory cell 314 is errored, the following applies:
x2′=x2⊕1.
The following then also applies simultaneously:
a2=a3=1
and therefore:
x2cor=x2′⊕(a2∧a3)=x2⊕1⊕(1∧1)=x2⊕1⊕1=x2,
and the errored value x2′=x2⊕1 is corrected to the correct value x2.
If only the output c3′=c3⊕1 of the check value memory cell 315 is errored, the following applies:
The errored value of the check bit c3′ which is output by the memory cell 315 does not therefore result in an error in one of the data bits.
The same applies to errors in the values x1′, c2′ and x3′.
The storage device 103 shown in
It similarly applies that the corrected values x1cor, x2cor, x3cor and x4cor are equal to the values x1, x2, x3, x4 if no error whatsoever has occurred.
The bits x1 . . . x4 of the bit sequence and the check bits c1 . . . c5 are stored in
The values output by a correction circuit such as the correction circuit 700 are referred to as corrected data values, irrespective of whether an error has or has not occurred in the circuit arrangement shown in
The application of the memory cells 311-319 can correspond to an actual application in a chip layout, so that check value memory cells and data value memory cells are arranged alternately.
Each of the at least one of the multiplicity of check value memory cells is then spatially arranged between the two data value memory cells assigned to it from the multiplicity of data value memory cells.
The check value memory cell 313, for example, is assigned to the data value memory cells 312 and 314 and is spatially arranged between them. The check value memory cell 315 is assigned to the data value memory cells 314 and 316 and is spatially arranged between them.
In an application of this type, an implementation of the storage device 103 shown in
Further example embodiments of storage devices which are variations of the storage device 103 shown in
In some example embodiments, two check value memory cells are assigned in each case to the same two data value memory cells. One example of such a storage device 104 is shown in
A procedure of this type can make the storage device, for example the storage device 104, more resilient to bit errors, in particular adjacent 2-bit errors, as explained below.
Here, the respective two check value memory cells which are assigned to the same two data value memory cells as shown in
This can offer the advantage that the error correction to counter local interference events can be further improved. The capability to perform corrections, for example, in the case of adjacent 2-bit can be improved. This will similarly be explained below.
The storage device 104 can be used to store the bits x1, x2, x3, x4 of a binary sequence x1-x2-x3-x4.
Two consecutive bits x1, x2 and x2, x3 and x3, x4 in each case form the check bits C2=x1⊕x2, c3=x2⊕x3 and c4=x3⊕x4. The check bits c2, c3, c4 are formed using XOR elements 441, 442 and 443 and are output at their respective outputs. The check bit c1=x1 and the check bit c5=x4 are further present. The check bits c2, c3 and c4 are therefore defined in each case as parity bits of the respective consecutive bits x1, x2 and x2, x3 and x3, x4. This corresponds to the procedure described with reference to
The check bit c2 is stored as check bits C12 and C22 in the memory cells 414 and 413. The check bit c3 is stored as check bits c13 and c23 in the memory cells 417 and 416. The check bit c4 is stored as check bits c14 and c24 in the memory cells 4110 and 419. The check bits which are formed by the XOR elements 441, 442 and 443 are therefore stored in two memory cells or generally in more than one memory cell. The check bit c1 is stored in the memory cell 411 and the check bit c5 is stored in the memory cell 4112. The latter corresponds in turn to the procedure shown in
Four combinatorial elements 431, 432, 433 and 434 in each case having three binary inputs and one binary output which in each case implement the combinatorial function f which can correspond to the combinatorial function previously described with reference to
The memory cells 411 to 4112 output the possibly errored values c1′, x1′, c22′, c12′, x2′, c23′, c13′, x3′, c24′, c14′, x4′ and c5′ at their outputs during read-out, said values being equal to the values c1, x1, c22, c12, x2, c23, c13, x3, c24, c14, x4 and c5 written to them if no error has occurred, and said values differing from the written values if an error has occurred.
The output of the memory cell 411 is connected to a first input of the XOR element 421 whose second input is connected to the output of the memory cell 412.
The output of the memory cell 412 is additionally connected to the second input of the XOR element 422, to the first input of the XOR element 429 and to the first input of the combinatorial element 431.
The output of the memory cell 413 is connected to the first input of the XOR element 422.
The output of the memory cell 414 is connected to the first input of the XOR element 423 whose second input is connected to the output of the memory cell 415.
The output of the memory cell 415 is additionally connected to the second input of the XOR element 424, to the first input of the XOR element 4211, to the second input of the XOR element 4210 and to the first input of the combinatorial element 432.
The output of the memory cell 416 is connected to the first input of the XOR element 424. The output of the memory cell 417 is connected to the first input of the XOR element 425 whose second input is connected to the output of the memory cell 418.
The output of the memory cell 418 is additionally connected to the second input of the XOR element 426, to the first input of the XOR element 4213, to the second input of the XOR element 4212 and to the first input of the combinatorial element 433.
The output of the memory cell 419 is connected to the first input of the XOR element 426.
The output of the memory cell 4110 is connected to the first input of the XOR element 427 whose second input is connected to the output of the memory cell 4111.
The output of the memory cell 4111 is additionally connected to the first input of the XOR element 4214, to the second input of the XOR element 428 and to the first input of the combinatorial element 434.
The output of the memory cell 4112 is connected to the first input of the XOR element 428.
The output of the XOR element 421 which indicates the correction value a1 is connected to the second input of the combinatorial element 431.
The output of the XOR element 422 is connected to the first input of the XOR element 4210. The output of the XOR element 423 is connected to the second input of the XOR element 429.
The output of the XOR element 424 is connected to the first input of the XOR element 4212. The output of the XOR element 425 is connected to the second input of the XOR element 4211.
The output of the XOR element 426 is connected to the first input of the XOR element 4214. The output of the XOR element 427 is connected to the second input of the XOR element 4213. The output of the XOR element 428 which carries the binary value a8 is connected to the third input of the combinatorial element 434.
The output of the XOR element 429 which indicates the correction value a2 is connected to the third input of the combinatorial element 431.
The output of the XOR element 4210 which indicates the correction value a3 is connected to the second input of the combinatorial element 432.
The output of the XOR element 4211 which indicates the correction value a4 is connected to the third input of the combinatorial element 432.
The output of the XOR element 4212 which indicates the correction value a5 is connected to the second input of the combinatorial element 433.
The output of the XOR element 4213 which indicates the correction value a6 is connected to the third input of the combinatorial element 433.
The output of the XOR element 4214 which indicates the correction value a7 is connected to the second input of the combinatorial element 434.
The correction values a1 to a8 essentially perform the same function as the correction values a1 to a5 in
The respectively more distant check value memory cell is further assigned to each data value memory cell, e.g. the check value memory cells 413 and 417 (and not the adjacent memory cells 414 and 416) are assigned to the data value memory cell 415. As a result, adjacent 2-bit errors do not relate to two memory cells 412 to 4111 which are used to form the same corrected data value x1cor.
An arrangement of this type can offer the advantage that, in the case of two bit errors, both check value memory cells are not affected. This can improve the resilience of the device to bit errors, in particular adjacent 2-bit errors, for example triggered by ionizing radiation.
The combinatorial elements 431, 432, 433 and 434 output at their outputs the binary values x1cor, x2cor, x3cor and x4cor which are defined by the relationships:
x1cor=f(x1′,a1,a2)=x1′⊕(a1∧a2),
x2cor=f(x2′,a3,a4)=x2′⊕(a3∧a4),
x3cor=f(x3′,a5,a6)=x3′⊕(a5∧a6), and
x4cor=f(x4′,a7,a8)=x4′⊕(a7∧a8),
similar to the combinatorial elements 331 to 334 shown in
If, for example, an adjacent 2-bit error then occurs in the memory cells 412 and 413, so that x1′=x1⊕1 and c22′=C22⊕1 are errored, a1=a2=1 applies according to
Similarly, a4=a5=a6=a7=a8=0 applies. The errored value x1′=x1⊕1 is corrected using the combinatorial element 431 in
x1cor=f(x1′,1,1)=x1′⊕(1∧1)=x1⊕1=(x1⊕1)⊕1=x1,
whereas the error in the check value memory cell 413 has no effect at the outputs.
If an adjacent 2-bit error occurs in the memory cells 413 and 414, a2=a3=1 applies, along with
a1=a4=a5=a6=a7=a8=0′; and
x1′=x1 and x2′=x2.
In this case, the following applies:
x1cor=f(x1′,a1,a2)=f(x1,0,1)=x1⊕(0∧1)=x1⊕0=x1; and
x2cor=f(x2′,a3,a4)=f(x2,1,0)=x2⊕(1∧0)=x2α0=x2.
The adjacent 2-bit error thus has no effect in the case of the values of x1cor and x2cor.
It is similarly evident that all 1-bit errors and all adjacent 2-bit errors in the memory cells 412, 413; 413, 414; 414, 415; 415, 416; 416, 417; 417, 418; 418, 419; 419, 4110; 4110, 4111 are duly corrected or have no effect on the output at the outputs of the storage device 104. The storage device 104 is thus error-tolerant in respect of these adjacent 2-bit errors.
The circuit arrangement shown in
In the example embodiments shown in
In other example embodiments, two of the data value memory cells are assigned to each of the multiplicity of check value memory cells. One example of this is the storage device 105 in
The storage device 105 can therefore be regarded as a modification of the storage device 103. The circuit pails shown in
The first bit x1 and the nth bit, here the 4th bit x4, of the bit sequence are considered, as it were, as adjacent, so that the check value memory cell 311 for storing c1=x1 and the check value memory cell 319 for storing c5=x4 are replaced in the circuit arrangement shown in
Only eight memory cells 511, 312, 313, 314, 315, 316, 317, 318 are present in
The number of memory cells is thereby reduced by one memory cell compared with the example shown in
The XOR elements 325 and 321 are replaced accordingly by the XOR element 520 in
The combinatorial elements 531 and 535 which differ from the combinatorial elements 331 and 334 only insofar as different input values are provided in part at their inputs are used in
Compared with the example embodiment shown in
The first input of the XOR element 540 is connected to the fourth circuit input which carries the bit x4, whereas the second input of the XOR element 540 is connected to the first circuit input which carries the bit x1.
The XOR element 540 outputs at its output the check bit c*=x1⊕x4 which is present at the input of the memory cell 511.
The output of the memory cell 511 which outputs the possibly errored check bit c*′ is connected to the first input of the XOR element 520 whose second input is connected to the output of the memory cell 318 and whose third input is connected to the output of the memory cell 312.
The output of the XOR element 520 which indicates the correction value a* is connected to the second input of the combinatorial element 531 and to the third input of the combinatorial element 535.
The first input of the combinatorial element 531 is connected to the output of the memory cell 312, whereas the output of the XOR element 332 is connected at its third input.
The first input of the combinatorial element 535 is connected to the output of the memory cell 318, whereas its second input is connected to the output of the XOR element 324.
The combinatorial element 531 forms the corrected bit x1cor, where
x1cor=f(x1′,a*,a2)=x1′⊕(a*∧a2), where a*=c*′⊕x1′⊕x4′ and a2=c2′⊕X1′⊕x2′.
The combinatorial element 535 forms the corrected bit x4cor, where
x4cor=f(x4′,a4,a*)=x4′⊕(a4∧a*), where a4=c4′⊕x3′⊕x4′.
The example embodiments shown in
Storage devices such as those described above can be configured:
The storage device 106 has a first logic element, illustrated by way of example by a parity former 62, which is configured to define a first parity value x4 based on the multiplicity of data values x1 to x3 to be stored in a storage device 61. The storage device 106 further has a second logic element, illustrated by the parity former 63, which is configured to define a second parity value P(xcor). The storage device 61 can, for example, be one of the storage devices 103 to 105 or a combination thereof.
Three data bits x1, x2, x3 are provided, from which a fourth bit x4 is defined as a check bit. In the example shown in
An error detection circuit 64 having four inputs and two outputs which is designed using the aforementioned parity former 63 having three inputs and one output is connected downstream of the storage device 61.
The first three corrected bits x1cor, x2cor and x3cor output by the storage device 61 are present at the inputs of the parity former 63, so that the parity former 63 forms a parity signal P(xcor), where
P(xcor)=x1cor⊕x2cor⊕x3cor; and
The value x4cor which is output by the storage device 61 and is output unchanged by the storage device 61 is present at the fourth input of the error detection circuit 64.
The bits x4cor and P(xcor) are output by the error detection circuit 64.
If x4cor=P(xcor) applies, no error is detected. If x4cor≠P(xcor) applies, an error is detected.
A comparator of the bits x4cor and P(xcor) which can be implemented, for example, by an XOR element designed, for example, as a gate, is not shown in
In the example embodiment described, the error detection is performed using the external output values x1cor, x2cor, x3cor, x4cor of the storage device 61 which, for the following explanation, corresponds to the storage device 103 shown in
If a single error occurs in one of the memory cells 312, 314, 316 or 318 within the storage device 61, the one error is corrected, so that x1cor=x1, x2cor=x2, x3cor=x3, x4cor=x4 apply.
If a single error occurs within the memory cells 311, 313, 315, 317 or 319, it has no effect on the output values of the storage device 61, so that x1cor=x1, x2cor=x2, x3cor=x3, x4cor=x4 then similarly apply.
A single error in one of the memory cells 311 to 319 does not therefore also result in a difference between x4cor and P(xcor) and no error is indicated by the error detection circuit 64.
An adjacent 2-bit error in two of the memory cells 311 to 319 does not result in a 1-bit error in the output bits x1cor, x2cor, x3cor, x4cor, so that it can be detected by the error detection circuit 64 which verifies the parity of the output values.
Thus, for example, x2′=NOT(x2), c3′=NOT(c3), a2=1, a3=0 apply to a 2-bit error in the memory cells 314 and 315, and the combinatorial element 332 shown in
The adjacent 2-bit error in the memory cells 314 and 315 therefore results in only a 1-bit error in the output values of the storage device 61 which is detected by the error detection circuit 64 connected downstream of the storage device 61 as a 1-bit error on the basis of the errored parity.
For all further possible adjacent 2-bit errors in two of the memory cells 311 to 319, it is similarly possible to check that they similarly have the effect of 1-bit errors and can be detected by the error detection circuit 64.
In some example embodiments, all 1-bit errors of the memory cells are corrected by the storage device 61. In some example embodiments, all adjacent 2-bit errors of the memory cells have the effect of 1-bit errors at the circuit outputs and can be detected by the error detection circuit 64 for the circuit outputs.
A simple parity check on the external circuit outputs can be used here for error detection. As a result, the reliability of the storage device can be increased and/or the necessary outlay for a storage device with a desired error correction behavior can be reduced.
Seven data bits x11, x12, x13, x14, x21, x22, x23 are provided, from which an eighth bit x24 is defined as a check bit.
The check bit x24 is defined as the parity bit
x24=x11⊕x12⊕x13⊕x14⊕x21⊕x22⊕x23
of the data bits x11, x12, x13, x14, x21, x22, x23, the data bits x11, x12, x13, x14, x21, x22, x23 are present at seven inputs of the parity former 73 which outputs the bit x24 at its output.
The storage device 71 has four inputs for inputting the bits x11, x12, x13, x14 and four outputs for outputting the bits x11cor, x12cor, x13cor, x14cor.
The storage device 72 has four inputs for inputting the bits x21, x22, x23, x24 and four outputs for outputting the bits x21cor, X22cor, x23cor, x24cor.
An error detection circuit 75 which is designed using a parity former 74 having seven inputs and one output is connected downstream of the storage devices 71 and 72.
The bits x11cor, x12cor, x13cor, x14cor, x21cor, x22cor, x23cor output by the storage devices 71 and 72 are present at the inputs of the parity former 74, so that the parity former 74 forms a parity signal P(xcor), where:
P(xcor)=x11cor⊕x12cor⊕x13cor⊕x14cor⊕x21cor⊕x22cor⊕x23cor
and provides it at its output. The value x24cor which is output by the storage device 72 and is output unchanged by the error detection circuit 75 is present at an eighth input of the error detection circuit 75.
If x24cor=P(xcor) applies, no error is detected. If x24cor≠P(xcor) applies, an error is detected.
Only one common parity bit, here the bit x24, which is input as the fourth bit into the storage device 72 and is stored and possibly corrected before being output is formed for error detection for the storage devices 71, 72.
Only one parity bit is used here for error detection in both storage devices 71 and 72. A common error detection circuit can also be implemented in a totally corresponding manner for more than two blocks, wherein the number of bits entered into the respective blocks may differ and may differ from four.
This can enable the outlay, for example in a monitoring circuit, to be minimized.
Storage devices can alternatively or additionally further comprises an error detection circuit. The error detection circuit can be configured to identify, on the basis of the correction values, whether an error in the corrected data value and/or an error in the content of at least one of the at least one of the multiplicity of data value memory cells and/or in the content of the at least one of the multiplicity of check value memory cells is/are present.
In
The Boolean function F(a1, a2, a3, a4, a5) can be defined as F(a1, a2, a3, a4, a5)=a1 ∨a2∨a3∨a4∨a5,
If one of the values output by one of the memory cells 311 to 319 is errored, at least one of the binary values a1, a2, a3, a4, a5 is also equal to 1 and an error which has occurred is indicated in this example embodiment by the error detection circuit 81 as an error signal Error=1, irrespective of whether it is or is not corrected.
One option is to use an error detection circuit which defines an error signal depending on internal circuit signals or depending on signals output from the circuit arrangement.
One option is similarly to use an error detection circuit which defines an error signal depending on both internal signals and signals output from the circuit.
The error detection circuit 81 can be configured to output an error signal. The error detection circuit can be configured to correct an error. In such cases, it can also be referred to as an error correction circuit.
In the example shown in
One option is to use an error code, wherein the error code is, for example, a linear code, for example a Hamming code, a Hsiao code or a shortened Hamming code, or a different code.
One option is similarly to provide an error detection circuit and/or an error correction circuit using external circuit signals and/or internal circuit signals, for example to define an error code.
A storage device, comprising:
The storage device according to example 1, wherein the at least one of the multiplicity of check value memory cells is configured to store a check value based on data values to be stored in the two data value memory cells assigned to it.
The storage device according to example 2, wherein the storage device is configured to form the check value of the at least one of the multiplicity of check value memory cells based on an XOR operation or XNOR operation performed on the data values to be stored in the two data value memory cells assigned to the at least one of the multiplicity of check value memory cells.
The storage device according to one of examples 1-3, wherein:
The storage device according to example 4, wherein the correction circuit is further configured:
The storage device according to example 5, wherein the correction circuit is further configured:
The storage device according to example 6, wherein:
The storage device according to one of examples 5-7, wherein the device further comprises an error detection circuit, wherein the error detection circuit is optionally configured to identify, on the basis of the corrected data value, the first correction value and the second correction value, whether an error in the corrected data value and/or an error in the content of at least one of the at least one of the multiplicity of data value memory cells and/or in the content of the at least one of the multiplicity of check value memory cells is/are present.
The storage device according to one of examples 1-8, wherein each of the at least one of the multiplicity of check value memory cells is spatially arranged between the two data value memory cells assigned to it from the multiplicity of data value cells.
The storage device according to one of examples 1-9, wherein:
The storage device according to example 10, wherein:
The storage device according to one of examples 1-11, wherein two of
The storage device according to one of examples 1-12,
The storage device according to one of examples 1-13, further comprising a write circuit which is configured to store respective data values as the respective contents in the multiplicity of data value memory cells, and
The storage device according to one of examples 1-14, wherein the device is configured:
A method for reading memory cells in a storage device having
The method according to example 16, wherein
A method for writing memory cells, comprising:
The method for writing memory cells according to example 18, wherein the method further comprises:
A method for reading and writing memory cells, comprising:
A storage device, comprising:
The storage device according to example 21, wherein the corrected data value for each second memory cell assigned to the selected first memory cell and belonging to the first subset is further based on a read-out data value read out from a different first memory cell which is assigned to the respective second memory cell and which is not the selected first memory cell.
The device according to example 21, wherein the read-out circuit comprises a multiplicity of Exclusive-OR gate circuits, wherein an Exclusive-OR gate circuit is assigned to each second memory cell of the first subset, which is configured to generate a check output value as an Exclusive-OR operation performed on the stored read-out check value read out from the respective second memory cell and on the read-out data values read out from the first memory cells assigned to the respective second memory cell,
The device according to example 23, wherein:
The device according to example 23 or 24, wherein the device further comprises an error detection circuit, wherein the error detection circuit is optionally configured to identify whether an error is present in the corrected data values on the basis of the corrected data values and check output values of the read-out circuit.
The device according to one of examples 21 to 25, wherein each second memory cell of the first subset of the second memory cells is arranged between the first memory cells assigned to it.
The device according to example 26, wherein two second memory cells of the first subset are assigned in each case to the same two first memory cells and are arranged between them, wherein the respective more distantly arranged of the respective two second memory cells is assigned to each first memory cell of the same two first memory cells.
The device according to one of examples 21 to 27, wherein the first subset comprises all second memory cells.
The device according to one of examples 21 to 27, wherein the multiplicity of second memory cells comprises a second subset of second memory cells, wherein each of the second memory cells of the second subset is assigned to one of the first memory cells and is configured to store as a check value the data value of the first memory cell assigned to it.
The device according to one of examples 21 to 29, further comprising a write circuit which is configured to store data values to be stored as the data values in the first memory cells and to store the check value in each second memory cell of the first subset as an Exclusive-OR operation performed on the data values to be stored in the first memory cells assigned to the respective second memory cell.
The device according to one of examples 21 to 30, wherein the device is configured:
The device according to example 31, wherein the device is configured to identify a presence of an error based on a comparison of the first parity value with the second parity value.
In this description, in which specific example embodiments have been illustrated and described, persons with conventional technical knowledge will recognize that a multiplicity of alternative and/or equivalent implementations can be chosen as a substitution for the specific example embodiments which are shown and described in this description without departing the scope of the presented disclosure. This application is intended to cover all adaptations or variations of the specific example embodiments which are discussed here. The claimed subject-matters are therefore limited only by the claims and the equivalents of the claims.
Number | Date | Country | Kind |
---|---|---|---|
102019120801.7 | Aug 2019 | DE | national |
Number | Name | Date | Kind |
---|---|---|---|
20030046632 | Hatakenaka | Mar 2003 | A1 |
20030061560 | Furukawa | Mar 2003 | A1 |
20030107942 | Perner | Jun 2003 | A1 |
20050289441 | Kawagoe | Dec 2005 | A1 |
20080163023 | Hong | Jul 2008 | A1 |
20090013223 | Lam | Jan 2009 | A1 |
20100269016 | Ware | Oct 2010 | A1 |
20120155169 | Honda | Jun 2012 | A1 |
20160350181 | Cha | Dec 2016 | A1 |
20170163291 | La Rosa | Jun 2017 | A1 |
20190303239 | Hsiao | Oct 2019 | A1 |
Number | Date | Country |
---|---|---|
102016104012 | Sep 2017 | DE |
2482112 | Jan 2012 | GB |
Number | Date | Country | |
---|---|---|---|
20210034458 A1 | Feb 2021 | US |