DE102007011801B4 - Schaltung zum Erzeugen eines Fehlercodierungsdatenblocks, Vorrichtung mit der Schaltung, Vorrichtung zum Erzeugen eines Fehlercodierungsdatenblocks - Google Patents

Schaltung zum Erzeugen eines Fehlercodierungsdatenblocks, Vorrichtung mit der Schaltung, Vorrichtung zum Erzeugen eines Fehlercodierungsdatenblocks Download PDF

Info

Publication number
DE102007011801B4
DE102007011801B4 DE102007011801A DE102007011801A DE102007011801B4 DE 102007011801 B4 DE102007011801 B4 DE 102007011801B4 DE 102007011801 A DE102007011801 A DE 102007011801A DE 102007011801 A DE102007011801 A DE 102007011801A DE 102007011801 B4 DE102007011801 B4 DE 102007011801B4
Authority
DE
Germany
Prior art keywords
error coding
error
data block
data
circuit
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
Application number
DE102007011801A
Other languages
English (en)
Other versions
DE102007011801A1 (de
Inventor
Aaron Santa Clara Nygren
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.)
Polaris Innovations Ltd
Original Assignee
Qimonda AG
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=39688008&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE102007011801(B4) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Qimonda AG filed Critical Qimonda AG
Priority to DE102007011801A priority Critical patent/DE102007011801B4/de
Priority to US12/046,099 priority patent/US8161344B2/en
Publication of DE102007011801A1 publication Critical patent/DE102007011801A1/de
Application granted granted Critical
Publication of DE102007011801B4 publication Critical patent/DE102007011801B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/24Memory cell safety or protection circuits, e.g. arrangements for preventing inadvertent reading or writing; Status cells; Test cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

Es wird eine Schaltung (100) zum Erzeugen eines Fehlercodierungsdatenblocks für einen ersten Datenblock beschrieben, mit einem ersten Fehlercodierungsweg (120), der ausgebildet ist, den Fehlercodierungsdatenblock gemäß einer ersten Fehlercodierung zu erzeugen; und einem zweiten Fehlercodierungsweg (130), der ausgebildet ist, den Fehlercodierungsdatenblock gemäß einer zweiten Fehlercodierung zu erzeugen; wobei der Fehlercodierungsdatenblock für den ersten Datenblock abhängig von einem Steuerindikator (116) wahlweise durch den ersten (120) oder zweiten (130) Fehlercodierungsweg erzeugt wird, und zumindest der erste Fehlercodierungsweg eine Datenanordnungsveränderungsvorrichtung (122) aufweist.

Description

  • Hintergrund
  • Die vorliegende Erfindung bezieht sich auf Schaltungen und insbesondere auf Schaltungen zum Fehlercodieren.
  • Die Anforderungen an die Datenübertragungsgeschwindigkeit von Systemen wachsen ständig. Dabei kommt der Fehlererkennung und/oder der Fehlerkorrektur eine Schlüsselrolle zu, um eine fehlerlose Datenübertragung zu gewährleisten und/oder die Systembandbreite weiter zu erhöhen.
  • Dabei können Fehler verschiedener Fehlerarten auftreten, die erkannt bzw. korrigiert werden sollen.
  • Es ist daher wünschenswert ein Konzept einsetzen zu können, das Fehler verschiedener Fehlerarten effizient erkennen oder korrigieren kann.
  • Die Offenlegungsschrift DE 103 11 428 A1 beschreibt eine Vorrichtung zur Erkennung und/oder Korrektur von Fehlern in aus einer Speichereinrichtung ausgelesenen Daten. Die beschriebene Vorrichtung zeichnet sich dadurch aus, dass sie konfigurierbar ist. Dazu weist die Vorrichtung ein Steuerregister auf, in dem zwei Steuerbits gespeichert sind. Durch das erste Steuerbit wird bestimmt, ob überhaupt eine Fehlercodierung durchgeführt wird, und durch das zweite Steuerbit, ob eine Parity-basierte Fehlererkennung oder eine Fehlerkor rektur durchgeführt wird. Dabei werden die Daten, die über einen Schreibdatenbus in einem ersten Speicher gespeichert werden sollen, auch an eine Vorrichtung zum Erzeugen der zur Fehlererkennung/Korrektur benötigten Daten zugeführt und die für die Fehlererkennung benötigten Daten über einen Parity-Bit-Generator erzeugt, während die für die Fehlerkorrektur benötigten Daten über einen Fehlerkorrekturdaten-Generator erzeugt werden. Die Fehlererkennungsdaten oder die Fehlerkorrekturdaten werden in einem zweiten Speicher gespeichert. Beim Auslesen der Daten aus dem ersten Speicher über einen Lesedatenbus können dann gleichzeitig die Daten zur Fehlererkennung oder Fehlerkorrektur aus dem zweiten Speicher ausgelesen werden, um eine Fehlererkennung oder Fehlerkorrektur mittels einer Vorrichtung zur Auswertung der Fehlererkennung aus Daten bzw. Fehlerkorrekturdaten durchzuführen, und/oder ein Fehlersignal auszugeben.
  • Die Patentschrift US 5,961,660 beschreibt ein Speichersystem mit einer Speichersteuerung, die ein Speicherkonfigurationsregister, eine Fehlerkorrekturlogik und eine Fehlererkennungslogik aufweist. Dabei wird über ein Modusbit in dem Konfigurationsregister gesteuert, ob für die Daten eine Fehlererkennung oder eine Fehlerkorrektur durch die entsprechende Fehlerkorrekturlogik bzw. Fehlererkennungslogik durchgeführt wird.
  • Die Veröffentlichungen „Interleaving for Combating Bursts of Errors" von Shi, Yun et al., IEEE Circuits And Systems Magazine, first quarter 2004, Seite 29–42, und „Efficient twodimensional interleaving technique by use of the set partitioning concept" von de Almeida et al., Electronics Letters, Vol. 32, Nr. 6, Seite 538–540, 14. März 1996, beschreiben Kombinationen aus Verwürflung und Zufallsfehlerkorrekturcodes, wobei Burst-Fehler durch das Verwürfeln in verteilte bzw. zufallsartige Fehler konvertiert werden und so mit Zufallsfehlerkorrekturcodes besser codiert werden können.
  • Diese Aufgabe wird gelöst durch eine Schaltung gemäß Anspruch 1, eine Vorrichtung gemäß Anspruch 11 und eine Schaltung gemäß Anspruch 24.
  • Kurzbeschreibung der Figuren
  • Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend unter Bezugnahme auf beiliegende Zeichnungen näher erläutert.
  • 1A zeigt ein Blockschaltbild eines Ausführungsbeispiels einer Schaltung mit einem Steuerindikator.
  • 1B zeigt ein Blockschaltbild eines zweiten Beispiels einer Schaltung mit einem Steuerindikator und mit einer gemeinsamen Datenanordnungsveränderungsvorrichtung.
  • 1C zeigt ein Blockschaltbild eines dritten Ausführungsbeispiels einer Schaltung mit einem Steuerindikator und mit einem gemeinsamen Fehlercodierer.
  • 1D zeigt ein Blockschaltbild eines vierten Ausführungsbeispiels mit zwei Steuerindikatoren, um Datenanordnungsveränderungsvorrichtungen und Fehlercodierer flexibel miteinander verbinden zu können.
  • 1E zeigt ein Blockschaltbild eines weiteren Beispiels einer Schaltung mit einem Steuerindikator.
  • 2 zeigt ein Blockschaltbild eines fünften Ausführungsbeispiels einer Schaltung mit einer Steuerung, einer Datenanordnungsveränderungsvorrichtung und einem Fehlercodierer.
  • 3 zeigt ein Blockschaltbild einer Schaltung als Schnittstellenvorrichtung zwischen einer Speichersteuerung und einem Speicherchip.
  • 4 zeigt ein Blockschaltbild eines Ausführungsbeispiels einer Schaltung als Speicherschnittstellenvorrichtung mit einem parallelen Eingang, einem Seriell-zu-Parallel-Wandler, einer programmierbaren logischen Einheit, einem Fehlercodierer und einem Modus-Register.
  • In der vorliegenden Anmeldung werden für Objekte und Funktionseinheiten, die gleiche oder ähnliche funktionelle Eigenschaften aufweisen, gleiche Bezugszeichen verwendet. In diesem Zusammenhang wird darauf hingewiesen, dass einerseits, sofern es nicht explizit anders angegeben ist, Abschnitte, die sich auf Objekte mit ähnlichen oder gleichen funktionalen Eigenschaften beziehen, zwischen den Beschreibungen der verschiedenen Ausführungsbeispiele austauschbar sind. Andererseits wird darauf hingewiesen, dass durch eine gemeinsame Verwendung eines Bezugszeichens für ein Objekt, das in mehr als einem Ausführungsbeispiel auftritt, nicht gesagt ist, dass diese in den verschiedenen Ausführungsbeispielen oder dem betreffenden Ausführungsbeispiel identische Merkmale und Eigenschaften aufweist. Gemeinsame oder ähnliche Bezugszeichen stellen also keine Aussage bezüglich der konkreten Auslegung und Dimensionierung dar.
  • Bei Ausführungsbeispielen der vorliegenden Erfindung können für verschiedene Fehlerarten verschiedene Fehlercodierungen ausgewählt werden. Dies ermöglicht insbesondere, für jede Fehlerart oder Klasse von Fehlerarten die optimale Fehlercodierung auszuwählen. Dabei wird beispielsweise abhängig von der Fehlerart (z. B. zeitlicher oder räumlicher Bündelfehler) die Anordnung der Daten in einem Datenblock derart verändert, dass eine anschließende Anwendung eines Fehlercodierungsalgorithmus eine bestmögliche Fehlererkennung bzw. -korrektur ergibt. In Ausführungsbeispielen der vorliegenden Erfindung ist daher die Kombination aus der Datenanordnungsveränderung und des entsprechenden Fehlercodierungsalgorithmus im Hinblick auf die Fehlerart gemeinsam optimiert bzw. als optimale Kombination ausgesucht.
  • 1A zeigt ein Blockschaltbild eines Ausführungsbeispiels einer Schaltung mit einer Steuerung 110, einem ersten Fehlercodierungsweg 120, mit einem zweiten Fehlercodierungsweg 130, mit einem Eingang 102 und einem Ausgang 104. Der erste Fehlercodierungsweg 120 weist eine erste Datenanordnungsveränderungsvorrichtung 122 und einen ersten Fehlercodierer 124 auf, und der zweite Fehlercodierungsweg 130 weist eine zweite Datenanordnungsveränderungsvorrichtung 132 und einen zweiten Fehlercodierer 134 auf.
  • Im Folgenden werden für die Eingänge und Ausgänge von Funktionseinheiten das Bezugszeichen der jeweiligen Funktionseinheiten zusammen mit einem E für Eingang sowie einem A für Ausgang verwendet. So weist die erste Datenanordnungsveränderungsvorrichtung 122 einen Eingang 122E und einen Ausgang 122A auf, der erste Fehlercodierer 124 einen Eingang 124E und einen Ausgang 124A, die zweite Datenanordnungsveränderungsvorrichtung 132 einen Eingang 132E und einen Ausgang 132A auf und der zweite Fehlercodierer 134 einen Eingang 134E und einen Ausgang 134A auf. Der Eingang 102 der Schaltung 100 kann über den ersten „Schalter" 112 wahlweise mit dem Eingang 122E der ersten Datenanordnungsveränderungsvorrichtung 122 oder mit dem Eingang 132E der zweiten Datenanordnungsveränderungsvorrichtung 132 verbunden werden. In den in 1A dargestellten Ausführungsbeispielen ist der Ausgang 122A der ersten Datenanordnungsveränderungsvorrichtung 122 mit dem Eingang 124E des ersten Fehlercodierers 124 gekoppelt und der Ausgang 132A der zweiten Datenanordnungsveränderungsvorrichtung 132 mit dem Eingang 134E des zweiten Fehlercodierers 134. Über den zweiten „Schalter" 104 kann wahlweise der Ausgang 124A des ersten Fehlercodierers oder der Ausgang 134A des zweiten Fehlercodierers mit dem Ausgang 104 gekoppelt werden. Die „Schalter" 112, 114 werden über die Steuerung 110 gesteuert.
  • An den Eingang 102 der Schaltung kann ein erster Datenblock, der eine gegebene Anzahl von Daten in einer ersten Anordnung aufweist angelegt werden, und mittels der Steuerung 110 und der „Schalter" 112, 114 kann gesteuert werden, ob der zu erzeugende Fehlercodierungsdatenblock für den ersten Datenblock über den ersten Fehlercodierungsweg 120 oder den zweiten Fehlercodierungsweg 130 erzeugt wird.
  • In dem ersten Fehlercodierungsweg 120 ist die erste Datenanordnungsveränderungsvorrichtung 122 ausgebildet, einen zweiten Datenblock basierend auf dem ersten Datenblock zu erzeugen, der die gegebene Anzahl von Daten in einer zweiten Anordnung aufweist, und an den ersten Fehlercodierer 124 auszugeben. Dieser ist wiederum ausgebildet, den Fehlercodierungsdatenblock für den ersten Datenblock basierend auf dem zweiten Datenblock gemäß einem ersten Fehlercodierungsalgorithmus zu erzeugen.
  • In dem zweiten Fehlercodierungsweg 130 ist die zweite Datenanordnungsveränderungsvorrichtung 132 ausgebildet, basierend auf dem ersten Datenblock gemäß einem zweiten Datenanordnungsveränderungsalgorithmus einen zweiten Datenblock zu erzeugen, der die gegebene Anzahl von Daten in einer zweiten Anordnung aufweist, und an den zweiten Fehlercodierer 134 auszugeben. Der zweite Fehlercodierer 134 ist ausgebildet, basierend auf dem zweiten Datenblock gemäß einem zweiten Fehlercodierungsalgorithmus den Fehlercodierungsdatenblock für den ersten Datenblock zu erzeugen.
  • In der vorliegenden Beschreibung wird, da die Erzeugung des Fehlercodierungsdatenblocks entweder über den ersten Fehlercodierungsweg 120 oder den zweiten Fehlercodierungsweg 130 erzeugt wird, zwischen dem ersten und zweiten Datenanordnungsveränderungsalgorithmus und dem ersten und zweiten Fehlercodierungsalgorithmus unterschieden, aber in beiden Fällen das Ergebnis der Datenanordnungsveränderung als zweiter Datenblock und das Ergebnis der Fehlercodierung als Fehlercodierungsdatenblock bezeichnet, auch wenn die Algorithmen und daher auch die Ergebnisse sich unterscheiden, um das Verständnis der Beschreibung nicht unnötig zu komplizieren.
  • Die „Schalter" 112 und 114 können dabei physikalische oder logische Schalter sein und sollen lediglich verdeutlichen, dass eine der zwei Fehlercodierungen für die Erzeugung des Fehlercodierungsdatenblocks ausgewählt wird. Dabei können die einzelnen Funktionsblöcke auf getrennten physikalischen Einheiten implementiert sein, oder teilweise bzw. alle in einer physikalischen Einheit implementiert sein. Die "Schalter" 112 und 114 sind daher nicht im engeren Sinne zu verstehen, sonder allgemein als eine Möglichkeit, zwischen zwei alternativen Fehlercodierungen bzw. Fehlercodierungswegen zu wechseln bzw. eine davon auszuwählen.
  • Entsprechend kann 1A beispielsweise auch als eine Veranschaulichung eines Verfahrens zum Erzeugen eines Fehlercodierungsdatenblocks für einen ersten Datenblock angesehen werden, bei dem zwischen einer ersten Fehlercodierung 120 und einer zweiten Fehlercodierung 130 ausgewählt wird, um den Fehlercodierungsdatenblock zu erzeugen.
  • Die Auswahl wird beispielsweise über einen Steuerindikator 116 gesteuert, wobei die beiden „Schalter" 112 und 114 gleichartig geschaltet werden, d. h. z. B. bei einem ersten Signalindikatorwert den Eingang 102 und den Ausgang 104 mit dem ersten Fehlercodierungsweg 120 verbinden und bei einem zweiten Steuerindikatorwert den Eingang 102 und den Ausgang 104 mit dem zweiten Fehlercodierungsweg 130 verbinden.
  • Im Folgenden werden anhand der 1C bis 1D weitere Ausführungsbeispiele dieses allgemeinen Konzepts beschrieben.
  • 1B zeigt ein zweites Beispiel einer Schaltung, die anstelle zweier verschiedener Datenanordnungsveränderungsvorrichtungen 122 und 132 eine gemeinsame Datenanordnungsveränderungsvorrichtung 122, 132 aufweist. Die Steuerung 110 ist ausgebildet, über die „Schalter" 112, 114 den ersten Fehlercodierer 124 oder den zweiten Fehlercodierer 134 auszuwählen, um den Fehlercodierungsdatenblock zu erzeugen. In anderen Worten, der erste Fehlercodierungsweg 120 aus 1A wird in dem Beispiel gemäß 1B aus der gemeinsamen Datenanordnungsveränderungsvorrichtung 122, 132 und dem ersten Fehlercodierer 124 gebildet und der zweite Fehlercodierungsweg 130 aus 1A aus der gemeinsamen Datenanordnungsveränderungsvorrichtung 122, 132 und dem zweiten Fehlercodierer 134.
  • Im Bezug auf ein Verfahren zum Erzeugen eines Fehlercodierungsdatenblocks stellt 1B damit ein Beispiel dar, bei dem der Datenanordnungsveränderungsalgorithmus für die erste und zweite Fehlercodierung der selbe ist, und die erste und zweite Fehlercodierung sich in den verschiedenen Fehlercodierungsalgorithmen, nämlich dem ersten und zweiten Fehlercodierungsalgorithmus, unterscheiden.
  • 1C zeigt ein drittes Ausführungsbeispiel der Schaltung mit einem gemeinsamen Fehlercodierer 124, 134. Die Steuerung 110 ist ausgebildet basierend auf dem Steuerindikator 116 über die „Schalter" 112 und 114 wahlweise die erste Datenan ordnungsveränderungsvorrichtung 122 oder die zweite Datenanordnungsveränderungsvorrichtung 132 für die Erzeugung des Fehlercodierungsdatenblocks auszuwählen.
  • In anderen Worten 1C zeigt ein Ausführungsbeispiel, bei dem der erste Fehlercodierungsweg 120 nach 1A aus einer ersten Datenanordnungsveränderungsvorrichtung 122 und dem gemeinsamen Fehlercodierer 124, 134 gebildet wird, und der zweite Fehlercodierungsweg 130 von der zweiten Datenanordnungsveränderungsvorrichtung 132 und dem gemeinsamen Fehlercodierer 124, 134 gebildet wird.
  • Im Bezug auf das Verfahren zum Erzeugen eines Fehlercodierungsdatenblocks zeigt 1C damit ein Ausführungsbeispiel, bei dem sich die erste und zweite Fehlercodierung durch verschiedene, nämlich den ersten und den zweiten Datenanordnungsveränderungsalgorithmus, unterscheiden aber denselben Fehlercodierungsalgorithmus verwenden.
  • 1D zeigt ein viertes Ausführungsbeispiel einer Schaltung, bei der die Auswahl der Fehlercodierung auf einem ersten Steuerindikator 116 und einem zweiten Steuerindikator 116' basiert. Dabei wird basierend auf dem ersten Steuerindikator 116 mittels der „Schalter" 112 und 114 wahlweise die erste Datenanordnungsveränderungsvorrichtung oder die zweite Datenanordnungsveränderungsvorrichtung 132 ausgewählt und basierend auf dem zweiten Steuerindikator 116' mittels der „Schalter" 112' und 114' der erste Fehlercodierer 124 oder der zweite Fehlercodierer 134 ausgewählt. Dadurch wird eine maximale Flexibilität erreicht, so dass verschiedene Datenanordnungsveränderungsvorrichtungen und Fehlercodierer beliebig miteinander verbunden werden können, um abhängig, beispielsweise von der Fehlerart, eine optimale Kombination aus einem bestimmten Datenanordnungsveränderungsalgorithmus und einem bestimmten Fehlercodierungsalgorithmus realisieren zu können.
  • Im Bezug auf ein Verfahren zum Erzeugen eines Fehlercodierungsdatenblocks beschreibt 1D damit ein Ausführungsbeispiel, bei dem eine erste oder zweite Fehlercodierung flexible durch eine Kombination aus einem ersten oder zweiten Datenanordnungsveränderungsalgorithmus mit einem ersten oder zweiten Fehlercodierungsalgorithmus realisiert wird.
  • Alternative Ausführungsbeispiele der zuvor beschriebenen Schaltungen können auch mehr als zwei Datenanordnungsveränderungsvorrichtungen bzw. Algorithmen und/oder mehr als zwei Fehlercodierer bzw. Fehlercodierungsalgorithmen aufweisen, die dann wie zuvor dargelegt kombiniert werden, um für bestimmte Fehlerarten optimale Kombinationen auszuwählen. Dabei können sich die Anzahl der verschiedenen Datenanordnungsveränderungsvorrichtungen bzw. -algorithmen und die Anzahl der Fehlercodierer bzw. Fehlercodierungsalgorithmen unterscheiden. Insbesondere in diesem Fall, können Ausführungsbeispiele der Schaltung, wie sie in den 1C und/oder 1D gezeigt sind, oder Kombinationen derselben vorteilhaft sein, um beispielsweise abhängig von der Fehlerart, spezifische Datenanordnungsveränderungsalgorithmen auf diese Fehlerarten in Kombination mit demselben Fehlercodierungsalgorithmus anzuwenden.
  • 1E zeigt ein weiteres Beispiel einer Schaltung zum Erzeugen eines Fehlercodierungsdatenblocks für einen ersten Datenblock, das ähnlich dem aus 1A ist. Gegenüber dem Ausführungsbeispiel aus 1A unterscheidet sich das Beispiel in 1E dadurch, dass der zweite Fehlercodierungsweg 130 keine Datenanordnungsänderungsvorrichtung aufweist. Derartige Beispiele können beispielsweise dann eingesetzt werden, wenn die Daten in dem ersten Datenblock in einer Anordnung vorliegen, die schon vorteilhaft für die zweite Fehlercodierung verwendet werden kann, während für die erste Fehlercodierung 120 die am Eingang 102 empfangenen Daten bzw. der erste Datenblock durch die erste Datenanordnungsände rungsvorrichtung 122 in eine andere für die erste Fehlercodierung vorteilhafte Datenordnung gebracht werden.
  • 2 zeigt ein fünftes Ausführungsbeispiel einer Schaltung zum Erzeugen eines Fehlercodierungsdatenblocks für einen ersten Datenblock mit einer Steuerung 110, einer Datenanordnungsveränderungsvorrichtung 222 und einem Fehlercodierer 224. Die Datenanordnungsveränderungsvorrichtung 222 weist einen Eingang 222E, einen Ausgang 222A und einen Steuereingang 222S auf, und der Fehlercodierer 224 weist einen Eingang 224E, einen Ausgang 224A und einen Steuereingang 224S auf. Die Steuerung 110 weist einen ersten Steuerausgang 110S auf. Der erste Steuerausgang 110S der Steuerung 110 ist mit dem Steuereingang 222S der Datenanordnungsveränderungsvorrichtung 220 und dem Steuereingang 224S des Fehlercodierers 224 gekoppelt, der Eingang 102 der Schaltung 200 ist mit dem Eingang 222E der Datenanordnungsveränderungsschaltung 222 gekoppelt, der Ausgang der Datenanordnungsveränderungsvorrichtung 220 ist mit dem Eingang 224E des Fehlercodierers 224 gekoppelt und der Ausgang 224A des Fehlercodierers 224 ist mit dem Ausgang 104 der Schaltung 200 gekoppelt.
  • Die Datenanordnungsveränderungsvorrichtung 222 ist ausgebildet, an dem Eingang 222E bzw. 202 einen ersten Datenblock, der eine gegebene Anzahl von Daten in der ersten Anordnung aufweist, zu empfangen, und basierend auf dem ersten Datenblock einen zweiten Datenblock, der die gegebene Anzahl von Daten in einer zweiten Anordnung aufweist, zu erzeugen und an dem Ausgang 222A auszugeben, wobei der zweite Datenblock abhängig von dem ersten Steuerindikator 116 gemäß einem ersten oder zweiten Datenanordnungsänderungsalgorithmus erzeugt wird. In anderen Worten, in Abhängigkeit von dem ersten Steuerindikator 116 ist die Datenanordnungsänderungsvorrichtung 220 ausgebildet, einen ersten oder zweiten Datenanordnungsänderungsalgorithmus auszuführen.
  • Der Fehlercodierer 224 ist ausgebildet, basierend auf dem zweiten Datenblock den Codierungsdatenblock zu erzeugen und an dem Ausgang des Fehlercodierers 224A bzw. 104 auszugeben, wobei der Fehlerdatenblock abhängig von dem ersten Steuerindikator 116 gemäß einem ersten oder zweiten Fehlercodierungsalgorithmus erzeugt wird. In anderen Worten, der Fehlercodierer 224 ist ausgebildet, abhängig von dem ersten Steuerindikator 116 einen ersten oder zweiten Fehlercodierungsalgorithmus auszuführen.
  • Dabei kann in einem Beispiel gemäß 2 nur der Fehlerdecodierer 224 einen Steuereingang 224S aufweisen, der mit dem Steuerausgang 116 gekoppelt ist, und ausgebildet sein, abhängig von dem Wert des Steuerindikators einen ersten oder zweiten Fehlercodierungsalgorithmus auszuführen, und die Datenanordnungsänderungsvorrichtung 222 ausgebildet sein, einen festen Datenanordnungsänderungsalgorithmus auszuführen ähnlich wie dies in 1B beschrieben wurde.
  • Bei einem anderen Ausführungsbeispiel kann die Schaltung ausgebildet sein, dass nur die Datenanordnungsänderungsvorrichtung 222 einen Steuereingang 222S aufweist, der mit dem Steuerausgang 1105 der Steuerung 110 gekoppelt ist, um abhängig von einem Wert des Steuerindikators 116 einen ersten oder zweiten Datenanordnungsänderungsalgorithmus durchzuführen, während die Fehlercodierungsvorrichtung 224 einen festen bzw. gemeinsamen Fehlercodierungsalgorithmus ausführt, wie dies anhand von 1C schon beschrieben wurde.
  • In einem weiteren Ausführungsbeispiel, weisen die Datenanordnungsänderungsvorrichtung 220 einen Steuereingang 220S und der Fehlercodierer 224 einen Steuereingang 224S auf, der mit dem Steuerausgang 110S der Steuerung 110 gekoppelt sind. In einem solchen Beispiel kann die Datenanordnungsänderungsvorrichtung 220 ausgebildet sein, bei einem ersten Wert des Steuerindikators 116 einen ersten Datenanordnungsänderungsalgorithmus auszuführen, und der Fehlercodierer 224 ausgebildet sein, bei einem ersten Wert des Steuerindikators 116 einen ersten Fehlercodierungsalgorithmus auszuführen, und des weiteren, die Datenanordnungsänderungsvorrichtung 222 ausgebildet sein, bei einem zweiten Wert des Steuerindikators 116 einen zweiten Datenanordnungsänderungsalgorithmus auszuführen, und der Fehlercodierer 224 ausgebildet sein, wenn der Steuerindikator einen zweiten Wert aufweist, einen zweiten Fehlercodierungsalgorithmus auszuführen. Ein solches Ausführungsbeispiel entspricht einem Ausführungsbeispiel wie es anhand von 1A beschrieben wurde.
  • 2 zeigt ein weiteres Ausführungsbeispiel (siehe gestrichelte Linien) mit einem ersten Steuerindikator 216 und einem zweiten Steuerindikator 216', wobei der Steuereingang 222S der Datenanordnungsänderungsvorrichtung 220 mit einem ersten Steuerausgang gekoppelt ist, um basierend auf dem ersten Steuerindikator 116 einen ersten oder zweiten Datenanordnungsänderungsalgorithmus durchzuführen, und wobei der Steuereingang 224S des Fehlercodierers 224 mit dem zweiten Steuerausgang 210S' der Steuerung 110 gekoppelt ist, um abhängig von dem zweiten Steuerindikator 116' einen ersten oder zweiten Fehlercodierungsalgorithmus durchzuführen, ähnlich wie dies anhand von 1D schon beschrieben wurde.
  • Dabei kann die erste Datenanordnungsänderungsvorrichtung ausgebildet sein, den ersten und zweiten Datenanordnungsänderungsalgorithmus auf zwei verschiedenen Hardwareplattformen durchzuführen, oder auf der selben Hardware, wobei dann diese Hardware beispielsweise ausgebildet ist, zwei oder mehrere verschiedenen Softwareprogramme oder Mikroprogramme auszuführen, um die unterschiedlichen Datenanordnungsänderungsalgorithmen durchzuführen. Entsprechend kann auch der Fehlercodierer 224 ausgebildet sein, den ersten und zweiten Fehlercodierungsalgorithmus auf zwei verschiedenen Hardwareeinheiten durchzuführen, die wie in den 1A1D dargestellt, ausgewählt werden, oder auf derselben Hardwareeinheit, die ausgebildet ist, beispielsweise zwei oder mehrere verschiede ne Softwareprogramme oder Mikroprogramme auszuführen, was dem „logischen Schalter" der anhand der 1A1D besprochen wurde, entsprechen würde.
  • 3 zeigt ein Ausführungsbeispiel eines Systems mit einem Prozessor 310, einem Speicher 320 und der Schaltung gemäß 2, die zwischen dem Prozessor 310 und dem Speicher 320 angeordnet bzw. gekoppelt ist. Dabei kann der Prozessor beispielsweise eine Speichersteuerung (Memorycontroller) sein. Ein Ausgang 312 des Prozessors 310 ist mit dem Eingang 102 der Schaltung bzw. mit dem Eingang 220E der Datenanordnungsänderungsvorrichtung 222 verbunden, während ein Eingang 322 des Speichers 320 mit dem Ausgang 304 der Schaltung bzw. dem Ausgang 224A des Fehlercodierers 224 verbunden ist. Die Steuerung 110 kann beispielsweise ein Modus-Register (Mode Register) des Systems sein, das z. B. Informationen über die Aktivierung eines Burst-Mode, und/oder der Burst-Länge enthält, beispielsweise in Form von gesetzten oder nicht gesetzten Bits, so dass diese Bits beispielsweise als Steuerindikatoren verwendet werden können, um abhängig von dem Betriebsmodus des Systems, die entsprechende Fehlercodierung auszuwählen.
  • 4 zeigt ein weiteres Ausführungsbeispiel einer Schaltung, bei der die Schaltung eine Speicherschnittstellenvorrichtung zwischen z. B. einem Prozessor und einem Speicher bzw. einem Speicherchip ist, wie dies zuvor anhand von 3 beschrieben wurde.
  • Im Folgenden werden Ausführungsbeispiele der Schaltung, des Systems und des Verfahrens für Speicheranwendungen beschrieben.
  • In kommenden Hochgeschwindigkeits-DRAMs (Dynamic Random Access Memory) sind der Einsatz von Fehlererkennungscodierung (EDC – Error Detection Coding) und möglicherweise von Fehlerkorrekturcodierung(ECC – Error Correction Coding)Schlüssel merkmale geworden. Dabei gibt es zumindest zwei Hauptgründe für den Einsatz von zumindest Fehlererkennungscodierung in DRAM-Schnittstellen. Ein Grund liegt daran, dass neue Applikationen wie beispielsweise Hochgeschwindigkeitsanwendungen Graphikspeicher, z. B. GDRAMs (Graphic DRAM), für Befehlssätze (instruction sets) anstelle von frame-orientierten Pufferspeichern (frame buffers) einsetzen, was voraussetzt, dass die Datenübertragung sehr sicher ist. In einem mehrheitlich graphisch orientierten Gebrauch ist die Korrigierung einiger weniger Bits normalerweise nicht kritisch und wird in einem nicht zu bemerkenden „Slip" in der Graphik resultieren. Auf der anderen Seite, kann ein Bitfehler in einem Code bzw. in einem Befehlssatz dazu führen, dass das System sich „aufhängt", d. h. nicht länger funktioniert. Ein zweiter Grund liegt darin, dass der Einsatz von Fehlererkennungs- und -korrekturcodes es ermöglicht, die Systembandbreite zu höheren Grenzen zu verschieben mit der gleichzeitigen Absicherung, dass die Fehlererkennungscodierung bzw. Fehlerkorrekturcodierung es dem System ermöglicht, weiterhin ohne Probleme weiter zu laufen, obwohl einer oder mehrere Fehler in der Datenübertragung aufgetreten sind.
  • Bei jeder Art von Fehlererkennungscodierungen bzw. Fehlerkorrekturcodierung gilt es, die richtigen Charakteristika auszuwählen:
    • 1. den besten Algorithmus aus der Vielzahl möglicher Algorithmen auszuwählen, wie z. B. Wiederholungscodes, polynombasierte Codes, wie der CRC-Code (Cyclic Redundancy Check), einfache oder mehrdimensionale Parity-Codes, Hammingabstandsbasierende Codes etc.;
    • 2. im Falle von polynom-basierten Codes, das beste Polynom auszuwählen; und
    • 3. die Anordnung für die Datenverarbeitung auszuwählen, die beeinflusst, welche Art von Fehlern am besten erkannt bzw. korrigiert werden kann.
  • In herkömmlichen DRAN-Schnittstellen werden keine Fehlererkennungscodes oder Fehlerkorrekturcodes eingesetzt. Ausführungsbeispiele der vorliegenden Erfindung adressieren insbesondere den zweiten und dritten zuvor genannten Aspekt. Eine einfache Lösung wäre, z. B. einen festen Wert wie beispielsweise ein festes Polynom für CRC-Codierung und eine feste Datenverarbeitungsreihenfolge basierend auf dem aktuellen besten Wissen (best guess), einzusetzen. Für DRAM-Schnittstellen bieten sich CRC-Codes als beste Auswahl aus den Fehlererkennungs- und Korrekturcodes an, da die Datenübertragung burstorientiert bzw. bündelartig ist und CRC-Codes eine sehr gute Bündelfehlerabdeckung (burst error coverage) aufweisen. Die „Burst-Orientierung" für eine paralleles DRAN-Schnittstelle kann sowohl in der zeitlichen wie auch in der räumlichen Richtung liegen.
  • Daher ist es beispielsweise schwer zu entscheiden, welche Polynome eingesetzt werden sollen und in welcher Reihenfolge die Daten mit dem Polynom verarbeitet werden sollen, um die bestmögliche Fehlerabdeckung für ein DRAM-System zu erreichen.
  • Da die Hochgeschwindigkeits-DRAM-Systeme sich fortlaufend weiter entwickeln und sich immer ändern, ändern sich auch die Arten der Fehlermuster bzw. Fehlerarten in dem System. Darüber hinaus, ändern sich die Fehlermuster für dasselbe DRAN abhängig von der Systemumgebung und der Anwendung. Es ist daher unmöglich, ein optimales Polynom und eine optimale Datenreihenfolge auszuwählen, um alle Fälle abzudecken.
  • Ausführungsbeispiele der Schaltung können eine flexible Auswahl beispielsweise des CRC-Polynoms und der Datenverarbeitungsreihenfolge ermöglichen.
  • Ausführungsbeispiele der Schaltung nutzen das DRAM-Modus-Register und/oder programmierbare Sicherungen (programmable fuses), die elektrisch oder laserbasiert programmiert werden können, und/oder Metallmaskierungsoptionen (metal mask options) um
    • 1. die CRC-Polynome programmierbar, und
    • 2. die Reihenfolge der Datenverarbeitung flexibel zu gestalten.
  • Ein relativ einfaches Ausführungsbeispiel ist, zwei verschiedene Polynome einzusetzen und die Datenverarbeitung in einer von zwei Richtungen (räumlich oder zeitlich) einzusetzen bzw in einer von zwei Reihenfolgen durchzuführen. 4 zeigt ein solches Ausführungsbeispiel.
  • 4 zeigt ein Ausführungsbeispiel einer erfindungsgemäßen Schaltung als DRAM-Schnittstelle mit einem parallelen Eingang 102 einem Seriell-zu-Parallel-Wandler 410, einer programmierbaren logischen Einheit 420, einem Demultiplexer 430, der Steuerung 110 in Form des Modus-Registers des DRAM, und einem Fehlercodierer 224 in Form einer CRC-Logik. Dabei bilden der Seriell-zu-Parallel-Wandler 410, die programmierbare logische Einheit 420 und der Demultiplexer 430 eine Datenanordnungsänderungsvorrichtung 222. Der parallele Eingang 102 bzw. die parallele Schnittstelle 102 ist ausgebildet, neun Bits (DQ0–DQ8) gleichzeitig zu empfangen. Der Seriell-zu-Parallel-Wandler 410 ist ausgebildet, mehrere Neun-Bit-Datenworte (z. B. erstes Neun-Bit-Datenwort: 0, 8, 16, ... 64; zweites Neun-Bit-Datenwort: 1, 9, 17, ..., 65 etc.) über mehrere Taktimpulse zu empfangen und parallel anzuordnen. In dem in 4 gezeigten Beispiel empfängt der Seriell-zu-Parallel-Wandler 410 in acht Taktpulsen (t0 – t0 + 8U.I.) acht Datenwörter mit jeweils neun Bit, also insgesamt 72 Bit. Mit Bezug auf die 1A1E, 2 und 3 entspricht die mit dem Bezugszeichen 435 bezeichnete Matrixanordnung der empfangenen Bits 0–71 der ersten Anordnung, die in diesem Beispiel eine zeitliche und eine räumliche Komponente aufweist. Wie in 4 dargestellt, ist der Seriell-zu-Parallel-Wandler 410 ausgebildet, den ersten Datenblock in eine parallele Darstellung umzuwandeln, so dass jedes Bit der Matrix 435 bzw. des ersten Datenblocks 435 in einer Reihe (row) R0–R71 zugeordnet wird bzw. an eine Zeilenleitung R0–R71 angelegt wird, wobei die Art der Seriell-zu-Parallel-Wandlung abhängig von dem jeweiligen Seriell-zu-Parallel-Wandler ist.
  • Die programmierbare logische Einheit 420 ist in zwei Bereiche aufgeteilt, nämlich in einen ersten Teilbereich 422 mit den Spaltenleitungen C0–C71 und in einen zweiten Teilbereich 427, der die Spaltenleitungen C0'–C71' umfasst. Die programmierbare logische Einheit 420 ist so programmiert, dass in dem ersten Teilbereich 422 jede Reihe R0–R71 mit genau einer Spalte C0–C71 verbunden ist, und in dem zweiten Teilbereich 424 jede Reihe R0–R71 mit wiederum genau einer Spalte bzw. Spaltenleitung C0'–C71' verbunden ist. Über diese programmierbare logische Einheit 420 kann somit eine beliebige Veränderung der Datenreihenfolge an den Spaltenleitungsausgängen, die mit dem Demultiplexer 430 verbunden sind, erreicht werden. In anderen Worten, der erste Teilbereich 422 definiert eine erste Datenreihenfolge bzw. ersten Datenanordnungsänderungsalgorithmus, während der zweite Teilbereich 424 eine zweite Datenreihenfolge bzw. zweiten Datenanordnungsänderungsalgorithmus definiert. Über den Demultiplexer 430 werden wahlweise die Spaltenleitungen C0–C71 des ersten Teilbereichs 422 oder die Spaltenleitung C0'–C71' des zweiten Teilbereichs 424 ausgewählt. Die Auswahl erfolgt beispielsweise in Abhängigkeit der Steuerbits bzw. Steuerindikatoren von dem Modus-Register, wie dies durch das Bezugszeichen 116 und dem Pfeil von der Steuerung 110 zu dem Demultiplexer 430 gezeigt ist. An dem Ausgang des Demultiplexers 430 wird ein Datenwort 440 der Wortbreite 72 Bit ausgegeben, das mit Bezug auf 1A1D, 2 und 3 dem zweiten Daten block 440, der dieselben Daten, nämlich die 72 Bits des ersten Datenblocks 435 in einer zweiten Anordnung aufweist, die von der ersten Anordnung des ersten Datenblocks unterschiedlich ist, aufweist.
  • In anderen Worten, die Art und Weise der Seriell-zu-Parallel-Wandlung durch den Seriell-zu-Parallel-Wandler 410 und die Reihenfolgenänderung durch den ersten Teilbereich 422 oder den zweiten Teilbereich 424 realisieren den ersten bzw. zweiten Datenanordnungsänderungsalgorithmus, während der Demultiplexer 430 basierend auf dem Steuerindikator 116 den erste oder zweite Datenanordnungsänderungsalgorithmus bzw. die entsprechende-vorrichtung auswählt.
  • Der zweite Datenblock wird an den Fehlercodierer 224 weitergegeben, wo der zweite Datenblock in Abhängigkeit der Steuerbits bzw. Steuerindikatoren 116 gemäß einem ersten oder zweiten CRC-Code den Fehlercodierungsdatenblock für den ersten Datenblock 435 erzeugt, wie dies anhand des Bezugszeichens 450 in 4 dargestellt ist, wobei der Fehlercodierungsdatenblock in diesem Fall acht Bit umfasst.
  • In einem weiteren Ausführungsbeispiel wird der erste Signalindikator 116 durch ein erstes Bit oder eine erste Kombination von Steuerbits des Modus-Registers gebildet, während der zweite Steuerindikator 116' durch ein zweites, anderes Bit oder eine andere Kombination von Bits des Modus-Registers gebildet wird. Entsprechend ermöglicht ein solches Ausführungsbeispiel mit einem ersten und einem zweiten Steuerindikator, wie zuvor beschrieben, eine noch flexiblere Auswahl bzw. Kombination von Datenanordnungsänderungsalgorithmen und Fehlercodierungsalgorithmen.
  • In anderen Worten, die Steuerbits in dem Beispiel gemäß 4 wählen eine erste oder zweiten Datenreihenfolge und ein Polynom in dem CRC-Block aus. Zwei mögliche Formen der Datenanordnung sind:
    • 1. eine zweite Datenanordnung 440, die optimiert ist, um Bündelfehler in der Zeitrichtung abzudecken: z. B. 0–7; 8–15; 16–23; ...; 64–71
    • 2. eine zweite Datenanordnung 440, die optimiert ist, um Bündelfehler in der räumlichen Richtung abzudecken: z. B. 0, 8, 16, 24, 32, 40, 48, 56, 64; 1, 9, 17, 25, 33, 41, 49, 57, 65; ...; 7, 15, 23, 31, 39, 47, 55, 63, 71.
  • Dabei kann in einem Ausführungsbeispiel der erste oder zweite Teilbereich ausgebildet sein, die Reihenfolge der Daten, wie sie an den Zeilen R0–R71 anliegen, unverändert beispielsweise an den Spaltenausgängen C0–C71 auszugeben. In anderen Worten, R0 wird mit C0 verknüpft, R1 mit C1, ... und R71 mit C71.
  • Jede Kombination von Datenreihenfolgen ist möglich und eine flexible Implementierung ist, wie in 4 gezeigt, der Einsatz einer programmierbaren logischen Einheit, um jede mögliche Kombination von Reihenfolgen zu ermöglichen. Beispiele für programmierbare logische Einheiten sind PLA (programmable logic array), PAL (programmable array logic) oder PLE (programmable logic element). Alternative Realisierungen des Gitters 420 sind beispielsweise feste Verbindungen aus Metall oder anderen leitenden Materialen.
  • Die Auswahl des Polynoms kann in vielfacher Weise implementiert werden. Eine einfache Methode ist ein Pfad durch zwei verschiedene Logikblocks zu wählen, wobei jeder Logikblock ein unterschiedliches Polynom repräsentiert. Dies ist keine flächeneffiziente Methode, aber eine mögliche. Dem Fachmann sind andere „intelligentere" bzw. flächeneffizientere Möglichkeiten Polynome flexibel zu wählen bekannt, weswegen hier nicht weiter darauf eingegangen wird. Wesentlich für Ausfüh rungsbeispiele der Erfindung ist, dass beispielsweise das Polynom für das DRAM programmiert werden kann.
  • Alternativ zu dem Einsatz des Modus-Registers kann auch jede andere Steuerung eingesetzt werden.
  • Alternative Ausführungsbeispiele der Datenanordnungsänderungsvorrichtung 22 weisen beispielsweise eine Matrix 420 auf, die mehr als zwei Teilbereiche 422 und 424 aufweist, und einen Demultiplexer 430, der aus mehr als einem Teilbereich auswählen kann.
  • Als mögliche Datenanordnungsveränderungsvorrichtung 222, kommen beliebige Implementierungen in Frage, die eine Anordnung von Daten derart verändern können, dass diese optimal für einen nachfolgende Fehlererkennungs- oder -korrekturalgorithmus aufbereitet sind.
  • Ein alternatives Ausführungsbeispiel für eine Datenanordnungsänderungsvorrichtung, wie sie beispielsweise in der Schaltung gemäß 4 eingesetzt werden kann, ist, eine Speichermatrix, die die Werte in aufeinander folgenden Spalten, in der Reihenfolge, in der sie empfangen werden, abspeichert, diese dann aber nicht spaltenweise in der selben Reihenfolge wieder ausgelesen werden, sondern beispielsweise zeilenweise ausgelesen werden.
  • Im Folgenden wird ein Beispiel für zwei verschiedene Datenanordnungsveränderungsalgorithmen, die die Anordnung der Daten des ersten Datenblocks derart ändern, dass ein zeitlicher Bündelfehler und/oder ein räumlicher Bündelfehler durch einen CRC-Code entdeckt werden können.
  • Dabei sind Bündelfehler, die auch als Blockfehler oder im Englischen als Burst-Errors bezeichnet werden, Fehler, die abhängig von anderen auftreten. Ein Fehlerbündel wird dabei durch eine zusammenhängende Sequenz von fehlerhaften Bits oder allgemein von fehlerhaften Symbolen charakterisiert, bei der das erste und das letzte Bit fehlerbehaftet sind. Gute gewählte CRC-Polynome können alle Einbitfehler, jede ungerade Zahl von verfälschten Bits, sowie all Bündelfehler der Länge r erkennen, wobei r der Grad des CRC-Polynoms ist. Zusätzlich werden alle Fehler (also auch unabhängige Vier-Bit-, Sechs-Bit-, Acht-Bit-Fehler usw.) erkannt, deren Polynomdarstellung einem kleineren Grad als das CRC-Polynom hat. In dem in 4 dargestellten Beispiel wird beispielsweise ein CRC-Generatorpolynom achten Grades eingesetzt, um die acht CRC-Bits zu erzeugen. Entsprechend kann die Schaltung mit einem gut gewählten CRC-Polynom Fehler von bis zu acht Bit erkennen, wenn diese in der zweiten Anordnung 440 als ein zusammenhängendes Bündel von Fehlern vorliegen.
  • Ein zeitlicher Bündelfehler, bei dem beispielsweise die Bits mit der Nummer 24–27 in dem ersten Datenblock 435 (s. 4) alle falsch sind, kann beispielsweise durch einen entsprechenden Teilbereich 422, der die Bits mit der Nummer 24–27 in dem zweiten Datenblock 440 so anordnet, dass sie direkt aufeinander folgen, und der Anwendung eines entsprechenden Polynoms achten Grads entdeckt werden. Würden diese fehlerhaften Bits verteilt vorliegen, würden durch dasselbe Polynom möglicherweise nicht erkannt werden.
  • Entsprechendes gilt für einen räumlichen Bündelfehler. Sind beispielsweise die Bits mit den Nummern 16, 24, 32 und 40 (s. 4) alle fehlerhaft, so können diese durch einen geeignet ausgebildeten zweiten Teilbereich 424 so angeordnet werden, dass sie in dem zweiten Datenblock 440 direkt aufeinander folgen, und so mittels des CRC-Polynoms erkannt werden. Wohingegen für den Fall, dass die Bits mit der Nummer 16, 24, 32 und 40 in dem zweiten Datenblock 440 verteilt vorliegen, die Erkennung dieser Fehler mittels des CRC-Polynoms eher unwahrscheinlich ist.
  • Mit Ausführungsbeispielen der vorliegenden Schaltung können jedoch auch, beispielsweise, Kombinationen von zeitlichen und räumlichen Bündelfehlern entdeckt werden. Angenommen, die Bits mit den Nummern 33, 34, 41 und 42 des ersten Datenblocks 435 (s. 4) sind alle fehlerhaft, so können diese durch eine geeignete Änderung der Anordnung in der Datenanordnungsänderungsvorrichtung 222 in dem zweiten Datenblock 440 so angeordnet werden, dass sie im Bezug auf die Bestimmung des CRC-Polynoms aufeinander folgen und verarbeitet werden, so dass dieser kombinierte zeitlich/räumliche Bündelfehler mittels eines geeigneten CRC-Codes erkannt wird.
  • Wie zuvor erläutert, hängt die Art der Fehlermuster beispielsweise von DRAM-Systemen, dem Speicher-Chip, der System-Umgebung, und der Anwendung oder auch dem Modus, in dem der Speicher bzw. das Speichersystem betrieben wird, ab. Die Auswahl der entsprechenden Datenanordnungsveränderungsvorrichtungen und Datenanordnungsveränderungsalgorithmen ist daher neben der Auswahl der CRC-Polynome entscheidend für die Fehlererkennungsrate.
  • Fehlerarten bzw. Fehlermuster können beispielsweise über statistische Modelle, Simulationen und/oder tatsächliche Messungen bzw. Tests ermittelt werden, um darauf basierend die optimalen Kombinationen aus Datenanordnungsänderungsalgorithmen und Fehlercodierungsalgorithmen zu bestimmen.
  • Wie zuvor beschrieben, sind Ausführungsbeispiele der Schaltung jedoch nicht auf CRC-Fehlercodes beschränkt, sondern können mit beliebigen anderen Fehlererkennungs- und/oder Fehlerkorrekturcodes eingesetzt werden, bei denen durch eine auf die Fehlermuster und den Fehlercode abgestimmte Änderung der Anordnung der Daten die Fehlererkennungs- bzw. Fehlerkorrekturrate erhöht werden kann.
  • Das Ausführungsbeispiel gemäß 4 zeigt ein Szenario, bei dem über acht Zeitimpulse (0–7) Neun-Bit-Wörter eingelesen werden und in einer anderen Anordnung 440 an den Fehlercodierer 224 gegeben werden. In einem weiteren Szenario kann über eine Burst-Mode-Steuerung, die Burst-Länge beispielsweise auf vier Zeitimpulse auf 0–3 gesetzt werden, so dass Ausführungsbeispiele der vorliegenden Schaltung, ausgewählt sind, beispielsweise einen weiteren Teilbereich der Matrix 420 für diesen Modus vorzusehen, und über das Modus-Register 110, den Demultiplexer 430 derart zu steuern, dass dieser Teilbereich ausgelesen wird, so dass beispielsweise nur 36 der 72 Bits mit verarbeitbaren Daten belegt sind, und gegebenenfalls auch das Polynom in dem Fehlercodierer 224 entsprechend gewählt wird.
  • Alternative Ausführungsbeispiele der Schaltung weisen einen seriellen Eingang bzw. eine serielle Schnittstelle auf, einen parallelen Eingang bzw. eine parallele Schnittstelle auf, um mehrere Daten, beispielsweise Bits, gleichzeitig zu empfangen und/oder über mehrere Taktpulse bzw. einem längeren Zeitintervall mehrere Bits bzw. Datenwörter zu empfangen. Ein Datum kann beispielsweise ein Bit sein und ein Datenwort beispielsweise aus mehreren Bits bestehen. Wobei ein Datenwort aus mehreren Bits, die seriell d. h. zeitlich aufeinander folgend empfangen werden, gebildet werden kann oder durch mehrere Bits, die gleichzeitig empfangen werden (parallele Schnittstelle) empfangen werden, gebildet werden kann. Unter einem Datenblock wird in diesem Zusammenhang eine serielles Datenwort, ein paralleles Datenwort oder eine serielle Folge von parallelen Datenwörtern, wie sie beispielsweise 4 durch das Bezugszeichen 435 darstellt, verstanden. Ausführungsbeispiele der Datenanordnungsveränderungsvorrichtung 222 sind ausgebildet, eine dieser Datenblockarten oder auch alle derart gemäß zumindest eines Datenanordnungsveränderungsalgorithmus zu verändern, um mittels des darauf folgenden Fehlercodierungsalgorithmus die Fehlererkennung zu optimieren oder zumindest gegenüber einer Lösung ohne Datenanordnungsänderung zu verbessern.
  • Die entsprechenden Ausführungen gelten auch für Ausführungsbeispiele bzw. Beispiele, wie sie in den 1A1E erläutert wurden.
  • 3 zeigt in Ausführungsbeispiel eines Systems, mit einem Prozessor 310, einem Speicher oder Speicherchip 320 und einem Ausführungsbeispiel einer Schaltung 200, wobei die Schaltung zwischen dem Prozessor 310 und den Speicher 320 angeordnet bzw. gekoppelt ist.
  • Der Prozessor 310 kann beispielsweise eine Speichersteuerung (memory controller) sein.
  • Im Folgenden wird beispielhaft ein möglicher Schreibvorgang und ein möglicher Lesevorgang beschrieben, ohne Ausführungsbeispiele eines oben genannten Systems auf diese Ausführung zu beschränken.
  • Zum Speichern des ersten Datenblocks legt der Prozessor 310 den ersten Datenblock an den Eingang 102 bzw. den Eingang 222E der Datenanordnungsänderungsvorrichtung 222. Abhängig von dem Wert des ersten Steuerindikators 116 in dem Modus-Register 110 wählt die Datenanordnungsänderungsvorrichtung 222 beispielsweise den ersten Datenanordnungsänderungsalgorithmus aus, um basierend auf dem ersten Datenblock den zweiten Datenblock zu erzeugen. Abhängig von dem Wert, z. B. des ersten Steuerindikators 116, wählt der Fehlercodierer 224 einen Fehlercodierungsalgorithmus aus, z. B. den ersten Fehlercodierungsalgorithmus, um den Fehlercodierungsdatenblock für den ersten Datenblock zu erzeugen und an dem Ausgang 224A des Fehlercodierers 224 oder dem Ausgang 104 an den Speichereingang 322 des Speichers 320 auszugeben. Der Speicher 320 ist ausgebildet, die Informationen des ersten Datenblocks zusammen mit dem Fehlercodedatenblock zu speichern, so dass bei einem Auslesen der Information des ersten Datenblocks deren Korrektheit über die Auswertung des Fehlercodierungsdatenblocks überprüft werden kann. Dabei kann die Infor mation des ersten Datenblocks beispielsweise in Form des ersten Datenblocks, z. B. durch eine direkte Verbindung zwischen dem Prozessor 310 und dem Speicher 320 an dem Speicher 320 angelegt werden, oder, beispielsweise in Form des zweiten Datenblocks mit der zweiten bzw. geänderten Datenanordnung.
  • Zum Auslesen der Information des ersten Datenblocks durch den Prozessor 310, wird beispielsweise die Information des ersten Datenblocks in Form des ersten Datenblocks aus dem Speicher 320 zusammen mit dem Fehlercodierungsdatenblock ausgelesen und der erste Datenblock ähnlich wie in dem Schreibvorgang gemäß einer Schaltung, wie sie beispielsweise in 2 gezeigt ist, verarbeitet, d. h. erst in einer Datenanordnungsveränderungseinheit in einen zweiten Datenblock mit einer zweiten Datenanordnung umgewandelt wird, um dann den selben Fehlercodierungsalgorithmus, wie er für den Schreibvorgang angewendet wurde, durchzuführen, um einen Fehlercodierungsdatenblock basierend auf dem gespeicherten ersten Datenblock zu erzeugen. Dieser Fehlercodierungsdatenblock wird dann, beispielsweise, mit dem gespeicherten Fehlercodierungsdatenblock verglichen, um die Korrektheit des ausgelesenen ersten Datenblocks zu überprüfen.
  • In dem zweiten Ausführungsbeispiel, bei dem die Information des ersten Datenblocks in Form des zweiten Datenblocks in dem Speicher gespeichert wird, wird bei einem Lesevorgang der zweite Datenblock ausgelesen, zusammen mit dem Fehlercodierungsdatenblock, und der zweite Datenblock einer Fehlercodierung gemäß dem selben Fehlercodierungsalgorithmus durchgeführt, wie diese bei dem Schreibvorgang schon angewendet wurde, um einen zweiten Fehlercodierungsdatenblock zu erzeugen. Dieser zweite Fehlercodierungsdatenblock wird mit dem gespeicherten bzw. ersten Fehlercodierungsdatenblock verglichen, um festzustellen, ob der zweite Datenblock korrekt ausgelesen wurde, wobei ein korrekte Auslesen dann gefolgert wird, wenn der erste und zweite Fehlercodierungsdatenblock übereinstimmen. Um die Datenanordnung des ersten, ursprünglichen Datenblocks 435 wieder herzustellen, wird dann beispielsweise der inverse Datenanordnungsänderungsalgorithmus zu dem Datenanordnungsänderungsalgorithmus, der für den Schreibvorgang eingesetzt wurde, durchgeführt.
  • Die Schaltung kann eine separate Schaltung sein, oder Bestandteil des Prozessors 310 oder des Speichers bzw. Speicher-Chips 320 sein. Unabhängig davon, kann die Steuerung 110, z. B. das Modus-Register, Bestandteil des Prozessors, der Schaltung oder des Speichers sein, wobei in einer Speicheranwendung, typischerweise die Speichersteuerung den Betriebsmodus, d. h. den Inhalt des Modusregisters bestimmt bzw. steuert.
  • In einem weiteren Ausführungsbeispiel ist die Schaltung ein Teil eines Speichermoduls, das die Schaltung und einen oder mehrere Speicherchips aufweist, die beispielsweise auf einem Substrat des Speichermoduls aufgebracht sind.
  • Die Fehlercodierung für die Speichersteuerung kann „transparent" sein, d. h. die Speichersteuerung „bemerkt" nicht, dass eine Fehlerkodierung und eine Fehlerüberprüfung durchgeführt wird, sondern stellt den ersten Datenblock wie in herkömmlichen Systemen ohne Fehlerkodierung für einen Schreibvorgang bereit und liest den ersten Datenblock wie in herkömmlichen Systemen in einem Lesevorgang aus. Die Fehlerkodierung und die Fehlerüberprüfung finden beispielsweise auf dem Speichermodul statt.
  • Dabei kann das Speichermodul ausgebildet sein, den Steuerindikator aus dem Modus-Register der Speichersteuerung auszulesen, um dann autark, d. h. ohne weitere Steuerung durch die Speichersteuerung, die Fehlercodierung bei dem Schreibvorgang vorzunehmen, und bei einem Lesevorgang die Überprüfung der Korrektheit bzw. die Fehlerkorrektur durchzuführen.
  • Anstelle einer Schaltung gemäß 2 kann in einem System auch Ausführungsbeispiele bzw. Beispiele der Schaltung gemäß einer der 1A1E verwendet werden. Die Beschreibung bezüglich der Ausführungsbeispiele, beispielhafter Lese- und Schreibvorrichtungen gelten entsprechen.
  • Die in den vorhergehenden Ausführungsbeispielen beschriebenen Schaltungen können diskrete Bauelemente aufweisen oder integrierte Schaltungen sein.
  • Abhängig von den Gegebenheiten können die Ausführungsbeispiele der erfindungsgemäßen Verfahren in Hardware oder in Software implementiert werden. Die Implementierung kann auf einem digitalen Speichermedium, insbesondere einer Diskette, CD oder DVD mit elektronisch auslesbaren Steuersignalen erfolgen, die so mit einem programmierbaren Computersystem zusammenwirken, dass eines der Ausführungsbeispiele der erfindungsgemäßen Verfahren ausgeführt wird. Allgemein bestehen die Ausführungsbeispiele der vorliegenden Erfindung somit auch in Software-Programm-Produkten bzw. Computer-Programm-Produkten bzw. einem Programm-Produkt mit einem auf einem maschinenlesbaren Träger gespeicherten Programmcode zur Durchführung eines der Ausführungsbeispiele der erfindungsgemäßen Verfahren, wenn eines der Software-Programm-Produkte auf einem Rechner oder auf einem Prozessor abläuft. In anderen Worten ausgedrückt, kann ein Ausführungsbeispiel der vorliegenden Erfindung somit als ein Computer-Programm bzw. Software-Programm bzw. Programm mit einem Programmcode zur Durchführung eines Ausführungsbeispiels eines erfindungsgemäßen Verfahrens realisiert werden, wenn das Programm auf einem Prozessor abläuft.
  • Der Prozessor kann hierbei von einem Computer, einer Chipkarte, einem digitalen Signalprozessor oder einem anderen integrierten Schaltkreis gebildet sein.
  • 100
    Integrierte Schaltung
    110
    Steuerung
    120
    Erste Fehlercodierungsvorrichtung
    130
    Zweite Fehlercodierungsvorrichtung
    122
    Erste Datenanordnungsveränderungsvorrichtung
    132
    Zweite Datenanordnungsveränderungsvorrichtung
    124
    Erster Fehlercodierer
    134
    Zweiter Fehlercodierer
    116
    Erster Steuerindikator
    116'
    Zweiter Steuerindikator
    102
    Eingang der integrierten Schaltung
    104
    Ausgang der integrierten Schaltung
    110'
    Steuerung
    122E
    Eingang von 122
    122A
    Ausgang von 122
    124E
    Eingang von 124
    124A
    Ausgang von 124
    132E
    Eingang von 132
    132A
    Ausgang von 132
    134E
    Eingang von 134
    134A
    Ausgang' von 134
    112, 112', 114, 114'
    Schalter der Steuerung 110 bzw. 110'
    200
    Integrierte Schaltung
    222
    Datenanordnungsänderungsvorrichtung
    224
    Fehlercodierung
    222B
    Eingang von 222
    222A
    Ausgang von 222
    224E
    Eingang von 224
    224A
    Ausgang von 224
    110S
    Erster Steuerausgang der Steuerung 110
    110S'
    Zweiter Ausgang der Steuervorrichtung 110
    116
    Erster Steuerindikator
    116'
    Zweiter Steuerindikator
    310
    Prozessor
    312
    Ausgangsprozessor
    320
    Speicher
    322
    Eingang des Speichers
    300
    System
    435
    Erster Datenblock
    440
    Zweiter Datenblock
    450
    Fehlercodierungsdatenblock
    420
    Programmierbares logisches Bauelement
    422
    Erster Teilbereich des programmierbaren logischen Bauelements
    424
    Zweiter Teilbereich des programmierbaren logischen Bauelements
    410
    ...-zu-Parallel-Wandler
    430
    Demultiplexer
    R0 bis R71
    Zeilenleitungen
    C0 bis C71
    Spaltenleitungen des ersten Teilbereichs
    C0' bis C71'
    Spaltenleitungen des zweiten Teilbereichs

Claims (37)

  1. Schaltung (100) zum Erzeugen eines Fehlercodierungsdatenblocks für einen ersten Datenblock mit einem ersten Fehlercodierungsweg (120), der ausgebildet ist, den Fehlercodierungsdatenblock gemäß einer ersten Fehlercodierung zu erzeugen; und einem zweiten Fehlercodierungsweg (130), der ausgebildet ist, den Fehlercodierungsdatenblock gemäß einer zweiten Fehlercodierung zu erzeugen; wobei der Fehlercodierungsdatenblock für den ersten Datenblock abhängig von einem Steuerindikator (116) wahlweise durch den ersten (120) oder zweiten (130) Fehlercodierungsweg erzeugt wird, und der erste Fehlercodierungsweg eine Datenanordnungsveränderungsvorrichtung (122) aufweist, die ausgebildet ist einen ersten Datenanordnungsänderungsalgorithmus durchzuführen, und der zweite Fehlercodierungsweg eine Datenanordnungsveränderungsvorrichtung (132) aufweist, die ausgebildet ist einen zweiten von dem ersten unterschiedlichen Datenanordnungsänderungsalgorithmus durchzuführen.
  2. Schaltung nach Anspruch 1, bei der der erste Fehlercodierungsweg (120) und der zweite Fehlercodierungsweg (130) eine beiden Fehlercodierungswegen gemeinsame Fehlercodierungsvorrichtung (124, 134) aufweisen, die ausgebildet ist, für die erste und zweite Fehlercodierung denselben Fehlercodierungsalgorithmus durchzuführen.
  3. Schaltung nach Anspruch 1, bei der der erste Fehlercodierungsweg (120) eine erste Datenanordnungsveränderungsvorrichtung (122) und einen ersten Fehlercodierer (124) aufweist; und der zweite Fehlercodierungsweg (130) eine zweite Datenanordnungsänderungsvorrichtung (132) und einen zweiten Fehlercodierer (134) aufweist; wobei die erste Datenanordnungsänderungsvorrichtung (122) ausgebildet ist, um einen ersten Datenanordnungsänderungsalgorithmus durchzuführen und die zweite Datenanordnungsänderungsvorrichtung (132) ausgebildet ist, um einen zweiten von dem ersten unterschiedlichen Datenanordnungsänderungsalgorithmus durchzuführen; und der erste Fehlercodierer (124) ausgebildet ist, um einen ersten Fehlercodierungsalgorithmus durchzuführen, und der zweite Fehlercodierer (134) ausgebildet ist, einen zweiten von dem ersten unterschiedlichen Fehlercodierungsalgorithmus durchzuführen.
  4. Schaltung nach Anspruch 1, wobei der Fehlercodierungsdatenblock für den ersten Datenblock abhängig von dem Steuerindikator (116) und einem zweiten Steuerindikator (116') wahlweise durch den ersten (120) oder zweiten (130) Fehlercodierungsweg erzeugt wird.
  5. Schaltung nach einem der Ansprüche 1 bis 4, wobei eine Datenanordnungsänderungsvorrichtung (122, 132) ausgebildet ist, basierend auf dem ersten Datenblock, der eine gegebene Anzahl von Daten in einer ersten Anordnung aufweist, gemäß einem Datenanordnungsänderungsalgorithmus einen zweiten Datenblock, der die gegebene Anzahl von Daten in einer zweiten Anordnung aufweist, zu erzeugen.
  6. Schaltung nach einem der Ansprüche 1 bis 5, bei der ein Eingang (102) der Schaltung ein Paralleleingang ist, der mehrere Daten gleichzeitig empfangen kann.
  7. Schaltung nach einem der Ansprüche 1 bis 6, bei der eine Fehlercodierungsvorrichtung (124, 134) ausgebildet ist, einen Fehlererkennungs- oder Fehlerkorrekturalgorithmus als Fehlerercodierungsalgorithmus durchzuführen.
  8. Schaltung nach einem der Ansprüche 1 bis 7, bei der eine Fehlercodierungsvorrichtung (124, 134) ausgebildet ist, einen CRC-Algorithmus (CRC-Cyclic-Redundancy-Code) als Fehlerercodierungsalgorithmus durchzuführen.
  9. Schaltung nach einem der Ansprüche 1 bis 8, bei der der Steuerindikator (116) abhängig von einem Betriebsmodus ist.
  10. Schaltung nach einem der Ansprüche 1 bis 9, die eine integrierte Schaltung ist.
  11. Vorrichtung mit einem Prozessor (310); einem Speicher (320); und einer Schaltung zum Erzeugen eines Fehlercodierungsdatenblocks für einen ersten Datenblock nach einem der Ansprüche 1 bis 10, die zwischen dem Prozessor (310) und den Speicher (320) gekoppelt ist.
  12. Vorrichtung nach Anspruch 11, bei dem der Speicher ausgewählt ist, die Informationen des ersten Datenblocks und den Fehlercodierungsdatenblock bei einem Schreibvorgang zusammen zu speichern.
  13. Vorrichtung nach Anspruch 11 oder 12, bei dem die Schaltung ausgebildet ist, die Information des Ersten Datenblocks zusammen mit dem Fehlercodierungsdatenblock bei einem Lesevorgang gemeinsam auszulesen, und mittels des Fehlercodierungsdatenblocks eine Fehlererkennung oder Fehlerkorrektur für die ausgelesene Information des ersten Datenblocks durchzuführen.
  14. Schaltung (200) nach Anspruch 1, wobei die Datenanordnungsänderungsvorrichtung (222) einen Eingang (222E) und einen Ausgang (222A) aufweist und die Datenanordnungsänderungsvorrichtung ausgebildet ist, an dem Eingang (222E) den ersten Datenblock (435), der eine gegebene Anzahl von Daten in einer ersten Anordnung aufweist, zu empfangen, und basierend auf dem ersten Datenblock (435) einen zweiten Datenblock (440), der die gegebene Anzahl von Daten in einer zweiten Anordnung aufweist, zu erzeugen, und an dem Ausgang auszugeben; und die Schaltung (200) einen Fehlercodierer (224) mit einem Eingang (224E), einem Ausgang (224A) und einem Steuereingang (224S) aufweist, wobei der Steuereingang mit einem ersten Steuerausgang einer Steuerung (110) gekoppelt ist, der Eingang des Fehlercodierers mit dem Ausgang der Datenanordnungsänderungsvorrichtung gekoppelt ist, und wobei der Fehlercodierer ausgebildet ist, basierend auf dem zweiten Datenblock einen Codierungsdatenblock zu erzeugen, und an dem Ausgang (224A) des Fehlercodierers auszugeben, wobei die Datenanordnungsänderungsvorrichtung (222) ferner einen Steuereingang (222S) aufweist und ausgebildet ist, den zweiten Datenblock abhängig von dem Steuerindikator (116) als ersten Steuerindikator gemäß dem ersten oder zweiten Datenanordnungsänderungsalgorithmus zu erzeugen, und/oder der Fehlercodierer (224) ferner einen Steuereingang (224S) aufweist und ausgebildet ist, den Fehlercodierungsdatenblock abhängig von dem Steuerindikator (116) als ersten Steuerindikator (116) gemäß einem ersten oder zweiten Fehlercodierungsalgorithmus zu erzeugen.
  15. Schaltung nach Anspruch 14, wobei die Datenanordnungsänderungsvorrichtung (222) ausgebildet ist, den zweiten Datenblock (440) gemäß dem ersten Datenanordnungsänderungsalgorithmus zu erzeugen und der Fehlercodierer (224) ausgebildet ist, den Fehlercodierungsdatenblock gemäß dem ersten Fehlercodierungsalgorithmus zu erzeugen, wenn der erste Steuerindikator (116) einen ersten Wert aufweist, und wobei die Datenanordnungsänderungsvorrichtung (222) ausgebildet ist, den zweiten Datenblock gemäß dem zweiten Datenanordnungsänderungsalgorithmus zu erzeugen und der Fehlercodierer (224) ausgebildet ist, den Fehlercodierungsdatenblock gemäß dem zweiten Fehlercodierungsalgorithmus zu erzeugen, wenn der erste Steuerindikator einen zweiten Wert aufweist, der von dem ersten Wert unterschiedlich ist.
  16. Schaltung nach Anspruch 14, bei der der Fehlercodierer (222) ausgebildet ist, den Fehlercodierungsdatenblock (450) abhängig von einem zweiten Steuerindikator (116') gemäß dem ersten oder zweiten Fehlercodierungsalgorithmus zu erzeugen.
  17. Schaltung nach einem der Ansprüche 14 bis 16, wobei der Eingang (222E) der Datenanordnungsänderungsvorrichtung (222) ein Paralleleingang ist, der mehrere Daten gleichzeitig empfangen kann.
  18. Schaltung nach einem der Ansprüche 14 bis 17, wobei die Fehlercodierungsalgorithmen Fehlererkennungs- oder Fehlerkorrekturalgorithmen sind.
  19. Schaltung nach einem der Ansprüche 14 bis 18, wobei der Fehlercodierungsalgorithmus ein CRC-Algorithmus ist.
  20. Schaltung nach einem der Ansprüche 14 bis 19, bei der die Datenanordnungsänderungsvorrichtung (222) einen Seriell-zu-Parallel-Wandler (410) ein programmierbares logisches Bauelement (420) und einen Demultiplexer (430) aufweist, wobei der Seriell-zu-Parallel-Wandler ausgebildet ist, um einen ersten Datenblock in eine parallele Zwischenanordnung zu wandeln, so dass alle Daten des ersten Datenblocks (435) parallel zueinander angeordnet sind.
  21. Schaltung nach einem der Ansprüche 14 bis 20, die eine Speicherschnittstellenvorrichtung ist.
  22. Schaltung nach Anspruch 21, wobei der Eingang der Datenanordnungsänderungsvorrichtung (222) ein Paralleleingang ist, der mehrere Daten gleichzeitig empfangen kann, und die Datenanordnungsänderungsvorrichtung ausgebildet ist, in einem Burst-Modus den ersten Datenblock (435) über mehrere Taktimpulse (460) zu empfangen.
  23. Schaltung nach einem der Ansprüche 14 bis 22, bei der der erste Steuerindikator von einer Steuervorrichtung, beispielsweise von einem Modus-Register (110) bereitgestellt wird.
  24. Schaltung zum Erzeugen eines Fehlercodierungsdatenblocks (450) für einen ersten Datenblock (435) für eine Fehlererkennung oder Fehlerkorrektur bei demselben, wobei die Schaltung ausgebildet ist, um eine erste (120) oder zweite (130) Fehlercodierung durchzuführen, um den Fehlerkodierungsdatenblock (450) zu erzeugen; und den Fehlercodierungsdatenblock für den ersten Datenblock abhängig von einem Steuerindikator (116) wahlweise durch ein Durchführen der ersten Fehlercodierung oder durch ein Durchführen der zweiten Fehlercodierung zu erzeugen, und das Durchführen der ersten Fehlerkodierung ein Durchführen eines ersten Datenanordnungsveränderungsalgorithmus aufweist und das Durchführen der zweiten Fehlerkodierung ein Durchführen eines zweiten von dem ersten unterschiedlichen Datenanordnungsänderungsalgorithmus aufweist.
  25. Schaltung nach Anspruch 24, bei der das Durchführen der ersten Fehlercodierung (120) und der zweiten Fehlercodierung (130) ein Durchführen (124, 134) desselben Fehlerkodierungsalgorithmus aufweisen.
  26. Schaltung nach Anspruch 24, bei der das Durchführen einer ersten Fehlercodierung (120) ein Durchführen des ersten Datenanordnungsveränderungsalgorithmus (122) und ein Durchführen eines ersten Fehlercodierungsalgorithmus (124) aufweist; und das Durchführen einer zweiten Fehlercodierung (130) ein Durchführen des zweiten Datenanordnungsveränderungsalgorithmus (132) und ein Durchführen eines zweiten Fehlercodierungsalgorithmus (134) aufweist; wobei der erste Fehlercodierungsalgorithmus unterschiedlich zu dem zweiten Fehlercodierungsalgorithmus ist.
  27. Schaltung nach Anspruch 24, wobei der Fehlercodierungsdatenblock für den ersten Datenblock abhängig von einem Steuerindikator (116) und einem zweiten Steuerindikator (116') wahlweise durch das Durchführen der ersten Fehlercodierung oder durch das Durchführen der zweiten Fehlercodierung erzeugt wird.
  28. Schaltung nach Anspruch 24 bis 27, bei der ein Empfangen des ersten Datenblocks (435) das Empfangen mehrerer Daten gleichzeitig umfasst.
  29. Schaltung nach Anspruch 24 bis 28, wobei der Fehlercodierungsalgorithmus ein Fehlererkennungs- oder Fehlerkorrekturalgorithmus ist.
  30. Schaltung nach Anspruch 24 bis 29, wobei der Fehlercodierungsalgorithmus ein CRC-Algorithmus ist.
  31. Schaltung nach einem der Ansprüche 24 bis 30, wobei der Wert des Steuerindikators von einem Betriebsmodus abhängt.
  32. Schaltung nach Anspruch 24, wobei die Schaltung ausgebildet ist, um den ersten Datenblock (435), der eine gegebene Anzahl von Daten in einer ersten Anordnung aufweist, zu empfangen; einen zweiten Datenblock (440) basierend auf dem ersten Datenblock (435) zu erzeugen, der die gegebene Anzahl von Daten in einer zweiten Anordnung aufweist; und den Fehlercodierungsdatenblock (450) basierend auf dem zweiten Datenblock (440) zu erzeugen; wobei der zweite Datenblock abhängig von dem Steuerindikator als erstem Steuerindikator (116) gemäß einem ersten oder zweiten Datenanordnungsänderungsalgorithmus erzeugt wird, und/oder der Fehlercodierungsdatenblock abhängig von dem Steuerindikator als erstem Steuerindikator (116) gemäß einem ersten oder zweiten Fehlercodierungsalgorithmus erzeugt wird.
  33. Schaltung nach Anspruch 32, wobei die Schaltung ausgebildet ist, den zweiten Datenblock (440) gemäß dem ersten Datenanordnungsänderungsalgorithmus zu erzeugen und den Fehlercodierungsdatenblock gemäß dem ersten Fehlercodierungsalgorithmus zu erzeugen, wenn der erste Steuerindikator (116) einen ersten Wert aufweist, und den zweiten Datenblock (440) gemäß dem zweiten Datenanordnungsänderungsalgorithmus zu erzeugen und den Fehlercodierungsdatenblock (450) gemäß dem zweiten Fehlercodierungsalgorithmus zu erzeugen, wenn der erste Steuerindikator (116) einen zweiten Wert aufweist.
  34. Schaltung nach Anspruch 32, wobei ein Erzeugen des Fehlercodierungsdatenblocks ausgebildet ist, den Fehlercodierungsdatenblock (450) abhängig von einem zweiten Steuerindikator (116') gemäß dem ersten oder zweiten Fehlercodierungsalgorithmus zu erzeugen.
  35. Schaltung nach einem der Ansprüche 32 bis 34, wobei ein Empfangen des ersten Datenblocks (435) das Empfangen mehrerer Daten gleichzeitig umfasst.
  36. Schaltung nach einem der Ansprüche 32 bis 35, wobei die Fehlercodierungsalgorithmen Fehlererkennungs- oder Fehlerkorrekturalgorithmen sind.
  37. Schaltung nach einem der Ansprüche 32 bis 36, wobei der Fehlercodierungsalgorithmus ein CRC-Algorithmus ist.
DE102007011801A 2007-03-12 2007-03-12 Schaltung zum Erzeugen eines Fehlercodierungsdatenblocks, Vorrichtung mit der Schaltung, Vorrichtung zum Erzeugen eines Fehlercodierungsdatenblocks Active DE102007011801B4 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102007011801A DE102007011801B4 (de) 2007-03-12 2007-03-12 Schaltung zum Erzeugen eines Fehlercodierungsdatenblocks, Vorrichtung mit der Schaltung, Vorrichtung zum Erzeugen eines Fehlercodierungsdatenblocks
US12/046,099 US8161344B2 (en) 2007-03-12 2008-03-11 Circuits and methods for error coding data blocks

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102007011801A DE102007011801B4 (de) 2007-03-12 2007-03-12 Schaltung zum Erzeugen eines Fehlercodierungsdatenblocks, Vorrichtung mit der Schaltung, Vorrichtung zum Erzeugen eines Fehlercodierungsdatenblocks

Publications (2)

Publication Number Publication Date
DE102007011801A1 DE102007011801A1 (de) 2008-09-18
DE102007011801B4 true DE102007011801B4 (de) 2009-04-02

Family

ID=39688008

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102007011801A Active DE102007011801B4 (de) 2007-03-12 2007-03-12 Schaltung zum Erzeugen eines Fehlercodierungsdatenblocks, Vorrichtung mit der Schaltung, Vorrichtung zum Erzeugen eines Fehlercodierungsdatenblocks

Country Status (2)

Country Link
US (1) US8161344B2 (de)
DE (1) DE102007011801B4 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090186534A1 (en) * 2008-01-17 2009-07-23 Amphenol Corporation Electrical Connector Contact
US8103928B2 (en) * 2008-08-04 2012-01-24 Micron Technology, Inc. Multiple device apparatus, systems, and methods
US9037931B2 (en) * 2011-12-21 2015-05-19 Advanced Micro Devices, Inc. Methods and systems for logic device defect tolerant redundancy
US10236045B2 (en) * 2012-09-21 2019-03-19 Samsung Electronics Co., Ltd. Semiconductor memory device having detection clock patterns phase-inverted from each other and detection clock generating method thereof
EP3217287A1 (de) * 2016-03-11 2017-09-13 Siemens Aktiengesellschaft Verfahren und einrichtung zur erkennung von fehlern bei der speicherung oder übertragung von daten

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5961660A (en) * 1997-03-03 1999-10-05 International Business Machines Corporation Method and apparatus for optimizing ECC memory performance
DE10311428A1 (de) * 2003-03-13 2004-09-30 Infineon Technologies Ag Vorrichtung zur Erkennung und/oder Korrektur von Fehlern in aus einer Speichereinrichtung ausgelesenen Daten

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7210077B2 (en) * 2004-01-29 2007-04-24 Hewlett-Packard Development Company, L.P. System and method for configuring a solid-state storage device with error correction coding
US7739576B2 (en) * 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
US7900120B2 (en) * 2006-10-18 2011-03-01 Micron Technology, Inc. Memory system and method using ECC with flag bit to identify modified data
US8015473B2 (en) * 2006-12-19 2011-09-06 Intel Corporation Method, system, and apparatus for ECC protection of small data structures
US7975205B2 (en) * 2007-01-26 2011-07-05 Hewlett-Packard Development Company, L.P. Error correction algorithm selection based upon memory organization

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5961660A (en) * 1997-03-03 1999-10-05 International Business Machines Corporation Method and apparatus for optimizing ECC memory performance
DE10311428A1 (de) * 2003-03-13 2004-09-30 Infineon Technologies Ag Vorrichtung zur Erkennung und/oder Korrektur von Fehlern in aus einer Speichereinrichtung ausgelesenen Daten

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
DE ALMEIDA, C., … PALAZZO JR., R.: "Efficient twodimensional interleaving technique … by use of the set partitioning concept".In: Electronics Letters, … Vol. 32, No. 6, S. 538-540, 14. März 1996 *
SHI, Yun Q., … ZHANG, Xi Min, NI, Zhi-Cheng, … ANSARI, Nirwan: "Interleaving for Combating Bursts of Errors". In … IEEE Circuits and Systems Magazine, First Quarter 2004, S. 29-42 *
SHI, Yun Q.; ZHANG, Xi Min, NI, Zhi-Cheng; ANSARI, Nirwan: "Interleaving for Combating Bursts of Err ors". In: IEEE Circuits and Systems Magazine, Firs t Quarter 2004, S. 29-42; DE ALMEIDA, C.; PALAZZO JR., R.: "Efficient twodimensional interleaving te chnique by use of the set partitioning concept".In : Electronics Letters, Vol. 32, No. 6, S. 538-540, 14. März 1996

Also Published As

Publication number Publication date
US20080244358A1 (en) 2008-10-02
DE102007011801A1 (de) 2008-09-18
US8161344B2 (en) 2012-04-17

Similar Documents

Publication Publication Date Title
DE2916710C2 (de)
DE2260850C2 (de) Schaltungsanordnung zur Erkennung von Einzel- und Mehrfachfehlern und zur korrektur von Einzel- und bestimmten Mehrfachfehlern
DE2328869A1 (de) Verfahren zur pruefung eines digitalen speichersystems sowie zur durchfuehrung dieses verfahrens dienendes selbstpruefendes digitales speichersystem
DE3329022C2 (de)
DE3209679C2 (de)
DE3607015A1 (de) Verfahren und vorrichtung zur funktionspruefung von direktzugriffsspeichern
DE102007011801B4 (de) Schaltung zum Erzeugen eines Fehlercodierungsdatenblocks, Vorrichtung mit der Schaltung, Vorrichtung zum Erzeugen eines Fehlercodierungsdatenblocks
DE2256135C3 (de) Verfahren zum Prüfen von monolithisch integrierten Halbleiterschaltungen
EP2100308B1 (de) Verfahren und halbleiterspeicher mit einer einrichtung zur erkennung von adressierungsfehlern
EP0400179B1 (de) Verfahren und Vorrichtung zum internen Paralleltest von Halbleiterspeichern
DE102006005817B4 (de) Fehlererkennungsvorrichtung für einen Adressdecoder und Vorrichtung zur Fehlererkennung für einen Adressdecoder
DE2157829C2 (de) Anordnung zum Erkennen und Korrigieren von Fehlern in Binärdatenmustern
DE102005022107B4 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
DE2946119C2 (de) Datenverarbeitungseinrichtung mit einer Vielzahl von Datenverarbeitungselementen, denen ein einziger Strom von Steuersignalen zugeführt wird
DE2053836C3 (de) Anordnung zur Korrektur von Fehlerbündeln in binär codierten Datengruppen
DE2549392C3 (de) Verfahren zur Erhöhung der Zuverlässigkeit von integrierten Speicherbausteinen und zur Verbesserung der Ausbeute von nach außen hin fehlerfrei erscheinenden Speicherbausteinen bei ihrer Herstellung
DE102016104012A1 (de) Verarbeitung eines Datenworts
EP0127118A1 (de) Speichersteueranordnung, insbesondere für fehlertolerantes Fernsprech-Vermittlungssystem
EP0453609B1 (de) Verfahren zum Testen einer kleinsten adressierbaren Einheit eines RAM's auf über einer bestimmten Zahl liegende Bitfehler
EP0738974B1 (de) Seriell zugreifbare Speichervorrichtung mit hoher Fehlerkorrigierbarkeit
DE2742881C2 (de)
EP0294678B1 (de) Sicherungseinrichtung zum Absichern von Daten in Speichereinheiten einer Datenverarbeitungsanlage unter Verwendung eines Fehlererkennungs- und Fehlerkorrekturcodes
EP0605786A1 (de) Verfahren und Einrichtung zur fehlercodierenden Datenübertragung
DE10157537C2 (de) Integrierter Speicher und Verfahren zur Reparatur eines integrierten Speichers
EP1579230B1 (de) Vorrichtung und verfahren zur bildung einer signatur

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R082 Change of representative

Representative=s name: HESS, PETER, DIPL.-PHYS., DE

Representative=s name: PETER HESS, DE

Representative=s name: PETER HESS, 81675 MUENCHEN, DE

R008 Case pending at federal patent court
R039 Revocation action filed

Effective date: 20121005

R020 Patent grant now final
R040 Withdrawal/refusal of revocation action now final

Effective date: 20140311

R082 Change of representative
R081 Change of applicant/patentee

Owner name: POLARIS INNOVATIONS LTD., IE

Free format text: FORMER OWNER: QIMONDA AG, 81739 MUENCHEN, DE

Effective date: 20141117

Owner name: INFINEON TECHNOLOGIES AG, DE

Free format text: FORMER OWNER: QIMONDA AG, 81739 MUENCHEN, DE

Effective date: 20141117

R081 Change of applicant/patentee

Owner name: POLARIS INNOVATIONS LTD., IE

Free format text: FORMER OWNER: INFINEON TECHNOLOGIES AG, 85579 NEUBIBERG, DE

R082 Change of representative

Representative=s name: RICHARDT PATENTANWAELTE PARTG MBB, DE