DE60112795T2 - Datenverarbeitungseinrichtung mit einer speicherstelle, in der daten gemäss einem wom-code gespeichert werden - Google Patents

Datenverarbeitungseinrichtung mit einer speicherstelle, in der daten gemäss einem wom-code gespeichert werden Download PDF

Info

Publication number
DE60112795T2
DE60112795T2 DE60112795T DE60112795T DE60112795T2 DE 60112795 T2 DE60112795 T2 DE 60112795T2 DE 60112795 T DE60112795 T DE 60112795T DE 60112795 T DE60112795 T DE 60112795T DE 60112795 T2 DE60112795 T2 DE 60112795T2
Authority
DE
Germany
Prior art keywords
codeword
bits
memory location
signals
update
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.)
Expired - Lifetime
Application number
DE60112795T
Other languages
English (en)
Other versions
DE60112795D1 (de
Inventor
Sebastian Egner
P. Franciscus WIDDERSHOVEN
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NXP BV
Original Assignee
Koninklijke Philips Electronics NV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of DE60112795D1 publication Critical patent/DE60112795D1/de
Application granted granted Critical
Publication of DE60112795T2 publication Critical patent/DE60112795T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C17/00Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards
    • G11C17/005Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards with a storage element common to a large number of data, e.g. perforated card

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf eine Datenverarbeitungsanordnung mit einer Speicherstelle zur Speicherung eines Codewortes zum Codieren aufeinander folgender Datenwerte entsprechend einem WOM-Code; mit einem Wahrscheinlichkeitsdetektor, vorgesehen zum Erzeugen von Wahrscheinlichkeitssignalen, je für eine betreffende Aktualisierung zu einem an der Speicherstelle codierten Datenwort, wobei jedes Wahrscheinlichkeitssignal angibt, ob, gegeben das aktuelle Codewort an der Speicherstelle, die Aktualisierung realisierbar ist, und mit einem Eingang zum Empfangen eines neuen Datenwertes. Die vorliegende Erfindung bezieht sich auch auf ein Verfahren zum Aktualisieren eines Codewortes an einer Speicherstelle, wobei dieses Verfahren die nachfolgenden Verfahrensschritte umfasst: das Speichern eines Codewortes zum Codieren aufeinander folgender Datenwerte entsprechend einem WOM-Code an einer Speicherstelle, das Erzeugen von Wahrscheinlichkeitssignalen, je für eine betreffende Aktualisierung zu einem an der Speicherstelle codierten Datenwort, wobei jedes Wahrscheinlichkeitssignal angibt, ob, gegeben das aktuelle Codewort an der Speicherstelle, die Aktualisierung realisierbar ist, und das Empfangen eines neuen Datenwertes.
  • Eine derartige Verarbeitungsanordnung und ein derartiges Verfahren sind aus dem US Patent Nr. 4.691.299 bekannt. In einem WOM-Code wird ein Datenwort in eine Anzahl Bits an einer Speicherstelle codiert. Der Code wird entworfen, so dass jedes Mal, dass das Datenwort geändert wird, das neue Datenwort dadurch geschrieben werden kann, dass an die Speicherstelle nur Bits gesetzt werden, ohne dass Bits rückgestellt werden. Die ist besonders nützlich für viele Speichertypen, wobei das Stellen und Rückstellen symmetrische Vorgänge sind, und zwar in dem Sinne, dass Rückstellung, falls nicht unmöglich, viel mehr Aufwand erfordert als das Stellen.
  • Ein bekannter Typ eines WOM-Codes ist der sog. Lineare WOM-Code. In dem bekannten linearen WOM-Code enthält die Speiserstelle ebenso viele Bits wie es mögliche Werte der Daten gibt, weniger eins. Das heißt, wenn die Daten k-Bits enthalten (beispielsweise k = 8), dann enthält die Speicherstelle n = (2**k) – 1 Bits (beispielsweise n = 255). Jedes Bit an der Speicherstelle ist mit einem anderen Nicht Null möglichen Wert der Daten assoziiert, auch als Maskenvektor bezeichnet. Wenn die Daten aus dem an der Speicherstel le gespeicherten Codewort decodiert werden, fügt man die Maskenvektoren hinzu, die mit denjenigen Bits assoziiert sind, die gestellt worden sind (das Wort "hinzufügen" wird an dieser Stelle in einem allgemeinen Sinn verwendet: es kann sich auf eine Addierung Modulo2**k beziehen, aber es kann sich auch auf bitweise exklusiv- oder der Bits des Maskenvektors auf demselben Signifikanzpegel beziehen).
  • Der Content der Speicherstelle startet mit allen Null-Bits. Der erste Datenwert kann einfach dadurch geschrieben werden, dass ein einziges Bit gestellt wird, dessen Maskenvektor dem datenwert entspricht. Bei nachfolgenden Erzeugungen kann es notwendig sein, mehr als nur ein einziges Bit gleichzeitig zu stellen, immer so, dass die Summe der Maskenvektoren der Bits, die gestellt wurden, sich zu einer erforderlichen Änderung in dem codierten Datenwert summieren. Unglücklicherweise ist die Selektion der Bits, die gestellt werden sollen, ein komplexes Problem, wenn es nicht möglich ist, die Daten durch Stellung eines einzigen Bits zu ändern (wenn das Bit, dessen Maske der erforderlichen Änderung entspricht, bereits gestellt worden ist). Normalerweise erfordert Codierung die Suche nach einer geeigneten Kombination von Bits. Die Zeit, erforderlich für die Suche nimmt zu, je nachdem die Anzahl Bits an der Stelle zunimmt. Die Notwendigkeit, um die Zeit für diese Suche innerhalb angemessener Grenzen zu halten, bedeutet, dass die Anzahl Bits an der Speicherstelle gering gehalten werden soll.
  • Es ist daher u. a. eine Aufgabe der vorliegenden Erfindung, die Anzahl Bits, die zum Speichern von WOM-Codeworten in der Datenverarbeitungsanordnung verwendet werden können, zu steigern, und zwar ohne eine außergewöhnliche Steigerung der Suchzeit zur Codierung.
  • Diese Aufgabe wird dadurch erfüllt, dass eine Datenverarbeitungsanordnung geschaffen wird, gekennzeichnet durch den kennzeichnenden Teil des Anspruchs 1. Wenn das Codewort aktualisiert werden muss um einen neuen Datenwert darzustellen, bestimmt die Anordnung, welche Aktualisierungen des Datenwortes mit Hilfe durchführbarer einfacher Bitaktualisierungen zu dem WOM-Codewort verwirklicht werden können, was durch Durchführbarkeitssignale signalisiert wird. Die Durchführbarkeitssignale für die jeweiligen Aktualisierung werden unter Ansteuerung der neuen Datenwerte geleitet um Paare von Durchführbarkeitssignalen für Aktualisierungen zusammen zu bringen, die zusammen ein WOM-Codewort erzeugen, das den neuen Datenwert codiert. Es wird ein Paar selektiert, in dem die beiden Durchführbarkeitssignale die Durchführbarkeit angeben und das Codewort wird entsprechend den in dem Paar beteiligten Aktualisierungen aktualisiert. Auf diese Weise lassen sich Zwei-Bit-Aktualisierungen finden mit einer Suchzeit, die kaum von der Anzahl Bits in dem Codewort abhängig ist.
  • Eine Ausführungsform der Anordnung verwirklich eine Leitung mit einer Verbindungsschaltung, die eine Anzahl Schichten mit Subschaltungen aufweist, die je die Durchführbarkeitssignale abhängig von einem betreffenden Bit der Änderung in codierten Daten leiten, notwendig gemacht durch das neue Datenwort. Die Suchzeit entspricht der Verzögerung durch die Schichten hindurch, die nur logarithmisch von der Anzahl Bits in dem Codewort abhängig ist, das verschiedene Aktualisierungen codiert. Die Hardware skaliert etwas mehr als linear mit dieser Anzahl Bits. Vorzugsweise werden zwei Durchführbarkeitssignale in einem Paar derartiger Signale, das betrachtet wird als eine durchführbare Zwei-Bit-Aktualisierung zu detektieren, werden je durch die Hälfte der Schichten (plus oder minus eine) geleitet, bevor detektiert wird, ob beide Durchführbarkeit angeben. Auf diese Weise wird die Verzögerung minimiert, bevor die beiden Signale den Koinzidenzdetektor erreichen.
  • Bei einer weiteren Ausführungsform wird die Speicherstelle, die das codierte Datenwort speichert, rückgestellt, wenn der neue Datenwert nicht durch Einstellung von zwei oder weniger Bits codiert werden kann. Dies verringert die Suchzeit durch Beschneidung der Suche. Selbstverständlich bringt eine derartige Beschneidung einen Verlust an der Anzahl Male, dass Daten geschrieben werden können; mit sich. Es hat sich aber herausgestellt, dass insbesondere für größere Codeworte dieser Verlust ziemlich klein ist, sogar mehr, wenn also jede der Anzahl Aktualisierungen mehr verwirklicht werden kann durch Einstellung von mehr als nur ein Bit in dem Ausgangscodewort bevor Daten geschrieben worden sind.
  • Vorzugsweise werden Daten aus dem WOM-Code dadurch decodiert, dass Maskenvektoren, die mit den betreffenden Bits an der Speicherstelle assoziiert sind, summiert werden. Auch wird vorzugsweise ein WOM-Code verwendet, wobei eine Anzahl Maskenvektoren dadurch verwirklicht werden kann, dass einzelne der vielen Bits, die einem gleichen Maskenvektor entsprechen, gestellt werden. Dies steigert die Anzahl Male, dass Daten in den Speicher geschrieben werden können, und zwar ohne wesentliche Steigerung der Zeit, erforderlich zum Suchen nach geeigneten Aktualisierungen.
  • In einer Ausführungsform werden die Durchführbarkeitssignale dadurch erzeugt, dass detektiert wird, ob bestimmte Bits, die demselben Maskenvektor entsprechen, noch nicht gestellt worden sind. Vorzugsweise werden die Bits, die demselben Maskenvektor entsprechen, zunächst beim Decodieren summiert, danach durch Summierung der Maskenvektoren, für welche die Summe der summierten Bits gestellt wurde. Dies reduziert die Hardware, erforderlich zum Codieren bzw. Decodieren.
  • Bei einer weiteren Ausführungsform werden nicht alle Maskenvektoren durch die gleiche Anzahl Bits an der Speicherstelle verwirklicht. Auf diese Weise kann das Codewort auf einfache Art und Weise an den verfügbaren Speicher für das Codewort angepasst werden.
  • Ausführungsbeispiele der Erfindung sind in der Zeichnung dargestellt und werden im Folgenden näher beschrieben. Es zeigen:
  • 1 eine Datenverarbeitungsanordnung,
  • 2 eine Graphik der WOM-Speicherrate gegen Datenwortgröße,
  • 3 eine Graphik der WOM-Speicherrate gegen Codewortgröße,
  • 4 eine Detektorschaltung,
  • 5 eine Zwei-Bit-Aktualisierungsdetektionsschaltung,
  • 6 eine weitere Zwei-Bit-Aktualisierungsdetektionsschaltung,
  • 7 eine Schicht einer Kreuzverbindungsschaltung.
  • 1 zeigt eine Datenverarbeitungsanordnung. Die Schaltungsanordnung enthält einen Prozessor 10 und eine WOM-Speichereinheit 12. Der Prozessor 10 hat einen Dateneingang 100, einen Datenausgang 102 und einen Adressenausgang 104. Die WOM-Speichereinheit 12 enthält einen Speicher 120, einen Decoder 121, einen Subtrahierer 122, eine durchführbare Aktualisierungsdetektionsschaltung 123, eine Einzelbit entsprechende Aktualisierungsdetektionsschaltung 124, eine Aktualisierungsschaltung 125, eine Kreuzverbindungsschaltung 126, einen Koinzidenzdetektor 127 und einen Arbiter 128.
  • Der Adressenausgang 104 des Prozessors 10 ist mit einem Adresseneingang des Speichers 120 verbunden. Von dem Speicher 120 ist ein Datenausgang mit dem Decoder 121, der durchführbaren Aktualisierungsdetektionsschaltung 123 und der Aktualisierungsschaltung 125 gekoppelt. Von dem Decoder 121 ist ein Decodierausgang mit dem Dateneingang 100 des Prozessors 10 gekoppelt. Der Decodierausgang des Decoders 121 und der Datenausgang 102 des Prozessors 10 sind mit dem Subtrahierer 122 gekoppelt. Ein Ausgang des Subtrahierers 122 und der durchführbaren Aktualisierungsdetektionsschaltung 123 sind mit einer Einzelbit entsprechenden Aktualisierungsdetektionsschaltung 124 gekoppelt, von der an sich wieder ein Ausgang mit der Aktualisierungsschaltung 125 gekoppelt ist. Von der Aktualisierungsschaltung 125 ist ein Schreibausgang mit dem Speicher 120 gekoppelt.
  • Der Ausgang der durchführbaren Aktualisierungsdetektionsschaltung 123 ist mit zwei Eingängen der Kreuzverbindungsschaltung 126 gekoppelt. Die Ausgänge der Kreuzverbindungsschaltung 126 sind mit einem zweiten Eingang des Koinzidenzdetektors 127 gekoppelt. Der Ausgang des Subtrahierers 122 ist mit einem Steuereingang der Kreuzverbindungsschaltung 126 gekoppelt. Der Ausgang des Koinzidenzdetektors 127 ist mit dem Arbiter 128 gekoppelt. Von dem Arbiter 128 ist ein Steuereingang mit dem Ausgang des Subtrahierers 122 gekoppelt und Ausgänge sind mit der Aktualisierungsschaltung 125 gekoppelt.
  • Im Betrieb liest der Prozessor 10 Daten aus der WOM-Speichereinheit und/oder liest Daten in die WOM-Speichereinheit 12. Beim Lesen liefert der Prozessor dem Speicher 120 eine Adresse, wobei der Speicher seinerseits ein WOM-Codewort aus einer adressierten Stelle erfasst und das WOM-Codewort dem Decoder 121 liefert. Das WOM-Codewort hat eine Breite von n Bits. In Reaktion auf das Codewort decodiert der Decoder 121 ein Datenwort aus dem WOM-Codewort und liefert dem Dateneingang 100 des Prozessors 10 das decodierte Datenwort. Das Datenwort hat eine Breite von k Bits (k < n).
  • WOM-Codes sind Codes, die für Speicher entworfen sind, in denen es viel schwieriger ist (wenn nicht unmöglich), Bits zurück zu stellen als Bits zu stellen. Beispiele derartiger Speicher sind ein PROM-Speicher oder ein Flash-EEPROM-Speicher. Der WOM-Code definiert eine Beziehung zwischen dem Codewort X in dem Speicher 12 und dem Datencodewort Y, erhalten durch Codierung dieses Codewortes X. Diese Beziehung ist derart entworfen, dass, wenn ein Codewort X0, das einen ersten Datenwortwert Y0 codiert, in dem Speicher gespeichert wird, das Codewort X0 dadurch aktualisiert werden kann, dass Bits derart gesetzt werden, dass das aktualisierte Codewort einen zweiten Datenwortwert Y1 codiert, ohne dass überhaupt Bits in dem Codewort X0 zurückgesetzt werden, Derartige Aktualisierungen, die dadurch verwirklicht werden können, dass Bits gesetzt werden, ohne dass Bits zurückgesetzt werden, werden als durchführbar bezeichnet.
  • Die Qualität eines WOM-Codes kann aus der Anzahl T aufeinander folgender Erzeugungen von Datenwerten gemessen werden, die in dem Codewort dadurch codiert werden können, dass Bits gesetzt werden, ohne dass welche zurückgesetzt werden. Ein Maß der Qualität, als die Rate des WOM-Codes bezeichnet, ist das Verhältnis zwischen der Anzahl Bits k*T in den Erzeugungen, geteilt durch die Anzahl Bits n, die zum Speichern dieser k*T Bits verwendet werden: R = kT/n.
  • Es hat sich herausgestellt, dass die Rate R Werte im Wesentlichen 1 überschreitend, möglich sind, zunehmend, wenn k und n größer gemacht werden.
  • Eine Rate Rmin kann für die Schlimmstfall-Situationen bestimmt werden, wobei der T-Wert genommen wird, der unter den meist ungünstigen Serien von Datenwerten auftritt. Dies ist ein relevanter Parameter für WOM-Speicher, an deren Speicherstelle es unmöglich ist die codierten Daten dadurch zu aktualisieren, dass in dem Speicher Bits gesetzt werden ohne dass Bits gesetzt werden.
  • In dem Fall, dass der Speicher zurückgesetzt werden kann, sei es auf Kosten einer wesentlichen Verzögerung, wie in dem Fall eines EEPROMs oder eines Flash-EEPROMs, ist es mehr relevant, die mittlere Rate Rav zu bestimmen, indem der Medianwert der T-Werte aller möglichen Serien mit Datenwerten genommen wird. Rav ist indikativ für die Frequenz F, um die der Speicher zurückgesetzt werden soll (F = 1/T) und folglich für die Verzögerung, zugezogen durch die Zurücksetzung und Verschleiß des Speichers (für Speicher, die eine begrenzte Anzahl Rückstellzyklen durchführen können, bevor sie durch Verschleiß unzuverlässig werden).
  • Ein Beispiel eines WOM-Codes ist ein sog. Linearer WOM-Code, in dem das decodierte Datenwort bestimmt wird aus: Y = SUMiXi*Wiwas die Summe über i von Produkten Xi*Wi ist, wobei i n Bit-Positionen in dem Codewort indiziert, wobei Xi der Inhalt des Codewortes an der Bit-Position i ist und wobei Wi ein der Bit-Position zugeordneter k-Bit Maskenvektor ist. Vorzugsweise sind alle möglichen k-Bit Nicht-Null Bitvektoren als Maskenvektoren für verschiedene Bit-Positionen i verfügbar. Es sei bemerkt, dass die in dieser Summe angewandt Addierung eine arithmetische Addierung modulo 2 zu der Potenz k ist, oder eine bitweise Addierung (wobei die bitweise Exklusiv- Oder der Maskenvektoren Wi genommen wird, für die Xi nicht Null ist) oder ein anderer Operationstyp, der mit den Basisaxiomen der Addierung übereinstimmt.
  • Bekannt ist, dass n = (2**k) – 1 ist (2**k bedeutet, dass die k. Potenz von 2 genommen wird), d.h. n ist so groß, dass alle möglichen Nicht-Null-Werte von Wi genau einmal auftreten. Für diesen Wert von n war man bisher imstande, mehrere Ergebnisse über Rmin zu beweisen, die Schlimmstfall-Rate.
  • 2 zeigt eine Graphik der mittleren Rate Rav eines derartigen WOM-Codes als eine Funktion der Datenwortgröße k, erhalten durch Mittelung der Anzahl Erzeugungen, verwendet zum Codieren einer Anzahl beliebig selektierter Serien von Datenwerten. Die Kugeln bezeichnen den Mittelwert. Die vertikalen Stäbe (sog. Quantile) bezeichnen den Bereich von Ratenwerten R, die für verschiedene Sequenzen der beliebig selektierten Sequenzen auftreten. Dieser Bereich schließt die Ratenwerte R aus, die für die 5%-Serie mit den niedrigsten Raten und die 5% Sequenzen mit der höchsten rate auftreten. Wie ersichtlich wird der WOM-Code effizienter, je nachdem die Datenwortgröße k (und damit die Codewortgröße n = 2**k – 1) zunimmt. Es gibt einen Anstieg um einen nahezu linearen Faktor k über die normale Zunahme von ((2**k) – 1)/k in der Anzahl Male, dass Datenworte geschrieben werden können.
  • In einer Ausführungsform der vorliegenden Erfindung wird ein größerer Wert n verwendet: n > (2**k) – 1. In dieser Ausführungsform ist wenigstens ein Maskenvektor, aber vorzugsweise zwei oder mehr Maskenvektoren Wi mit mehr als nur einem der Bits in dem Codewort assoziiert. Das decodierte Codewort ist die Summe (in dem oben genannten allgemeinen Sinn) der Maskenvektoren, die mit den Bits in dem Codewort assoziiert sind, das gesetzt worden ist. Im Endeffekt bietet dies die Möglichkeit, beispielsweise eine Aktualisierung zu dem Datenwort durchzuführen und danach diese Aktualisierung rückgängig zu machen. Die Aktualisierung wird dadurch verwirklicht, dass ein Bit "i" in dem Codewort gesetzt wird, das einem Maskenvektor Wi entspricht, gleich der erforderlichen Aktualisierung. Die Aktualisierung wird dadurch rückgängig gemacht, dass ein anderes Bit "j" entsprechend einem Maskenvektor Wj gesetzt wird, gleich dem Maskenvektor Wi des Bits i.
  • Die Verwendung einer größeren Codewortgröße n steigert die Effizienz des WOM-Codes.
  • 3 zeigt die mittlere Rate Rav als eine Funktion der Codewortgröße n für eine feste Datenwortgröße k = 8 (die Punkte und die Quantile haben die gleiche Bedeutung wie in 2). 3 zeigt, dass ein zunehmendes n die Anzahl Male, dass Datenworte über der "normalen" Zunahme um n/k geschrieben werden können, zunimmt. Der bekannt Wert n = (2**k) – 1 (= 255 in dem Beispiel nach 3) ist überhaupt kein optimaler Wert. Deswegen wird vorzugsweise eine Codewortgröße n größer als (2**k) – 1 verwendet.
  • Weiterhin hat es sich gezeigt, dass es einige bevorzugte n Werte gibt (beispielsweise um 300 herum und um 340 herum), für welche die mittlere Rate größer ist als für höhere und niedrigere n Werte. Derartige n-Werte schaffen eine zusätzliche Effizienz. Vorzugsweise wird der Speicher zunächst für verschiedene n-Werte simuliert und es wird ein bevorzugter n-Wert selektiert zur Verwendung in der Schaltungsanordnung.
  • Wenn wir nun zu der Wirkung der Schaltungsanordnung nach 1 zurückkehren, so liefert beim Schreiben der Prozessor 10 dem Speicher 120 eine Adresse, wobei dieser Speicher an sich aus einer adressierten Stelle ein WOM-Codewort erfasst und dieses WOM-Codewort dem Decoder 121 und der durchführbaren Aktualisierungsdetektionsschaltung 123 zuführt. Der Decoder 121 decodiert ein Datenwort aus dem Codewort und liefert dieses Datenwort (das als das vorhergehende Datenwort, Y0, bezeichnet wird) dem Subtrahierer 122. Der Prozessor 10 liefert dem Subtrahierer 122 ein neues Datenwort Y1, wobei der Subtrahierer 122 ein Signal liefert, das die k-Bit Differenz D = Y1 – Y0 zwischen dem k-Bit neuen Datenwort Y1 und den k-Bit vorhergehenden Datenwort Y0 darstellt. Diese Differenz D wird der Ein-Bit Aktualisierungsdetektionsschaltung 124 zugeführt. Wenn die Differenz D Null ist, signalisiert die Schaltungsanordnung 124 zu der Schaltungsanordnung, dass keine Aktualisierung erforderlich ist, worauf der Schreibvorgang zu der WOM-Speichereinheit 12 beendet wird.
  • Die durchführbare Aktualisierungsschaltung 123 detektiert, welche Ein-Bit-Aktualisierungen zu dem Codewort in dem Speicher 120 durchführbar sind. Für jede Änderung eines Satzes möglicher Änderungen in dem decodierten Datenwort erzeugt die Schaltungsanordnung 123 ein Signal, das angibt, ob es eine durchführbare Aktualisierung gibt, die zu dieser Änderung führt. Der Speicher 120 ist beispielsweise ein PROM-Speicher oder ein Flash-EEPROM, in dem es viel schwieriger ist (wenn überhaupt möglich) Bits zurückzusetzen als Bits zu setzen. Aktualisierungen, die durch Setzen eines Bits verwirklicht werden können, werden als durchführbar bezeichnet.
  • Wenn die Differenz D nicht Null ist, detektiert die Schaltungsanordnung 124 ob die Differenz D einer Aktualisierung entspricht, für welche die Schaltungsanordnung 123 angibt, dass eine Einzelbit-Aktualisierung durchführbar ist. Sollte dies der Fall sein, so signalisiert die Schaltungsanordnung 124 die Aktualisierung zu der Aktualisierungsschaltung 125, die in Reaktion darauf, ein Bit in dem Speicher 120 setzt, was zu einer Aktualisierung entsprechend D führt.
  • Wenn die Differenz D nicht Null ist und keine einem Einzelbit entsprechende Aktualisierung durchführbar ist, versucht die WOM-Speichereinheit 12 eine durchführbare Zwei-Bit-Aktualisierung zu dem Speicher 120 zu bestimmen, was zu der erforderlichen Änderung D führt. Dazu werden die Ausgangssignale der durchführbaren Aktualisierungsdetektionsschaltung 123 dem Koinzidenzdetektor 127 zweimal zugeführt, und zwar über dI Kreuzverbindungsschaltung 126. Die Kreuzverbindungsschaltung 126 setzt die Verbindungen, die sie zwischen den Ausgängen der durchführbaren Aktualisierungsdetektionsschaltung 123 und dem Koinzidenzdetektor 127 macht, unter Ansteuerung der Differenz D um. Der Koinzidenzdetektor 127 detektiert Koinzidenz zwischen Signalen für eine Anzahl Signalpaare. Der Koinzidenzdetektor 127 enthält beispielsweise einen Satz von Paardetektoren, wie UND-Gatter, je zum Detektieren von Koinzidenz zwischen den Signalen eines betreffenden Paares. Jedes Paar enthält ein Signal, empfangen von der Schaltungsanordnung 123 über die Kreuzverbindungsschaltung 126. Die Kreuzverbindungsschaltung 126 ist derart angeordnet, dass wenn ein Paar, das ein Signal über die Durchführbarkeit einer Aktualisierung U unmittelbar von der Schaltungsanordnung 123 enthält, liefert die Kreuzverbindungsschaltung 126 den Paardetektor mit dem Signal über die Durchführbarkeit der Aktualisierung V, die mit der Aktualisierung U kombiniert zum Liefern der erforderlichen Differenz D.
  • Im Allgemeinen ist die Identität der Aktualisierung V eine Funktion f(U, D, X) der Identität der Aktualisierung U (k-Bits), mit denen sie kombiniert wird, die erforderliche Differenz D (k-Bits) und das Codewort X (n-Bits), das zur Zeit in dem Speicher 120 gespeichert wird.
  • Es hat sich aber herausgestellt, dass für viele WOM-Codierungsschemen, die beispielsweise in dem Fall eines linearen WOM-Codes, ist die Identität der Aktualisierung V nicht von dem zur Zeit gespeicherten Codewort abhängig, anders als durch die Differenz D: V = f(U, D). Dies wird benutzt in der Schaltungsanordnung 126 um das Signal über die Aktualisierung V dem Detektor für das Paar zuzuführen, welches das Signal über die Aktualisierung U von der durchführbaren Detektionsschaltung 123 empfängt. Diese Neuzuführung kann unter Ansteuerung von D durchgeführt werden.
  • Wenn der Koinzidenzdetektor 127 detektiert, dass die beiden Signale in einem Paar durchführbare Aktualisierungen angeben, bedeutet dies, dass die Zwei-Bit-Aktualisierung des WOM-Codewortes, die dem Paar entspricht, durchführbar ist und geeignet ist zum Erzeugen des erforderlichen neuen Datenwortes. Selbstverständlich ist es möglich, dass der Koinzidenzdetektor diese Durchführbarkeit kombiniert mit Zulänglichkeit für mehr Paare detektiert. Der Arbiter 128 selektiert eines der Paare, das durchführbar und geeignet ist und Signale ausliefert, welche die Aktualisierungen von dem Paar zu der Aktualisierungsschaltung 125 identifizieren. In Reaktion darauf setzt die Aktualisierungsschaltung 125 zwei Bits in dem Speicher 120, was zu einer Aktualisierung entsprechend den Aktualisierungen angegeben durch den Arbeiter 128 entspricht.
  • Im Grunde kann der Arbiter 128 eine beliebige Selektion machen, oder beispielsweise ein Paar mit einem Bit der niedrigsten Ordnung. Aber in einer bevorzugten Ausführungsform werden Paaren Vorzugsrangordnungen zugeordnet und ein angemessenes und durchführbares Paar mit der höchsten Vorzugsrangordnung wird selektiert. In diesem Fall wird denjenigen Paaren die höchste Vorzugsrangordnung gegeben, deren beide Bits den Maskenvektorwerten entsprechen, die mehr als nur einem der Bits entsprechen, die in dem Codewort nicht gesetzt wurden, wobei der Vorzug dieser Paare vorzugsweise höher ist, wenn es mehr von solchen Bits gibt. Der nächst niedrigere Vorzug wird Paaren gegeben, in denen eines der Bits einem Maskenvektorwert entspricht, der einem anderen mehr entspricht als dem Bit, das nicht in dem Kodewort gesetzt wurde, mit auch hier wieder einem vorzugsweise höheren Codewort unter diesen Paaren, wenn es mehr von solchen Bits gibt.
  • In dem Fall, dass der Speicher 120 ein Flash-Speicher ist, oder ein EEPROM, signalisiert ein Arbiter 128, dass keine Aktualisierung möglich ist, und die Aktualisierungsschaltung löscht die adressierte Speicherstelle in dem Speicher 120. Nach der Löschung wird ein einziges Bit an der Stelle gesetzt, damit das erforderliche Datenwort verwirklicht wird (wenn das Datenwort Null ist, braucht kein Bit zurückgesetzt zu werden). Das heißt, es wird keine Suche nach Aktualisierungen eingeleitet, die das Setzen von drei Bits oder mehr erfordern. Obschon dies bedeutet, dass eine gewisse Kapazität des Speichers 120 verloren gegangen ist, hat es sich herausgestellt, dass dieser Verlust gering ist, typischerweise nur 1,15% für k = 8 und n = 1020 für einen linearen WOM-Code und einen beliebigen Eingang.
  • 4 zeigt eine Decoderschaltung für einen linearen WOM-Code, der das bitweise Exklusiv-Oder als Hinzufügung verwendet. Die Decoderschaltung enthält einen Vektoraddierer 30 und eine Kollektorschaltung 32. Der Vektoraddierer 30 dient zum Hinzufügen von Information über Bits an Bitstellen in dem Codewort, die demselben Maskenvektorwert entsprechen. Die hinzugefügte Information für die jeweiligen Maskenvektorwerte wird dem Vektoraddierer 30 zugeführt. Jeder Ausgang der Kollektorschaltung 32 entspricht einem anderen Maskenvektor. Der Vektoraddierer 30 addiert diejenigen Vektoren, für welche die Ausgänge der Kollektorschaltung 32 eine logische 1 angeben. Im Grunde gibt es zwei (2**k) – 1 verschiedene Maskenvektoren (wobei k die Anzahl Bits in einem Datenwort ist), die je mit einem anderen Nicht-Null-Maskenvektorwert übereinstimmen. Von oben nach unten entsprechen die Ausgänge dem Maskenvektor mit zunehmendem Wert (00..01, 00..10, 00..11, usw.). Auf diese Weise haben von den (2**k) – 1 Maskenvektoren die Maskenvektoren, die mit der unteren Hälfte (2**(k – 1) Vektoren) der Ausgänge der Kollektorschaltung 32 übereinstimmen ein signifikantestes Bit gleich Eins, die obere Hälfte ((2**(k – 1)) – 1) hat ein signifikantestes Bit gleich Null. (Der Einfachheit der Beschreibung wegen wird das Wort "Hälfte" verwendet als gäbe es 2**k Mastenvektoren, die einen fiktiven Alles-Null-Maskenvektor enthalten, entsprechend einem fiktiven oberen Ausgang der Kollektorschaltung 32). Der Vektoraddierer 30 hat zwei Teile: ein erster Teil des Vektoraddierers 30 addiert die Ausgänge der Kollektorschaltung 32 für Maskenvektoren, bei denen die signifikanten Bits Eins sind, ein zweiter Teil mit den Sub-Addierern 302, 304, addiert die signifikanten Bits der Maskenvektoren.
  • Die Kollektorschaltung 32 enthält Zweige der kaskadengeschalteten Exklusiv-Oder-Gatter 320a–b, 322a–b, 324. Jeder Zweig entspricht einen anderen Maskenvektorwert und der Zweig bestimmt das Exklusiv-Oder der Bits in dem adressierten Codewort, die dem Maskenvektorwert. Zusammengefasst, die Kollektorschaltung hat n Eingänge (wobei n die Codewortgröße ist). In dem Fall, dass nur ein einziges Bit einem bestimmten Maskenvektorwert kann auf den Zweig verzichtet werden und das Bit kann unmittelbar dem Vektoraddierer zugeführt werden. Wenn kein Vektorwert mit mehr als einem Bit über einstimmt, kann auf die ganze Kollektorschaltung 32 verzichtet werden. Insgesamt hat die Kollektorschaltung maximal (2**k) – 1 Ausgänge.
  • Der Vektoraddierer 30 dient zum Addieren der Vektorwerte derjenigen Vektoren, für welche die Kollektorschaltung 32 eine logische Eins angibt. Typischerweise hat der Vektoraddierer M = (2**k) – 1 Eingänge um das binäre Gewicht anzugeben, das den jeweiligen Maskenvektoren zugeordnet sind und k Ausgänge für die jeweiligen Komponenten der summierten Vektoren. So ist beispielsweise der Vektoraddierer 30 dargestellt als zusammengebaut aus zwei identischen Sub-Addierern 302, 304 und einer Anzahl Exklusiv-Oder-Gattern 306a, b, 309.
  • Die Subaddierer 302, 304 berechnet das nahezu signifikanteste Bit der Summe der Maskenvektoren M' Gewichtungsbits (wobei M' die Hälfte der eintreffenden Gewichtungsbits M ist (M' = (M – 1)/2)). Entsprechende Ausgänge der Subaddierer 302, 304 (werden für denselben Signifikanzpegel in dem Maskenvektoren) mit den Exklusiv-Oder-Gattern 306a–b, logisch addiert zum Bilden der am wenigsten signifikanten Bitausgänge des Addierers 30. Zum Bilden des signifikantesten Bitausgangs wird einer der Eingänge des Vektoraddierers 30 nicht mit den Subaddierern 302, 304 sondern mit einer Kaskadenschaltung 38a von Exklusiv-Oder-Gattern (nur eins 38a ist dargestellt) verbunden. Das Exklusiv-Oder-Gatter addiert die Signale von etwa die Hälfte ((M – 3)/4)) der (M – 1)/2 Eingänge des zweiten Sub-Addierers 304 zu dem Signal von diesem einen der Eingänge. Der Ausgang der Kaskadenschaltung 38a wird einem weiteren Exklusiv-Oder-Gatter 309 zugeführt, das auch das signifikanteste Bit des Ausgangs des zweiten Sub-Addierers 304 empfängt. Das weitere Exklusiv-Oder-Gatter 309 liefert die signifikantesten Bits der summierten Maskenvektoren. Das Exklusiv-Oder-Gatter 309 dient zum Addieren der Ausgänge der Kollektor-Schaltung 32, die den Maskenvektoren für die untere Hälfte der Ausgänge der Kollektorschaltung 32 entsprechen. Dies könnte durch Erweiterung der Kaskadenschaltung 38a auf jeden Ausgang in der unteren Hälfte der Ausgänge der Kollektorschaltung 32 verwirklicht werden. Aber dies ist nicht notwendig, weil die untere Hälfte dieser unteren Hälfte der Ausgänge sowieso in dem Subaddierer 304 addiert wird. Die Schaltungsanordnung nach 4 benutzt die Summe von dem Sub-Addierer 304.
  • 4 ist die Basis für eine rekursive Definition des Vektoraddierers 30. Jeder Subaddierer 302, 304 hat dieselbe Struktur wie der Vektoraddierer 30, aber herunter skaliert zum einem Ausgang weniger als der Addierer 30 und zu einer Anzahl Eingänge, welche die Hälfte der Anzahl Eingänge des Addierers 30 weniger eins ist. Durch wiederholte gleichartige Dekomposition kann der Sub-Addierer 30 zerlegt werden bis einer zu einem Subaddierer mit nur einem Eingang und nur einem Ausgang gelangt. Der Vektor-Addierer mit nur einem Eingang und nur einem Ausgang ist einfach eine direkte Verbindung zwischen dem Eingang und dem Ausgang.
  • Ähnliche Addierschaltungen können für WOM-Codes entworfen werden, die andere Typen von Addierung verwenden, wie Modulo-3**n Addierung. Vorzugsweise werden diese auch rekursiv konstruiert, mit einem Teil zum Addieren der signifikantesten Bits der Maskenvektoren und Sub-Teile zum Addieren der restlichen Bits. Andere Typen von Addierern sind ebenfalls möglich, beispielsweise durch Behandlung der Bits in dem WOM-Codewort als Koeffizienten in einem Polynom p(x) und durch Bestimmung des Restes nach Teilung durch ein Generatorpolynom g(x), unter Verwendung jeder Technik, die zum Korrigieren von Codes bekannt ist. Auf diese Art und Weise entspricht das jedem WOM-Bit zugeordnete Gewicht dem Rest, erhalten, wenn eine Zweierpotenz von x das Generatorpolynom g(x) teilt.
  • 5 zeigt eine Zweibit-Aktualisierungsdetektionsschaltung mit einer durchführbaren Aktualisierungsdetektionsschaltung 50, einer Verbindungsschaltung 52 und einem Koinzidenzdetektor 54. Die Funktion der Zweibit-Aktualisierungsdetektionsschaltung ist, zu Bestimmen, welche Kombinationen der zwei Bits in dem Codewort gesetzt werden können um eine Änderung D in dem decodierten Datenwort zu effektuieren. Im Grunde tragen alle Verbindungen zwischen der durchführbaren Aktualisierungsdetektionsschaltung 50, der Verbindungsschaltung 52 und dem Koinzidenzdetektor 54 sog. durchführbare Signale. Jedes durchführbare Signal entspricht einem bestimmten Maskenvektor (es dürfte einleuchten, dass ein Maskenvektor einer Aktualisierung entspricht, die dadurch verwirklicht werden kann, dass ein einziges Bit in dem Codewort gesetzt werden kann). Das durchführbare Signal für den spezifischen Maskenvektor ist aktiv, wenn es in dem Codewort, das dem spezifischen Maskenvektor entspricht und das noch nicht gesetzt worden ist, ein Bit gibt.
  • Im Allgemeinen sind die Signalleitungen in der Figur für die durchführbaren Signale für verschiedene Maskenvektoren von oben nach untern in der Reihenfolge zunehmenden Gewichtes gegliedert (ausgehend von dem Maskenvektor (00, ... 01) und endend mit dem Maskenvektor (11 ... 11)).
  • Die Funktion der durchführbaren Aktualisierungsdetektionsschaltung 50 ist das Erzeugen durchführbarer Signale für die jeweiligen Maskenvektoren. Ein durchführbares Signal wird aktiv gemacht, wenn die durchführbare Aktualisierungsdetektionsschaltung 50 detektiert, dass es in dem Codewort, das noch nicht gesetzt worden ist und das einem bestimmten Maskenvektor entspricht, ein Bit gibt. So enthält beispielsweise die durchführbare Aktualisierungsdetektionsschaltung 50 eine Anzahl NAND-Gatter 500a–d. Jedes NAND-Gatter 500a–d empfängt die in dem WOM-Codewort gespeicherten Bits, die einem betreffenden Maskenvektor entsprechen. Auf diese Weise erzeugt der Ausgang jedes NAND-Gatters 500a–d das durchführbare Signal, das angibt, ob es in dem Codewort, das noch nicht gesetzt worden ist und einem bestimmten Maskenvektor entspricht, ein Bit gibt.
  • Die Funktion des Koinzidenzdetektors 54 ist, eine gleichzeitige Aktivität von Signalen in Paaren durchführbarer Signale zu detektieren. Die Durchführbarkeitssignale in einem Paar geben die Durchführbarkeit der betreffenden Aktualisierungen an, die zusammen zu der erforderlichen Änderung in dem decodierten Datenwort führt. Der Koinzidenzdetektor 54 enthält eine Anzahl Sub-Detektoren 540a–d (je beispielsweise ein UND-Gatter). Die Ausgänge der NAND-Gatter 500a–d werden unmittelbar mit einem ersten Eingang betreffender Subdetektoren 540a–d gekoppelt. Die Ausgänge der NAND-Gatter 500a–d sind auch mit einem zweiten Eingang der betreffenden Subdetektoren gekoppelt, und zwar über die Verbindungsschaltung 52.
  • Die Funktion der Verbindungsschaltung 52 ist, Paare der durchführbaren Signale zusammen zu bringen, für Aktualisierungen, die zusammen zu der erforderlichen Änderung in dem decodierten Datenwort führen. Die Verbindungsschaltung 52 arbeitet unter Ansteuerung der betreffenden Bits eines Differenzsignals D, das die erforderliche Änderung darstellt. Aus Gründen der systematischen Präsentation ist die Verbindungsschaltung derart dargestellt, dass sie einen Dummy-Eingang und -Ausgang hat (entsprechend einer Nicht-Änderungsaktualisierung), der nicht mit einem der NAND-Gatter 500a–d und der Koinzidenz-Subdetektoren 540a–d verbunden ist. Offenbar kann auf die Schaltungsanordnung, die sich nur auf diesen Dummy-Eingang/Ausgang befasst, in praktischen Schaltungsanordnungen verzichtet werden.
  • Die Verbindungsschaltung 52 ist als eine Reihe von Schichten der Sub-Verbindungsschaltungen 56a–d dargestellt, die in Kaskade verbunden sind. Die Verbindungen zwischen jedem Paar von Schichten 56a–d enthält einen Satz von Leitern zum Durch führen der Durchführbarkeitssignale für alle möglichen Aktualisierungen. Auf gleiche Weise haben die erste und die letzte Schicht 56a, d derartige Verbindungen mit der durchführbaren Aktualisierungsdetektionsschaltung bzw. dem Koinzidenzdetektor. Jede Schicht empfängt ein betreffendes Bit der Bits des Differenzsignals D als Steuersignal.
  • Im Betrieb schickt jede Schicht 56a–d die Durchführbarkeitssignale von der durchführbaren Aktualisierungsdetektionsschaltung 50 unter Ansteuerung eines betreffenden Bits der Bits des Differenzsignals D zurück. Dies wird derart gemacht, dass, wenn ein Koinzidenz-Sub-Detektor 540a–d ein Durchführbarkeitssignal über eine Aktualisierung unmittelbar von der durchführbaren Aktualisierungsdetektionsschaltung 50 empfängt, die Verbindungsschaltung 52 dann demjenigen Koinzidenz-Sub-Detektor 540a–d mit einem Durchführbarkeitssignal über eine Aktualisierung V versehen wird, dass, kombiniert mit T, zu einer Änderung in dem Datenwort gleich D führt.
  • Die Verbindungsschaltung 52 führt diese Zurückführungsaufgabe in aufeinander folgenden Schichten für aufeinander folgenden Bits des Differenzsignals D durch. Im Grunde führt jede Schicht diese gleiche Aufgabe durch, und zwar unter Ansteuerung eines anderen betreffenden Bits von D. Jede Schicht führt die Durchführbarkeitssignale zurück, wie erforderlich für den Wert Di eines Bits an der Stelle i von D, wobei ein bestimmter Wert (beispielsweise Null) für den Rest D' von D vorausgesetzt wird. Das heißt, wenn ein Koinzidenz-Sub-Detektor 540a–d ein Durchführbarkeitssignal über eine Aktualisierung U unmittelbar von der durchführbaren Aktualisierungsdetektionsschaltung 50 empfängt, dann liefert an einem Ausgang, der mit dem Koinzidenz-Sub-Detektor 540a–d übereinstimmt, die Schicht 56a–d ein Durchführbarkeitssignal über die Aktualisierung V, das, kombiniert mit U, zu einer Änderung in dem Datenwort, gleich Di mit dem gegebenen Wert (beispielsweise Null) für den Rest D' führt.
  • Wenn das Bit Di des Differenzsignals Null ist, erzeugt die Schicht 56a–d ein bestimmtes Routing, wobei das Durchführbarkeitssignal für jede spezifische Aktualisierung V einem ersten spezifischen Eingang I (V) des Koinzidenzdetektors 54 für den bestimmten Rest D' zugeführt wird. Wenn das Bit Di des Differenzsignals D Eins ist, wird das Durchführbarkeitssignal für jede spezifische Aktualisierung V zu einem zweiten spezifischen Eingang I'(V) des Koinzidenzdetektors 54 neu zugeführt. Der zweite spezifische Eingang I'(V), der für eine Aktualisierung V verwendet wird, entspricht dem ersten spezifischen Eingang I(V') für die Aktualisierung V', was entsteht, wenn man das Bit Di zu der ursprünglichen Aktualisierung V addiert.
  • Im Falle eines linearen WOM-Codes können die Schichten 56a–d in jeder beliebigen Sequenz verbunden werden. Es ist auch nicht notwendig, den Koinzidenzdetektor 54 am Ende der Verbindungsschaltung 52 zu verbinden. Der Koinzidenzdetektor 54 kann zwischen jedes Paar Schichten 56a–d gesetzt werden. Eine Schaltungsanordnung, die in dieser Hinsicht modifiziert wird, kann aus 5 dadurch erhalten werden, dass jedes Paar Eingänge mit jedem Koinzidenz-Sub-Detektor 540a–d kurzgeschlossen wird und die Koinzidenz-Sub-Detektoren 54a–h von der ursprünglichen Stelle entfernt wird. Der Eingang jedes betreffenden Koinzidenz-Sub-Detektors 540a–d soll statt mit einem der betreffenden Verbindungsleiter zwischen jedem Paar Schichten verbunden werden, wobei die Leiter zwischen den Eingängen der Koinzidenz-Sub-Detektoren 540a–d unterbrochen werden. Die Eingänge der jeweiligen Koinzidenz-Sub-Detektoren 540a–d könnten auch mit Leitern zwischen untereinander verschiedenen Schichten 56a–d verbunden werden, solange kein Paar Sub-Detektoren 540a–d mit Leitern verbunden ist, das gleichzeitig das Durchführbarkeitssignal für dieselbe Aktualisierung zwischen verschiedenen Schichten tragen kann. Die genaue Implementierung der Kreuzverbindungsschaltung 52 ist abhängig von dem Typ der WOM-Codierung.
  • 6 zeigt ein Beispiel einer Verbindungsschaltung für lineare WOM-Codierung, wobei das bitweise Exklusiv-Oder als Addierung verwendet wird. 6 enthält die gleichen Elemente wie 4, aber die Schichten sind detaillierter ausgearbeitet und sie sind in rekursiv definierter Verbindungsschichten 520, 522 niedrigerer Ordnung verkörpert.
  • Die Verbindungsschaltung 52 zur Kreuzverbindung von 2**m (beispielsweise m = 3) Signalen enthält eine erste und eine zweite Verbindungsschaltung niedrigerer Ordnung 520, 522, je für 2**(m – 1) Signale, und eine Anzahl von 2**(m – 1) steuerbaren Signalaustauscheinheiten 524a–d. Die steuerbaren Signalaustauscheinheiten 524a–d bilden eine erste Schicht der Schichten zur Umleitung der Durchführbarkeitssignale. Von den steuerbaren Signalaustauscheinheiten 524a–d sind Steuereingänge gekoppelt zum Empfangen des signifikantesten Bits des Differenzsignals D.
  • Eine Hälfte der Ausgänge der NAND-Gatter mit dem geringeren Gewicht in dem durchführbaren Aktualisierungsdetektor 50 ist mit einem ersten Eingang der betreffenden Einheit der steuerbaren Signalaustauscheinheiten 52a–d verbunden. Die Hälfte der Ausgänge des durchführbaren Aktualisierungsdetektors 50 mit dem höheren Gewicht ist mit einem zweiten Eingang der betreffenden Einheit der steuerbaren Signalaustauscheinheiten 524a–d verbunden. Dagegen sind erste Ausgänge der steuerbaren Signalaustauscheinheiten 524a–d mit den Eingängen der ersten Verbindungsschaltung 520 niedrigerer Ordnung verbunden. Zweite Ausgänge der steuerbaren Signalaustauscheinheiten 524a–d sind mit den Eingängen der Verbindungsschaltung zweiter Ordnung 522 verbunden. Die Ausgänge der ersten Verbindungsschaltung niedrigerer Ordnung 520 sind mit betreffenden Ausgängen einer hälfte der Ausgänge mit einem niedrigeren Gewicht der Verbindungsschaltung 52 verbunden. Die Ausgänge der zweiten Verbindungsschaltung niedrigerer Ordnung 522 sind mit einer Hälfte der Ausgänge der Verbindungsschaltung 52 eines höheren Gewichtes verbunden.
  • Die Struktur der Verbindungsschaltungen niedrigerer Ordnung 520, 522 ist rekursiv definiert. Diese Verbindungsschaltungen niedrigerer Ordnung 520, 522 haben eine ähnliche Struktur wie die Verbindungsschaltung 52, ausgenommen, dass die Anzahl deren Eingänge (2**(m – 1)), steuerbarer Signalaustauscheinheiten und Ausgänge die Hälfte von der der Verbindungsschaltung 52 sind. Die Struktur der aufeinander folgenden Verbindungsschaltungen niedrigerer Ordnung wird auf ähnliche Weise dadurch erhalten, dass halbiert wird, bis Eins an einer Ein-Eingang-Ein-Ausgang-Verbindungsschaltung erscheint, die ganz einfach eine Eins-zu-Eins-Eingang/Ausgang-Verbindung ist. Der Deutlichkeit halber: nur ein einziger derartiger rekursiver Pegel ist in 5 dargestellt. Im Grunde gibt es Schichten von 2**(m – 1) steuerbaren Signalaustauscheinheiten für jedes Bit des Differenzsignals, von denen die steuerbaren Signalaustauscheinheiten 524a–d die erste Schicht bis auf eine ist, welche die meist entfernte Kreuzverbindung schafft. Die steuerbaren Signalaustauscheinheiten in den aufeinander folgenden Verbindungsschaltungen niedrigerer Ordnung werden durch aufeinander folgende Bits geringerer Signifikanz des Differenzsignals D gesteuert.
  • Es dürfte einleuchten, dass die Strukturierung der Kreuzverbindungsschaltung 52 in rekursiv definierten Kreuzverbindungsschaltungen niedrigerer Ordnung 520, 522 vorwiegend zur Definition und Zur Erläuterung ist.
  • Im Betrieb leitet die erste Schicht der Signalaustauscheinheiten 524a–d die durchführbaren Signale um, wie für den Wert des signifikantesten Bits Dn von D erforderlich, wobei ein bestimmter Wert (beispielsweise Null) für den Rest D' von D vorausgesetzt wird. Das heißt, wenn ein Koinzidenz-Sub-Detektor 540a–d ein Durchführbarkeitssignal über eine Aktualisierung U unmittelbar von der durchführbaren Aktualisierungsdetektionsschaltung 50 erhält, dann liefern an einem Ausgang, der dem Koinzidenz-Sub-Detektor 540a–d entspricht, die Signalaustauscheinheiten 524a–h ein durchführbares Signal über eine Aktualisierung V, das, kombiniert mit U, zu einer Änderung in dem Datenwort gleich Dn mit einem bestimmten Wert (beispielsweise Null) für den Rest führt.
  • Wenn das signifikanteste Bit Dn des Differenzsignals Null ist, erzeugen die Signalaustauscheinheiten 524a–d ein bestimmtes Routing, wobei das durchführbare Signal für jede spezifische Aktualisierung V einem ersten bestimmten Eingang I(V) des Koinzidenzdetektors 54 für den bestimmten Rest D' zugeführt wird. Wenn das signifikanteste Bit des Differenzsignals D Eins ist, wird das Durchführbarkeitssignal für jede spezifische Aktualisierung V einem zweiten spezifischen Eingang I'(V) des Koinzidenzdetektors 54 zugeführt. Der zweite spezifische Eingang I'(V), der für eine Aktualisierung Verwendet wird, entspricht dem ersten spezifischen Eingang I(V') für die Aktualisierung V', die nur um die Stelle des signifikantesten Bits von der ursprünglichen Aktualisierung V abweicht. Das heißt, die steuerbaren Signalaustauscheinheiten 524a–d tauschen gegenseitig die Durchführbarkeitssignale aus, die Eingängen des Koinzidenzdetektors 54 zugeführt werden, die derselben Aktualisierung entsprechen, ausgenommen das signifikanteste Bit.
  • Die Verbindungsschaltungen niedrigerer Ordnung 520, 522 leiten diese Durchführbarkeitssignale unter Ansteuerung der restlichen, weniger signifikanten Bits des Differenzsignals D um, damit Durchführbarkeitssignale für zwei Aktualisierungen U, V bei jede 3m Koinzidenz-Sub-Detektor in dem Koinzidenzdetektor 54 zusammengebracht werden, wobei die Aktualisierungen U, V zusammen die erforderliche Änderung D in dem Datenwort erzeugen. Jede Schicht der Signalaustauscheinheiten führt unter Ansteuerung eines anderen Bits Di der Differenz D eine Umleitung durch. Jede Schicht arbeitet im Grunde auf dieselbe Art und Weise wie die erste Schicht der Signalaustauscheinheiten 524a–d, ausgenommen, dass sie Wahrscheinlichkeitssignale für Aktualisierungen austauscht, die nur um eine Bitstelle entsprechend dem Bit Di des Differenzsignals D abweicht, das diese Schicht der Signalaustauscheinheiten 524a–d steuert.
  • In dieser Beschreibung wurde vorausgesetzt, dass die steuerbaren Signalaustauscheinheiten vorwiegend austauschbare elektrische Verbindungen schaffen, aber selbstverständlich kann man auch logische Gatter verwenden, die dem Koinzidenzdetektor 54 zugewandt sind um die Umleitungsfunktion auf eine Einrichtungsweise zu implementieren. So könnte man beispielsweise einen Satz von Multiplexern in jeder Schicht verwenden, die je entweder ein erstes oder ein zweites Durchführbarkeitssignal zu der nächsten Schicht umleitet, und zwar unter Ansteuerung eines Bits Di des Differenzsignals.
  • Je nach dem Typ der zum Decodieren des WOM-Codewortes angewandten Addierung sind mehrere alternative Strukturen für die Schichten möglich. Auf jeden Fall leiten die Schichten jedes Durchführbarkeitssignal um, damit dieses in Kombination mit einem anderen Durchführbarkeitssignal, das zusammen mit dem Durchführbarkeitssignal zu dem spezifizierten Differenzsignals D führen würde, beim Koinzidenzdetektor 54 eintrifft. Für ein Steuerbit Di, das den Wert 0 hat, läuft das Durchführbarkeitssignal geradeaus im Falle eines linearen Codes, aber für ein Steuerbit Di, das den Wert 1 hat, wird das Steuerbit neu gegliedert, wie für den Typ der Addierung erforderlich.
  • 7 zeigt ein Beispiel einer Schicht 70 zur Umleitung von Durchführbarkeitssignalen zur Verwendung mit einem linearen WOM-Code, der eine Modulo-2**n-Addierung als Addiervorgang benutzt. So ist beispielsweise die Schicht für das zweite Bit Dj (j = 2) des Differenzsignals D in der Rangordnung von der geringsten Signifikanz für ein n = 3 Bit Codewort dargstellt. Die Schicht 70 enthält eine Anzahl von 2**n = 8 Multiplexern 72a–h, die mit den Eingangsleitern 74a–h und den Ausgangsleitern 76a–h für 2**n Durchführbarkeitssignale verbunden sind. Der i. Eingangsleiter 74a–h ist über einen ersten Eingang des i. Multiplexers 72a–h mit dem i. Ausgangsleiter 76a–h verbunden. Der i. Eingangsleiter 74a–h ist über den ((i + 2)mod2**n). Multiplexer 72a–h mit dem ((i + 2)mod2**n). Ausgangsleiter verbunden. Die Multiplexer 72a–h werden von dem zweiten Bit Dj (j = 2) des Differenzsignals j gesteuert. Andere Verbindungen zwischen den Multiplexern würden auftreten, wenn andere Typen von Decodierung angewandt werden.
  • Text in der Zeichnung
  • 2
    • Quantile
  • 3
    • Quantile

Claims (7)

  1. Datenverarbeitungsanordnung, welche die nachfolgenden Elemente umfasst: – eine Speicherstelle (120) zur Speicherung eines Codewortes (XO) zum Codieren aufeinander folgender Datenwerte (YO) entsprechend einem WOM-Code, – einen Wahrscheinlichkeitsdetektor (123), vorgesehen zum Erzeugen von Wahrscheinlichkeitssignalen (n'), je für eine betreffende Aktualisierung zu einem an der Speicherstelle (120) codierten Datenwort, wobei jedes Wahrscheinlichkeitssignal angibt, ob, gegeben das aktuelle Codewort an der Speicherstelle (120), die Aktualisierung realisierbar ist, – einen Eingang (102) zum Empfangen eines neuen Datenwertes (Yi), dadurch gekennzeichnet, dass die Datenverarbeitungsanordnung weiterhin die nachfolgenden Elemente umfasst: – eine Zweibit-Aktualisierungsdetektionsschaltung (126, 127), vorgesehen um Paare selektierter Wahrscheinlichkeitssignale zusammen zu bringen, jedes Paar für eine betreffende erste und zweite Aktualisierung der Aktualisierungen für die Speicherstelle (120), wobei Selektion der Wahrscheinlichkeitssignale in dem Paar in Abhängigkeit von dem neuen Datenwert (Yi) gesteuert wird um selektierte Wahrscheinlichkeitssignale zusammen zu bringen, so dass die erste und die zweite Aktualisierung des durchgeführten Paares einen aktuellen Wert des Codewortes (XO) an der Speicherstelle (120) auf einen nächsten Wert aktualisieren, der den neuen Datenwert (Yi) codiert, wobei die Zweibit-Aktualisierungsdetektionsschaltung (126, 127) detektiert, ob das erste und das zweite Wahrscheinlichkeitssignal des Paares Durchführbarkeit angeben, – eine Selektionsschaltung (128) zum Selektieren eines der Signalpaare, für welches das erste und das zweite Signal Durchführbarkeit mit dem aktuellen Wert angeben, – eine Aktualisierungsschaltung (125), die durch die Selektionsschaltung (128) getriggert wird um die erste und die zweite Aktualisierung an der Speicherstelle (120) entsprechend dem selektierten Paar durchzuführen.
  2. Anordnung nach Anspruch 1, wobei die Detektionsschaltung die nachfol genden Elemente umfasst: – eine Kreuzverbindungsschaltung (126), betriebsfähig unter Ansteuerung eines Mehrbit-Änderungssignals, das eine Differenz zwischen dem neuen Datenwert (Yi) und den Daten darstellt, die durch den aktuellen Wert des Codewortes codiert sind, – einen Satz Koinzidenzdetektionsschaltungen (127), mit je einem ersten und einem zweiten Eingang zum Empfangen von Wahrscheinlichkeitssignalen von einem betreffenden Paar, wobei der erste und der zweite Eingang über eine ersten bzw. zweite Strecke mit dem Wahrscheinlichkeitsdetektor (123) gekoppelt ist, wobei die Kreuzverbindungsschaltung (126) eine Kaskade einer Anzahl Schichten aufweist, die durch Leiter zum Tragen des Wahrscheinlichkeitssignals miteinander verbunden sind, wobei jede Schicht eine der Strecken für jedes Paar aufweist, wobei jede Schicht einen Teil der neuen Routing bildet, und zwar unter Ansteuerung eines betreffenden Bits der Bits des Änderungssignals.
  3. Anordnung nach Anspruch 1, wobei die Speicherstelle (120) eine Anzahl Bits enthält, die mit je einem Maskenvektor assoziiert sind, wobei wenigstens zwei Bits mit demselben Maskenvektor assoziiert sind; wobei der Wahrscheinlichkeitsdetektor (23) eine Sammelschaltung aufweist zum Erzeugen des Signals, das der Aktualisierung um die genannte selbe Maske entspricht, indem Information gesammelt wird, die an der Speicherstelle (120) für die wenigstens zwei Bits gespeichert ist, wobei die Signalinformation angibt, ob wenigstens eines der wenigstens zwei Bits nicht in dem aktuellen Wert des Codewortes gesetzt worden ist.
  4. Anordnung nach Anspruch 3, wobei diese Anordnung Folgendes enthält: – einen WOM-Code-Decoder (121), vorgesehen zum Decodieren von Daten von der Speicherstelle (120) durch Summierung der Maskenvektoren, die mit Bits assoziiert sind, die an die Speicherstelle (120) gesetzt worden sind.
  5. Anordnung nach Anspruch 1, vorgesehen um eine Anzahl Bits der Speicherstelle (120) kollektiv zurück zu setzen, wenn eine Einbit-Aktualisierung, welche die neuen Daten codiert, durchführbar ist und wenn die Zweibit-Aktualisierungsschaltung (126, 127) signalisiert, dass sie nicht eine durchführbare Zweibit-Aktualisierung findet, die den neuen Datenwert (Yi) codiert.
  6. Anordnung nach Anspruch 1, wobei: – das Codewort eine Anzahl Bits enthält, jedes mit einem Maskenvektor assoziiert, wobei wenigstens zwei Bits mit ein und demselben Maskenvektor assoziiert ist, – einen WOM-Code-Decoder vorgesehen ist zum Decodieren von Daten aus der Speicherstelle durch Bestimmung eines decodierten Datenwertes entsprechend einer Summe der Maskenvektoren, assoziiert mit Bits, die an die Speicherstelle gesetzt sind, – ein WOM-Code-Codierer vorgesehen ist zum Codieren von Daten an der Speicherstelle, indem eine Kombination von einem oder mehr Bits eingestellt wird, wobei eine Summe deren Maskenvektoren einer erforderlichen Änderung in den an der Speicherstelle codierten Daten entspricht.
  7. Verfahren zum Aktualisieren eines Codewortes an einer Speicherstelle (120) wobei dieses V erfahren die nachfolgenden Verfahrensschritte umfasst: – das Speichern eines Codewortes zum Codieren aufeinander folgender Datenwerte entsprechend einem WOM-Code an einer Speicherstelle (120), – das Erzeugen von Wahrscheinlichkeitssignalen, je für eine betreffende Aktualisierung zu einem an der Speicherstelle (120) codierten Datenwort, wobei jedes Wahrscheinlichkeitssignal angibt, ob, gegeben das aktuelle Codewort an der Speicherstelle (120), die Aktualisierung realisierbar ist, – das Empfangen eines neuen Datenwertes (Yi), dadurch gekennzeichnet, dass das Verfahren weiterhin die nachfolgenden Verfahrensschritte umfasst: – das Zusammenbringen von Paaren selektierter Wahrscheinlichkeitssignale, jedes Paar für eine betreffende erste und zweite Aktualisierung der Aktualisierungen für die Speicherstelle (120), wobei Selektion der Wahrscheinlichkeitssignale in dem Paar in Abhängigkeit von dem neuen Datenwert (Yi) gesteuert wird um selektierte Wahrscheinlichkeitssignale zusammen zu bringen, so dass die erste und die zweite Aktualisierung des durchgeführten Paares einen aktuellen Wert des Codewortes (XO) an der Speicherstelle (120) auf einen nächsten Wert aktualisieren, der den neuen Datenwert (Yi) codiert, und das Detektieren, ob das erste und das zweite Wahrscheinlichkeitssignal des Paares Durchführbarkeit angeben, – das Selektieren eines der Signalpaare, für welches das erste und das zweite Signal Durchführbarkeit mit dem aktuellen Wert angeben, – das Durchführen der ersten und der zweiten Aktualisierung an der Speicherstelle (120) entsprechend dem selektierten Paar.
DE60112795T 2000-12-15 2001-11-27 Datenverarbeitungseinrichtung mit einer speicherstelle, in der daten gemäss einem wom-code gespeichert werden Expired - Lifetime DE60112795T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP00204599 2000-12-15
EP00204599 2000-12-15
PCT/EP2001/014142 WO2002049041A1 (en) 2000-12-15 2001-11-27 Data processing device with a memory location in which data is stored according to a wom code

Publications (2)

Publication Number Publication Date
DE60112795D1 DE60112795D1 (de) 2005-09-22
DE60112795T2 true DE60112795T2 (de) 2006-06-22

Family

ID=8172448

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60112795T Expired - Lifetime DE60112795T2 (de) 2000-12-15 2001-11-27 Datenverarbeitungseinrichtung mit einer speicherstelle, in der daten gemäss einem wom-code gespeichert werden

Country Status (6)

Country Link
US (2) US6701408B2 (de)
EP (1) EP1346370B1 (de)
JP (1) JP4050617B2 (de)
AT (1) ATE302464T1 (de)
DE (1) DE60112795T2 (de)
WO (1) WO2002049041A1 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002049041A1 (en) * 2000-12-15 2002-06-20 Koninklijke Philips Electronics N.V. Data processing device with a memory location in which data is stored according to a wom code
US8359398B1 (en) * 2004-01-20 2013-01-22 Oracle America, Inc. Efficient proxying of messages
CN101419838B (zh) * 2008-09-12 2011-01-19 中兴通讯股份有限公司 一种提高flash使用寿命的方法
EP2335245B1 (de) 2008-09-28 2015-01-07 Ramot at Tel-Aviv University Ltd. Verfahren und system zur adaptiven codierung in flash-speichern
US8671327B2 (en) 2008-09-28 2014-03-11 Sandisk Technologies Inc. Method and system for adaptive coding in flash memories
US8341501B2 (en) 2009-04-30 2012-12-25 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
US8171258B2 (en) * 2009-07-21 2012-05-01 Apple Inc. Address generation unit with pseudo sum to accelerate load/store operations
US8977936B2 (en) 2010-06-10 2015-03-10 The Regents Of The University Of California Strong single and multiple error correcting WOM codes, coding methods and devices
US8769374B2 (en) * 2010-10-13 2014-07-01 International Business Machines Corporation Multi-write endurance and error control coding of non-volatile memories
US8914570B2 (en) * 2012-05-04 2014-12-16 International Business Machines Corporation Selective write-once-memory encoding in a flash based disk cache memory
KR102068519B1 (ko) 2013-07-01 2020-01-21 삼성전자주식회사 저장 장치, 그것의 쓰기 방법 및 읽기 방법
US9607690B2 (en) 2015-01-19 2017-03-28 Queen's University At Kingston High sum-rate write-once memory
US9760301B2 (en) * 2015-08-13 2017-09-12 Texas Instruments Incorporated WOM code emulation of EEPROM-type devices

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0108053A1 (de) * 1982-04-30 1984-05-16 Massachusetts Institute Of Technology Verfahren und vorrichtung zur wiederverwendung von nichtausradierbaren gedächtnismedien
JP2635023B2 (ja) * 1985-05-02 1997-07-30 株式会社日立製作所 フアイルデータ用ラベル書き込み方法
US6308250B1 (en) * 1998-06-23 2001-10-23 Silicon Graphics, Inc. Method and apparatus for processing a set of data values with plural processing units mask bits generated by other processing units
US6377526B1 (en) * 1999-04-01 2002-04-23 Plasmon Ide, Inc. Erasable WORM optical disk and method of writing thereto multiple times
WO2002049041A1 (en) * 2000-12-15 2002-06-20 Koninklijke Philips Electronics N.V. Data processing device with a memory location in which data is stored according to a wom code

Also Published As

Publication number Publication date
EP1346370A1 (de) 2003-09-24
JP4050617B2 (ja) 2008-02-20
US7177974B2 (en) 2007-02-13
DE60112795D1 (de) 2005-09-22
EP1346370B1 (de) 2005-08-17
US20040141358A1 (en) 2004-07-22
JP2004516537A (ja) 2004-06-03
ATE302464T1 (de) 2005-09-15
US6701408B2 (en) 2004-03-02
US20020087784A1 (en) 2002-07-04
WO2002049041A1 (en) 2002-06-20

Similar Documents

Publication Publication Date Title
DE60112795T2 (de) Datenverarbeitungseinrichtung mit einer speicherstelle, in der daten gemäss einem wom-code gespeichert werden
DE2614916C2 (de) Konverter zur Codeumwandlung
DE2646163C3 (de) Schaltungsanordnung zum Ersetzen fehlerhafter Informationen in Speicherplätzen eines nicht veränderbaren Speichers
DE19782077B4 (de) Verfahren und Vorrichtung zum Korrigieren eines Mehrpegelzellenspeichers durch Verwendung fehlerlokalisierender Codes
DE69735200T2 (de) Verfahren zu metrikbestimmung in einem übertragungssystem
DE69932962T2 (de) Kodierungsverfahren und Speicheranordnung
DE602004010922T2 (de) Speicher und stromeffizienter mechanismus für schnelles tabellennachschlagen
DE3855337T2 (de) Halbleiterspeichergerät mit verbessertem Redundanzschema
DE69323020T2 (de) Dekodierer für veränderliche Längenkodes
EP0123921B1 (de) Parallelverknüpfungsschaltung mit verkürztem Übertragsdurchlauf
DE68924639T2 (de) Matrixspeicher, der Standardblöcke, Standard-Unterblöcke, einen redundanten Block und redundante Unterblöcke beinhaltet, und integrierter Kreis, der eine Vielzahl solcher Matrixspeicher beinhaltet.
DE3638632A1 (de) Halbleiterspeicher
DE60220341T2 (de) Verfahren zum Erzeugen eines Burstfehlermusters sowie Burst- und Bytefehlerermittlungs- und-korrekturvorrichtung
DE202005021953U1 (de) Vorrichtung zum Generieren einer Paritätsprüfmatrix, Datenübertragungssystem, Codiervorrichtung, Decodiervorrichtung
DE3226033A1 (de) Speicherkorrektursystem
DE19963683A1 (de) Architektur zum Decodieren von linearen Blockfehler-Korrekturcodes mit Soft Decision
DE2702090B2 (de) Datenverarbeitungssystem mit einem zentralen Prozessor
DE69329092T2 (de) Huffman-Kode-Decodierungsschaltung
DE3122381A1 (de) Verfahren und einrichtung zur erzeugung von pruefbits zur sicherung eines datenwortes
DE102017110389A1 (de) Verfahren und Decoder zur Softinput Decodierung von verallgemeinerten verketteten Codes
DE102012103577A1 (de) Datenspeichervorrichtung, Kodierungseinheit, Systeme selbige umfassend und Verfahren zum Auslesen von Daten
DE69327021T2 (de) Dekodierschaltung für einen Kode variabler Länge
DE3878787T2 (de) Halbleiterspeicher mit einer mitintegrierten fehlerkorrekturanordnung und integrierte schaltung mit einem derartigen halbleiterspeicher.
DE102016102590A1 (de) Datenverarbeitungseinrichtungen und verfahren zum rekonstruieren eines puf-werts
DE69811477T2 (de) Verfahren und Vorrichtung zur Hashkodierung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: EISENFUEHR, SPEISER & PARTNER, 10178 BERLIN

8327 Change in the person/name/address of the patent owner

Owner name: NXP B.V., EINDHOVEN, NL