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 PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/24—Memory cell safety or protection circuits, e.g. arrangements for preventing inadvertent reading or writing; Status cells; Test cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online 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
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 Steuerung110 , einem ersten Fehlercodierungsweg120 , mit einem zweiten Fehlercodierungsweg130 , mit einem Eingang102 und einem Ausgang104 . Der erste Fehlercodierungsweg120 weist eine erste Datenanordnungsveränderungsvorrichtung122 und einen ersten Fehlercodierer124 auf, und der zweite Fehlercodierungsweg130 weist eine zweite Datenanordnungsveränderungsvorrichtung132 und einen zweiten Fehlercodierer134 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 Eingang122E und einen Ausgang122A auf, der erste Fehlercodierer124 einen Eingang124E und einen Ausgang124A , die zweite Datenanordnungsveränderungsvorrichtung132 einen Eingang132E und einen Ausgang132A auf und der zweite Fehlercodierer134 einen Eingang134E und einen Ausgang134A auf. Der Eingang102 der Schaltung100 kann über den ersten „Schalter"112 wahlweise mit dem Eingang122E der ersten Datenanordnungsveränderungsvorrichtung122 oder mit dem Eingang132E der zweiten Datenanordnungsveränderungsvorrichtung132 verbunden werden. In den in1A dargestellten Ausführungsbeispielen ist der Ausgang122A der ersten Datenanordnungsveränderungsvorrichtung122 mit dem Eingang124E des ersten Fehlercodierers124 gekoppelt und der Ausgang132A der zweiten Datenanordnungsveränderungsvorrichtung132 mit dem Eingang134E des zweiten Fehlercodierers134 . Über den zweiten „Schalter"104 kann wahlweise der Ausgang124A des ersten Fehlercodierers oder der Ausgang134A des zweiten Fehlercodierers mit dem Ausgang104 gekoppelt werden. Die „Schalter"112 ,114 werden über die Steuerung110 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 Steuerung110 und der „Schalter"112 ,114 kann gesteuert werden, ob der zu erzeugende Fehlercodierungsdatenblock für den ersten Datenblock über den ersten Fehlercodierungsweg120 oder den zweiten Fehlercodierungsweg130 erzeugt wird. - In dem ersten Fehlercodierungsweg
120 ist die erste Datenanordnungsveränderungsvorrichtung122 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 Fehlercodierer124 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änderungsvorrichtung132 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 Fehlercodierer134 auszugeben. Der zweite Fehlercodierer134 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 Fehlercodierungsweg130 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 und114 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 und114 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 Fehlercodierung120 und einer zweiten Fehlercodierung130 ausgewählt wird, um den Fehlercodierungsdatenblock zu erzeugen. - Die Auswahl wird beispielsweise über einen Steuerindikator
116 gesteuert, wobei die beiden „Schalter"112 und114 gleichartig geschaltet werden, d. h. z. B. bei einem ersten Signalindikatorwert den Eingang102 und den Ausgang104 mit dem ersten Fehlercodierungsweg120 verbinden und bei einem zweiten Steuerindikatorwert den Eingang102 und den Ausgang104 mit dem zweiten Fehlercodierungsweg130 verbinden. - Im Folgenden werden anhand der
1C bis1D weitere Ausführungsbeispiele dieses allgemeinen Konzepts beschrieben. -
1B zeigt ein zweites Beispiel einer Schaltung, die anstelle zweier verschiedener Datenanordnungsveränderungsvorrichtungen122 und132 eine gemeinsame Datenanordnungsveränderungsvorrichtung122 ,132 aufweist. Die Steuerung110 ist ausgebildet, über die „Schalter"112 ,114 den ersten Fehlercodierer124 oder den zweiten Fehlercodierer134 auszuwählen, um den Fehlercodierungsdatenblock zu erzeugen. In anderen Worten, der erste Fehlercodierungsweg120 aus1A wird in dem Beispiel gemäß1B aus der gemeinsamen Datenanordnungsveränderungsvorrichtung122 ,132 und dem ersten Fehlercodierer124 gebildet und der zweite Fehlercodierungsweg130 aus1A aus der gemeinsamen Datenanordnungsveränderungsvorrichtung122 ,132 und dem zweiten Fehlercodierer134 . - 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 Fehlercodierer124 ,134 . Die Steuerung110 ist ausgebildet basierend auf dem Steuerindikator116 über die „Schalter"112 und114 wahlweise die erste Datenan ordnungsveränderungsvorrichtung122 oder die zweite Datenanordnungsveränderungsvorrichtung132 für die Erzeugung des Fehlercodierungsdatenblocks auszuwählen. - In anderen Worten
1C zeigt ein Ausführungsbeispiel, bei dem der erste Fehlercodierungsweg120 nach1A aus einer ersten Datenanordnungsveränderungsvorrichtung122 und dem gemeinsamen Fehlercodierer124 ,134 gebildet wird, und der zweite Fehlercodierungsweg130 von der zweiten Datenanordnungsveränderungsvorrichtung132 und dem gemeinsamen Fehlercodierer124 ,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 Steuerindikator116 und einem zweiten Steuerindikator116' basiert. Dabei wird basierend auf dem ersten Steuerindikator116 mittels der „Schalter"112 und114 wahlweise die erste Datenanordnungsveränderungsvorrichtung oder die zweite Datenanordnungsveränderungsvorrichtung132 ausgewählt und basierend auf dem zweiten Steuerindikator116' mittels der „Schalter"112' und114' der erste Fehlercodierer124 oder der zweite Fehlercodierer134 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/oder1D 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 aus1A ist. Gegenüber dem Ausführungsbeispiel aus1A unterscheidet sich das Beispiel in1E dadurch, dass der zweite Fehlercodierungsweg130 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 Fehlercodierung120 die am Eingang102 empfangenen Daten bzw. der erste Datenblock durch die erste Datenanordnungsände rungsvorrichtung122 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 Steuerung110 , einer Datenanordnungsveränderungsvorrichtung222 und einem Fehlercodierer224 . Die Datenanordnungsveränderungsvorrichtung222 weist einen Eingang222E , einen Ausgang222A und einen Steuereingang222S auf, und der Fehlercodierer224 weist einen Eingang224E , einen Ausgang224A und einen Steuereingang224S auf. Die Steuerung110 weist einen ersten Steuerausgang110S auf. Der erste Steuerausgang110S der Steuerung110 ist mit dem Steuereingang222S der Datenanordnungsveränderungsvorrichtung220 und dem Steuereingang224S des Fehlercodierers224 gekoppelt, der Eingang102 der Schaltung200 ist mit dem Eingang222E der Datenanordnungsveränderungsschaltung222 gekoppelt, der Ausgang der Datenanordnungsveränderungsvorrichtung220 ist mit dem Eingang224E des Fehlercodierers224 gekoppelt und der Ausgang224A des Fehlercodierers224 ist mit dem Ausgang104 der Schaltung200 gekoppelt. - Die Datenanordnungsveränderungsvorrichtung
222 ist ausgebildet, an dem Eingang222E 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 Ausgang222A auszugeben, wobei der zweite Datenblock abhängig von dem ersten Steuerindikator116 gemäß einem ersten oder zweiten Datenanordnungsänderungsalgorithmus erzeugt wird. In anderen Worten, in Abhängigkeit von dem ersten Steuerindikator116 ist die Datenanordnungsänderungsvorrichtung220 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 Fehlercodierers224A bzw.104 auszugeben, wobei der Fehlerdatenblock abhängig von dem ersten Steuerindikator116 gemäß einem ersten oder zweiten Fehlercodierungsalgorithmus erzeugt wird. In anderen Worten, der Fehlercodierer224 ist ausgebildet, abhängig von dem ersten Steuerindikator116 einen ersten oder zweiten Fehlercodierungsalgorithmus auszuführen. - Dabei kann in einem Beispiel gemäß
2 nur der Fehlerdecodierer224 einen Steuereingang224S aufweisen, der mit dem Steuerausgang116 gekoppelt ist, und ausgebildet sein, abhängig von dem Wert des Steuerindikators einen ersten oder zweiten Fehlercodierungsalgorithmus auszuführen, und die Datenanordnungsänderungsvorrichtung222 ausgebildet sein, einen festen Datenanordnungsänderungsalgorithmus auszuführen ähnlich wie dies in1B beschrieben wurde. - Bei einem anderen Ausführungsbeispiel kann die Schaltung ausgebildet sein, dass nur die Datenanordnungsänderungsvorrichtung
222 einen Steuereingang222S aufweist, der mit dem Steuerausgang1105 der Steuerung110 gekoppelt ist, um abhängig von einem Wert des Steuerindikators116 einen ersten oder zweiten Datenanordnungsänderungsalgorithmus durchzuführen, während die Fehlercodierungsvorrichtung224 einen festen bzw. gemeinsamen Fehlercodierungsalgorithmus ausführt, wie dies anhand von1C schon beschrieben wurde. - In einem weiteren Ausführungsbeispiel, weisen die Datenanordnungsänderungsvorrichtung
220 einen Steuereingang220S und der Fehlercodierer224 einen Steuereingang224S auf, der mit dem Steuerausgang110S der Steuerung110 gekoppelt sind. In einem solchen Beispiel kann die Datenanordnungsänderungsvorrichtung220 ausgebildet sein, bei einem ersten Wert des Steuerindikators116 einen ersten Datenanordnungsänderungsalgorithmus auszuführen, und der Fehlercodierer224 ausgebildet sein, bei einem ersten Wert des Steuerindikators116 einen ersten Fehlercodierungsalgorithmus auszuführen, und des weiteren, die Datenanordnungsänderungsvorrichtung222 ausgebildet sein, bei einem zweiten Wert des Steuerindikators116 einen zweiten Datenanordnungsänderungsalgorithmus auszuführen, und der Fehlercodierer224 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 von1A beschrieben wurde. -
2 zeigt ein weiteres Ausführungsbeispiel (siehe gestrichelte Linien) mit einem ersten Steuerindikator216 und einem zweiten Steuerindikator216' , wobei der Steuereingang222S der Datenanordnungsänderungsvorrichtung220 mit einem ersten Steuerausgang gekoppelt ist, um basierend auf dem ersten Steuerindikator116 einen ersten oder zweiten Datenanordnungsänderungsalgorithmus durchzuführen, und wobei der Steuereingang224S des Fehlercodierers224 mit dem zweiten Steuerausgang210S' der Steuerung110 gekoppelt ist, um abhängig von dem zweiten Steuerindikator116' einen ersten oder zweiten Fehlercodierungsalgorithmus durchzuführen, ähnlich wie dies anhand von1D 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 den1A –1D 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 der1A –1D besprochen wurde, entsprechen würde. -
3 zeigt ein Ausführungsbeispiel eines Systems mit einem Prozessor310 , einem Speicher320 und der Schaltung gemäß2 , die zwischen dem Prozessor310 und dem Speicher320 angeordnet bzw. gekoppelt ist. Dabei kann der Prozessor beispielsweise eine Speichersteuerung (Memorycontroller) sein. Ein Ausgang312 des Prozessors310 ist mit dem Eingang102 der Schaltung bzw. mit dem Eingang220E der Datenanordnungsänderungsvorrichtung222 verbunden, während ein Eingang322 des Speichers320 mit dem Ausgang304 der Schaltung bzw. dem Ausgang224A des Fehlercodierers224 verbunden ist. Die Steuerung110 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 von3 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 Eingang102 einem Seriell-zu-Parallel-Wandler410 , einer programmierbaren logischen Einheit420 , einem Demultiplexer430 , der Steuerung110 in Form des Modus-Registers des DRAM, und einem Fehlercodierer224 in Form einer CRC-Logik. Dabei bilden der Seriell-zu-Parallel-Wandler410 , die programmierbare logische Einheit420 und der Demultiplexer430 eine Datenanordnungsänderungsvorrichtung222 . Der parallele Eingang102 bzw. die parallele Schnittstelle102 ist ausgebildet, neun Bits (DQ0–DQ8) gleichzeitig zu empfangen. Der Seriell-zu-Parallel-Wandler410 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 in4 gezeigten Beispiel empfängt der Seriell-zu-Parallel-Wandler410 in acht Taktpulsen (t0 – t0 + 8U.I.) acht Datenwörter mit jeweils neun Bit, also insgesamt 72 Bit. Mit Bezug auf die1A –1E ,2 und3 entspricht die mit dem Bezugszeichen435 bezeichnete Matrixanordnung der empfangenen Bits 0–71 der ersten Anordnung, die in diesem Beispiel eine zeitliche und eine räumliche Komponente aufweist. Wie in4 dargestellt, ist der Seriell-zu-Parallel-Wandler410 ausgebildet, den ersten Datenblock in eine parallele Darstellung umzuwandeln, so dass jedes Bit der Matrix435 bzw. des ersten Datenblocks435 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 Teilbereich422 mit den Spaltenleitungen C0–C71 und in einen zweiten Teilbereich427 , der die Spaltenleitungen C0'–C71' umfasst. Die programmierbare logische Einheit420 ist so programmiert, dass in dem ersten Teilbereich422 jede Reihe R0–R71 mit genau einer Spalte C0–C71 verbunden ist, und in dem zweiten Teilbereich424 jede Reihe R0–R71 mit wiederum genau einer Spalte bzw. Spaltenleitung C0'–C71' verbunden ist. Über diese programmierbare logische Einheit420 kann somit eine beliebige Veränderung der Datenreihenfolge an den Spaltenleitungsausgängen, die mit dem Demultiplexer430 verbunden sind, erreicht werden. In anderen Worten, der erste Teilbereich422 definiert eine erste Datenreihenfolge bzw. ersten Datenanordnungsänderungsalgorithmus, während der zweite Teilbereich424 eine zweite Datenreihenfolge bzw. zweiten Datenanordnungsänderungsalgorithmus definiert. Über den Demultiplexer430 werden wahlweise die Spaltenleitungen C0–C71 des ersten Teilbereichs422 oder die Spaltenleitung C0'–C71' des zweiten Teilbereichs424 ausgewählt. Die Auswahl erfolgt beispielsweise in Abhängigkeit der Steuerbits bzw. Steuerindikatoren von dem Modus-Register, wie dies durch das Bezugszeichen116 und dem Pfeil von der Steuerung110 zu dem Demultiplexer430 gezeigt ist. An dem Ausgang des Demultiplexers430 wird ein Datenwort440 der Wortbreite 72 Bit ausgegeben, das mit Bezug auf1A –1D ,2 und3 dem zweiten Daten block440 , der dieselben Daten, nämlich die 72 Bits des ersten Datenblocks435 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 Teilbereich422 oder den zweiten Teilbereich424 realisieren den ersten bzw. zweiten Datenanordnungsänderungsalgorithmus, während der Demultiplexer430 basierend auf dem Steuerindikator116 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. Steuerindikatoren116 gemäß einem ersten oder zweiten CRC-Code den Fehlercodierungsdatenblock für den ersten Datenblock435 erzeugt, wie dies anhand des Bezugszeichens450 in4 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 Steuerindikator116' 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 Gitters420 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 Matrix420 auf, die mehr als zwei Teilbereiche422 und424 aufweist, und einen Demultiplexer430 , 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 Anordnung440 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 Teilbereich422 , der die Bits mit der Nummer 24–27 in dem zweiten Datenblock440 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 und40 (s.4 ) alle fehlerhaft, so können diese durch einen geeignet ausgebildeten zweiten Teilbereich424 so angeordnet werden, dass sie in dem zweiten Datenblock440 direkt aufeinander folgen, und so mittels des CRC-Polynoms erkannt werden. Wohingegen für den Fall, dass die Bits mit der Nummer16 ,24 ,32 und40 in dem zweiten Datenblock440 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 und42 des ersten Datenblocks435 (s.4 ) sind alle fehlerhaft, so können diese durch eine geeignete Änderung der Anordnung in der Datenanordnungsänderungsvorrichtung222 in dem zweiten Datenblock440 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 Anordnung440 an den Fehlercodierer224 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 Matrix420 für diesen Modus vorzusehen, und über das Modus-Register110 , den Demultiplexer430 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 Fehlercodierer224 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 Bezugszeichen435 darstellt, verstanden. Ausführungsbeispiele der Datenanordnungsveränderungsvorrichtung222 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
1A –1E erläutert wurden. -
3 zeigt in Ausführungsbeispiel eines Systems, mit einem Prozessor310 , einem Speicher oder Speicherchip320 und einem Ausführungsbeispiel einer Schaltung200 , wobei die Schaltung zwischen dem Prozessor310 und den Speicher320 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 Eingang102 bzw. den Eingang222E der Datenanordnungsänderungsvorrichtung222 . Abhängig von dem Wert des ersten Steuerindikators116 in dem Modus-Register110 wählt die Datenanordnungsänderungsvorrichtung222 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 Steuerindikators116 , wählt der Fehlercodierer224 einen Fehlercodierungsalgorithmus aus, z. B. den ersten Fehlercodierungsalgorithmus, um den Fehlercodierungsdatenblock für den ersten Datenblock zu erzeugen und an dem Ausgang224A des Fehlercodierers224 oder dem Ausgang104 an den Speichereingang322 des Speichers320 auszugeben. Der Speicher320 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 Prozessor310 und dem Speicher320 an dem Speicher320 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 Speicher320 zusammen mit dem Fehlercodierungsdatenblock ausgelesen und der erste Datenblock ähnlich wie in dem Schreibvorgang gemäß einer Schaltung, wie sie beispielsweise in2 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-Chips320 sein. Unabhängig davon, kann die Steuerung110 , 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 der1A –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
Claims (37)
- 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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. - Schaltung nach einem der Ansprüche 1 bis 8, bei der der Steuerindikator (
116 ) abhängig von einem Betriebsmodus ist. - Schaltung nach einem der Ansprüche 1 bis 9, die eine integrierte Schaltung ist.
- 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. - 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.
- 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.
- 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. - 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. - 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. - 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. - Schaltung nach einem der Ansprüche 14 bis 17, wobei die Fehlercodierungsalgorithmen Fehlererkennungs- oder Fehlerkorrekturalgorithmen sind.
- Schaltung nach einem der Ansprüche 14 bis 18, wobei der Fehlercodierungsalgorithmus ein CRC-Algorithmus ist.
- 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. - Schaltung nach einem der Ansprüche 14 bis 20, die eine Speicherschnittstellenvorrichtung ist.
- 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. - 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. - 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. - 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. - 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. - 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. - Schaltung nach Anspruch 24 bis 27, bei der ein Empfangen des ersten Datenblocks (
435 ) das Empfangen mehrerer Daten gleichzeitig umfasst. - Schaltung nach Anspruch 24 bis 28, wobei der Fehlercodierungsalgorithmus ein Fehlererkennungs- oder Fehlerkorrekturalgorithmus ist.
- Schaltung nach Anspruch 24 bis 29, wobei der Fehlercodierungsalgorithmus ein CRC-Algorithmus ist.
- Schaltung nach einem der Ansprüche 24 bis 30, wobei der Wert des Steuerindikators von einem Betriebsmodus abhängt.
- 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. - 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. - 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. - Schaltung nach einem der Ansprüche 32 bis 34, wobei ein Empfangen des ersten Datenblocks (
435 ) das Empfangen mehrerer Daten gleichzeitig umfasst. - Schaltung nach einem der Ansprüche 32 bis 35, wobei die Fehlercodierungsalgorithmen Fehlererkennungs- oder Fehlerkorrekturalgorithmen sind.
- Schaltung nach einem der Ansprüche 32 bis 36, wobei der Fehlercodierungsalgorithmus ein CRC-Algorithmus ist.
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)
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)
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)
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 |
-
2007
- 2007-03-12 DE DE102007011801A patent/DE102007011801B4/de active Active
-
2008
- 2008-03-11 US US12/046,099 patent/US8161344B2/en active Active
Patent Citations (2)
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)
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 |