DE102017103347B4 - PROCESSING OF DATA IN MEMORY CELLS OF A MEMORY - Google Patents
PROCESSING OF DATA IN MEMORY CELLS OF A MEMORY Download PDFInfo
- Publication number
- DE102017103347B4 DE102017103347B4 DE102017103347.5A DE102017103347A DE102017103347B4 DE 102017103347 B4 DE102017103347 B4 DE 102017103347B4 DE 102017103347 A DE102017103347 A DE 102017103347A DE 102017103347 B4 DE102017103347 B4 DE 102017103347B4
- Authority
- DE
- Germany
- Prior art keywords
- values
- value
- memory cells
- memory cell
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 741
- 238000012545 processing Methods 0.000 title claims description 11
- 238000000034 method Methods 0.000 claims abstract description 28
- 230000009466 transformation Effects 0.000 claims description 81
- 238000012937 correction Methods 0.000 claims description 27
- 238000001514 detection method Methods 0.000 claims description 23
- 238000003860 storage Methods 0.000 claims description 11
- 230000002441 reversible effect Effects 0.000 claims description 5
- 230000010354 integration Effects 0.000 claims description 3
- 238000004590 computer program Methods 0.000 claims description 2
- 210000004027 cell Anatomy 0.000 description 603
- 238000009826 distribution Methods 0.000 description 54
- 238000011161 development Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 9
- 238000000844 transformation Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 210000000352 storage cell Anatomy 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000005855 radiation Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000010438 heat treatment Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000704 physical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 210000002023 somite Anatomy 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1072—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/02—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
- G11C11/16—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
- G11C11/165—Auxiliary circuits
- G11C11/1673—Reading or sensing circuits or methods
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/22—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using ferroelectric elements
- G11C11/225—Auxiliary circuits
- G11C11/2273—Reading or sensing circuits or methods
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5657—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using ferroelectric storage elements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital 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/0021—Auxiliary circuits
- G11C13/004—Reading or sensing circuits or methods
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/06—Sense amplifiers; Associated circuits, e.g. timing or triggering circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5678—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using amorphous/crystalline phase transition storage elements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5685—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using storage elements comprising metal oxide memory material, e.g. perovskites
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital 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/0004—Digital 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 amorphous/crystalline phase transition cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital 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/0007—Digital 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital 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/0009—RRAM elements whose operation depends upon chemical change
- G11C13/0011—RRAM elements whose operation depends upon chemical change comprising conductive bridging RAM [CBRAM] or programming metallization cells [PMCs]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital 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/0021—Auxiliary circuits
- G11C13/004—Reading or sensing circuits or methods
- G11C2013/0054—Read is performed on a reference element, e.g. cell, and the reference sensed value is used to compare the sensed value of the selected cell
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/563—Multilevel memory reading aspects
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Read Only Memory (AREA)
- Detection And Correction Of Errors (AREA)
- Error Detection And Correction (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
Verfahren zum Lesen von Speicherzellen aus einem Speicher,- bei dem physikalische Werte aus einer Anzahl von n Speicherzellen bestimmt werden, wobei n mindestens drei ist, wobei die physikalischen Werte Zeitpunkte sind,- bei dem die physikalischen Werte zumindest teilweise untereinander verglichen werden,- bei dem anhand der verglichenen physikalischen Werte den n Speicherzellen K unterschiedliche digitale Speicherzellenwerte zugeordnet werden,- bei dem den so erhaltenen digitalen Speicherzellenwerten ein Codewort eines n1-, ..., nK-aus-n-Codes zugeordnet wird,- bei dem die physikalischen Werte zumindest teilweise untereinander verglichen werden, so dass eine Reihenfolge zumindest eines Teils der physikalischen Werte bestimmt wird,- bei dem anhand der Reihenfolge den n Speicherzellen die K unterschiedlichen digitalen Speicherzellenwerte zugeordnet werden.Method for reading memory cells from a memory,- in which physical values are determined from a number of n memory cells, where n is at least three, the physical values being points in time,- in which the physical values are at least partially compared with one another,- in which the n memory cells are assigned K different digital memory cell values on the basis of the compared physical values,- in which the digital memory cell values obtained in this way are assigned a code word of an n1, ..., nK-of-n code,- in which the physical values are at least partially among one another are compared, so that an order of at least some of the physical values is determined, in which the K different digital memory cell values are assigned to the n memory cells on the basis of the order.
Description
Es sind verschiedene Ansätze bekannt, Daten (z.B. binäre Daten) in Speicherzellen eines Speichers abzuspeichern und aus den Speicherzellen des Speichers zur weiteren Verarbeitung auszulesen.Various approaches are known for storing data (e.g. binary data) in memory cells of a memory and reading them out from the memory cells of the memory for further processing.
Die Aufgabe der Erfindung besteht darin, den Umgang mit dem Speicher zu verbessern und insbesondere die Speicherung und/oder das Auslesen effizienter zu gestalten.The object of the invention consists in improving the handling of the memory and, in particular, in making the storage and/or reading out more efficient.
Diese Aufgabe wird gemäß den Merkmalen der unabhängigen Ansprüche gelöst. Bevorzugte Ausführungsformen sind insbesondere den abhängigen Ansprüchen entnehmbar.This object is solved according to the features of the independent claims. Preferred embodiments can be found in particular in the dependent claims.
Zur Lösung der Aufgabe wird ein Verfahren angegeben zum Lesen von Speicherzellen aus einem Speicher,
- - bei dem physikalische Werte aus einer Anzahl von n Speicherzellen bestimmt werden, wobei n mindestens drei ist, wobei die physikalischen Werte Zeitpunkte sind,
- - bei dem die physikalischen Werte zumindest teilweise untereinander verglichen werden,
- - bei dem anhand der verglichenen physikalischen Werte den n Speicherzellen K unterschiedliche digitale Speicherzellenwerte zugeordnet werden,
- - bei dem den so erhaltenen digitalen Speicherzellenwerten ein Codewort eines n1-, ..., nK-aus-n-Codes zugeordnet wird,
- - bei dem die physikalischen Werte zumindest teilweise untereinander verglichen werden, so dass eine Reihenfolge zumindest eines Teils der physikalischen Werte bestimmt wird,
- - bei dem anhand der Reihenfolge den n Speicherzellen die K unterschiedlichen digitalen Speicherzellenwerte zugeordnet werden.
- - in which physical values are determined from a number of n memory cells, where n is at least three, the physical values being points in time,
- - in which the physical values are at least partially compared with each other,
- - in which, on the basis of the compared physical values, the n memory cells are assigned K different digital memory cell values,
- - in which a code word of an n 1 -, ..., n K -out of n code is assigned to the digital memory cell values obtained in this way,
- - in which the physical values are at least partially compared with one another, so that a sequence of at least some of the physical values is determined,
- - in which the K different digital memory cell values are assigned to the n memory cells based on the sequence.
Hierbei gelten insbesondere: n ≥ 3, n1 ≥ 1 bis nK ≥ 1, K ≥ 2 und m ≥ 1.The following applies in particular: n ≥ 3, n 1 ≥ 1 to n K ≥ 1, K ≥ 2 and m ≥ 1.
Die Anzahl der Speicherzellenwerte beträgt n, wobei nur K unterschiedliche digitale Werte auftreten.The number of memory cell values is n, with only K different digital values occurring.
Weiterhin gilt: n1 +... + nK = n.The following also applies: n 1 +... + n K = n.
Der Vergleich der physikalischen Werte kann einen Vergleich analoger Werte umfassen.The comparison of the physical values can include a comparison of analog values.
Der Vergleich kann auf den physikalischen Werten selbst erfolgen oder auf den physikalischen Werten basieren. Insbesondere können aus den physikalischen Werten abgeleitete Werte verglichen werden. Insoweit sind durch den hier genannten Vergleich der physikalischen Werte auch Vergleiche abgedeckt, die sich auf Werte beziehen, die aus den physikalischen Werten abgeleitet werden können.The comparison can be based on the physical values themselves or based on the physical values. In particular, values derived from the physical values can be compared. In this respect, the comparison of the physical values mentioned here also covers comparisons that relate to values that can be derived from the physical values.
Dadurch, dass die Zuordnung digitaler Werte zu physikalischen Werten darauf basiert, dass die aus einer Anzahl von n Speicherzellen bestimmten physikalischen Werte untereinander verglichen werden, kommt es nur selten zu einer fehlerhaften Zuordnung der digitalen Werte. Eine solche fehlerhafte Zuordnung der digitalen Werte kann nur erfolgen, wenn zu vergleichende physikalische Werte in einem Überlappungsbereich der Häufigkeitsverteilungen ihrer Werte liegen und sich beim Vergleich ihre Reihenfolge ändert.Due to the fact that the assignment of digital values to physical values is based on the physical values determined from a number of n memory cells being compared with one another, incorrect assignment of the digital values only rarely occurs. Such an erroneous assignment of the digital values can only occur if the physical values to be compared lie in an overlapping area of the frequency distributions of their values and their order changes during the comparison.
Hierbei wird für n1 erste Speicherzellen in der Reihenfolge ein erster digitaler Speicherzellenwert bestimmt und für nK letzte Speicherzellen in der Reihenfolge ein K-ter digitaler Speicherzellenwert bestimmt.In this case, a first digital memory cell value is determined for n 1 first memory cells in the sequence and a Kth digital memory cell value is determined for n K last memory cells in the sequence.
Insbesondere kann in Abhängigkeit von der Position der physikalischen Werte der Reihenfolge ein digitaler Speicherzellenwert zugeordnet werden.In particular, a digital memory cell value can be assigned depending on the position of the physical values of the sequence.
Wird für n1 erste Speicherzellen in der Reihenfolge ein erster digitaler Speicherzellenwert bestimmt und ist n1 ≥ 2, dann kann es nicht notwendig sein, eine Reihenfolge der ersten n1 Speicherzellen zu bestimmen. Es kann in diesem Fall ausreichend sein, festzustellen, dass eine Speicherzelle zu den ersten n1 Speicherzellen gehört, ohne bestimmen zu müssen, an welcher Position in der Reihenfolge der ersten n1 Speicherzellen eine Speicherzelle positioniert ist. Allen n1 ersten Speicherzellen kann beispielsweise der gleiche digitale Wert 1 zugeordnet werden.If a first digital memory cell value is determined for n 1 first memory cells in the order and n 1 ≧2, then it may not be necessary to determine an order of the first n 1 memory cells. In this case, it may be sufficient to determine that a memory cell belongs to the first n 1 memory cells without having to determine at which position in the order of the first n 1 memory cells a memory cell is positioned. For example, the same
Entsprechende Aussagen gelten für weitere Speicherzellen bis zu den nK K-ten Speicherzellen. Es kann ausreichend sein, eine teilweise bestimmte Reihenfolge oder eine Reihenfolge für eine Teilmenge der Speicherzellenwerte zu bestimmen.Corresponding statements apply to further memory cells up to the n K K-th memory cells. It may be sufficient to determine a partially determined order or an order for a subset of the memory cell values.
Es ist eine Weiterbildung, dass die physikalischen Werte bestimmt werden, indem die n Speicherzellen ausgelesen werden.In one development, the physical values are determined by reading out the n memory cells.
Es ist eine Weiterbildung, dass alle physikalischen Werte untereinander verglichen werden.It is a further development that all physical values are compared with one another.
Es ist eine Weiterbildung, dass K = 2 ist, so dass der n1-, ..., nK-aus-n-Code ein n1-, n2-aus-n-Code ist, wobei n1 erste Speicherzellenwerte untereinander den gleichen ersten Wert und n2 zweite Speicherzellenwerte untereinander den gleichen zweiten Wert aufweisen, wobei der erste Wert von dem zweiten Wert verschieden ist.It is a refinement that K=2, so that the n 1 ,...,n K -of-n code is an n 1 -,n 2 -of-n code, where n 1 first memory cell values have the same first value among one another and n 2 second memory cell values have the same second value among one another, the first value being different from the second value.
Der n1-, n2-aus-n-Code kann auch als n1-aus-n-Code bezeichnet werden. Hierbei gilt n2 = n - n1.The n 1 -, n 2 -of-n code can also be referred to as n 1 -of-n code. Here n 2 = n - n 1 applies.
Es ist eine Weiterbildung, dass K = 3 ist, so dass der n1-, ..., nK-aus-n-Code ein n1-, n2-, n3-aus-n-Code ist, wobei n1 erste Speicherzellenwerte untereinander den gleichen ersten Wert, n2 zweite Speicherzellenwerte untereinander den gleichen zweiten Wert und n3 dritte Speicherzellenwerte untereinander den gleichen dritten Wert aufweisen, wobei der erste Wert, der zweite Wert und der dritte Wert jeweils voneinander verschieden sind.It is a refinement that K=3, so that the n 1 ,...,n K -of-n code is an n 1 -,n 2 -,n 3 -of-n code, where n 1 first memory cell values have the same first value among each other, n 2 second memory cell values have the same second value among each other and n 3 third memory cell values have the same third value among each other, the first value, the second value and the third value being different from one another.
Es ist eine Weiterbildung, dass K > 3 gilt.It is a further development that K>3 applies.
In diesem Beispiel können mehr als drei Werte pro Speicherzelle, d.h. mehr als drei digitale Speicherzellenwerte, bestimmt werden.In this example, more than three values per memory cell, i.e. more than three digital memory cell values, can be determined.
Es ist eine Weiterbildung, dass die aus den Speicherzellen bestimmten Speicherzellenwerte durch eine eindeutig umkehrbare Transformation bestimmt werden.In a development, the memory cell values determined from the memory cells are determined by a uniquely reversible transformation.
Die Anzahl n der Speicherzellenwerte ist hierbei vorzugsweise kleiner als zweimal die Anzahl der in den Speicherzellen gespeicherten Bits.In this case, the number n of memory cell values is preferably less than twice the number of bits stored in the memory cells.
Es ist eine Weiterbildung, dass die physikalischen Werte Zeitpunkte sind.It is a further development that the physical values are points in time.
Es ist eine Weiterbildung, dass jeweils ein Zeitpunkt mittels einer zeitlichen Integration des physikalischen Wertes der Speicherzelle bestimmt wird.In one development, a point in time is determined in each case by means of a time integration of the physical value of the memory cell.
Es ist eine Weiterbildung, dass der physikalische Wert ein Lesestrom einer Speicherzelle ist.In one development, the physical value is a read current of a memory cell.
Es ist eine Weiterbildung, dass falls die erhaltenen digitalen Speicherzellenwerte ein Codewort eines n1-, ..., nK-aus-n-Codes darstellen, mittels einer Rücktransformation aus dem Codewort eine Anzahl von m Bits bestimmt werden.In a further development, if the digital memory cell values obtained represent a code word of an n 1 -, . . . , n K -out of n code, a number of m bits are determined from the code word by means of an inverse transformation.
Es ist eine Weiterbildung, dass eine Fehlererkennung und/oder Fehlerkorrektur der m Bits mittels eines Fehlercodes durchgeführt wird.In a further development, error detection and/or error correction of the m bits is carried out using an error code.
Es ist eine Weiterbildung, dass die Fehlererkennung und/oder Fehlerkorrektur basierend auf Prüfbits durchgeführt wird, wobei die Prüfbits entsprechend dem Fehlercode aus den Datenbits bestimmt werden.In a further development, the error detection and/or error correction is carried out based on check bits, the check bits being determined from the data bits in accordance with the error code.
Es ist eine Weiterbildung, dass die Fehlererkennung und/oder Fehlerkorrektur basierend auf Prüfbits durchgeführt wird, wobei die Prüfbits entsprechend dem Fehlercode aus den Speicherzellenwerten bestimmt werden.In one development, the error detection and/or error correction is performed on the basis of check bits, the check bits being determined from the memory cell values in accordance with the error code.
Es ist eine Weiterbildung, dass der Fehlercode ein Bytefehler-korrigierender und/oder ein Bytefehler-erkennender Code ist.In one development, the error code is a byte error-correcting and/or a byte error-detecting code.
Es ist eine Weiterbildung, dass ein Byte m Bits umfasst, wenn eine Fehlerkorrektur von Datenbits erfolgt und bei dem ein Byte n Bits umfasst, wenn eine Fehlerkorrektur von Speicherzellen erfolgt.In one development, a byte comprises m bits when error correction of data bits takes place and in which a byte comprises n bits when error correction of memory cells takes place.
Es ist eine Weiterbildung, dass der Fehlercode ein Bitfehler-korrigierender und/oder ein Bitfehler-erkennender Code ist.In one development, the error code is a bit error-correcting and/or bit error-detecting code.
Es ist eine Weiterbildung, dass zur Bestimmung der digitalen Speicherzellenwerte mindestens ein Referenzwert verwendet wird.In a development, at least one reference value is used to determine the digital memory cell values.
Es ist eine Weiterbildung, dass der Speicher mindestens einen der folgenden Speichertypen umfasst:
- - einen Cache-Speicher,
- - ein Register oder ein Register-Array,
- - einen Flash-Speicher,
- - ein MRAM,
- - ein SRAM,
- - ein RE-RAM,
- - ein PC-RAM,
- - ein FE-RAM,
- - ein CB-RAM,
- - einen Multibit-Speicher,
- - einen Multilevel-Speicher.
- - a cache memory,
- - a register or a register array,
- - a flash memory,
- - an MRAM,
- - a SRAM,
- - a RE RAM,
- - a PC RAM,
- - a FE RAM,
- - a CB RAM,
- - a multibit memory,
- - a multilevel memory.
Weiterhin wird eine Vorrichtung vorgeschlagen zum Verarbeiten von Speicherzellen aus einem Speicher, bei dem die Vorrichtung eine Verarbeitungseinheit aufweist, die eingerichtet ist,
- - physikalische Werte aus einer Anzahl von n Speicherzellen zu bestimmen, wobei n mindestens drei ist, wobei die physikalischen Werte Zeitpunkte sind,
- - die physikalischen Werte zumindest teilweise untereinander zu vergleichen,
- - anhand der verglichenen physikalischen Werte den n Speicherzellen K unterschiedliche digitale Speicherzellenwerte zuzuordnen,
- - den so erhaltenen digitalen Speicherzellenwerten ein Codewort eines n1-, ..., nK-aus-n-Codes zuzuordnen,
- - die physikalischen Werte zumindest teilweise untereinander zu vergleichen und so eine Reihenfolge der physikalischen Werte zu bestimmen,
- - anhand der Reihenfolge der physikalischen Werte den n Speicherzellen die K unterschiedlichen digitalen Speicherzellenwerte zuzuordnen.
- - to determine physical values from a number of n memory cells, where n is at least three, the physical values being points in time,
- - compare the physical values at least partially with each other,
- - assign different digital memory cell values to the n memory cells K on the basis of the compared physical values,
- - to assign a code word of an n 1 -, ..., n K -out of n code to the digital memory cell values obtained in this way,
- - compare the physical values at least partially with each other and thus determine a sequence of the physical values,
- - to assign the K different digital memory cell values to the n memory cells on the basis of the sequence of the physical values.
Die hier genannte Verarbeitungseinheit kann insbesondere als eine Prozessoreinheit und/oder eine zumindest teilweise festverdrahtete oder logische Schaltungsanordnung ausgeführt sein, die beispielsweise derart eingerichtet ist, dass das Verfahren wie hierin beschrieben durchführbar ist. Besagte Verarbeitungseinheit kann jede Art von Prozessor oder Rechner oder Computer mit entsprechend notwendiger Peripherie (Speicher, Ein-/Ausgabe-Schnittstellen, Ein-Ausgabe-Geräte, etc.) sein oder umfassen.The processing unit mentioned here can in particular be embodied as a processor unit and/or an at least partially hardwired or logical circuit arrangement which is set up, for example, in such a way that the method can be carried out as described herein. Said processing unit can be or comprise any type of processor or calculator or computer with the necessary peripherals (memory, input/output interfaces, input/output devices, etc.).
Die vorstehenden Erläuterungen betreffend das Verfahren gelten für die Vorrichtung entsprechend. Die Vorrichtung kann in einer Komponente oder verteilt in mehreren Komponenten ausgeführt sein.The above explanations regarding the method apply accordingly to the device. The device can be embodied in one component or distributed in several components.
Auch wird die oben genannte Aufgabe gelöst mittels eines Systems umfassend mindestens eine der hier beschriebenen Vorrichtungen.The above-mentioned object is also achieved by means of a system comprising at least one of the devices described here.
Auch wird ein Computerprogrammprodukt vorgeschlagen, das direkt in einen Speicher eines digitalen Computers ladbar ist, umfassend Programmcodeteile, die dazu geeignet sind, die Schritte des hier beschriebenen Verfahrens durchzuführen.A computer program product is also proposed which can be loaded directly into a memory of a digital computer, comprising program code parts which are suitable for carrying out the steps of the method described here.
Es wird ein computerlesbares Speichermedium angegeben umfassend von einem Computer ausführbare Anweisungen, die dazu geeignet sind, dass der Computer die Schritte des hier beschriebenen Verfahrens durchführt.A computer-readable storage medium is provided comprising computer-executable instructions suitable for the computer to perform the steps of the method described herein.
Die oben beschriebenen Eigenschaften, Merkmale und Vorteile dieser Erfindung sowie die Art und Weise, wie diese erreicht werden, werden nachfolgend beschrieben im Zusammenhang mit einer schematischen Beschreibung von Ausführungsbeispielen, die im Zusammenhang mit den Zeichnungen näher erläutert werden. Dabei können zur Übersichtlichkeit gleiche oder gleichwirkende Elemente mit gleichen Bezugszeichen versehen sein.The properties, features and advantages of this invention described above and the manner in which they are achieved are described below in connection with a schematic description of exemplary embodiments which are explained in more detail in connection with the drawings. For the sake of clarity, elements that are the same or have the same effect can be provided with the same reference symbols.
Es zeigen:
-
1a eine Häufigkeitsverteilung für ausgelesene physikalische Werte, wobei ein Referenzwert zwischen den Häufigkeitsverteilungen dargestellt ist; -
1b eine Häufigkeitsverteilung für ausgelesene physikalische Werte, wobei sich im Gegensatz zu1a die Häufigkeitsverteilungen überlappen; -
2a ein Schaubild umfassend mehrere physikalische Werte, die aus den Speicherzellen ausgelesen wurden; -
2b ein Schaubild mit mehreren Zeitpunkten, wobei je ein Zeitpunkt einem der in2a dargestellten physikalischen Werte entspricht; -
3 ein Diagramm, das die Häufigkeitsverteilungen von physikalischen Werten WG einer Speicherzelle veranschaulicht. -
4 ein Diagramm, das Häufigkeitsverteilungen von aus dem Speicher gelesenen Werten veranschaulicht; -
5 ein Diagramm, das vier Häufigkeitsverteilungen von aus dem 0, 1, 2 und 3 veranschaulicht, wobei es für die vier Häufigkeitsverteilungen drei Überlappungsbereiche gibt;Speicher gelesenen Werten -
6 einen Speicher mit vier Speicherzellen, wobei aus den Speicherzellen physikalische Werte ausgelesen und unter Verwendung von mehreren Vergleichern paarweise verglichen werden; -
7 eine Schaltungsanordnung anhand derer aus den von der Vergleichern aus der Schaltung gemäß6 die entsprechenden Belegungen der Speicherzellen bestimmt werden mittels mehrerer Logikgatter; -
8 ein schematisches Diagramm, bei dem Datenbits transformiert, in Speicherzellen eines Speichers gespeichert, die Speicherzellen gelesen und mittels einer inversen Transformation in Datenbits zurück transformiert werden; -
9 ein schematisches Schaubild, bei dem mehrere Gruppen von Datenbits transformiert, gespeichert und nach dem Lesen in Datenbits zurück transformiert werden; -
10 eine beispielhafte Schaltungsanordnung, die eine Fehlererkennung oder eine kombinierte Fehlererkennung mit Fehlerkorrektur ermöglicht, wobei die Datenbits durch eine Transformationsschaltung in Speicherbits transformiert werden, die in Speicherzellen eines Speichers gespeichert werden; -
11 eine alternative Schaltungsanordnung, die eine Fehlerkorrektur oder eine Fehlererkennung ggf. mit Fehlerkorrektur ermöglicht; -
12 ein weiteres Beispiel einer Variante der in11 angedeuteten Schaltungsanordnung mit Rücktransformation und Bestimmung gegebenenfalls korrigierter Datenbits; -
13 eine beispielhafte Schaltungsanordnung umfassend mehrere Logikgatter zur Bestimmung eines Hold-Signals für mehrere Latches; -
14 eine beispielhafte Schaltungsanordnung zur Bestimmung der ersten drei schnellsten Nullen beim Auslesen von sechs Speicherzellen, wobei zur Ansteuerung mehrerer Latches das mittels der Schaltungsanordnung aus13 erzeugte Hold-Signal genutzt wird; -
15 eine schematische Anordnung zur Veranschaulichung wie Datenbits mittels einer Transformationsschaltung transformiert und als Speicherzellenwerte in Speicherzellen eines Speichers gespeichert werden; -
16 eine schematische Umsetzung der Anordnung von15 , wobei in16 beispielhaft n = k = 6, K = 3 und n1 = n2 = n3 = 2 gelten; -
17 eine schematische Anordnung zur Transformation von vier Datenbits x1, x2, x3, x4 in vier Speicherzellenwerte z1, z2, z3, z4.
-
1a a frequency distribution for read physical values, wherein a reference value is shown between the frequency distributions; -
1b a frequency distribution for physical values read out, in contrast to1a the frequency distributions overlap; -
2a a chart including a plurality of physical values read from the memory cells; -
2 B a diagram with several points in time, each point in time corresponding to one of the in2a corresponds to the physical values shown; -
3 a diagram that illustrates the frequency distributions of physical values W G of a memory cell. -
4 a diagram illustrating frequency distributions of values read from the memory; -
5 a diagram illustrating four frequency distributions of 0, 1, 2 and 3 read from the memory, where there are three areas of overlap for the four frequency distributions;values -
6 a memory with four memory cells, physical values being read from the memory cells and compared in pairs using a plurality of comparators; -
7 a circuit arrangement based on those from the comparators from the circuit according to FIG6 the corresponding assignments of the memory cells are determined using a plurality of logic gates; -
8th a schematic diagram in which data bits are transformed, stored in memory cells of a memory, the memory cells are read and transformed back into data bits by means of an inverse transformation; -
9 a schematic diagram in which several groups of data bits are transformed, stored and transformed back into data bits after reading; -
10 an exemplary circuit arrangement that enables error detection or combined error detection with error correction, the data bits being transformed by a transformation circuit into memory bits, which are stored in memory cells of a memory; -
11 an alternative circuit arrangement that enables error correction or error detection, if necessary with error correction; -
12 Another example of a variant of the in11 indicated circuit arrangement with inverse transformation and determination of possibly corrected data bits; -
13 an exemplary circuit arrangement comprising a plurality of logic gates for determining a hold signal for a plurality of latches; -
14 an exemplary circuit arrangement for determining the first three fastest zeros when reading six memory cells, with the circuit arrangement being used to control a plurality of latches13 generated hold signal is used; -
15 a schematic arrangement to illustrate how data bits are transformed by means of a transformation circuit and stored as memory cell values in memory cells of a memory; -
16 a schematic implementation of the arrangement of15 , where in16 by way of example, n=k=6, K=3 and n1 = n2 = n3 =2; -
17 a schematic arrangement for the transformation of four data bits x 1 , x 2 , x 3 , x 4 into four memory cell values z 1 , z 2 , z 3 , z 4 .
Eine Speicherzelle kann unterschiedliche physikalische Werte oder Zustände annehmen, die verschiedenen digitalen Werten entsprechen.A memory cell can assume different physical values or states corresponding to different digital values.
Mit WG wird ein Wert einer physikalischen Größe G einer Speicherzelle S und mit WD wird ein digitaler Wert der Speicherzelle S bezeichnet.A value of a physical quantity G of a memory cell S is denoted by W G and a digital value of the memory cell S is denoted by W D .
Der digitale Wert WD kann binär sein und somit einen von zwei Werten, die mit 0 und 1 bezeichnet sein können, annehmen. Ein digitaler Wert ist insbesondere ein Wert aus einer endlichen Anzahl von Werten.The digital value W D can be binary and thus can assume one of two values, which can be denoted by 0 and 1. A digital value is in particular one of a finite number of values.
Auch ist es möglich, dass der digitale Wert WD mehr als zwei verschiedene Werte annehmen kann. Beispielsweise kann ein digitaler Wert drei verschiedene Werte annehmen; in diesem Fall können diese unterschiedlichen digitalen Werte mit 0, 1, 2 bezeichnet sein. Allgemein kann ein digitaler Wert K mit K ≥ 2 unterschiedliche Werte annehmen. Diese K unterschiedlichen Werte können mit 0,1, ..., K - 1 bezeichnet werden. Ein Speicher, der Speicherzellen aufweist, die mehr als zwei digitale Speicherzellenwerte speichern können, wird hier auch als mehrwertige Speicher oder Multi-Level-Speicher bezeichnet. Die zugehörigen Speicherzellen können als mehrwertige oder Multi-Level-Speicherzellen bezeichnet werden.It is also possible that the digital value W D can assume more than two different values. For example, a digital value can take on three different values; in this case these different digital values can be denoted by 0,1,2. In general, a digital value K with K≧2 can assume different values. These K different values can be denoted by 0,1,...,K-1. A memory that has memory cells that can store more than two digital memory cell values is also referred to herein as a multi-valued memory or multi-level memory. The associated memory cells can be referred to as multi-valued or multi-level memory cells.
Entsprechend kann ein Speicher mit Speicherzellen, die zwei digitale Werte speichern, als binärer Speicher und die entsprechenden Speicherzellen können als binäre Speicherzellen bezeichnet werden.Correspondingly, a memory with memory cells that store two digital values can be referred to as a binary memory and the corresponding memory cells can be referred to as binary memory cells.
Ein aus der Speicherzelle S ausgelesener physikalischer Wert wird mit WA bezeichnet.A physical value read from the memory cell S is denoted by W A .
Beispielsweise kann der physikalische Wert oder Zustand einer Speicherzelle ein elektrischer Widerstandswert sein. Entsprechend können binär zwei Widerstandswerte unterschieden werden: Beispielsweise kann ein größerer Widerstandswert dem digitalen Wert 0 und ein kleinerer Widerstandswert dem digitalen Wert 1 entsprechen. In einem anderen Beispiel kann der größere Widerstandswert dem digitalen Wert 1 und der kleinere Widerstandswert dem digitalen Wert 0 entsprechen.For example, the physical value or state of a memory cell can be an electrical resistance value. Accordingly, two resistance values can be differentiated in binary: For example, a larger resistance value can correspond to the
Werden mehr als zwei digitale Werte in einer Speicherzelle gespeichert, kann entsprechend eine Staffelung (in Richtung der größeren oder kleineren Widerstandswerte) erfolgen: Beispielsweise kann ein größter Widerstandswert dem digitalen Wert 0, ein zweitgrößter Widerstandswert dem digitalen Wert 1, ein drittgrößter Widerstandswert dem digitalen Wert 2, etc. und schließlich ein kleinster Widerstandswert dem digitalen Wert K - 1 zugeordnet werden (hierbei sind wieder K digitale Werte in der Speicherzelle S speicherbar).If more than two digital values are stored in a memory cell, they can be scaled accordingly (in the direction of the larger or smaller resistance values): For example, a largest resistance value can have the
Beim Auslesen einer Speicherzelle S wird ein analoger physikalischer Wert WA bestimmt, der von dem physikalischen Wert WG abhängt, der beim Einschreiben bzw. Speichern des digitalen Werts WD erzeugt wurde.When a memory cell S is read, an analog physical value W A is determined, which depends on the physical value W G that was generated when the digital value W D was written or stored.
Aus dem ausgelesenen physikalischen Wert WA kann im fehlerfreien Fall der entsprechende digitale Wert WD bestimmt werden.If there are no errors, the corresponding digital value W D can be determined from the physical value W A that has been read out.
Entsprechen unterschiedliche elektrische Widerstandswerte unterschiedlichen Zuständen der Speicherzelle S, wie das beispielsweise bei einem MRAM der Fall ist, dann ist der gespeicherte physikalische Wert WG ein Widerstandswert und der gelesene physikalische Wert WA kann ein Strom oder eine Spannung sein.If different electrical resistance values correspond to different states of the memory cell S, as is the case with an MRAM, for example, then the stored physical value W G is a resistance value and the physical value W A read can be a current or a voltage.
Beispielsweise kann beim Auslesen von Speicherzellen mindestens ein Referenzwert R genutzt werden, der für alle oder für mehrere ausgelesene Speicherzellen gleich ist. Optional kann der (mindestens eine) Referenzwert (auch oder teilweise) extern zur Verfügung gestellt werden. Der aus einer Speicherzelle ausgelesene Wert WA kann mit dem Referenzwert R verglichen werden.For example, when reading out memory cells, at least one reference value R can be used, which is the same for all or for a plurality of memory cells read out. Optionally, the (at least one) reference value can (also or partially) be made available externally. The value W A read from a memory cell can be compared with the reference value R.
Nachfolgend wird beispielhaft insbesondere auf binäre Speicherzellen abgestellt, die zwei unterschiedliche digitale Werte 0 und 1 speichern können. Entsprechend können aber auch Speicherzellen vorgesehen sein, die jeweils mehr als zwei digitale Werte speichern können.In the following, by way of example, reference is made in particular to binary memory cells which can store two different
Entspricht ein größerer Widerstandswert dem binären Wert 0 und ein kleinerer Widerstandswert dem binären Wert 1, dann entspricht ein kleinerer ausgelesener Wert WA eines Stroms dem digitalen Wert 0 und ein größerer ausgelesener Wert WA des Stroms dem digitalen Wert 1.If a larger resistance value corresponds to the
Entsprechend ist es eine Option, dass beim Lesen einer Speicherzelle eine Spannung als ausgelesener Wert WA bestimmt wird, deren Höhe davon abhängt, ob zuvor in die Speicherzelle der binäre Wert 0 oder der binäre Wert 1 geschrieben wurde.Accordingly, it is an option that when a memory cell is read, a voltage is determined as the value W A read out, the level of which depends on whether the
Wird der digitale Wert WD durch einen Vergleich des ausgelesenen Werts WA mit einem einzigen entsprechenden Referenzwert R bestimmt, kann für den digitalen Wert WD gelten:
Wird in mehrere Speicherzellen ein digitaler Wert 0 geschrieben, so nehmen die beschriebenen Speicherzellen beispielsweise auf Grund von statistischen Schwankungen (z.B. Prozessschwankungen in der Fertigung) unterschiedliche physikalische Werte WG an, die alle im fehlerfreien Fall dem digitalen Wert WD = 0 entsprechen und die durch eine Häufigkeitsverteilung beschrieben werden können. Entsprechend nehmen auch die ausgelesenen Werte WA unterschiedliche Werte gemäß einer Häufigkeitsverteilung an.If a
Sinngemäß gilt diese Aussage für Speicherzellen, in die ein digitaler Wert 1 oder auch ein anderer Wert geschrieben wird: Wird in mehrere Speicherzellen der digitale Wert 1 geschrieben, so nehmen die beschriebenen Speicherzellen beispielsweise auf Grund von statistischen Schwankungen (z.B. Prozessschwankungen in der Fertigung) unterschiedliche physikalische Werte WG an, die alle im fehlerfreien Fall dem digitalen Wert WD = 1 entsprechen und die durch eine Häufigkeitsverteilung beschrieben werden können. Entsprechend nehmen auch die ausgelesenen Werte WA unterschiedliche Werte gemäß einer Häufigkeitsverteilung an.This statement applies analogously to memory cells in which a
Ist es möglich, in einer Speicherzelle mehr als ein Bit zu speichern, so gelten diese Aussagen entsprechend für alle digitalen Werte, die in jeder der Speicherzellen gespeichert werden können.If it is possible to store more than one bit in a memory cell, then these statements apply accordingly to all digital values that can be stored in each of the memory cells.
In dem in
In diesem Beispiel wird vereinfacht davon ausgegangen, dass es auch durch Einwirkung von Strahlung oder Erwärmung zu keinen fehlerhaften Zuordnungen kommt.In this example, it is assumed in simplified form that there are no incorrect assignments due to the effects of radiation or heating.
Im Gegensatz zu den in
Wird einem ausgelesenen Wert WA der binäre Wert 0 zugeordnet, wenn WA < R gilt und wird dem Wert WA der binäre Wert 1 zugeordnet wenn WA ≥ R gilt, so kann diese Zuordnung fehlerhaft sein, falls der ausgelesene Wert WA in dem Überlappungsbereich 105 liegt.If a read value WA is assigned the
Weiterhin können Fehler auftreten, die auf einer Einwirkung durch Strahlung oder Wärme oder auf permanenten Fehlern von Speicherzellen beruhen.Furthermore, errors can occur which are based on the effects of radiation or heat or on permanent errors in memory cells.
Somit kann aufgrund des Überlappungsbereichs 105 unter Verwendung des Referenzwertes R mit relevanter Wahrscheinlichkeit eine fehlerhafte Zuordnung erfolgen: Liegt ein ausgelesener Wert WA, der einem binären Wert 0 entspricht, in dem Überlappungsbereich 105, kann in etwa der Hälfte der Fälle WA > R gelten, was zu einer fehlerhaften Zuordnung führt. Entsprechend gilt: Liegt ein ausgelesener Wert WA, der einem binären Wert 1 entspricht, in dem Überlappungsbereich 105, kann in etwa der Hälfte der Fälle WA < R gelten, was ebenfalls zu einer fehlerhaften Zuordnung führt.Thus, due to the overlapping
Daher kann es für ausgelesene Werte WA, wenn sie in dem Überlappungsbereich 105 liegen, zu einer fehlerhaften Zuordnung eines zugehörigen digitalen Wertes kommen. Ein Bereich 106 zeigt einen Anteil der ausgelesenen Werte WA, die fehlerhaft dem binären Wert 1 zugeordnet werden, obwohl es sich um binäre Werte 0 handelt. Damit ist die Häufigkeit, dass ein fehlerhafter digitaler Wert zugeordnet wird, wesentlich durch die Häufigkeit bestimmt, dass der ausgelesene Wert WA in dem Überlappungsbereich 105 liegt. Dies ist insbesondere für große Überlappungsbereiche, wie sie beispielsweise bei modernen Technologien auftreten können, von Nachteil.Therefore, for values W A that have been read out, if they lie in the overlapping
Ein digitaler binärer Wert x, der die Werte 0 und 1 annehmen kann, kann unter Verwendung von zwei Speicherzellen S1 und S2 gespeichert werden. Beispielsweise kann für x = 0 ein Wert 0 in die Speicherzelle S1 und ein Wert 1 in die Speicherzelle S2 und für x = 1 ein Wert 1 in die Speicherzelle S1 und ein Wert 0 in die Speicherzelle S2 geschrieben (gespeichert) werden. Entsprechend kann umgekehrt für x = 0 ein Wert 1 in die Speicherzelle S1 und ein Wert 0 in die Speicherzelle S2 und für x = 1 ein Wert 0 in die Speicherzelle S1 und ein Wert 1 in die Speicherzelle S2 geschrieben werden.A digital binary value x, which can take the
Die aus den beiden Speicherzellen S1 und S2 ausgelesenen (physikalischen) Werte können beispielsweise mittels eines Komparators miteinander verglichen werden, um im fehlerfreien Fall zu bestimmen, ob der Wert 0 oder der Wert 1 gespeichert wurde.The (physical) values read from the two memory cells S 1 and S 2 can be compared with one another, for example by means of a comparator, in order to determine, if there are no errors, whether the
Beispielsweise wird aus der Speicherzelle S1 der physikalische Wert
In diesem Beispiel werden die in den Speicherzellen S1 und S2 gespeicherten ausgelesenen Werte
Ein Fehler kann nur auftreten, wenn sowohl der ausgelesene Wert
Wird hingegen der aus einer Speicherzelle ausgelesene Wert mit einem Referenzwert verglichen, kann ein Fehler bereits dann auftreten, wenn dieser eine ausgelesene Wert in dem Überlappungsbereich der entsprechenden Verteilungen liegt.If, on the other hand, the value read from a memory cell is compared with a reference value, an error can already occur if this one value that has been read lies in the overlapping area of the corresponding distributions.
Hierbei ist es von Nachteil, dass pro zu speicherndem Bit zwei Speicherzellen, also für die Speicherung von n Bits 2 - n Speicherzellen erforderlich sind.The disadvantage here is that two memory cells are required for each bit to be stored,
Ein Vorteil der hier vorgestellten Beispiele besteht darin, dass ermöglicht wird, digitale Werte mit hoher Zuverlässigkeit unter Verwendung möglichst weniger Speicherzellen zu speichern. Ein weiterer Vorteil ist es, dass zusätzlich beim Speichern ein Fehlercode verwendet werden kann, so dass Lesefehler zumindest teilweise erkannt und/oder korrigiert werden können.An advantage of the examples presented here is that it makes it possible to store digital values with high reliability using as few memory cells as possible. A further advantage is that an error code can also be used when storing, so that reading errors can be at least partially recognized and/or corrected.
Transformation von Datenbits in SpeicherzellenwerteTransformation of data bits into memory cell values
Beispielsweise werden 2k mögliche Belegungen von k Bits in n Speicherzellenwerte transformiert. Die Speicherzellenwerte werden in n Speicherzellen, beispielsweise in Speicherzellen eines adressierbaren Speichers, gespeichert.For example, 2 k possible assignments of k bits are transformed into n memory cell values. The memory cell values are stored in n memory cells, for example in memory cells of an addressable memory.
Die in n Speicherzellen gespeicherten n Speicherzellenwerte können aus den n Speicherzellen ausgelesen werden, und die ausgelesenen n Speicherzellenwerte können in die k Datenbits zurücktransformiert werden, wenn kein Fehler vorliegt. The n memory cell values stored in n memory cells can be read out from the n memory cells, and the read out n memory cell values can be transformed back into the k data bits when there is no error.
Die Speicherzellenwerte können binäre Werte (z.B. die Werte 0 und 1) sein. In diesem Fall werden in den Speicherzellen des Speichers binäre Werte gespeichert. Diese Speicherzellen können dann als binäre Speicherzellen bezeichnet werden.The memory cell values can be binary values (e.g. the
Es ist auch möglich, dass jeder der Speicherzellenwerte K verschiedene Werte annehmen kann. Im Unterschied zu den binären Speicherzellenwerten, kann hier jeder Speicherzellenwert mehr als zwei Werte annehmen. Es gilt also: K > 2, wobei die K Speicherzellenwerte 0,1, ... , K - 1 sind. Sind beispielsweise dreiwertige Speicherzellen vorgesehen, die entsprechend dreiwertige Speicherzellenwerte speichern können, so kann jedem Speicherzellenwert einer der Werte 0, 1 oder 2 zugeordnet sein.It is also possible that each of the memory cell values K can assume different values. In contrast to the binary memory cell values, each memory cell value can have more than two values. Thus: K > 2, where the K memory cell values are 0,1,...,K-1. If, for example, three-valued memory cells are provided which can store correspondingly three-valued memory cell values, one of the
Es ist auch möglich, dass i Speicherzellen unterschiedliche Ki-wertige Werte (binär oder mehrwertig, d.h. Ki ≥ 2) speichern können. Beispielsweise können mindestens zwei Speicherzellen vorgesehen sein, von denen die eine Speicherzelle K1-wertige Werte und die andere K2-wertige Werte speichert, wobei K1 ≠ K2.It is also possible that i memory cells can store different K i -valued values (binary or multi-valued, ie K i ≧2). For example, at least two memory cells can be provided, of which one memory cell stores K 1 -values and the other K 2 -values, where K 1 ≠K 2 .
Binäre SpeicherzellenwerteBinary memory cell values
Zunächst wird der Fall betrachtet, dass die Speicherzellenwerte binär sind.First, the case where the memory cell values are binary is considered.
Es sollen k Datenbits x1, ... , xk in n Speicherzellenwerte z1, ... , zn transformiert und in n Speicherzellen gespeichert werden.k data bits x 1 , . . . , x k are to be transformed into n memory cell values z 1 , . . . , z n and stored in n memory cells.
Die möglichen 2k Belegungen der k Datenbits xi,...,xk werden beispielsweise durch eine kombinatorische Schaltung (auch bezeichnet als Transformationsschaltung) in Speicherzellenwerte transformiert. Die Transformationsschaltung stellt hierzu eine Transformation bereit, die eine Abbildung der 2k Belegungen der k Datenbits in n Speicherzellenwerte durchführt.The possible 2 k assignments of the k data bits x i , . For this purpose, the transformation circuit provides a transformation that maps the 2 k assignments of the k data bits into n memory cell values.
Die Transformation ist so realisiert, dass die Speicherzellenwerte, in die die Datenbits transformiert werden, Codewörter eines n1-aus-n-Codes sind. Ein Codewort des n1-aus-n-Codes weist n1 erste binäre Werte und n2 = n - n1 zweite binäre Werte auf. Haben die ersten binären Werte den Wert 1 und haben die zweiten binären Werte den Wert 0, so weist ein Codewort des n1-aus-n-Codes eine Anzahl von n1 Einsen und eine Anzahl von n2 = n - n1 Nullen auf.The transformation is implemented in such a way that the memory cell values into which the data bits are transformed are code words of an n 1 -of-n code. A code word of the n 1 -of-n code has n 1 first binary values and n 2 = n - n 1 second binary values. If the first binary values have the
Entsprechend ist es möglich, dass die ersten binären Werte den Wert 0 und die zweiten binären Werte den Wert 1 aufweisen.Accordingly, it is possible for the first binary values to have the
Die Speicherung der Datenbits als Codewörter des n1-aus-n-Codes ist vorteilhaft, da beispielsweise beim Auslesen der in den Speicherzellen gespeicherten Codewörtern des n1-aus-n-Codes eine höhere Zuverlässigkeit erreicht werden kann als bei uncodiert gespeicherten Datenbits.Storing the data bits as code words of the n 1 -out of n code is advantageous since, for example, when reading out the code words of the n 1 -out of n code stored in the memory cells, greater reliability can be achieved than with data bits stored uncoded.
Der n1-aus-n-Code kann auch als ein n1-,n2-aus-n-Code bezeichnet werden, wobei n1 die Anzahl der ersten binären Werte und n2 die Anzahl der zweiten binären Werte bezeichnet. Dabei ist hier n2 = n - n1. Durch diese Bezeichnung ist ersichtlich, dass zwei verschiedene (hier binäre) Werte 0 und 1 in jedem Codewort vorhanden sind.The n 1 -of-n code can also be referred to as an n 1 -,n 2 -of-n code, where n 1 denotes the number of first binary values and n 2 denotes the number of second binary values. Here n 2 = n - n 1 . This designation shows that there are two different (here binary) values 0 and 1 in each code word.
Es gelten:
Beispielsweise kann die Anzahl n der Speicherzellenwerte größer oder gleich 3 sein.For example, the number n of memory cell values can be greater than or equal to 3.
Ist die Anzahl der Speicherzellenwerte gleich 2 (d.h. ist n = 2), so sind die Codewörter des entsprechenden 1-aus-2-Codes 10 und 01. Beispielsweise kann der binäre Wert 0 als 10 und der binäre Wert 1 als 01 codiert sein. Hierbei ist es von Nachteil, dass n = 2 Speicherzellen erforderlich sind, um die Information eines einzelnen Bits zu speichern.If the number of memory cell values is 2 (i.e. if n=2), then the code words of the corresponding 1-of-2 code are 10 and 01. For example, the
Es gibt, wie vorstehend erläutert wurde, 2k verschiedene Belegungen der k Datenbits. Außerdem gibt es
Die Transformation der 2k Belegungen der k Datenbits in die
Es gibt mindestens so viele verschiedene Codewörter wie Belegungen der Datenbits, d.h. ist die Bedingung
Es ist auch möglich, dass je nach Anwendungsfall nicht alle der 2k möglichen Belegungen der k Datenbits auftreten. Ist dies der Fall und gibt ein Wert Anz < 2k die Anzahl der tatsächlich auftretenden Belegungen an, ist nur erforderlich, dass die Bedingung
Damit können vorteilhaft weniger als 2 - k Speicherzellen zum Abspeichern von k Datenbits verwendet werden.In this way, advantageously less than 2−k memory cells can be used for storing k data bits.
Binäre Speicherzellenwerte: BeispieleBinary memory cell values: examples
Beispielhaft wird von k = 4 Datenbits ausgegangen, für die es 2k = 24 = 16 verschiedene Belegungen gibt. Sind beispielsweise n = 6 Speicherzellen (n ist die Anzahl der Speicherzellenwerte, wobei jeder Speicherzellenwert in einer Speicherzelle gespeichert werden soll) vorgesehen und gilt n1 = 3, dann gibt es
Für n = 6 Speicherzellenwerte und n1 = 2 ergäben sich nur
Ist der Wert Anz der tatsächlich aufgetretenen Belegungen beispielsweise kleiner oder gleich 15, kann auch dieser 2-aus-6-Code verwendet werden.If the number of occupancies that actually occurred is, for example, less than or equal to 15, this 2-out-of-6 code can also be used.
Binäre Speicherzellenwerte: Gruppierung der DatenbitsBinary memory cell values: grouping of data bits
Nachfolgend wird erläutert, dass N Datenbits in Speicherzellenwerte transformiert werden, wobei N = M · k gelten soll und M größer als 1 ist. Somit können M Gruppen aus jeweils k Datenbits gebildet werden, wobei die jeweils 2k Belegungen jeder Gruppe von k Datenbits in 2k Codewörter eines
Werden die Belegungen von M Gruppen von jeweils k Datenbits in Codewörter eines jeweils gleichen n1-aus-n-Codes transformiert, ergeben sich M · n Speicherzellenwerte, die entsprechend in M · n Speicherzellen gespeichert werden können.If the occupancies of M groups of k data bits each are transformed into code words of a respectively identical n 1 out of n code, this results in M×n memory cell values which can be stored correspondingly in M×n memory cells.
Beispielhaft ist hier der Fall beschrieben, dass die M Gruppen jeweils k Datenbits umfassen. Alternativ ist es möglich, dass eine erste Gruppe von Datenbits k1 Datenbits aufweist, eine zweite Gruppe von Datenbits k2 Datenbits aufweist, usw. bis eine M-te Gruppe km Datenbits aufweist. Die Anzahl der Datenbits pro Gruppe k1, k2, ... , km kann untereinander zumindest teilweise unterschiedlich sein. Somit gilt
- - die ersten k1 Datenbits in Codewörter eines ersten
- - die zweiten k2 Datenbits in Codewörter eines zweiten
- - die M-ten kM Datenbits in Codewörter eines M-ten
- - the first k 1 data bits in code words of a first
- - the second k 2 data bits into code words of a second
- - the Mth k M data bits in codewords of an Mth
Ist beispielsweise die Zahl der Datenbits k = 3, ergeben sich 2k = 8 mögliche Belegungen der 3 Datenbits. Mit n = 5 Speicherzellenwerten kann sowohl ein 2-aus-5-Code als auch ein 3-aus-5-Code verwendet werden, da diese beiden Codes jeweils 10 Codewörter und damit mehr Codewörter als mögliche Belegungen bereitstellen. So kann beispielsweise für eine erste Gruppe von 3 Datenbits der 2-aus-5-Code und für eine zweite Gruppe von 3 Datenbits der 3-aus-5-Code verwendet werden.For example, if the number of data bits k=3, there are 2 k =8 possible allocations of the 3 data bits. With n=5 memory cell values, both a 2-of-5 code and a 3-of-5 code can be used, since these two codes each have 10 code words and therefore more code words than possible bele provide services. For example, the 2-of-5 code can be used for a first group of 3 data bits and the 3-of-5 code can be used for a second group of 3 data bits.
Wie ausgeführt ist es eine Option, dass die Gruppen von Datenbits nicht alle die gleiche Anzahl k Datenbits aufweisen. Beispielhaft sollen 23 Datenbits in Speicherzellenwerte transformiert werden: Aus den 23 Datenbits können 5 Gruppen mit jeweils 4 Datenbits und eine Gruppe mit 3 Datenbits gebildet werden. Die 24 = 16 möglichen Belegungen der jeweiligen Gruppe mit 4 Datenbits können beispielsweise in Codewörter eines 3-aus-6-Codes, der 20 verschiedene Codewörter aufweist, transformiert werden. Die verbleibende Gruppe mit 3 Datenbits hat 23 = 8 mögliche Belegungen. Diese 3 Datenbits können beispielsweise in Codewörter eines 3-aus-5-Codes transformiert werden, der 10 Codewörter aufweist. Hierdurch ist eine Speicherzelle weniger erforderlich als wenn die 23 = 8 möglichen Belegungen der 3 Datenbits auch in Codewörter des 3-aus-6-Codes transformiert werden würden. Es ist beispielsweise auch möglich, die Gruppe von 3 Datenbits durch ein konstantes Bit, z.B. ein Bit mit dem Wert 0 zu ergänzen, so dass sich 4 Datenbits ergeben, so dass alle Gruppen die gleiche Zahl Datenbits aufweisen und somit die gleiche Transformation verwendet werden kann. Dies kann den Aufwand beim Schaltungsentwurf reduzieren.As explained, it is an option that the groups of data bits do not all have the same number k of data bits. For example, 23 data bits are to be transformed into memory cell values: 5 groups each with 4 data bits and one group with 3 data bits can be formed from the 23 data bits. The 2 4 =16 possible assignments of the respective group with 4 data bits can be transformed, for example, into code words of a 3-out-of-6 code, which has 20 different code words. The remaining group with 3 data bits has 2 3 = 8 possible assignments. For example, these 3 data bits can be transformed into code words of a 3-of-5 code having 10 code words. As a result, one memory cell less is required than if the 2 3 =8 possible assignments of the 3 data bits were also transformed into code words of the 3-out-of-6 code. It is also possible, for example, to supplement the group of 3 data bits with a constant bit, eg a bit with the
Mehrwertige SpeicherzellenwerteMultivalued memory cell values
Es soll nun der Fall betrachtet werden, dass Speicherzellenwerte mehr als zwei unterschiedliche Werte annehmen können und dass entsprechend die Speicherzellen mehrwertige Speicherzellenwerte speichern können.The case should now be considered in which memory cell values can assume more than two different values and that accordingly the memory cells can store multi-valued memory cell values.
Eine Speicherzelle soll K unterschiedliche Speicherzellenwerte speichern können, wobei K > 2 ist (K = 2 wäre der Sonderfall der binären Speicherzellenwerte). Die unterschiedlichen Speicherzellenwerte pro Speicherzelle können mit 0,1, ... , K - 1 bezeichnet sein.A memory cell should be able to store K different memory cell values, where K > 2 (K=2 would be the special case of binary memory cell values). The different memory cell values per memory cell can be denoted by 0, 1, . . . , K-1.
Es sollen wieder k Datenbits gespeichert werden. Die 2k unterschiedlichen Belegungen der k Datenbits können umkehrbar eindeutig in n Speicherzellenwerte transformiert werden. Diese n Speicherzellenwerte weisen
- - n1 erste Werte,
- - n2 zweite Werte, ...
- - nK K-te Werte
- - die
ersten Werte mit 0, - - die
zweiten Werte mit 1, ... - - die K-ten Werte mit K - 1
bezeichnet sein.Again k data bits are to be stored. The 2 k different assignments of the k data bits can be uniquely transformed into n memory cell values in a reversible manner. These n memory cell values have
- - n 1 first values,
- - n 2 second values, ...
- - n K Kth values
- - the first values with 0,
- - the second values with 1, ...
- - the Kth values with K - 1
be designated.
Die n Speicherzellenwerte können auch als ein n-Tupel von Speicherzellenwerten bezeichnet werden. Das n-Tupel von n mehrwertigen (hier K-wertigen) Speicherzellenwerten, die n1 erste Werte, n2 zweite Werte, ....,nK K-te Werte aufweisen, kann als ein Codewort eines
Der n1 -, n2-, ... , nx - aus - n - Code weist die folgende Zahl an Codewörtern auf:
Die 2k Belegungen der k Datenbits sollen nun umkehrbar eindeutig in 2k dieser Codewörter des n1 -, n2-, ... , nK-aus-n-Codes transformiert werden. Dies ist möglich, wenn die Bedingung
Mehrwertige Speicherzellenwerte: BeispieleMultivalued memory cell values: examples
Es sollen k = 6 Datenbits gespeichert werden. Somit gibt es 2k = 26 = 64 mögliche Belegungen der 6 Datenbits. Die Datenbits sind, wie beschrieben, binäre Werte und werden zur Speicherung in den mehrwertigen Speicherzellen vorab einer Transformation unterzogen.k = 6 data bits are to be stored. Thus there are 2 k = 2 6 = 64 possible assignments of the 6 data bits. As described, the data bits are binary values and are previously subjected to a transformation for storage in the multi-value memory cells.
Beispielsweise werden 3-wertige Speicherzellenwerte (K = 3) betrachtet. Somit kann jede Speicherzelle drei unterschiedliche Werte speichern. Insgesamt sind n = 6 Speicherzellenwerte (und damit 6 Speicherzellen) gegeben und es sei n1 = n2 = n3 = 2 angenommen. Es gibt somit
Die mehrwertigen Speicherzellen erlauben eine effizientere Nutzung gegenüber den binären Speicherzellen, da pro Speicherzelle mehr als zwei Werte gespeichert werden können. Somit reicht eine geringe Menge an physikalischen Speicherzellen aus: Im vorliegenden Beispiel können mit nur 6 dreiwertigen Speicherzellen 90 Codewörter des 2-,2-,2-aus-6-Codes gebildet werden, wohingegen mit 6 binären Speicherzellen nur 20 Codewörter eines 3-aus-6-Codes gebildet werden können.The multi-value memory cells allow more efficient use compared to the binary memory cells since more than two values can be stored per memory cell. A small number of physical memory cells is therefore sufficient: In the present example, 90 code words of the 2, 2, 2-out-of-6 code can be formed with only 6 three-value memory cells, whereas only 20 code words of a 3-out code can be formed with 6 binary memory cells -6 codes can be formed.
In jedem Codewort des hier beispielhaft angenommenen 2-,2-,2-aus-6-Codes kommt je zweimal einer der Werte 0, 1 und 2 vor. Beispiele für Codewörter sind: 001122, 101220, 021210.In each code word of the 2, 2, 2 out of 6 code assumed here as an example, one of the
In einem anderen Beispiel wird für 3-wertige Speicherzellenwerte (K = 3) ein 1-, 1-,1-aus-3-Code verwendet. Dieser weist für n = 3 Speicherzellen
In einem weiteren Beispiel werden vierwertige Speicherzellenwerte K = 4 betrachtet. Jede Speicherzelle kann beispielsweise einen der Werte 0, 1, 2 oder 3 speichern. Insgesamt gibt es in diesem Beispiel n = 6 Speicherzellen und es wird n1 = n2 = 2 und n3 = n4 = 1 angenommen. Somit gibt es
Beispiele für Codewörter des hier verwendeten 2-,2-,1-,1-aus-6-Codes sind: 001123, 101320, 031210. Jedes der Codewörter weist jeweils zwei Nullen, zwei Einsen eine Zwei und eine Drei auf.Examples of code words of the 2, 2, 1, 1 out of 6 code used here are: 001123, 101320, 031210. Each of the code words has two zeros, two ones, a two and a three.
Mehrwertige Speicherzellenwerte: Gruppierung der DatenbitsMulti-valued memory cell values: grouping of data bits
Wieder wird der Fall betrachtet, dass N Datenbits in Speicherzellenwerte transformiert werden, wobei N = M · k gelten soll und M größer als 1 ist. Somit können M Gruppen aus jeweils k Datenbits gebildet werden, wobei die jeweils 2k Belegungen jeder Gruppe von k Datenbits in 2k Codewörter eines n1 -, n2-, ... , nx-aus-n-Codes umkehrbar eindeutig transformiert werden.Again consider the case where N data bits are transformed into memory cell values, where N=M*k and M is greater than 1. Thus, M groups of k data bits each can be formed, with the respective 2 k assignments of each group of k data bits being reversibly uniquely transformed into 2 k code words of an n 1 -, n 2 -, . . . , n x -out of n code become.
Werden die Belegungen von M Gruppen von jeweils k Datenbits in Codewörter des n1 -, n2-, ... , nK-aus-n-Codes transformiert, ergeben sich M · n K-wertige Speicherzellenwerte, die entsprechend in M . n K-wertigen Speicherzellen gespeichert werden.If the occupancies of M groups of k data bits each are transformed into code words of the n 1 -, n 2 -, ... , n K -out of n code, this results in M · n K-valued memory cell values, which are correspondingly stored in M . n K-value memory cells are stored.
Es kann vorteilhaft sein, die Belegungen aller Gruppen von k Datenbits durch die gleiche Transformation in Speicherzellenwerte zu transformieren. Dann kann beispielsweise eine Transformationsschaltung mehrfach eingesetzt werden. Es ist aber auch möglich, die k Datenbits der verschiedenen Gruppen mit unterschiedlichen Transformationen in Speicherzellenwerte zu transformieren.It can be advantageous to transform the assignments of all groups of k data bits into memory cell values by the same transformation. Then, for example, a transformation circuit can be used multiple times. However, it is also possible to transform the k data bits of the various groups into memory cell values using different transformations.
Schreiben und Lesen von DatenbitsWriting and reading data bits
Die k zu speichernden Bits werden auch als Datenbits bezeichnet. Diese Datenbits können beispielsweise Informationsbits und Prüfbits eines separierbaren fehlererkennenden und/oder fehlerkorrigierenden Codes aufweisen. Dabei können in einem separierbaren Code Informationsbits durch Prüfbits ergänzt sein. Es ist auch möglich, dass die Datenbits Bits eines nicht separierbaren Codes sind, bei dem die Bits eines Codewortes nicht in Informationsbits und Prüfbits unterteilt sind. Weiterhin ist es eine Option, dass die Datenbits Informationsbits und Adressenbits und/oder aus Adressenbits abgeleitete Bits und/oder Bits eines Passwortes umfassen.The k bits to be stored are also referred to as data bits. These data bits can have, for example, information bits and check bits of a separable error-detecting and/or error-correcting code. Information bits can be supplemented by check bits in a separable code. It is also possible that the data bits are bits of an inseparable code in which the bits of a code word are not divided into information bits and check bits. It is also an option that the data bits include information bits and address bits and/or bits derived from address bits and/or bits of a password.
Die Bezeichnung „Datenbits“ dient beispielhaft dazu, die in den Speicher zu speichernden Bits zu bezeichnen. Hierbei kann es sich um Programmcode, Bilddaten, Messdaten oder sonstige Nutzdaten (Payload) handeln, die in Speicherzellenwerte transformiert werden und in Speicherzellen gespeichert werden. Die Speicherzellenwerte können dabei mehrwertig oder binär sein.The term "data bits" is used, for example, to denote the bits to be stored in memory. This can be program code, image data, measurement data or other useful data (payload) that are transformed into memory cell values and stored in memory cells. The memory cell values can be multi-valued or binary.
Beim Auslesen der Speicherzellen werden die in den Speicherzellen gespeicherten digitalen Speicherzellenwerte unter Verwendung eines Vergleichs von aus den n Speicherzellen ausgegebenen physikalischen Werten bestimmt. Alternativ kann es sich auch um Werte handeln, die aus den ausgegebenen physikalischen Werten abgeleitet werden.When reading the memory cells, the digital memory cell values stored in the memory cells are determined using a comparison of physical values output from the n memory cells. Alternatively, they can also be values that are derived from the physical values that are output.
Sind die n Speicherzellen binär, wird die Folge von k zu speichernden Bits in eine Folge von n binären Speicherzellenwerten transformiert, die n1 erste binäre Werte und n2 zweite binäre Werte aufweist. Werden die ersten binären Werte mit 1 und die zweiten binären Werte mit 0 bezeichnet, so wird eine Folge von k zu speichernden Bits in ein Codewort eines n1-aus-n Codes transformiert und es gilt n2 = n - n1.If the n memory cells are binary, the sequence of k bits to be stored is transformed into a sequence of n binary memory cell values having n 1 first binary values and n 2 second binary values. If the first binary values are denoted by 1 and the second binary values by 0, then a sequence of k bits to be stored is transformed into a code word of an n 1 -of-n code and n 2 =n - n 1 applies.
Bei gegebenem n und n1 ist k so bestimmt, dass
Sind die Speicherzellen nicht binär und dient eine Speicherzelle zur Speicherung von K-wertigen digitalen Speicherzellenwerten, so wird eine Folge von k Bits in eine Folge von n K-wertigen Speicherzellenwerten transformiert, die in den n Speicherzellen gespeichert werden. Die Folge von n Speicherzellenwerten ist so bestimmt, dass sie eine vorbestimmte erste Anzahl n1 von ersten, untereinander gleichen ersten Speicherzellenwerten, eine vorbestimmte zweite Anzahl n2 von zweiten, untereinander gleichen zweiten Speicherzellenwerten, etc. bis zu einer vorbestimmten K-ten Anzahl nK von K-ten, untereinander gleichen K-ten Speicherzellenwerten aufweist.If the memory cells are not binary and a memory cell is used to store K-value digital memory cell values, then a sequence of k bits is transformed into a sequence of n K-value memory cell values, which are stored in the n memory cells. The sequence of n memory cell values is determined such that it comprises a predetermined first number n 1 of first, mutually identical first memory cell values, a predetermined second number n 2 of second, mutually identical second memory cell values, etc. up to a predetermined K-th number n K of Kth mutually identical Kth memory cell values.
Dabei gilt
Ferner ist k so bestimmt, dass
Eine Folge von n K-wertigen Speicherzellenwerten, die eine vorbestimmte erste Anzahl n1 von ersten, untereinander gleichen ersten Speicherzellenwerten, eine vorbestimmte zweite Anzahl n2 von zweiten, untereinander gleichen zweiten Speicherzellenwerten, etc. bis zu einer vorbestimmten K-ten Anzahl nK von K-ten, untereinander gleichen K-ten Speicherzellenwerten aufweist, kann als ein Codewort eines (n1-, n2-,..., nK-aus-n)-Codes bezeichnet werden.A sequence of n K-value memory cell values comprising a predetermined first number n 1 of first, mutually identical first memory cell values, a predetermined second number n 2 of second, mutually identical second memory cell values, etc. up to a predetermined K-th number n K of K-th mutually identical K-th memory cell values can be referred to as a code word of an (n 1 -, n 2 -,..., n K -of-n) code.
Die Anzahl nK der untereinander gleichen K-ten Speicherzellenwerte ist zu
Beim Auslesen der Speicherzellen werden die in den Speicherzellen einer Gruppe von n Speicherzellen gespeicherten digitalen Daten mittels eines Vergleichs von aus Speicherzellen der Gruppe ausgelesenen physikalischen Werten bestimmt. Alternativ werden die in den Speicherzellen einer Gruppe von n Speicherzellen gespeicherten digitalen Daten mittels eines Vergleichs unter Verwendung von ausgelesenen physikalischen Werten oder abgeleiteten Eigenschaften bestimmt.When the memory cells are read, the digital data stored in the memory cells of a group of n memory cells are determined by comparing physical values read from memory cells of the group. Alternatively, the digital data stored in the memory cells of a group of n memory cells are determined by means of a comparison using physical values read out or derived properties.
Auch kann als Eigenschaft ein zeitliches Verhalten von aus unterschiedlichen Speicherzellen ausgelesenen physikalischen Werten betrachtet und für einen Vergleich (mit)berücksichtigt werden.A temporal behavior of physical values read from different memory cells can also be considered as a property and (also) taken into account for a comparison.
Zu einem Zeitpunkt τ nimmt ein aus einer Speicherzelle Si ausgelesener Wert einen analogen Wert
Ist der Widerstand
Wird der Lesestrom
Wird der Lesestrom
Da für die Leseströme der Speicherzellen Si und Sj
Somit kann für die Speicherzellen Si und Sj verglichen werden, ob das Integral des Lesestromes der Speicherzelle Si den Schwellwert Sw früher erreicht als das Integral des Lesestromes der Speicherzelle Sj. Dies ist dann der Fall, wenn (bei gleicher Spannung) der Widerstandswert
Somit ist es eine Option, eine Ordnung (oder „Reihenfolge“) der Speicherzellen Si und Sj auf Grund der in ihnen gespeicherten physikalischen Werte
Dieser Ansatz kann zur Sortierung aller Speicherzellen einer Gruppe von n Speicherzellen genutzt werden.This approach can be used to sort all memory cells in a group of n memory cells.
Werden beispielsweise erste n1 Speicherzellen mit einer binären 0 und zweite n2 Speicherzellen mit einer binären 1 beschrieben, ist im fehlerfreien Fall der elektrische Widerstand der ersten n1 Speicherzellen kleiner als der elektrische Widerstand der zweiten n2 Speicherzellen, so dass der Lesestrom der ersten n1 Speicherzellen größer als der Lesestrom der zweiten n2 Speicherzellen ist. Beispielsweise gilt hierbei: n1 + n2 = n.If, for example, a
Entsprechend liegen die Zeitpunkte
So können die Speicherzellen entsprechend der Zeitpunkte, zu denen der Schwellwert Sw erreicht wird, geordnet werden. Beispielsweise kann dem frühesten (ersten) Zeitpunkt die erste Speicherzelle und dem spätesten (letzten) Zeitpunkt die n-te Speicherzelle zugeordnet sein. In diesem Beispiel wären dann die ersten n1 Speicherzellen gerade die Speicherzellen, in die ein binärer Wert 0 geschrieben wurde, und die n2 restlichen Speicherzellen die Speicherzellen, in die ein binärer Wert 1 geschrieben wurde.In this way, the memory cells can be ordered according to the points in time at which the threshold value Sw is reached. For example, the first memory cell can be assigned to the earliest (first) point in time and the nth memory cell can be assigned to the latest (last) point in time. In this example, the first n 1 memory cells would then just be the memory cells into which a binary 0 value was written, and the n 2 remaining memory cells would be the memory cells into which a binary 1 value was written.
Beispielsweise gibt das Integral
Diese Spannung vi(t) kann mit dem Schwellwert Sw verglichen werden. Somit können die Zeitpunkte bestimmt werden, an denen das vorstehende Integral den Schwellwert Sw erreicht. Die erhaltenen Zeitpunkte können miteinander verglichen werden. Damit ist es möglich, zu bestimmen, ob der Zustand der Speicherzelle einem binären Wert 0 oder 1 entspricht.This voltage v i (t) can be compared to the threshold value Sw. Thus, the points in time at which the above integral reaches the threshold value Sw can be determined. The times obtained can be compared with one another. It is thus possible to determine whether the state of the memory cell corresponds to a binary value of 0 or 1.
Der Zeitpunkt ti kann dadurch bestimmt sein, dass
Über den Lesestrom bzw. das Zeitintegral des Lesestromes können die Widerstandswerte oder die Zustände der Speicherzellen miteinander verglichen werden. Schwankungen in den Widerstandswerten innerhalb der ersten n1 Zellen wirken sich auf die Zuordnung des binären Wertes 0 zu diesen Speicherzellen vorteilhaft nicht aus, solange diese Widerstandswerte nicht größer als ein Widerstandswert der zweiten n2 Speicherzellen sind. Entsprechend wirken sich Schwankungen in den Widerstandswerten innerhalb der zweiten n2 Zellen auf die Zuordnung des binären Wertes 1 zu diesen Speicherzellen vorteilhaft nicht aus, solange deren Widerstandswerte nicht kleiner als ein Widerstandswert der ersten n1 Speicherzellen sind.The resistance values or the states of the memory cells can be compared with one another via the read current or the time integral of the read current. Fluctuations in the resistance values within the first n 1 cells advantageously do not affect the assignment of the
Teilgruppen von Speicherzellensubgroups of memory cells
Beispielsweise kann es auch nicht erforderlich sein, eine Reihenfolge der n1 Speicherzellen mit gleichen ersten digitalen Werten oder eine Reihenfolge der n2 Speicherzellen mit gleichen zweiten digitalen Werten einer Gruppe von n Speicherzellen zu bestimmen. Die n1 Speicherzellen mit den ersten digitalen Werten bilden eine erste Teilgruppe und die n2 Speicherzellen mit den zweiten digitalen Werten bilden eine zweite Teilgruppe. Jede der Teilgruppen entspricht einem Teil der Gruppe von n Speicherzellen. Nachfolgend wird ein Beispiel für derartige Teilgruppen näher erläutert.For example, it may also not be necessary to determine an order of the n 1 memory cells with the same first digital values or an order of the n 2 memory cells with the same second digital values of a group of n memory cells. The n 1 memory cells with the first digital values form a first subgroup and the n 2 memory cells with the second digital values form a second subgroup. Each of the subgroups corresponds to a part of the group of n memory cells. An example of such subgroups is explained in more detail below.
Beispielsweise werden 2 Teilgruppen betrachtet, wobei für die Anzahl die Speicherzellen n1 und n2 der Teilgruppen gilt:
Beim Auslesen der physikalische Werte aus den Speicherzellen kann es vorteilhaft sein, keine Reihenfolge zwischen den n1 Speicherzellen der ersten Teilgruppe zu bestimmen, da in diese der gleiche digitale Wert geschrieben wurde.When reading out the physical values from the memory cells, it can be advantageous not to determine an order between the n 1 memory cells of the first subgroup, since the same digital value was written into them.
Beispielsweise werden n = 6 Speicherzellen S1,..., S6 betrachtet. Bei den Speicherzellen S1, S2, S3 handelt es sich um die n1 = 3 Speicherzellen der ersten Teilgruppe und bei den Speicherzellen S4, S5, S6 handelt es sich um die n2 = 3 Speicherzellen der zweiten Teilgruppe. Die Speicherzellen der ersten Teilgruppe werden mit dem Wert 0 und die Speicherzellen der zweiten Teilgruppe werden mit dem Wert 1 beschrieben.For example, n=6 memory cells S 1 , . . . , S 6 are considered. The memory cells S 1 , S 2 , S 3 are the n 1 = 3 memory cells of the first subgroup and the memory cells S 4 , S 5 , S 6 are the n 2 = 3 memory cells of the second subgroup. The memory cells of the first subgroup are written with the
Somit können durch eine zeitliche Integration der entsprechenden Leseströme Zeitpunkte t1, t2, t3, t4, t5 und t6 bestimmt werden, zu denen das Zeitintegral des jeweiligen Lesestroms einen vorgegebenen Schwellwert erreicht. Beispielsweise gilt gemäß
Die Zuordnung der in den Speicherzellen S1 bis S6 gespeicherten digitalen Werte 0 oder 1 kann erfolgen, indem bestimmt wird, dass für i = 4,5,6 und für j = 1, 2, 3
So ist es möglich, den n1 ersten Speicherzellen, deren Zeitintegral über den Lesestrom den Schwellwert Sw erreicht, einen ersten digitalen Wert und den n2 übrigen Speicherzellen einen zweiten digitalen Wert zuzuweisen. In diesem Fall kann es ausreichen festzustellen, ob eine der Speicherzellen zu den n1 ersten Speicherzellen gehört.It is thus possible to assign a first digital value to the n 1 first memory cells whose time integral via the read current reaches the threshold value Sw, and to assign a second digital value to the n 2 remaining memory cells. In this case it may be sufficient to determine whether one of the memory cells belongs to the n 1 first memory cells.
Es ist auch möglich, Verknüpfungen von analogen Signalen von Speicherzellen zu bilden und basierend auf diesen Verknüpfungen zu bestimmen, ob Speicherzellen ein erster digitaler Wert oder ein anderer digitaler Wert zugeordnet wird.It is also possible to form links from analog signals from memory cells and, based on these links, to determine whether memory cells are assigned a first digital value or another digital value.
Für eine Gruppe von n Speicherzellen und n1 erste Speicherzellen ergeben sich
Beispielsweise seien n = 6 Speicherzellen gegeben mit jeweils n1 = n2 = 3 ersten und zweiten Speicherzellen. Die n = 6 Speicherzellen bilden eine Gruppe von Speicherzellen S1 bis S6, in denen ein Codewort eines 3-aus-6-Codes gespeichert werden kann.For example, let n=6 memory cells be given, each with n 1 =n 2 =3 first and second memory cells. The n=6 memory cells form a group of memory cells S 1 to S 6 in which a code word of a 3-of-6 code can be stored.
Es soll zunächst der Fall beschrieben werden, dass kein Fehler auftritt. Beim Auslesen der Speicherzellen werden die Zeitpunkte t1 bis t6 verglichen, zu denen der Wert des Integrals über die Leseströme
Gilt beispielsweise
In den Speicherzellen S1 bis S6 wird beispielsweise das Codewort 101100 des 3-aus-6 Codes gespeichert und aus diesen Speicherzellen ausgelesen. Für die ersten drei Speicherzellen S1, S3 und S4 der geordneten Speicherzellen wird der Wert 1 und für die folgenden drei Speicherzellen S2, S5 und S6 der geordneten Speicherzellen wird der Wert 0 als ausgelesener Wert bestimmt.The code word 101100 of the 3-of-6 code, for example, is stored in the memory cells S 1 to S 6 and read from these memory cells. The
Gilt hingegen beispielsweise
Somit wird aus den Speicherzellen S1 bis S6 das gleiche Codewort 101100 des 3-aus-6 Codes ausgelesen. Eine Vertauschung der Reihenfolge innerhalb der Speicherzellen S1, S3 und S4, die den binären Wert 1 speichern oder eine Vertauschung der Reihenfolge innerhalb der Speicherzellen S2, S5 und S6, die den binären Wert 0 speichern, wirkt sich nicht auf das ausgelesene Codewort des 3-aus-6-Codes aus.Thus, the same code word 101100 of the 3-of-6 code is read from the memory cells S 1 to S 6 . Reversing the order within the memory cells S 1 , S 3 and S 4 storing the
Diese Eigenschaft ist vorteilhaft, da sich kleinere Schwankungen in den ausgelesenen physikalischen Werten, die den gleichen digitalen Werten entsprechen, beim Auslesen nicht auf die zugeordneten digitalen Werte auswirken.This property is advantageous because smaller fluctuations in the physical values read out, which correspond to the same digital values, do not affect the associated digital values when they are read out.
In diesem Beispiel sind die Speicherzellen S1, S3 und S4 zur Speicherung des Wertes 1 vorgesehen. In diese Speicherzellen wurden die Werte
Entsprechend sind die Speicherzellen S2, S5 und S6 zur Speicherung des Wertes 0 vorgesehen. In diese Speicherzellen wurden die Werte
Ist beispielsweise anstelle von
Beispiel: 3-wertige SpeicherzellenExample: 3-value memory cells
Nachfolgend wird beispielhaft ein Szenario betrachtet, bei dem pro Speicherzelle drei verschiedene digitale Werte 0, 1 und 2 gespeichert werden können.A scenario is considered below by way of example, in which three different
Die Häufigkeitsverteilungen 301 und 302 weisen einen Überlappungsbereich 304 auf und die Häufigkeitsverteilungen 302 und 303 weisen einen Überlappungsbereich 305 auf.
Gemäß einem Ausführungsbeispiel kann der physikalische Wert ein Widerstandswert sein.According to an embodiment, the physical value can be a resistance value.
Die Häufigkeitsverteilungen 401 und 402 weisen einen Überlappungsbereich 404 auf und die Häufigkeitsverteilungen 402 und 403 weisen einen Überlappungsbereich 405 auf.
Gemäß einem Ausführungsbeispiel kann der ausgelesene physikalische Wert eine Stromstärke sein.According to one embodiment, the physical value read may be a current strength.
Wird eine Stromstärke
Wird eine Stromstärke
Wird in die Speicherzelle Si der digitale Wert 2 geschrieben, so weist die Speicherzelle Si einen relativ großen Widerstandswert
Wird in die Speicherzelle Sj der digitale Wert 1 geschrieben, so weist die Speicherzelle Sj einen Widerstandswert
Wird in die Speicherzelle Sk der digitale Wert 0 geschrieben, dann weist die Speicherzelle Sk einen Widerstandswert
Ist in eine Speicherzelle Si der gleiche digitale Wert geschrieben worden wie in eine Speicherzelle Si, kann der Widerstandswert
Ebenso ist es möglich, dass der Lesestrom
Weiterhin ist es möglich, dass der Zeitpunkt ti, zu dem das Zeitintegral über den Lesestrom der Speicherzelle Si den vorgegebenen Schwellwert Sw erreicht, vor oder nach dem Zeitpunkt tj liegt, zu dem das Zeitintegral über den Lesestrom der Speicherzelle Sj den vorgegebenen Schwellwert Sw erreicht.Furthermore, it is possible that the point in time t i at which the time integral over the read current of the memory cell S i reaches the predetermined threshold value Sw is before or after the point in time t j at which the time integral over the read current of the memory cell S j reaches the predetermined Threshold Sw reached.
In diesem Fall bleibt also unbestimmt, ob ti < tj oder ti < tj gilt. Der Wert „unbestimmt“ wird hier auch durch das Symbol „—“ beschrieben.In this case it remains undetermined whether t i < t j or t i < t j . The value "undetermined" is also described here by the symbol "—".
BeispielExample
Beispielhaft wird eine Gruppe von n = 6 Speicherzellen S1 bis S6 betrachtet. Es gibt hierbei drei Teilgruppen mit jeweils zwei Speicherzellen, d.h. n1 = n2 = n3 = 2, wobei
- - in n1 = 2 ersten Speicherzellen der digitale Speicherzellenwert 2,
- - in n2 = 2 zweiten Speicherzellen der digitale Speicherzellenwert 1 und
- - in n3 = 2 dritten Speicherzellen der digitale Speicherzellenwert 0
gespeichert wird. Es gibt somit
- - in n 1 = 2 first memory cells the digital
memory cell value 2, - - in n 2 = 2 second memory cells the digital
memory cell value 1 and - - in n 3 = 2 third memory cells the digital
memory cell value 0
is saved. So there is
Möglichkeiten, zwei Zweien, zwei Einsen und zwei Nullen auf 6 Positionen zu verteilen und in 6 Speicherzellen mit drei digitalen (ternären) Speicherzellenwerten zu speichern.Ways to distribute two twos, two ones and two zeros to 6 positions and store them in 6 memory cells with three digital (ternary) memory cell values.
Im Unterschied dazu gibt es für n = 6 und n1 = n2 = 3 nur
Möglichkeiten, drei Einsen und drei Nullen auf 6 Positionen zu verteilen und in 6 Speicherzellen mit binären Speicherzellenwerten zu speichern, sodass durch Verwendung der drei ternären digitalen Werte 0, 1 und 2 gegenüber der Verwendung lediglich binärer Speicherzellenwerte 0 und 1 erheblich mehr Informationen in einer Gruppe von n Speicherzellen speicherbar ist.Possibilities to distribute three ones and three zeros in 6 positions and store them in 6 memory cells with binary memory cell values, so that by using the three ternary
So können in diesem Beispiel, in dem jede der Speicherzellen den Wert 0, 1 oder 2 annehmen kann, eine Anzahl von k = 6 Datenbits (mit 26 = 64 möglichen Belegungen) in n = 6 digitale Speicherzellenwerte transformiert und in n = 6 Speicherzellen gespeichert werden. Die 6 Speicherzellenwerte weisen jeweils
- - n1 = 2
erste digitale Werte 2, - - n2 = 2 zweite digitale Werte 1 und
- - n3 = 2 dritte digitale Werte 0 auf.
- - n 1 = 2 first
digital values 2, - - n 2 = 2 second
digital values 1 and - - n 3 = 2 third
digital values 0 on.
Die 6 Speicherzellenwerte bilden ein Codewort eines
Der Code hat
Mit k = 6 Bits sind 2k = 26 = 64 Binärwörter der Länge 6 in 64 der Codewörter des 2-,2-,2-aus-n-Codes umkehrbar eindeutig transformierbar.With k=6 bits, 2k = 26 =64 binary words of length 6 can be uniquely transformed into 64 of the code words of the 2, 2, 2 out of n code.
Die n Speicherzellenwerte werden von der Transformationsschaltung 1501 an Dateneingängen der Speicherzellen des Speichers 1502 bereitgestellt. Diese n Speicherzellenwerte bilden ein Codewort eines
Bei den Speicherzellenwerte handelt es sich beispielhaft um K-wertige digitale Werte.The memory cell values are, for example, K-value digital values.
Für die Speicherzellen S1 bis S6 werden beim Auslesen wie beschrieben die Zeitpunkte t1 bis t6 bestimmt, wann das Zeitintegral des Lesestromes den vorgegebenen Schwellwert Sw erreicht (oder überschreitet). Gilt beispielsweise
Es kann festgelegt sein, dass den ersten beiden Speicherzellen Si
Es kann auch festgelegt sein, dass den ersten beiden Speicherzellen Si
Eine fehlerhafte Zuordnung von digitalen Werten erfolgt nur
- - wenn sowohl der Lesestrom
2 als auch der Lesestrom3 in einem Überlappungsbereich liegen, in dem sowohl ein Lesestromfür den Wert 0 als auch fürden Wert 1 vorkommt oder - - wenn sowohl der Lesestrom
für den Wert 1 als auch ein Lesestromfür den Wert 2 vorkommt.
- - if both the reading current
2 as well as the read stream3 lie in an overlapping area in which both a read current for thevalue 0 and for thevalue 1 occurs or - - if both the reading current
value 1 and a read current for thevalue 2 occur.
Somit ist vorteilhaft eine fehlerfreie Zuordnung von digitalen Werten mit hoher Wahrscheinlichkeit auch für mehrwertige digitale Speicher gegeben, weil bezogen auf die 6 Speicherzellen nur für einen kleinen Teil der Speicherzellen eine fehlerhafte Zuordnung möglich ist und weil hierfür gleichzeitig die Leseströme von jeweils zwei Speicherzellen in einem Überlappungsbereich liegen müssen.Thus, there is advantageously an error-free assignment of digital values with a high degree of probability, even for multi-value digital memories, because, based on the 6 memory cells, an incorrect assignment is only possible for a small part of the memory cells and because for this purpose the read currents of two memory cells in each case are in an overlapping area at the same time have to lie.
Somit ist es von Vorteil, dass beim Auslesen der gespeicherten Speicherzellenwerte Lesefehler nur selten auftreten. Es können beim Auslesen die ausgelesenen physikalischen Werte oder die aus den ausgelesenen physikalischen Werten bestimmten Werte verschiedener Speicherzellen miteinander verglichen werden, was im Ergebnis dann einer wirksamen Reduzierung der Lesefehler entsprechen kann. Ein fehlerhaftes Resultat eines Vergleichs kann nur dann auftreten, wenn die beiden zu vergleichenden Werte gleichzeitig in einem Überlappungsbereich liegen.It is therefore advantageous that read errors only rarely occur when the stored memory cell values are read out. When reading out, the physical values read out or the values of different memory cells determined from the physical values read out can be compared with one another, which as a result can then correspond to an effective reduction in the read errors. An erroneous result of a comparison can only occur if the two values to be compared are in an overlapping area at the same time.
Es ist auch möglich, die als K-wertige Speicherzellenwerte in n Speicherzellen gespeicherten Werte unter Verwendung von Referenzwerten auszulesen, wenn in entsprechenden n Speicherzellen gespeicherte Codewörter einen (n1-, n2-, ..., nK-aus-n)-Code bilden.It is also possible to read out the values stored as K-value memory cell values in n memory cells using reference values if code words stored in corresponding n memory cells have a (n 1 -, n 2 -, ..., n K -out of n) -form code.
Beispiel: Vierwertige SpeicherzellenwerteExample: Four-valued memory cell values
Die vier Datenbits x1, x2, x3, x4 liegen am Eingang einer Transformationsschaltung 1701 an. Diese vier Datenbits werden anhand der Transformationsschaltung 1701 in die vier Speicherzellenwerte z1, z2, z3, z4 transformiert und in Speicherzellen S1, S2, S3, S4 eines Speichers 1702 gespeichert.The four data bits x 1 , x 2 , x 3 , x 4 are present at the input of a
Der Speicher 1702 umfasst in diesem Beispiel die Gruppe aus den n = 4 Speicherzellen S1, S2, S3, S4, wobei in jeder der Speicherzellen beispielhaft vier unterschiedliche Werte 0, 1, 2, 3 und 4 gespeichert werden können. Damit gibt es eine Speicherzelle pro Teilgruppe, d.h. es gilt n1 = n2 = n3 = n4 = 1.In this example, the
Im fehlerfreien Fall bilden die Speicherzellenwerte z1, z2, z3, z4 ein Codewort eines 1-,1-,1-,1-aus-4-Codes mit 4 · 3 · 2 · 1 = 24 möglichen Codewörtern. In der Gruppe mit n = 4 Speicherzellen können somit 24 unterschiedliche digitale Werte gespeichert werden.In the error-free case, the memory cell values z 1 , z 2 , z 3 , z 4 form a code word of a 1, 1, 1, 1 out of 4 code with 4×3×2×1=24 possible code words. 24 different digital values can thus be stored in the group with n=4 memory cells.
Jeder der Werte 0, 1, 2, 3 und 4 kann in einer der mehreren vierwertigen Speicherzellen des Speichers 1702 gespeichert werden.Each of the
Beispielhaft kann es sich bei dem aus dem Speicher 1702 ausgelesenen Wert um eine Stromstärke (einen Lesestrom) handeln, wobei sich abhängig von der Höhe dieser Stromstärke einer der Werte 0, 1, 2, 3 oder 4 ergibt.For example, the value read from the
Die Häufigkeitsverteilungen 501 und 502 weisen einen Überlappungsbereich 505, die Häufigkeitsverteilungen 502 und 503 weisen einen Überlappungsbereich 506 und die Häufigkeitsverteilungen 503 und 504 weisen einen Überlappungsbereich 507 auf.
Wird die Stromstärke WA(τ)i des Lesestroms der Speicherzelle Si über die Zeit t integriert, dann wird der vorgegebene Schwellwert Sw zu einem bestimmten Zeitpunkt ti erreicht.If the current strength W A (τ) i of the read current of the memory cell S i is integrated over time t, then the predefined threshold value Sw is reached at a specific point in time t i .
Wird die Stromstärke WA(τ)j des Lesestroms der Speicherzelle Sj über die Zeit t integriert, dann wird der vorgegebene Schwellwert Sw zu einem bestimmten Zeitpunkt tj erreicht.If the current strength W A (τ) j of the read current of the memory cell S j is integrated over time t, then the predefined threshold value Sw is reached at a specific point in time t j .
Ist beispielsweise in der Speicherzelle Si der Wert 3 gespeichert und ist in der Speicherzelle Sj einer der digitalen Werte 0, 1 oder 2 gespeichert, dann gilt tj < ti da der Lesestrom
Ist beispielsweise in der Speicherzelle Si der Wert 1 gespeichert und ist in der Speicherzelle Sj einer der Werte 3 oder 2 gespeichert, dann gilt tj > ti da der Lesestrom
Gilt beispielsweise t1 < t3 < t2 < t4, ergibt sich als Reihenfolge der Speicherzellen: S1, S3, S2, S4. Der Speicherzelle S1 kann der Wert 0, der Speicherzelle S3 der Wert 1, der Speicherzelle S2 der Wert 2 und der Speicherzelle S4 der Wert 3 zugeordnet werden.For example, if t 1 <t 3 <t 2 <t 4 , the sequence of the memory cells is: S 1 , S 3 , S 2 , S 4 . The
Am Eingang der Transformationsschaltung 1701 liegen die vier Datenbits x1, x2, x3, x4 an, und am Ausgang der Transformationsschaltung 1701 werden die Speicherzellenwerte z1, z2, z3, z4 ausgegeben. Diese in der Transformationsschaltung 1701 durchgeführte Transformation kann beispielsweise gemäß Tabelle 1 bestimmt sein. Tabelle 1
Die vier Datenbits x1, x2, x3, x4 können 16 verschiedene binäre Werte 0000, ... ,1111 annehmen, die allesamt in der vorstehenden Tabelle 1 gezeigt sind. Jede Zeile entspricht dabei einer von der Transformationsschaltung 1701 durchführbaren Transformation von Datenbits xi in ein Codewort zi des 1-,1-,1-,1-aus-4-Codes.The four data bits x 1 , x 2 , x 3 , x 4 can take on 16 different binary values 0000,...,1111, all of which are shown in Table 1 above. In this case, each row corresponds to a transformation, which can be carried out by the
Beispielsweise zeigt die dritte Zeile der Tabelle 1, dass den Datenbits 0010 das Codewort 3120 zugeordnet ist.For example, the third row of Table 1 shows that the code word 3120 is assigned to the data bits 0010.
Wie bereits ausgeführt wurde, gibt es 24 verschiedene Codewörter des 1-,1-,1-,1-aus-4-Codes. Diesen 24 Codewörtern stehen 16 verschiedene Werte für x1, x2, x3, x4 gegenüber. Gemäß der Tabelle 1 werden nur 16 der 24 möglichen Codewörter verwendet.As already stated, there are 24 different code words of the 1,1,1,1 out of 4 code. These 24 code words face 16 different values for x 1 , x 2 , x 3 , x 4 . According to Table 1, only 16 of the 24 possible code words are used.
Werden beim Auslesen der Speicherzellen S1, S2, S3, S4 vier Speicherzellenwerte z1, z2, z3, z4 bestimmt, die im fehlerfreien Fall ein Codewort des 1-,1-,1-,1-aus-4-Codes bilden, dann werden diese Speicherzellenwerte gemäß Tabelle 1 in die entsprechenden Datenbits x1, x2, x3, x4 transformiert.If, when reading out the memory cells S 1 , S 2 , S 3 , S 4 , four memory cell values z 1 , z 2 , z 3 , z 4 are determined which, in the error-free case, contain a code word of 1-,1-,1-,1-out -4 codes, then these memory cell values are transformed according to Table 1 into the corresponding data bits x 1 , x 2 , x 3 , x 4 .
Eine mögliche Rücktransformation ist in Tabelle 2 gezeigt. Tabelle 2
In der Tabelle 2 sind den 24 Codewörtern die 16 möglichen Belegungen der Datenbits zugeordnet, wobei für einen Teil der Codewörter (Zeilen 17 bis 24 in Tabelle 2) keine Datenbits existieren bzw. die Datenbits für diese Codewörter unbestimmt sind. Die Tabelle 2 zeigt somit die inverse Transformation zu Tabelle 1.In Table 2, the 24 code words are assigned the 16 possible assignments of the data bits, with some of the code words (lines 17 to 24 in Table 2) having no data bits or the data bits for these code words being undefined. Table 2 thus shows the inverse transformation of Table 1.
Beispielsweise zeigt Zeile 5 der Tabelle 1, dass den Datenbits 0100 das Codewort 3012 zugeordnet ist. Entsprechend zeigt Zeile 5 der Tabelle 2, dass dem Codewort 3012 die Datenbits 0100 zugeordnet sind.For example, row 5 of Table 1 shows that data bits 0100 are assigned the code word 3012. Correspondingly, line 5 of Table 2 shows that code word 3012 is assigned data bits 0100.
Für die Zeilen 17 bis 24 der Tabelle 2 sind die Datenbits unbestimmt. Bei einer Synthese einer inversen Transformationsschaltung können unbestimmte Datenbits als sogenannte „don't care“-Werte zur Schaltungsoptimierung verwendet werden. For rows 17 through 24 of Table 2, the data bits are undetermined. In a synthesis of an inverse transformation circuit, undetermined data bits can be used as so-called "don't care" values for circuit optimization.
Auch können die unbestimmten Datenbits auf einen beliebigen Wert, z.B. auf 0 gesetzt werden.The indefinite data bits can also be set to any value, e.g. to 0.
Beispiel: 11 Datenbits in 8 SpeicherzellenExample: 11 data bits in 8 memory cells
Beispielhaft können k = 11 Datenbits x1, ... , x11 in 8 Speicherzellen mit den Speicherzellenwerten z1, ... , z8 transformiert werden. Die Speicherzellenwerte sind Codewörter eines 2-,2-,2-,2-aus-8-Codes. Jeder Speicherzellenwert ist vierwertig (K = 4), d.h. pro Speicherzelle kann einer von vier verschiedenen Werten gespeichert werden.For example, k=11 data bits x 1 , . . . , x 11 can be transformed into 8 memory cells with memory cell values z 1 , . . . , z 8 . The memory cell values are code words of a 2, 2, 2, 2 out of 8 code. Each memory cell value has four values (K=4), ie one of four different values can be stored per memory cell.
Durch die 11 Datenbits können 211 = 2048 verschiedene Werte dargestellt werden. Der 2-,2-,2-,2-aus-8-Code umfasst
Codewörter. Diese 2520 Codewörter reichen aus, um alle 2048 binären Werte in Codewörter des 2-,2-,2-,2-aus-8-Codes zu transformieren.code words. These 2520 code words are enough to transform all 2048 binary values into code words of the 2,2,2,2 out of 8 code.
Beispiel: 9 Datenbits in 7 SpeicherzellenExample: 9 data bits in 7 memory cells
Auch können k = 9 Datenbits x1, ... , x9 in n = 7 Speicherzellen mit den Speicherzellenwerten z1, ... , z7 transformiert werden. Die Die Speicherzellenwerte sind Codewörter eines 2-,2-,2-,1-aus-7-Codes. Jeder Speicherzellenwert ist beispielhaft vierwertig (K = 4).Also, k=9 data bits x 1 ,...,x 9 can be transformed into n=7 memory cells with memory cell values z 1 ,...,z 7 . The memory cell values are codewords of a 2,2,2,1 of 7 code. Each memory cell value is, for example, four-valued (K=4).
Durch die 9 Datenbits können 29 = 512 unterschiedliche Werte dargestellt werden. Der 2-,2-,2-,1-aus-7-Code umfasst
Codewörter. Diese 630 Codewörter reichen aus, um alle 512 binären Werte in Codewörter des 2-,2-,2-,2-aus-7-Codes zu transformieren.code words. These 630 code words are enough to transform all 512 binary values into code words of the 2,2,2,2 out of 7 code.
Vorteilhaft ist beispielsweise, dass beim Auslesen und Bestimmen von digitalen Speicherzellenwerten, die Codewörter eines
Auslesen des Speichers mittels VergleicherReading out the memory using a comparator
Der Vergleicher 602 vergleicht die ausgelesenen Werte
Der Vergleicher 603 vergleicht die ausgelesenen Werte
Der Vergleicher 604 vergleicht die ausgelesenen Werte
Der Vergleicher 605 vergleicht die ausgelesenen Werte
Der Vergleicher 606 vergleicht die ausgelesenen Werte
Der Vergleicher 607 vergleicht die ausgelesenen Werte
Haben zwei Teilgruppen eine Größe von n1 = n2 = 2, dann können in der Gruppe mit n = 4 Speicherzellen S1 bis S4
Belegungen gespeichert werden.assignments are saved.
Für diese 6 Belegungen zeigt Tabelle 3 die Ausgabewerte y12, y13, y14, y23, y24, y34 der 6 Vergleicher 602 bis 607. Tabelle 3
Beispielsweise beschreibt die erste Zeile von Tabelle 3, dass die Speicherzellen S1 bis S4 mit den binären Werten 1100 belegt sind. Die Vergleicher 602 bis 607 geben daraufhin die binären Werte y13 = y14 = y23 = y24 = 1 aus. Da die Speicherzellen S1 und S2 beide mit dem binären Wert 1 belegt sind, werden von dem Vergleicher 602 die Werte
Somit sind in Tabelle 3 die Ausgabewerte eines Vergleichers unbestimmt, wenn die zu vergleichenden Ausgabewerte der zugeordneten Speicherzellen gleiche Werte aufweisen.Thus, in Table 3, the output values of a comparator are undetermined if the output values of the associated memory cells to be compared have the same values.
In der Spalte „Funktion“ sind den Zeilen der Tabelle 3 Boolesche Ausdrücke als je eine Konjunktion von negierten oder nicht-negierten Ausgabewerten der entsprechenden Vergleicher zugeordnet: Ist der Ausgabewert yij gleich 1, so erscheint der Ausgabewert in der Konjunktion; ist der Ausgabewert yij hingegen 0, so erscheint der negierte Ausgabewert
Für jede der 6 Belegungen der Speicherzellen S1 bis S4 mit Bits eines 2-aus-4 Codes nimmt genau eine der 6 Konjunktionen den Wert 1 an: So entspricht beispielsweise die Belegung 1001 der Speicherzellen gemäß der dritten Zeile in Tabelle 3 der Konjuktion
Die Vergleicher 602, 603, 606 und 607 geben die Werte y12 = 1, y13 = 1, y24 = 0 und y34 = 0 aus. Alle übrigen in Tabelle 3 gezeigten Konjunktionen haben in diesen Fall den Wert 0.The
Somit wird dadurch, dass die Konjunktion y12 Λ y13 Λ
Bestimmung der Belegung der SpeicherzellenDetermination of the occupancy of the memory cells
Die Werte y13, y14, y23 und y24 werden an die Eingänge des UND-Gatters 701 geführt. Die Werte y12, y14, y23 und y24 werden an die Eingänge des UND-Gatters 702 geführt. Die Werte y12, y13,
Weiterhin werden die Ausgänge der UND-Gatter 701 bis 706 wie folgt mit den Eingängen der ODER-Gatter 708 bis 711 verbunden: Der Ausgang des UND-Gatters 701 wird mit je einem der Eingänge der ODER-Gatter 708 und 709 verbunden. Der Ausgang des UND-Gatters 702 wird mit je einem der Eingänge der ODER-Gatter 708 und 710 verbunden. Der Ausgang des UND-Gatters 703 wird mit je einem der Eingänge der ODER-Gatter 708 und 711 verbunden. Der Ausgang des UND-Gatters 704 wird mit je einem der Eingänge der ODER-Gatter 709 und 710 verbunden. Der Ausgang des UND-Gatters 705 wird mit je einem der Eingänge der ODER-Gatter 709 und 711 verbunden. Der Ausgang des UND-Gatters 706 wird mit je einem der Eingänge der ODER-Gatter 710 und 711 verbunden.Furthermore, the outputs of the AND
An dem Ausgang des ODER-Gatters 708 wird die Belegung der Speicherzelle S1, an dem Ausgang des ODER-Gatters 709 wird die Belegung der Speicherzelle S2, an dem Ausgang des ODER-Gatters 710 wird die Belegung der Speicherzelle S3 und an dem Ausgang des ODER-Gatters 711 wird die Belegung der Speicherzelle S4 bereitgestellt.At the output of the
Somit visualisiert die Schaltungsanordnung gemäß
Beispiel: Dreiwertige SpeicherzellenExample: Trivalent memory cells
Nachfolgend wird ein Beispiel mit dreiwertigen Speicherzellen betrachtet, d.h. jede der Speicherzellen kann einen der Werte 0, 1 oder 2 annehmen, wobei beispielhaft 2 > 1 > 0 gelten soll.An example with three-value memory cells is considered below, i.e. each of the memory cells can assume one of the
Es wird der Fall betrachtet, dass die Gruppe n = 6 Speicherzellen aufweist und die Teilgruppen n1 = n2 = n3 = 2 Speicherzellen aufweisen. Somit kann pro Gruppe von 6 Speicherzellen zweimal der Wert 2, zweimal der Wert 1 und zweimal der Wert 0 gepeichert werden. Es gibt damit
Möglichkeiten, eine Gruppe von 6 Speicherzellen S1 bis S6 mit zwei Zweien, zwei Einsen und zwei Nullen zu belegen.Possibilities of assigning two twos, two ones and two zeros to a group of 6 memory cells S 1 to S 6 .
Wird beim Auslesen von Daten aus den Speicherzellen der ausgelesene Wert aller Speicherzellen paarweise verglichen, so werden 15 Vergleicher VGLij genutzt, um alle physikalischen Ausgabewerte der Speicherzellen S1 bis S6 zu vergleichen, wobei i, j = 1... 6 Indizes sind, die je eine der Speicherzellen bezeichnen. Somit vergleicht der Vergleicher VGLij die Speicherzelle Si mit der Speicherzelle Sj. Die 15 Vergleicher sind demnach:
Ein binärer Ausgabewert des Vergleichers VGLij wird mit yij bezeichnet, so dass es entsprechend die folgenden 15 binären Ausgabewerte gibt:
Für die Belegung 221100 der Speicherzellen S1 bis S6 zeigt Tabelle 4 die Ausgabewerte dieser 15 Vergleicher. Table 4 shows the output values of these 15 comparators for the assignment 221100 of the memory cells S 1 to S 6 .
Es ergibt sich folgende Konjunktion:
y13 The following conjunction results:
y 13
Diese Konjunktion weist 12 Werte der 15 Vergleicher auf. Es sind dies diejenigen Werte, die nicht unbestimmt sind.This conjunction has 12 values of the 15 comparators. These are the values that are not indeterminate.
Grundsätzlich gilt: Ein Wert 1 kennzeichnet einen nicht-invertierten oder nicht-negierten Wert yij und ein Wert 0 kennzeichnet einen invertierten oder negierten Wert
Für die Belegung 212100 der Speicherzellen S1 bis S6 zeigt Tabelle 5 die Ausgabewerte der 15 Vergleicher. Table 5 shows the output values of the 15 comparators for the assignment 212100 of the memory cells S 1 to S 6 .
Es ergibt sich folgende Konjunktion:
Die Konjunktion weist 12 Ausgabewerte der 15 Vergleicher auf.The conjunction has 12 output values from the 15 comparators.
Für die Belegung 001122 der Speicherzellen S1 bis S6 zeigt Tabelle 6 die Ausgabewerte der 15 Vergleicher. Table 6 shows the output values of the 15 comparators for the assignment 001122 of the memory cells S1 to S6 .
Es ergibt sich folgende Konjunktion:
Die Konjunktion weist 12 Ausgabewerte der 15 Vergleicher auf.The conjunction has 12 output values from the 15 comparators.
Für die verbleibenden Belegungen der Speicherzellen mit jeweils zwei Zweien, zwei Einsen und zwei Nullen ergeben sich die zugehörigen Konjunktionen entsprechend. Jeweils 12 der 15 Ausgabewerte (invertiert oder nicht), die nicht unbestimmt sind, bilden die entsprechenden Konjunktionen. Diese Konjunktionen nehmen den Wert 1 genau dann an, wenn in den Speicherzellen S1 bis S6 die ihnen entsprechenden Belegungen gespeichert sind und die aus den Speicherzellen ausgelesenen Werte
Beispiel: Transformation und Inverse TransformationExample: Transformation and Inverse Transformation
- - in n1 Speicherzellen n1 erste Werte,
- - in n2 Speicherzellen n2 zweite Werte, ⋮
- - in nK Speicherzellen nK K-te Werte
- - in n 1 memory cells n 1 first values,
- - in n 2 memory cells n 2 second values, ⋮
- - in n K memory cells n K Kth values
Die m Datenbits, die in der Gruppe aus n Speicherzellen gespeichert werden, können auch als m-Bit-Byte oder einfach als Byte bezeichnet werden. Als Variable für die Anzahl der Datenbits werden die Buchstaben m oder k verwendet.The m bits of data stored in the group of n memory cells may also be referred to as an m-bit byte or simply a byte. The letters m or k are used as variables for the number of data bits.
Dabei gilt
Eine Transformationsschaltung 801 führt eine Transformation TS(m,n) durch, die 2m Datenbits der Wortbreite m in 2m der N Werte z1, z2, ...,zn transformiert, wobei
- - eine Anzahl n1 der Werte von z1, z2, ..., zn gleich 0 sind,
- - eine Anzahl n2 der Werte von z1, z2, ..., zn gleich 1 sind, ... ⋮
- - eine Anzahl nK der Werte von z1, z2, ... ,zn gleich K - 1 sind.
- - a number n 1 of the values of z 1 , z 2 , ..., z n are equal to 0,
- - a number n 2 of the values of z 1 , z 2 , ..., z n are equal to 1, ... ⋮
- - a number n K of the values of z 1 , z 2 , ... , z n are equal to K-1.
Werden nicht alle 2m der Datenbits der Wortbreite m benötigt, ist es möglich, nur die benötigten Datenbits zu transformieren und in den Speicherzellen zu speichern.If not all 2 m of the data bits of word length m are required, it is possible to transform only the required data bits and store them in the memory cells.
Die Transformationsschaltung 801 ist beispielsweise so konfiguriert, dass sie die Transformation T (m, n) von Bitwerten x1, ... , xm der Wortbreite m in Werte z1, ..., zn der Wortbreite n abbildet, die in den Speicherzellen S1 bis Sn gespeichert werden sollen, wobei
- - n1 der Werte von z1,... ,zn den Wert 0,
- - n2 der Werte von z1,... ,zn den Wert 1, ... ⋮
- - nK der Werte von z1,... , zn den Wert (K - 1)
- - n 1 of the values of z 1 ,... ,z n the
value 0, - - n 2 of the values of z 1 ,... ,z n the
value 1, ... ⋮ - - n K of the values of z 1 ,... , z n the value (K - 1)
Die m Bits x1,...,xm können beispielsweise als Datenbits bezeichnet werden. Insbesondere ist es möglich, solche Datenbits zu unterscheiden von Werten, die in die Speicherzellen des Speichers geschrieben werden. Handelt es sich bei den Bits x1 bis xm beispielsweise um Bits eines Codewortes eines Fehlercodes zur Fehlererkennung oder Fehlerkorrektur, können diese Bits auch mindestens ein Prüfbit des Fehlercodes umfassen oder nur Prüfbits des Fehlercodes sein.The m bits x 1 ,...,x m can be referred to as data bits, for example. In particular, it is possible to distinguish such data bits from values that are written into the memory cells of the memory. If the bits x 1 to x m are, for example, bits of a code word of an error code for error detection or error correction, these bits can also include at least one check bit of the error code or just be check bits of the error code.
Die Speicherzellen S1 bis Sn werden ausgelesen und die ausgelesenen Werte
Die Transformationsschaltung 801 und die Transformationsschaltung 802 sind vorzugsweise derart eingerichtet, dass für die Transformation T (m, n) und die hierzu inverse Transformation T-1 (n, m) gilt:
Werden die Bits x1 bis xm als m-Bit-Byte bezeichnet, so wird ein m-Bit-Byte als ein Wort z1 bis zn in n Speicherzellen des Speichers gespeichert, wobei eine vorbestimmte Anzahl von n1 ersten Speicherzellen einen ersten Wert, eine vorbestimmte Anzahl von n2 zweiten Speicherzellen einen zweiten Wert, usw. und eine vorbestimmte Anzahl nK von K-ten Speicherzellen einen K-ten Wert speichern.If the bits x 1 to x m are referred to as m-bit bytes, an m-bit byte is stored as a word z 1 to z n in n memory cells of the memory, with a predetermined number of n 1 first memory cells having a first value, a predetermined number of n 2 second memory cells store a second value, etc. and a predetermined number n K of K th memory cells store a K th value.
Beispiel: Mit K = 2 speichern n1 erste Speicherzellen einen ersten Wert 0 und n2 zweite Speicherzellen speichern einen zweiten Wert 1. In den Speicherzellen S1 bis Sn werden dann Codewörter eines n2-aus-n-Codes gespeichert.Example: With K=2, n 1 first memory cells store a
Weiteres Beispiel: Können in jeder der Speicherzellen S1 bis Sn vier Werte gespeichert werden, ist es möglich in n1 Speicherzellen den ersten Wert, in n2 Speicherzellen den zweiten Wert, in n3 Speicherzellen den dritten Wert und in n4 Speicherzellen den vierten Wert zu speichern. Dabei gilt: n1 + n2 + n3 + n4 = n.Another example: If four values can be stored in each of the memory cells S 1 to S n , it is possible to store the first value in n 1 memory cells, the second value in n 2 memory cells, the third value in n 3 memory cells and the third value in n 4 memory cells store fourth value. Where: n 1 + n 2 + n 3 + n 4 = n.
Wie beschrieben, ist es möglich, physikalische Eigenschaften (z.B. physikalische Werte) von verschiedenen gelesenen Speicherzellen miteinander zu vergleichen. Dadurch können Fehlerwahrscheinlichkeiten zumindest teilweise reduziert werden. Nur wenn beide der beim Auslesen paarweise verglichenen Werte gleichzeitig in dem Überlappungsbereich von Häufigkeitsverteilungen der physikalischen Werte liegen, kann ein Fehler auftreten und nicht bereits dann, wenn nur ein einzelner Wert in so einem Überlappungsbereich liegt.As described, it is possible to compare physical properties (e.g. physical values) of different read memory cells with one another. As a result, error probabilities can be at least partially reduced. An error can only occur if both of the values compared in pairs during reading out are simultaneously in the overlapping area of frequency distributions of the physical values, and not when only a single value is in such an overlapping area.
Beispiel: Fig.9Example: Fig.9
Jede der Transformationsschaltungen 902 bis 904 führt eine Transformation T(4,6) durch. Die Transformation T(4, 6) kann in Form einer Tabelle beschrieben sein, die jedem der 16 möglichen 4-Bit-Werte ein unterschiedliches Codewort eines 3-aus-6-Codes zuordnet. Ein Beispiel ist in Tabelle 7 gezeigt. Tabelle 7
Eine solche Tabelle kann beispielsweise in Form einer kombinatorischen (logischen) Schaltung oder in Form eines Nurlesespeichers realisiert sein.Such a table can be implemented, for example, in the form of a combinatorial (logical) circuit or in the form of a read-only memory.
Sind die Werte oder die Speicherzellenwerte, die in den Speicherzellen gespeichert werden, binäre Werte, so können diese Werte auch als Speicherbits bezeichnet werden.If the values or the memory cell values that are stored in the memory cells are binary values, then these values can also be referred to as memory bits.
In dem beschriebenen Beispiel führt die Invertierung der Datenbits zu einer Invertierung der Speicherbits.In the example described, the inversion of the data bits results in an inversion of the memory bits.
Optional können verschiedene 4-Bit-Bytes mit funktional gleicher Transformation bzw. einer gleichwirkenden Transformationsschaltung in Speicherwerte, insbesondere Speicherbits, transformiert werden. Ebenso ist es möglich, verschiedene 4-Bit-Bytes mit funktional unterschiedlichen Transformationen oder Transformationsschaltungen in Speicherbits oder allgemein in Speicherwerte zu transformieren. Beispielsweise können zumindest zwei der Transformationsschaltungen 902 bis 904 unterschiedliche Transformationen implementieren. Entsprechend stellen dann die Transformationsschaltungen 905 bis 907 die passenden inverse Transformationen bereit.Optionally, different 4-bit bytes can be transformed into storage values, in particular storage bits, with a functionally identical transformation or a transformation circuit having the same effect. It is also possible to transform different 4-bit bytes into memory bits or generally into memory values with functionally different transformations or transformation circuits. For example, at least two of the transformation circuits 902-904 may implement different transformations. Correspondingly, the
Beispielsweise können Transformationen vorgesehen sein, bei denen eine Invertierung des 4-Bit-Bytes x zu einer Invertierung der digitalen Werte z führt.For example, transformations can be provided in which an inversion of the 4-bit byte x leads to an inversion of the digital values z.
Beim Auslesen aus dem Speicher 901 werden Speicherbits
Jede der Transformationsschaltungen 905, 906 und 907 realisiert eine Transformation
Aufgrund von Fehlern können sich die aus dem Speicher 901 ausgelesenen Speicherbits
Ist kein Fehler aufgetreten, dann gilt für die ersten 4 Datenbits x1 bis x4, die ersten 6 transformierten Bits z1 bis z6, die ersten 6 rückzutransformierenden Bits
Für die zweiten 4 Datenbits und die dritten 4 Datenbits gilt dies entsprechend.This applies accordingly to the second 4 data bits and the third 4 data bits.
Der Vollständigkeit halber ist eine Tabelle 8 gezeigt, die eine Transformation
Für nicht in der Tabelle 8 aufgeführte Werte der Speicherbits
Fehlererkennung und/oder FehlerkorrekturError detection and/or error correction
Sind fehlerhaften Speicherbits durch die inverse Transformationsschaltung 905 fehlerhafte Datenbits zugeordnet, dann kann ein fehlerhaftes 4-Bit-Byte durch einen Fehlercode erkannt und/oder korrigiert werden. Dies wird nachfolgend beispielhaft erläutert.If erroneous memory bits are associated with erroneous data bits by the
Datenbits x liegen am Eingang eines Coders 1001 an, an dessen Ausgang entsprechend einem Fehlercode C1 codierte Bits y = Cod(x) bereitgestellt werden.Data bits x are present at the input of a
Es ist möglich, dass der Fehlercode C1 ein Bytefehler korrigierender und/oder erkennender Code, beispielsweise ein Reed-Solomon Code, ist. Es ist auch möglich, dass der Fehlercode C1 ein Bitfehler korrigierender und/oder erkennender Code, beispielsweise ein BCH-Code, ein Hsiao-Code, ein Hamming-Code, ein Low-Density-Parity-Code oder ein anderer Code ist.It is possible that the error code C 1 is a byte error correcting and/or detecting code, for example a Reed-Solomon code. It is also possible that the error code C 1 is a code that corrects and/or detects bit errors, for example a BCH code, a Hsiao code, a Hamming code, a low-density parity code or another code.
Die am Ausgang des Coders 1001 ausgegebenen Bits (oder Bytes) y = Cod(x) werden mittels einer Transformationsschaltung 1002 in digitale Werte z(y) transformiert, die in Speicherzellen eines Speichers 1003 geschrieben werden. Die Transformationsschaltung 1002 stellt eine Transformation TS bereit.The bits (or bytes) y=Cod(x) output at the output of the
In einer Gruppe von jeweils n Speicherzellen werden n1 erste Werte in n1 ersten Speicherzellen, n2 zweite Werte in n2 zweiten Speicherzellen, usw. bis nK K-te Werte in nK K-ten Speicherzellen gespeichert. Dabei gilt: n1 + n2 + ... + nK = n.In a group of n memory cells each, n 1 first values are stored in n 1 first memory cells, n 2 second values in n 2 second memory cells, etc. up to n K K th values in n K K th memory cells. The following applies: n 1 + n 2 + ... + n K = n.
In einem nächsten Schritt werden Werte z'(y) aus den entsprechenden Speicherzellen des Speichers 1003 ausgelesen. Es ist möglich, dass sich die Werte z'(y) aufgrund von mindestens einem Fehler von den eingeschriebenen Werten z(y) unterscheiden. Ist kein Fehler aufgetreten, gilt z(y) = z'(y).In a next step, values z′(y) are read from the corresponding memory cells of
Die aus dem Speicher 1003 ausgelesenen Werte z'(y) werden durch eine inverse Transformationsschaltung 1004, die eine Transformation
Ist kein Fehler aufgetreten, gilt
Ein Korrekturwertbildner 1005 bildet entsprechend dem Fehlercode C1 einen Korrekturwert e entsprechender Wortbreite, wobei die Komponenten des Korrekturwerts e mit den Werten y' in einer XOR-Schaltung 1007 komponentenweise XORverknüpft werden. Die XOR-Schaltung ist eine Schaltung die eine Exklusiv-Oder-Verknüpfung der Eingangssignale durchführt und das Ergebnis dieser Verknüpfung am Ausgang bereitstellt. Die XOR-Schaltung liefert am Ausgang dann den logischen Wert 1, wenn die Signale an den Eingängen gleich sind. Sind die Signale an den Eingängen unterschiedlich, liefert die XOR-Schaltung am Ausgang den logischen Wert 0.A
Am Ausgang der XOR-Schaltung 1007 wird ein korrigierter Wert ycor bereitgestellt. Ist ein durch den Code C1 mittels des Korrekturwertbildners 1005 korrigierbarer Fehler aufgetreten, sind die korrigierten Bits gleich den codierten Bits, d.h.
Weiterhin ist eine Fehlererkennungsschaltung 1006 gezeigt, anhand derer bestimmbar ist, ob ein Fehler und/oder ein bestimmter Typ eines Fehlers, der unter Verwendung des Fehlercodes C1 erkennbar ist, vorliegt. Der Fehlererkennungsschaltung 1006 wird der Wert y' zugeführt und die Fehlererkennungsschaltung 1006 gibt eine Fehlerinformation 1008 aus.Furthermore, an
Ist der Fehlercode beispielsweise ein 1-Bytefehler korrigierender und 2-Bytefehler erkennender Code, dann kann die Fehlererkennungsschaltung 1006 verschiedene Fehlerinformationen 1008 ausgeben, je nachdem, ob kein Fehler, ein 1-Bytefehler oder ein 2-Bytefehler aufgetreten ist. Beispielsweise kann die Fehlerinformation 1008 als eine Bitfolge 00, 01 oder 10 (in diesem Beispiel also eine Bitfolge mit zwei Bits) codiert sein.If the error code is, for example, a 1-byte error-correcting code and 2-byte error-detecting code, then the
Optional können die Fehlererkennungsschaltung 1006 und die Korrekturwertbildner 1005 gemeinsam oder teilweise gemeinsam realisiert sein.Optionally, the
Ist der Fehlercode C1 ein separierbarer Code, bei dem die Datenbits bei der Codierung durch den Coder 1001 nicht verändert werden, dann sind, wenn kein Fehler aufgetreten ist oder wenn ein durch den Fehlercode C1 korrigierbarer Fehler aufgetreten ist, von der XOR-Schaltung 1006 ausgegebene Bits gleich den entsprechenden Datenbits, die in den Coder 1001 eingegeben wurden und die nach ihrer Transformation durch die Transformationsschaltung 1002 in dem Speicher 1003 gespeichert wurden.If the error code C 1 is a separable code in which the data bits are not changed during coding by the
Datenbits x liegen am Eingang einer Transformationsschaltung 1101 an und werden in Werte z(x) transformiert. Die Werte z(x) der Transformationsschaltung 1101 liegen am Eingang eines Coders 1102 an, der derart eingerichtet ist, dass an seinem Ausgang unter Verwendung eines Fehlercodes C2 codierte Daten Cod(z(x)) bereitgestellt werden.Data bits x are present at the input of a
Der Coder 1102 kann eine Kodierfunktion und eine Prüfbit-Transformierfunktion bereitstellen.The
Beispielhaft soll angenommen werden, dass der Fehlercode C2 ein separierbarer Code ist, so dass die Werte z(x), die am Eingang des Coders 1102 anliegen, in den von dem Coder bestimmten Ausgabedaten Cod(z(x)) unverändert enthalten und um Prüfbits entsprechend dem Fehlercode C2 ergänzt sind.As an example, it should be assumed that the error code C 2 is a separable code, so that the values z(x) that are present at the input of the
Der Coder 1102 ist in diesem Beispiel so ausgestaltet, dass er die an seinem Eingang anliegenden Werte z(x) unverändert an seinem Ausgang (hierbei kann der Eingang als auch der Ausgang jeweils mehrere Leitungen aufweisen, wobei jede Leitung einem Bit zugeordnet ist) ausgibt und zusätzlich Prüfbits entsprechend dem Fehlercode C2 aus den Bits z(x) bildet und diese Prüfbits vor der Speicherung in einen Speicher 1103 noch transformiert.In this example, the
Die Werte z(x) bilden beispielsweise Gruppen von n Bits, die aus Codewörtern eines n1-aus-n-Codes bestehen. Die von dem Coder 1102 bereitgestellten transformierten Prüfbits können dabei ebenfalls n1-aus-n-Codewörter sein oder solche umfassen.For example, the values z(x) form groups of n bits consisting of code words of an n 1 -of-n code. The transformed check bits provided by the
Es ist beispielsweise möglich, dass die durch den Fehlercode C2 aus den Bits z(x) bestimmten Prüfbits durch den Coder 1102 als Bits bereitgestellt werden, bei denen jeweils zwei Bits zueinander komplementär sind. Dabei wird jedes Prüfbit in zwei Bits transformiert und in zwei Speicherzellen gespeichert. Beispielsweise kann ein Prüfbit 1 in die Bits 10 und ein Prüfbit 0 in die Bits 01 transformiert und in jeweils zwei Speicherzellen gespeichert werden.It is possible, for example, for the check bits determined from the bits z(x) by the error code C 2 to be provided by the
Auch andere Transformationen der Prüfbits in Speicherzellenwerte sind möglich. So ist es beispielsweise denkbar, die Prüfbits verdreifacht oder doppelt und/oder in anderer Weise fehlertolerant in den Speicher 1103 zu schreiben.Other transformations of the check bits into memory cell values are also possible. It is thus conceivable, for example, to write the check bits into the
In einer Gruppe von jeweils n Speicherzellen des Speichers 1103 werden n1 erste Werte in einer ersten Anzahl von n1 ersten Speicherzellen, n2 zweite Werte in einer zweiten Anzahl von n2 zweiten Speicherzellen, usw. bis nK K-te Werte in einer vorbestimmten K-ten Anzahl von nK K-ten Speicherzellen gespeichert. Dabei gilt: n1 +n2 +... +nK = n.In a group of n memory cells of the
In der in
Datenbits x liegen am Eingang einer Transformationsschaltung 1201 an und werden in Codewörter [3 - aus - 6]1 transformiert, wobei jeweils 4 Bits der Datenbits in ein 3-aus-6-Codewort transformiert werden. Diese 3-aus-6-Codewörter [3 - aus - 6]1 werden am Ausgang der Transformationsschaltung 1201 bereitgestellt. Jedem der 16 4-Bit-Werte ist durch die Transformationsschaltung 1201 umkehrbar eindeutig ein Codewort des 3-aus-6-Codes zugeordnet.Data bits x are present at the input of a
Der Ausgang der Transformationsschaltung 1201 ist mit dem Eingang eines Prüfbitbildners 1202 verbunden, der Prüfbits Pr für die Bits der 3-aus-6-Codewörter entsprechend einem Fehlercode bestimmt und an seinem Ausgang bereitstellt.The output of the
Beispielsweise erzeugt der Prüfbitbildner 1202 Prüfbits eines BCH-Codes. Die Bits, die von der Transformationsschaltung 1201 ausgegeben werden und die Prüfbits, die von dem Prüfbitbildner 1202 ausgegeben werden, bilden dann im fehlerfreien Fall ein Codewort des BCH-Codes.For example, the
Entsprechend kann anstatt des BCH-Codes auch ein anderer Fehlercode eingesetzt werden. Auch können mehrere Fehlercodes in Kombination miteinander verwendet werden.Accordingly, another error code can also be used instead of the BCH code. Several error codes can also be used in combination with one another.
Der Ausgang der Transformationsschaltung 1201 ist ebenfalls mit dem Eingang eines Speichers 1204 verbunden, so dass die aus den Datenbits mittels der Transformationsschaltung 1201 erhaltenen 3-aus-6-Codewörter (auch ohne Prüfbits) in dem Speicher 1204 speicherbar sind.The output of the
Der Ausgang des Prüfbitbildners 1202 ist mit dem Eingang eines Prüfbittransformierers 1203 verbunden, der die bereitgestellten Prüfbits in 3-aus-6-Codewörter [3 - aus - 6]2 transformiert und an seinem Ausgang bereitstellt.The output of the
Der Ausgang des Prüfbittransformierers 1203 ist mit dem Eingang des Speichers 1204 verbunden. Beispielsweise können hierfür separate Dateneingänge des Speichers genutzt werden. Somit können die 3-aus-6-Codewörter [3 - aus - 6]2, die basierend auf den Prüfbits Pr von dem Prüfbittransformierer 1203 generiert wurden, in dem Speicher 1204 gespeichert werden.The output of
Im fehlerfreien Fall werden in dem Speicher 1204 solche Bits gespeichert, die 3-aus-6-Codewörtern sind. Diese Bits werden auch als Speicherzellenwerte bezeichnet.In the error-free case, those bits are stored in the
Aus den Datenbits x werden durch die Transformationsschaltung 1201 Codewörter [3 - aus - 6]1 des 3-aus-6-Codes gebildet, die in den Speicher 1204 geschrieben werden. Diese Codewörter [3 - aus - 6]1 bilden Speicherzellenwerte für Speicherzellen des Speichers 1204.From the data bits x, the
Aus den Bits der Codewörter [3 - aus - 6]1 werden durch einen Prüfbitbildner 1202 entsprechend dem verwendeten Fehlercode Prüfbits Pr bestimmt und an seinem Ausgang ausgegeben. Der Prüfbittransformierer 1203 transformiert die Prüfbits Pr in Codewörter [3 - aus - 612 des 3-aus-6-Codes. Diese Codewörter [3 - aus - 6]2 bilden Speicherzellenwerte für Speicherzellen des Speichers 1204, die aus den Prüfbits Pr gebildet wurden.From the bits of the code words [3-out-6] 1 , check bits Pr are determined by a
In dem Speicher 1204 werden also die Codewörter [3 - aus - 6]1 und die Codewörter [3 - aus - 6]2 gespeichert. Beim Speichern oder beim Lesen können Bitfehler auftreten, anhand derer die Codewörter [3 - aus - 6]1 und die Codewörter [3 - aus - 6]2 in fehlerhafte Bits verfälscht werden.Thus, in the
Beim Lesen werden Bits
Der Ausgang des Speichers 1204, an dem die Bits
Im fehlerfreien Fall gibt der inverse Prüfbittransformierer 1205 an seinem Ausgang die gleichen Prüfbits Pr aus, die von dem Prüfbitbildner 1202 gebildet wurden.If there are no errors, the inverse
Die eventuell fehlerhaften Prüfbits Pr' sind die Prüfbits der Bits
Der Ausgang des Speichers 1204 und der Ausgang des inversen Prüfbittransformierers 1205 ist jeweils mit einem Eingang eines Korrektors 1206 verbunden. Der Korrektor 1206 korrigiert die Bits
Sind eventuell aufgetretene Fehler durch den verwendeten Fehlercode korrigierbar, gilt:
An dem Ausgang des Korrektors 1206 werden diese Bits
Liegt kein Fehler vor oder ist ein aufgetretener Fehler durch den Fehlercode C korrigierbar, gilt
Die beschriebene Schaltungsanordnung ist ein Ausführungsbeispiel, bei dem die Fehlerkorrektur von Speicherzellenwerten durch einen Fehlercode erfolgt. Die binären Speicherzellenwerte sind in diesem Ausführungsbeipiel Codewörter eines 3-aus-6-Codes. Der 3-aus-6-Code dient zur Bildung von Speicherzellenwerten. Die Fehlerkorrektur der Speicherzellenwerte kann mit einem Fehlercode, beispielsweise einem Hamming-Code, einem Hsiao-Code, einem BCH-Code oder einem anderen Code erfolgen.The circuit arrangement described is an exemplary embodiment in which the error correction of memory cell values takes place using an error code. In this exemplary embodiment, the binary memory cell values are code words of a 3-of-6 code. The 3-of-6 code is used to form memory cell values. The memory cell values can be error-corrected using an error code, for example a Hamming code, a Hsiao code, a BCH code or another code.
Somit werden Datenbits in Speicherzellenwerte transformiert und für die Bits der Speicherzellenwerte werden Prüfbits eines Fehlercodes bestimmt. Diese Prüfbits werden nun ebenfalls in Speicherzellenwerte transformiert. Die Speicherzellenwerte der transformierten Bits und der transformierten Prüfbits werden in dem Speicher gespeichert. Bei Auslesen aus dem Speicher werden dann zunächst die Speicherzellenwerte, die den Prüfbits entsprechen, in Prüfbits zurück transformiert. Die Speicherzellenwerte, die den Datenbits entsprechen, werden unter Verwendung der zurück transformierten Prüfbits und unter Verwendung des Fehlercodes in einem üblichen Korrektor in korrigierte Speicherzellenwerte korrigiert. Die korrigierten Speicherzellenwerte, die den Datenbits entsprechen, können dann durch eine inverse Transformation in korrigierte Datenbits zurück transformiert werden.Thus, data bits are transformed into memory cell values and check bits of an error code are determined for the bits of the memory cell values. These check bits are now also transformed into memory cell values. The memory cell values of the transformed bits and the transformed check bits are stored in memory. When reading from the memory, the memory cell values that correspond to the check bits are then first transformed back into check bits. The memory cell values corresponding to the data bits are corrected to corrected memory cell values in a conventional corrector using the retransformed check bits and using the error code. The corrected memory cell values, which correspond to the data bits, can then be transformed back into corrected data bits by an inverse transformation.
Neben dem beschriebenen Speicherzellenwerten und dem beschriebenen 3-aus-6-Code können auch andere Speicherzellenwerte, beispielsweise Codewörter eines 4-aus-8-Codes, entsprechend verwendet werden.In addition to the described memory cell values and the described 3-out-of-6 code, other memory cell values, for example code words of a 4-out-of-8 code, can also be used accordingly.
Im Unterschied zu dem in
Beispiel: 3-aus-6-CodeExample: 3 out of 6 code
Nachfolgend wird beispielhaft eine Gruppe von n = 6 Speicherzellen angenommen mit zwei Teilgruppen je n1 = n2 = 3 Speicherzellen. Somit können in den n = 6 Speicherzellen 3-aus-6-Codewörter mit jeweils dreimal dem binären Wert 0 und dreimal dem binären Wert 1 gespeichert werden.A group of n=6 memory cells is assumed below by way of example, with two subgroups each having n 1 =n 2 =3 memory cells. Thus, 3-out-of-6 code words, each with three times the
Es gibt
Eine mögliche Zuordnung von in 6 Speicherzellen S1 bis S6 als 3-aus-6-Codeworte gespeicherte binäre 4-Bit-Werte zeigt Tabelle 9. Die letzte Spalte der Tabelle 9 ist mit „4-Bit“ überschrieben; dort werden die 4-Bit-Werte bitweise von 0 bis 16 (vergleiche vorletzte Spalte) hochgezählt. Zu jedem 4-Bit-Wert gibt es genau ein Codewort des hier beispielhaft verwendeten 3-aus-6-Codes. Dabei zeichnet sich der 3-aus-6 Code dadurch aus, dass in jedem Codewort genau dreimal der Wert 1 (oder der Wert 0) vorkommt. Für die n = 6 Speicherzellen gibt es 20 - 16 = 4 Codewörter, die „übrig“ sind, d.h. keinen zugeordneten 4-Bit-Wert haben. Hier in dem Beispiel der Tabelle 9 sind das die letzten vier Zeilen der Tabelle, bei denen in der Spalte „4-Bit“ viermal das Symbol „-“ steht.Table 9 shows a possible assignment of binary 4-bit values stored in 6 memory cells S 1 to S 6 as 3-of-6 code words. The last column of Table 9 is titled “4-bit”; there the 4-bit values are incremented bit-by-bit from 0 to 16 (compare the penultimate column). For each 4-bit value there is exactly one code word of the 3-out-of-6 code used here as an example. The 3-out-of-6 code is characterized by the fact that the value 1 (or the value 0) occurs exactly three times in each code word. For the n = 6 memory cells there are 20 - 16 = 4 code words that are "left over", ie have no associated 4-bit value. Here in the example in Table 9, these are the last four rows of the table, in which the “4-Bit” column contains the symbol “-” four times.
Detektion des schnellsten LesestromsDetection of the fastest read current
Diese Schaltungsanordnung ermöglicht es diejenigen drei Speicherzellen zu bestimmen, deren Zeitintegral über den Lesestrom am schnellsten den vorbestimmten Schwellwert Sw erreicht.This circuit configuration makes it possible to determine those three memory cells whose time integral over the read current reaches the predetermined threshold value Sw the fastest.
Es gibt
Es werden jeweils die drei Ausgänge der Speicherzellen, die in den ersten 16 Zeilen der Tabelle 9 mit 0 belegt sind, mit den Eingängen eines NICHT-ODER-Gatters Tabelle 9
Die drei Ausgänge der Speicherzellen S4, S5 und S6, die entsprechend der ersten Zeile der Tabelle 9 den Wert 0 aufweisen, werden an die drei Eingänge des NICHT-ODER-Gatters 1301 geführt. Die drei Ausgänge der Speicherzellen S3, S5 und S6, die entsprechend der zweiten Zeile der Tabelle 9 den Wert 0 aufweisen, werden an die drei Eingänge des NICHT-ODER-Gatters 1302 geführt. Die drei Ausgänge der Speicherzellen S1, S3 und S5, die entsprechend der Zeile 14 der Tabelle 9 den Wert 0 aufweisen, werden an die drei Eingänge des NICHT-ODER-Gatters 1303 geführt. Die drei Ausgänge der Speicherzellen S1, S2 und S5, die entsprechend der Zeile 15 der Tabelle 9 den Wert 0 aufweisen, werden an die drei Eingänge des NICHT-ODER-Gatters 1304 geführt.The three outputs of the memory cells S 4 , S 5 and S 6 , which have the
Dieser Ansatz wird entsprechend auch auf die Zeilen 3 bis 13 angewandt, wonach pro Zeile ein eigenes NICHT-ODER-Gatter vorgesehen ist, dessen drei Eingänge mit denjenigen Speicherzellen der Zeile verbunden sind, die den Wert 0 aufweisen. This approach is also applied correspondingly to
Es liegt nur an dem Ausgang desjenigen NICHT-ODER-Gatters 1301 bis 1304 der Wert 1 an, dessen Eingänge alle den Wert 0 aufweisen. Mit anderen Worten liefert nur dasjenige NICHT-ODER-Gatter 1301 bis 1304 an seinem Ausgang den Wert 1, das mit dem zugehörigen Codewort gemäß der Tabelle 9 verknüpft ist. Da die Kombinationen der Verbindungen der Eingänge mit Speicherzellen an allen der NICHT-ODER-Gatter 1301 bis 1304 unterschiedlich sind (jedes Codewort enthält eine unterschiedliche Anordnung von drei Nullen), liegt zu einer Zeit nur einmal der Wert 1 an den Ausgängen der NICHT-ODER-Gatter 1301 bis 1304 an.The
Die NICHT-ODER-Gatter 1305 und 1306 veranschaulichen beispielhaft eine zweite Ebene der Verknüpfung von Logiksignalen in
Die Ausgänge der NICHT-ODER-Gatter 1305 bis 1306 der zweiten Ebene sind mit je einem Eingang des NICHT-UND-Gatters 1307 verbunden. Am Ausgang des NICHT-UND-Gatters 1307 wird ein Signal 1308 bereitgestellt.The outputs of the second level NOR
Das NICHT-UND-Gatter liefert an seinem Ausgang nur dann den Wert 0, wenn alle seine Eingänge den Wert 1 aufweisen. Sobald einer der Eingänge den Wert 0 aufweist, hat das Signal 1308 den Wert 1. Wie vorstehend ausgeführt wurde, kann bei Auftreten von drei Nullen in den Speicherzellen nur eines der NICHT-ODER-Gatter 1301 bis 1304 an seinem Ausgang von dem Wert 0 auf den Wert 1 wechseln. Entsprechend wechselt das an den Ausgang des betroffenen NICHT-ODER-Gatters 1301 bis 1304 angeschlossene NICHT-ODER-Gatter 1305 bis 1306 von dem Wert 1 auf den Wert 0. Dieser Wert 0 bewirkt, dass das Signal 1308 auf den Wert 1 wechselt.The NAND gate only supplies the
In dem in
Das Signal 1308 am Ausgang des NICHT-UND-Gatters 1307 kann zeitlich abgetastet („gesampelt“) werden.The
Wird beim Abtasten das erste Mal der Wert 1 für das Signal 1308 bestimmt, so kann das Signal 1308 als ein „hold-Signal“ für 6 Latches verwendet werden, die den jeweiligen Speicherelementen S1 bis S6 nachgeschaltet sind. Dies wird im Hinblick auf
Der Signalverstärker 1401 bestimmt ein Zeitintegral des physikalischen Werts
Zur Funktion des Latches, das auch als Auffangregister oder zustandsgesteuertes Flipflop bezeichnet wird, sei beispielsweise auf „de.wikipedia.org/wiki/Latch“ verwiesen.For the function of the latch, which is also referred to as a catch register or state-controlled flip-flop, see “de.wikipedia.org/wiki/Latch”, for example.
Die Logikschaltung 1414 bestimmt die ersten drei Nullen, d.h. die schnellsten drei Nullen, die an den Ausgängen der Latches 1407 bis 1412 auftreten uns setzt dann das Hold-Signal 1413 auf den Wert 1.The
Entsprechend gelten: Der Signalverstärker 1402 bestimmt ein Zeitintegral des physikalischen Werts
Schwellwert Sw, dann liegt zu dem Zeitpunkt t am Ausgang des Signalverstärkers 1402 der digitale Wert 1 an. Ist das Zeitintegral zu dem Zeitpunkt t größer als der Schwellwert Sw, dann liegt am Ausgang des Signalverstärkers 1402 der digitale Wert 0 an. Der Ausgang des Signalverstärkers 1402 ist mit dem ersten Eingang eines Latches 1408 verbunden, an dessen zweitem Eingang das Hold-Signal 1413 anliegt. Der Ausgang des Latches 1408 ist mit dem zweiten Eingang der Logikschaltung 1414 verbunden. Der Signalverstärker 1403 bestimmt ein Zeitintegral des physikalischen Werts
Beispielhaft zeigt ein Diagramm 1415 einen Lesestrom über der Zeit für Signalverstärker 1401. Hiernach erreicht der Lesestrom an dem Signalverstärker 1401 zu einem Zeitpunkt t1 den Schwellwert Sw. Entsprechend sind in
Solange das Integral des Lesestroms bis zu dem Zeitpunkt ti kleiner als der Schwellwert Sw ist, gibt der jeweilige Signalverstärker den Wert 1 aus; ist das Integral des Lesestroms ab dem Zeitpunkt ti größer als der Schwellwert Sw, gibt der jeweilige Signalverstärker den Wert 0 aus.As long as the integral of the read current is less than the threshold value Sw up to the point in time t i , the respective signal amplifier outputs the
In dem in
Die Logikschaltung 1414 kann beispielsweise durch die in
Claims (21)
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102017103347.5A DE102017103347B4 (en) | 2017-02-17 | 2017-02-17 | PROCESSING OF DATA IN MEMORY CELLS OF A MEMORY |
TW107100236A TWI664639B (en) | 2017-02-17 | 2018-01-03 | Memory Cell Data Processing |
KR1020180018601A KR102079196B1 (en) | 2017-02-17 | 2018-02-14 | Processing data in memory cells of a memory |
JP2018024702A JP6602904B2 (en) | 2017-02-17 | 2018-02-15 | Processing data in memory cells of memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102017103347.5A DE102017103347B4 (en) | 2017-02-17 | 2017-02-17 | PROCESSING OF DATA IN MEMORY CELLS OF A MEMORY |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102017103347A1 DE102017103347A1 (en) | 2018-08-23 |
DE102017103347B4 true DE102017103347B4 (en) | 2023-07-20 |
Family
ID=63046077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102017103347.5A Active DE102017103347B4 (en) | 2017-02-17 | 2017-02-17 | PROCESSING OF DATA IN MEMORY CELLS OF A MEMORY |
Country Status (4)
Country | Link |
---|---|
JP (1) | JP6602904B2 (en) |
KR (1) | KR102079196B1 (en) |
DE (1) | DE102017103347B4 (en) |
TW (1) | TWI664639B (en) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102018124296B4 (en) * | 2018-10-02 | 2024-06-20 | Infineon Technologies Ag | COMPENSATION OF READING ERRORS |
US10963185B2 (en) | 2018-11-20 | 2021-03-30 | Micron Technology, Inc. | Memory sub-system for performing wear-leveling adjustments based on memory component endurance estimations |
CN111352754B (en) * | 2018-12-21 | 2023-09-15 | 中国石油天然气集团有限公司 | Error detection and correction method for data storage and data storage device |
US10884663B2 (en) | 2019-03-14 | 2021-01-05 | Western Digital Technologies, Inc. | Executable memory cells |
US10884664B2 (en) | 2019-03-14 | 2021-01-05 | Western Digital Technologies, Inc. | Executable memory cell |
DE102019107139A1 (en) | 2019-03-20 | 2020-09-24 | Infineon Technologies Ag | TRANSFORMATION OF BINARY SIGNALS READ FROM A MEMORY |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110296274A1 (en) | 2010-05-31 | 2011-12-01 | International Business Machines Corporation | Data encoding in solid-state storage devices |
US20130176780A1 (en) | 2011-01-04 | 2013-07-11 | Lsi Corporation | Detection and decoding in flash memories with error correlations for a plurality of bits within a sliding window |
DE102014112947A1 (en) | 2013-09-26 | 2015-03-26 | International Business Machines Corporation | Estimate State Cell Levels on Memory Cells |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0225118A (en) * | 1988-07-14 | 1990-01-26 | Matsushita Electric Ind Co Ltd | Code converter and decoder |
JP3213434B2 (en) * | 1993-03-25 | 2001-10-02 | 新日本製鐵株式会社 | Nonvolatile semiconductor memory device |
JP3866674B2 (en) * | 1993-12-28 | 2007-01-10 | 株式会社東芝 | Storage system |
JP4099844B2 (en) * | 1998-01-21 | 2008-06-11 | ソニー株式会社 | Memory device |
WO2007132453A2 (en) * | 2006-05-12 | 2007-11-22 | Anobit Technologies Ltd. | Distortion estimation and cancellation in memory devices |
KR100879560B1 (en) | 2006-12-04 | 2009-01-22 | 삼성전자주식회사 | Method for data training using error detection code and system adapted to the same |
US8335977B2 (en) * | 2007-12-05 | 2012-12-18 | Densbits Technologies Ltd. | Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated BCH codes and/or designation of “first below” cells |
US8880783B2 (en) * | 2011-07-05 | 2014-11-04 | Kandou Labs SA | Differential vector storage for non-volatile memory |
US8427875B2 (en) | 2010-12-07 | 2013-04-23 | Silicon Motion Inc. | Method and memory controller for reading data stored in flash memory by referring to binary digit distribution characteristics of bit sequences read from flash memory |
US8732560B2 (en) * | 2012-05-08 | 2014-05-20 | Infineon Technologies Ag | Method and device for correction of ternary stored binary data |
US8996951B2 (en) * | 2012-11-15 | 2015-03-31 | Elwha, Llc | Error correction with non-volatile memory on an integrated circuit |
KR101545512B1 (en) * | 2012-12-26 | 2015-08-24 | 성균관대학교산학협력단 | Semiconductor memory apparatus, verify read method and system |
US9196320B2 (en) * | 2013-12-13 | 2015-11-24 | Infineon Technologies Ag | Method, apparatus and device for data processing |
DE102015215401B4 (en) * | 2015-08-12 | 2020-10-01 | Infineon Technologies Ag | Storage device and method for correcting a stored bit sequence |
-
2017
- 2017-02-17 DE DE102017103347.5A patent/DE102017103347B4/en active Active
-
2018
- 2018-01-03 TW TW107100236A patent/TWI664639B/en active
- 2018-02-14 KR KR1020180018601A patent/KR102079196B1/en active IP Right Grant
- 2018-02-15 JP JP2018024702A patent/JP6602904B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110296274A1 (en) | 2010-05-31 | 2011-12-01 | International Business Machines Corporation | Data encoding in solid-state storage devices |
US20130176780A1 (en) | 2011-01-04 | 2013-07-11 | Lsi Corporation | Detection and decoding in flash memories with error correlations for a plurality of bits within a sliding window |
DE102014112947A1 (en) | 2013-09-26 | 2015-03-26 | International Business Machines Corporation | Estimate State Cell Levels on Memory Cells |
Also Published As
Publication number | Publication date |
---|---|
DE102017103347A1 (en) | 2018-08-23 |
JP2018133087A (en) | 2018-08-23 |
KR20180095468A (en) | 2018-08-27 |
TWI664639B (en) | 2019-07-01 |
KR102079196B1 (en) | 2020-02-21 |
TW201832232A (en) | 2018-09-01 |
JP6602904B2 (en) | 2019-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102017103347B4 (en) | PROCESSING OF DATA IN MEMORY CELLS OF A MEMORY | |
DE69721076T2 (en) | METHOD AND DEVICE FOR CORRECTING MULTI-LEVEL STORAGE CELL ARRANGEMENTS USING NESTLING | |
DE69932962T2 (en) | Coding method and memory arrangement | |
DE60001370T2 (en) | METHOD AND DEVICE FOR DETECTING DOUBLE BIT ERRORS AND CORRECTING ERRORS CAUSED BY COMPONENT ERRORS | |
DE102015201384B4 (en) | Apparatus and method for improving data storage by data inversion | |
DE102011085602B4 (en) | Apparatus and method for correcting at least one bit error in a coded bit sequence | |
DE102018105434B4 (en) | Method and system for scanning erased flash memory pages with cross-reference to related applications | |
DE112011100371T5 (en) | Method, apparatus and computer program product for decoding a codeword | |
DE2060643B2 (en) | Circuit arrangement for correcting individual errors | |
DE102013007692A1 (en) | Method and device for correcting ternary stored binary data | |
DE102017130591B4 (en) | Method and device for error correction coding based on data compression | |
DE102015113414B4 (en) | Error correction using WOM codes | |
DE112011101852B4 (en) | Decode LDPC code | |
DE69317766T2 (en) | Error correction device for digital data for correcting single errors (sec), double errors (ded) and multiple single-byte errors (sbd) and for correcting single-byte errors of an odd number (odd sbc) | |
DE102018131613A1 (en) | Error detection by group error | |
DE102014215252A1 (en) | EFFECTIVE ERROR CORRECTION OF MULTI-BIT ERRORS | |
DE102013222136B4 (en) | Circuit and method for multi-bit correction | |
DE102016104012A1 (en) | Processing a data word | |
DE102019113970B4 (en) | DETECTION OF ADDRESSING ERRORS | |
DE102005022107B9 (en) | Apparatus and method for determining a position of a bit error in a bit string | |
DE102013219088B9 (en) | Circuit arrangement and method for realizing check bit compaction for cross-parity codes | |
DE102018126685B3 (en) | Processing of data | |
DE102017107431B4 (en) | Methods and devices for error correction coding based on high rate generalized concatenated codes | |
DE102020100541A1 (en) | DETERMINATION OF A RESULTING DATA WORD WHEN ACCESSING A MEMORY | |
DE102016115272A1 (en) | MEMORY WITH DIFFERENT RELIABILITIES |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division | ||
R020 | Patent grant now final | ||
R082 | Change of representative |