-
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.
-
Zusammenfassung
-
Ausführungsbeispiele
der vorliegenden Erfindung schaffen eine Schaltung zum Erzeugen
eines Fehlercodierungsdatenblocks für einen ersten Datenblock mit
einem ersten Fehlercodierungsweg, der ausgebildet ist, den Fehlercodierungsdatenblock
gemäß einer
ersten Fehlercodierung zu erzeugen; und einem zweiten Fehlercodierungsweg,
der ausgebildet ist, den Fehlercodierungsdatenblock gemäß einer
zweiten Fehlercodierung zu erzeugen; wobei der Fehlercodierungsdatenblock
für den
ersten Datenblock abhängig
von einem Steuerindikator wahlweise durch den ersten oder zweiten
Fehlercodierungsweg erzeugt wird, und zumindest der erste Fehlercodierungsweg
eine Datenanordnungsveränderungsvorrichtung
aufweist.
-
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 Ausführungsbeispiels 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 Ausführungsbeispiels 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.
-
Ausführungsbeispiele
der vorliegenden Erfindung schaffen ferner ein System mit einem
Prozessor; einem Speicher; und der zuvor beschriebenen Schaltung
zum Erzeugen eines Fehlercodierungsdatenblocks für einen ersten Datenblock,
die zwischen dem Prozessor und den Speicher gekoppelt ist.
-
Ausführungsbeispiele
der vorliegenden Erfindung schaffen des Weiteren eine Vorrichtung
zum Erzeugen eines Fehlercodierungsdatenblocks für einen ersten Datenblock mit:
einer ersten Einrichtung zum Durchführen einer ersten Fehlercodie rung,
um den ersten Datenblock zu erzeugen; und einer zweiten Einrichtung
zum Durchführen
einer zweiten Fehlercodierung, um den ersten Datenblock zu erzeugen;
wobei der Fehlercodierungsdatenblock für den ersten Datenblock abhängig von
einem Steuerindikator wahlweise durch die erste Einrichtung zum
Durchführen
einer ersten Fehlercodierung oder durch die zweite Einrichtung zum
Durchführen
einer zweiten Fehlercodierung erzeugt wird, und zumindest die erste
Einrichtung zum Durchführen
einer ersten Fehlerkodierung eine Einrichtung zum Durchführen eines Datenanordnungsveränderungsalgorithmus
aufweist.
-
Ausführungsbeispiele
der vorliegenden Erfindung schaffen außerdem eine Schaltung zum Erzeugen
eines Fehlercodierungsdatenblocks für einen ersten Datenblock mit:
einer Datenanordnungsänderungsvorrichtung
mit einem Eingang und einem Ausgang, wobei die Datenanordnungsänderungsvorrichtung
ausgebildet ist, an dem Eingang einen ersten Datenblock, der eine
gegebene Anzahl von Daten in einer 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 auszugeben; und einem Fehlercodierer
mit einem Eingang und einem Ausgang, wobei der Steuereingang mit
dem ersten Steuerausgang der Steuerung gekoppelt ist, der Eingang
des Fehlercodierers mit dem Ausgang der Datenanordnungsänderungsvorrichtung
gekoppelt ist, wobei der Fehlercodierer ausgebildet ist, basierend
auf dem zweiten Datenblock einen Codierungsdatenblock zu erzeugen,
und an dem Ausgang des Fehlercodierers ausgeben, wobei die Datenanordnungsänderungsvorrichtung
ferner einen Steuereingang aufweist und ausgebildet ist, den zweiten
Datenblock abhängig von
einem ersten Steuerindikator gemäß einem
ersten oder zweiten Datenanordnungsänderungsalgorithmus zu erzeugen,
und/oder der Fehlercodierer ferner einen Steuereingang aufweist
und ausgebildet ist, den Fehlercodierungsdatenblock abhängig von dem
ersten Steuerindikator gemäß einem
ersten oder zweiten Fehlercodierungsalgorithmus zu erzeugen.
-
Ausführungsbeispiele
der vorliegenden Erfindung schaffen auch ein Verfahren zum Erzeugen eines
Fehlercodierungsdatenblocks für
einen ersten Datenblock mit: Empfangen des ersten Datenblocks; Durchführen einer
ersten oder zweiten Fehlercodierung, um den ersten Datenblock zu
erzeugen; wobei der Fehlercodierungsdatenblock für den ersten Datenblock abhängig von
einem Steuerindikator wahlweise durch das Durchführen der ersten Fehlercodierung
oder durch das Durchführen
der zweiten Fehlercodierung erzeugt wird, und zumindest das Durchführen der
ersten Fehlerkodierung ein Durchführen eines Datenanordnungsveränderungsalgorithmus aufweist.
-
Ausführungsbeispiele
der vorliegenden Erfindung schaffen des Weiteren auch ein Verfahren zum
Erzeugen eines Fehlercodierungsdatenblocks für einen ersten Datenblock mit:
Empfangen des ersten Datenblocks, der eine gegebene Anzahl von Daten
in einer ersten Anordnung aufweist; Erzeugen eines zweiten Datenblocks
basierend auf dem ersten Datenblock, der die gegebene Anzahl von
Daten in einer zweiten Anordnung aufweist; und Erzeugen des Fehlercodierungsdatenblocks
basierend auf dem zweiten Datenblock; wobei der zweite Datenblock abhängig von
einem ersten Steuerindikator gemäß einem
ersten oder zweiten Datenanordnungsänderungsalgorithmus erzeugt
wird, und/oder der Fehlercodierungsdatenblock abhängig von
dem ersten Steuerindikator gemäß einem
ersten oder zweiten Fehlercodierungsalgorithmus erzeugt wird.
-
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 Fehler codierungsweg 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 1B bis 1D weitere
Ausführungsbeispiele
dieses allgemeinen Konzepts beschrieben.
-
1B zeigt
ein zweites Ausführungsbeispiel
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 Ausführungsbeispiel
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 Ausführungsbeispiel
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 Datenanordnungsverä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 1B, 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 Ausführungsbeispiel
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 Ausführungsbeispiel in 1E dadurch,
dass der zweite Fehlercodierungsweg 130 keine Datenanordnungsänderungsvorrichtung
aufweist. Derartige Ausführungsbeispiele
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änderungsvorrichtung 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 Steuerindi kator 116 einen ersten
oder zweiten Fehlercodierungsalgorithmus auszuführen.
-
Dabei
kann in einem Ausführungsbeispiel 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 110S 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 1A–1D dargestellt,
ausgewählt werden,
oder auf derselben Hardwareeinheit, die ausgebildet ist, beispielsweise
zwei oder mehrere verschiedene Softwareprogramme oder Mikroprogramme
auszuführen,
was dem „logischen
Schalter" der anhand
der 1A–1D 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üsselmerkmale
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 „Blip" 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
DRAM-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 beispiels weise 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
DRAM-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 DRAM 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 1A–1E, 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 1A–1D, 2 und 3 dem
zweiten Datenblock 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ührungsbeispiele
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,
wie sie in den 1A–1E 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 Information 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
der Schaltung gemäß einer
der 1A–1E 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