-
Die vorliegende Offenbarung betrifft das Gebiet des Datenschutzes und der Fehlerkodierung und insbesondere Verfahren, Systeme und Schaltungen zum Schutz von Daten an Speicherschnittstellen.
-
Moderne Systems-on-Chip (SoCs) weisen Lese-/Schreibpfade mit fehlerkorrigierender und/oder fehlererkennender Kodierung und Dekodierung auf, um das Risiko zu verringern, dass beschädigte Daten die SoC-Funktionalität beeinträchtigen.
-
Einige Beispiele für Schaltungen, Vorrichtungen und/oder Verfahren werden im Folgenden nur beispielhaft beschrieben. In diesem Zusammenhang wird auf die beigefügten Figuren Bezug genommen.
- 1 ist ein Blockdiagramm einer FLASH-Speicherschnittstelle, die eine Unterbrechung eines Datenschutzes zeigt.
- 2 ist ein Blockdiagramm einer beispielhaften Speicherschnittstelle, die eine kontinuierliche Fehlerkodierung zum Schutz von Daten über den gesamten Lese-/Schreibpfad gemäß verschiedenen beschriebenen Aspekten aufweist.
- 3A ist ein Blockdiagramm einer beispielhaften Speicherschnittstelle, die eine kontinuierliche Fehlerkodierung auf der Grundlage einer Speicheradresse aufweist, um Daten über den gesamten Lese-/Schreibpfad gemäß verschiedenen beschriebenen Aspekten zu schützen.
- 3B ist ein Blockdiagramm einer alternativen Speicherschnittstelle, die eine kontinuierliche Fehlerkodierung auf der Grundlage einer Speicheradresse aufweist, um Daten über den gesamten Lese-/Schreibpfad gemäß den verschiedenen beschriebenen Aspekten zu schützen.
- 4 ist ein Flussdiagramm, das ein beispielhaftes Verfahren zum Speichern von Daten unter Verwendung einer ersten und zweiten Fehlerkodierung gemäß verschiedenen beschriebenen Aspekten darstellt.
- 5 ist ein Flussdiagramm, das ein beispielhaftes Verfahren zum Lesen von Daten gemäß verschiedenen beschriebenen Aspekten skizziert.
-
1 veranschaulicht eine FLASH-Speicherschnittstelle 100, die Daten von einer Speicheradresse empfängt, schützt, schreibt, liest, schützt und ausgibt. Die beispielhafte Schnittstelle von 1 weist eine bestimmte Anzahl von Bits und Arten der Fehlerkodierung auf, allerdings sind diese Details nicht wesentlich für das dargestellte Gesamtkonzept, das darin besteht, dass beim Fehlerschutz in einer Speicherschnittstelle Lücken auftreten können. Die Schnittstelle 100 umfasst eine Zusammenstellungs- und Kodierschaltung 102, die vier Sätze von 64 empfangenen Datenbits zu einem Satz von 256 Datenbits für die Speicherung in einem FLASH-Speicher 112 zusammenstellt (z. B. verkettet). Die Zusammenstellungs- und Kodierschaltung 102 erzeugt außerdem 18 Prüfbits für die 256 Datenbits unter Verwendung eines 2-Bit-Bose-Chaudhuri-Hocquenghem (BCH)-Fehlerkorrekturcodes. Die 18 Prüfbits werden zusammen mit den 256 Datenbits in den durch die Schreibadresse adressierten FLASH-Speicherzellen (z. B. „Ort“) gespeichert.
-
Wenn Daten aus dem FLASH-Speicher 112 gelesen werden, liest die Lese- und Korrekturschaltung 117 256 möglicherweise fehlerhafte Datenbits und 18 möglicherweise fehlerhafte Prüfbits aus den durch die Adresse adressierten Speicherzellen. Die Lese- und Korrekturschaltung117 korrigiert gegebenenfalls die aus dem Speicher 112 gelesenen Datenbits und Prüfbits unter Verwendung desselben BCH-Fehlerkorrekturcodes, der zum Erzeugen der Prüfbits mittels der Zusammenstellungs- und Kodierschaltung 102 verwendet wurde. Die 256 Bits der korrigierten Daten werden in einem Programm-Lese-/Schreibpuffer 119 gespeichert. Aus dem Puffer 119 ausgelesene Daten werden in Blöcke unterteilt (z. B. in Blöcke mit der ursprünglichen Länge von 64 Bit oder Blöcke mit einer anderen Länge), und die Kodierschaltung 123 verwendet beispielsweise einen 1-Bit-Fehlerkorrekturcode und einen 2-Bit-Fehlererkennungscode, um 8 Prüfbits für jeden Block zu erzeugen. Diese Prüfbits können mit dem entsprechenden Datenblock bereitgestellt werden, um den Datenblock zu schützen, wenn er von anderen Komponenten gelesen wird.
-
Obwohl die Daten am Eingang und am Ausgang der Speicherschnittstelle 100 durch Fehlerkodierung geschützt sind, ist ersichtlich, dass die korrigierten Daten, die von der Lese- und Korrekturschaltung 117 ausgegeben werden, nicht geschützt sind, da sie in den Puffer geschrieben und aus dem Puffer 119 gelesen werden. Eine Verfälschung von Datenbits, die zwischen der Lese- und Korrekturschaltung 117 und der Kodierschaltung 123 auftritt, wird nicht erkannt. Dies hinterlässt eine Lücke im Datenschutz oder in der Fehlerkodierung für die Daten, die durch die Speicherschnittstelle 100 fließen.
-
Hierin werden Verfahren, Systeme und Schaltungen beschrieben, die eine kontinuierliche Fehlerkodierung über eine Speicherschnittstelle ermöglichen. Bei den beschriebenen Verfahren, Systemen und Schaltungen werden die zu schreibenden Daten in Blöcke unterteilt und Sätze von Blockprüfbits unter Verwendung eines ersten Fehlercodes oder einer Mehrzahl von ersten Fehlercodes erzeugt. Ein Satz von Signaturbits für die Datenbits (z. B. die 256 Datenbits von 1) wird auf der Grundlage der Sätze von Blockprüfbits erzeugt. Ein Satz kumulierter Prüfbits für die Datenbits und Signaturbits wird ebenfalls unter Verwendung eines zweiten Fehlercodes erzeugt. Der Satz von Datenbits, der Satz von Signaturbits und der Satz von kumulierten Prüfbits werden im Speicher abgelegt.
-
In einem Beispiel werden die kumulierten Prüfbits für die Datenbits und die Signaturbits so festgelegt, dass die Datenbits, der Satz der Signaturbits und der Satz der kumulierten Prüfbits ein Codewort des zweiten Fehlercodes bilden. In einigen Beispielen können die kumulierten Prüfbits ferner von der Schreibadresse abhängen. Die kumulierten Prüfbits können so festgelegt werden, dass die Datenbits, die aus den Prüfbits der Blöcke von Datenbits bestimmten Signaturbits und Bits der Schreibadresse oder aus den Bits der Schreibadresse abgeleitete Adressbits ein Codewort des zweiten Fehlercodes bilden.
-
Wenn die Datenblöcke aus dem Speicher gelesen werden, können die Datenbits, die Signaturbits und die kumulierten Prüfbits möglicherweise beschädigt sein. Die möglicherweise beschädigten Datenbits und die möglicherweise beschädigten Signaturbits können von einer Korrekturschaltung entsprechend dem zweiten Fehlercode in korrigierte Datenbits und korrigierte Signaturbits umgewandelt werden. In einem Beispiel werden ferner die möglicherweise fehlerhaften kumulierten Prüfbits korrigiert.
-
Die korrigierten Datenbits werden in Blöcke von Datenbits aufgeteilt, wie sie vor dem Schreiben für die Erzeugung von Blockprüfbits aufgeteilt wurden, und die regenerierten Blockprüfbits werden unter Verwendung des/der ersten Fehlercodes erzeugt. Die regenerierten Blockprüfbits können aufgrund eines Fehlers an einem Ausgang der Korrekturschaltung für den zweiten Fehlercode oder eines Fehlers der Datenleitungen, die die Ausgänge der Korrekturschaltung für den zweiten Fehlercode verbinden, oder eines Fehlers der Datenleitungen, die die Ausgänge der Korrekturschaltung für den zweiten Fehlercode mit den Eingängen einer Kodierschaltung für den Fehlercode verbinden, oder eines Fehlers innerhalb einer Kodierschaltung für den ersten Fehlercode oder eines anderen Fehlers beschädigt sein. Regenerierte Signaturbits werden auf der Grundlage von Sätzen regenerierter Blockprüfbits erzeugt, die für die korrigierten gelesenen Datenblöcke ermittelt wurden. Diese regenerierten Signaturbits werden mit den gespeicherten Signaturbits verglichen, die vor dem Speichern der Datenbits aus den Blockprüfbits abgeleitet wurden. Schließlich können die gespeicherten Signaturbits nach dem Lesen korrigiert werden. Auf diese Weise kann die im Zusammenhang mit 1 beschriebene Lücke im Datenschutz geschlossen werden.
-
In 2 ist eine Speicherschnittstelle 200 dargestellt, die eine kontinuierliche Fehlerkodierung und Datensicherung von einer Schreibschnittstelle 210 zu einer Leseschnittstelle 220 bereitstellt. In der folgenden Beschreibung können bestimmte Arten von Fehlercodes (z. B. entweder fehlerkorrigierend, fehlererkennend oder beides) erwähnt werden, um den Kontext zu verdeutlichen und zu vereinfachen. Zu den Fehlercodes, die austauschbar mit den als Beispiel genannten verwendet werden können, gehören ein Hamming-Code, ein verkürzter Hamming-Code, ein BCH-Fehlercode, ein Hsiao-Fehlercode, ein linearer Fehlercode oder ein nicht linearer Fehlercode. Wenn eine bestimmte Anzahl von Bits (z. B. Daten- oder Prüfbits) als Beispiel verwendet wird, ist zu verstehen, dass in anderen Beispielen eine andere Anzahl von Bits verwendet werden kann.
-
Eine Schreibschnittstelle 210 stellt Datenbits zusammen, die in einen Speicher 212 geschrieben werden. In einem Beispiel ist der Speicher, in den geschrieben wird, ein Speicherort (z. B. ein Satz von Speicherzellen), der durch eine Eingangsadresse adressiert wird. In einem weiteren Beispiel kann der Speicher ein Register sein. Die Schreibschnittstelle 210 unterteilt die Datenbits in N Datenblöcke. In einem Beispiel werden die Eingangsdaten in 16 Blöcke zu je 16 Datenbits aufgeteilt, was insgesamt 256 Datenbits ergibt. Die 16 Datenblöcke können ein im Speicher 212 abgelegtes Wort bilden. Die Schreibschnittstelle 210 schreibt die N Datenblöcke in den Speicher 212.
-
Die N Datenblöcke werden ferner einer Kodierschaltung 211 zugeführt. Die Kodierschaltung 211 verwendet jeweils einen der N ersten Fehlercodes, um einen der N Datenblöcke zu kodieren und einen entsprechenden Satz von Blockprüfbits für insgesamt N Sätze von Blockprüfbits zu erzeugen. Die N ersten Fehlercodes können miteinander identisch oder voneinander verschieden sein. Die N ersten Fehlercodes können eine unterschiedliche Anzahl von Blockprüfbits erzeugen. In einem Beispiel sind die ersten Fehlercodes jeweils Hsiao-Codes, die untereinander identisch sind und Codewörter mit 16 Datenbits und 7 Prüfbits haben.
-
Die Kombinationsschaltung 216 erzeugt einen Satz von Signaturbits aus den N Sätzen von Blockprüfbits. In einem Beispiel umfasst der Satz von Signaturbits 7 Bits und wird von der Kombinationsschaltung als komponentenweise Exklusiv-ODER (XOR)-Operation oder Exklusiv-NOR (XNOR)-Operation an den N Sätzen von Blockprüfbits (wobei jeder Satz 7 Bits hat) festgelegt. Der Satz von Signaturbits wird im Speicher 212 gespeichert. Der Satz von Signaturbits und die N Blöcke von Datenbits werden einer Schaltung bereitgestellt, die einen zweiten Fehlercode der Kodierschaltung 211 ausführt. Der zweite Fehlercode wird verwendet, um einen Satz kumulierter Prüfbits für die Datenbits zu erzeugen, die durch die Signaturbits ergänzt werden. In einem Beispiel ist der zweite Fehlercode ein BCH-Code, der einen Satz von 18 kumulierten Prüfbits erzeugt. Der Satz kumulierter Prüfbits wird ebenfalls im Speicher 212 gespeichert.
-
Während eines Lesevorgangs für denselben Speicher 212 (z. B. Speicherort, Adresse, Register) werden N Blöcke von möglicherweise beschädigten Datenbits, möglicherweise beschädigten Signaturbits und möglicherweise beschädigten kumulierten Prüfbits von der Korrekturschaltung 213 aus dem Speicher gelesen. Die Bits können zum Beispiel durch ein Alphateilchen oder eine andere Ursache beschädigt werden. Die Korrekturschaltung 213 verwendet denselben zweiten Fehlercode (z. B. BCH-Code) wie der zweite Fehlercode der Kodierschaltung 211, um die kumulierten Prüfbits zu erzeugen, um die N Blöcke von möglicherweise beschädigten Datenbits und den Satz von möglicherweise beschädigten Signaturbits zu korrigieren. In einem Beispiel korrigiert die Korrekturschaltung auch den Satz der kumulierten Prüfbits. Wenn der zweite Fehlercode ein 2-Bit-BCH-Fehlerkorrekturcode ist, sind alle 1-Bit-Fehler und alle 2-Bit-Fehler Fehler, die mit Hilfe des Fehlercodes korrigiert werden können, und folglich auch korrigiert werden. Die korrigierten Datenblöcke werden einer Leseschnittstelle 220 zur Verfügung gestellt, wo sie an andere Geräte weitergeleitet werden, die eine weitere Verarbeitung vornehmen.
-
Jeder korrigierte Datenblock wird auch in einen entsprechenden ersten Fehlercode-Kodierer 214 eingegeben, der den von der Kodierschaltung 211 verwendeten ersten Fehlercode verwendet, um einen entsprechenden Satz von regenerierten Blockprüfbits für den korrigierten Datenblock zu erzeugen. Der Satz von regenerierten Blockprüfbits wird der Leseschnittstelle 220 zur Verfügung gestellt, so dass die nachfolgenden anderen Geräte, welche die korrigierten Datenblöcke verarbeiten, auf beschädigte Daten prüfen können.
-
Eine zweite Kombinationsschaltung 216 führt dieselbe Kombination (z. B. XOR, XNOR) mit den N Sätzen der regenerierten Blockprüfbits durch, um einen Satz regenerierter Signaturbits zu erzeugen. Dieser Satz regenerierter Signaturbits wird einer Komparatorschaltung 215 zugeführt, die den Satz regenerierter Signaturbits mit dem Satz korrigierter Signaturbits vergleicht. Wenn die Komparatorschaltung 215 einen Unterschied feststellt, kann ein Fehlersignal ausgegeben werden, das anzeigt, dass ein Fehler in den korrigierten Datenbits vorliegt oder in einem der Kodierer 214 aufgetreten ist, oder dass ein Fehler außerhalb des Speichers 213 aufgetreten ist, oder dass ein Fehler aufgetreten ist, der nicht mit Hilfe des zweiten Fehlercodes korrigiert werden kann.
-
In einem Beispiel werden die Korrekturschaltung 213 und der zweite Fehlercode nicht verwendet. In diesem Ausführungsbeispiel werden die Signaturbits mit den Datenblöcken gespeichert, aber es werden keine kumulierten Datenbits erzeugt oder gespeichert. Beim Lesen werden die regenerierten Signaturbits (die unter Verwendung möglicherweise beschädigter Datenblöcke erzeugt wurden) mit den möglicherweise beschädigten Signaturbits verglichen. Ein Fehlersignal wird ausgegeben, wenn die regenerierten Signaturbits nicht mit den unkorrigierten/vielleicht beschädigten Signaturbits übereinstimmen.
-
Es ist ferner möglich, den Speicher gegen Adressfehler zu schützen. Es gibt mehrere Möglichkeiten, diese Adressfehlererkennung zu implementieren, von denen zwei in den 3A und 3B dargestellt sind. 3A zeigt ein Beispiel für eine Speicherschnittstelle 300, die sowohl vor Datenverfälschung als auch vor Adressfehlern schützt. Die Schnittstelle 300 umfasst die Komponenten der Schnittstelle 200 sowie eine vorgelagerte Adressenkompaktorschaltung 318 und ein vorgelagertes Summierungselement 325 sowie eine nachgelagerte Adressenkompaktorschaltung 319 und ein nachgelagertes Summierungselement 327. Komponenten, die die gleichen Bezugszeichen haben wie die Komponenten in der vorhergehenden Abbildung, haben grundsätzlich die gleichen Funktionen wie die entsprechenden Komponenten in der vorhergehenden Figur.
-
Während des Schreibvorgangs werden die Signaturbits nicht wie bei der Schnittstelle 200 direkt in den Speicher 212 geschrieben. Stattdessen werden die von der Kombinationsschaltung 216 erzeugten Signaturbits (die jetzt als Zwischensignaturbits bezeichnet werden) (über das Summierungselement 325) mit Adressbits kombiniert, die von der vorgelagerten Adressenkompaktorschaltung 318 erzeugt werden. Die resultierenden Bits werden als Satz von Signaturbits im Speicher 212 gespeichert.
-
Der vorgeschaltete Adressenkompaktorschaltung 318 verdichtet die Schreibadresse zu einer verdichteten Schreibadresse, die weniger Bits aufweisen kann als die Schreibadresse. Das vorgelagerte Summierungselement 325 addiert die verdichtete Schreibadresse komponentenweise mit Modulo 2 zu den Signaturbits und gibt den Satz von Signaturbits aus.
-
Wenn ein Lesevorgang an derselben Adresse durchgeführt wird, werden möglicherweise fehlerhafte Datenbits, möglicherweise fehlerhafte Signaturbits und möglicherweise fehlerhafte kumulierte Prüfbits aus dem Speicher 212 gelesen. Die Korrekturschaltung 213 korrigiert die möglicherweise fehlerhaften Datenbits (N-Blöcke) und die möglicherweise fehlerhaften Signaturbits. Die korrigierten Datenbits werden der Leseschnittstelle 220 zugeführt.
-
Die Kodierer 214 erzeugen für jeden der korrigierten Datenblöcke einen Satz von regenerierten Blockprüfbits. Die Sätze der regenerierten Blockprüfbits werden in die Kombinationsschaltung 216 eingegeben, die regenerierte Zwischensignaturbits erzeugt.
-
Die nachgeschaltete Adressenkompaktorschaltung 319 verdichtet die Leseadresse zu einer verdichteten Leseadresse, die weniger Bits aufweisen kann als die Leseadresse. Das nachgeschaltete Summierungselement 327 addiert die verdichtete Leseadresse komponentenweise zu den regenerierten Zwischensignaturbits unter Verwendung von Modulo 2 und gibt den Satz regenerierter Signaturbits aus.
-
Die Komparatorschaltung 215 vergleicht den Satz der regenerierten Signaturbits mit dem Satz der korrigierten Signaturbits (der mit der komprimierten Schreibadresse kodiert wurde) und gibt ein Fehlersignal aus, wenn eine Abweichung vorliegt. In einem Beispiel entspricht ein Fehlersignal einer logischen 1, während eine von der Komparatorschaltung 215 ausgegebene logische 0 keinen Fehler anzeigt.
-
Der Satz von Signaturbits kann auf eine Weise erzeugt werden, die sich von der oben beschriebenen komponentenweisen XOR/XNOR-Operation an jedem entsprechenden Bit der Sätze von Blockprüfbits unterscheidet. Beispielsweise können drei verschiedene erste Fehlercodes verwendet werden, um Sätze von Blockprüfbits zu erzeugen, wobei der erste und zweite erste Fehlercode 4 Blockprüfbits erzeugen und der dritte erste Fehlercode 7 Blockprüfbits erzeugt. Die Signaturbits können durch eine komponentenweise XOR- (oder XNOR-) Summe der 4 Blockprüfbits des ersten ersten Fehlercodes, des zweiten ersten Fehlercodes und der ersten 4 Blockprüfbits des dritten ersten Fehlercodes erzeugt werden. Die fünften bis siebten Bits der Signaturbits können dann den fünften bis siebten Bits der durch den dritten ersten Fehlercode erzeugten Blockprüfbits entsprechen.
-
Alternativ ist es eine Option, die ersten vier Signaturbits als komponentenweise XOR- (oder XNOR-) Summe der ersten vier Bits der dritten ersten Fehlercode-Blockprüfbits und der vier Bits der ersten ersten Fehlercode-Blockprüfbits zu erzeugen. Die fünften bis siebten Bits der Signaturbits können als eine komponentenweise XOR- (oder XNOR-) Summe der fünften bis siebten Bits der durch den dritten ersten Fehlercode erzeugten Blockprüfbits und der ersten drei Bits der durch den zweiten ersten Fehlercode erzeugten Blockprüfbits erzeugt werden. Ein achtes Bit der Signaturbits kann als das vierte Bit der Blockprüfbits des zweiten ersten Fehlercodes festgelegt sein.
-
3B zeigt ein alternatives Beispiel für eine Speicherschnittstelle 300', die vor Datenverfälschung und auch vor Adressfehlern schützt. In diesem Beispiel sind die kumulierten Prüfbits (und nicht die Signaturbits wie im Beispiel von 3A) von der Speicheradresse abhängig. Die kumulierten Prüfbits werden als die Prüfbits des zweiten Fehlercodes der Datenbits, der Signaturbits und der verdichteten Adressbits festgelegt, die von der Adressenkompaktorschaltung 318 erzeugt werden. In einem Beispiel werden die komprimierten Adressbits nicht im Speicher gespeichert. Alternativ werden die von der Schreibadresse abgeleiteten Adressbits oder verdichteten Adressbits zusammen mit den Datenbits, Signaturbits und kumulierten Prüfbits im Speicher gespeichert. Wenn Daten aus dem Speicher gelesen werden, werden die kumulierten Prüfbits als die Prüfbits des zweiten Fehlercodes der korrigierten Datenbits, der korrigierten Signaturbits und der verdichteten Adressbits der gelesenen Adresse festgelegt.
-
Die verdichteten Adressbits A
s können (z. B. durch die Adressenkompaktorschaltung 318 oder 319 der
3A und
3B) aus den Bits der Schreibadresse a
s festgelegt werden, so dass:
wobei As ein Spaltenvektor von k Komponenten der verdichteten Schreibadresse und as ein Spaltenvektor von / Komponenten der Schreibadresse ist. M ist eine binäre Matrix mit / Spalten und k Zeilen, und k ist die Anzahl der Komponenten von A. In diesem Fall können die Spalten der Matrix M so gewählt werden, dass sie paarweise unterschiedlich sind und k≤1.
-
Die verdichteten Adressbits A
L können dann aus den Bits der Leseadresse αL so festgelegt werden, dass:
-
In diesem Fall stehen AS und AL, für k-dimensionale Spaltenvektoren und aS und aL für l-dimensionale Spaltenvektoren. Es besteht auch die Möglichkeit, eine 1-dimensionale Einheitsmatrix als Matrix M zu wählen, was zur Folge hat, dass die verdichteten Adressbits den Adressbits entsprechen. Dies kann vorteilhaft sein, wenn die Anzahl / der Bits der Adressbits eine kleine Zahl ist.
-
4 zeigt ein Beispiel für ein Verfahren 400 zum Bereitstellen einer kontinuierlichen Fehlerkodierung über einen Lese-/Schreibpfad. Das Verfahren 400 kann von der Schnittstelle 200, 300 der 2, 3A bzw. 3B durchgeführt werden. Das Verfahren umfasst bei 410 ein Empfangen einer Mehrzahl von Datenbits. Das Verfahren umfasst bei 420 ein Aufteilen der Mehrzahl von Datenbits in mindestens zwei Datenblöcke. Das Verfahren umfasst bei 430 ein Erzeugen entsprechender Sätze von Blockprüfbits für jeden entsprechenden Datenblock unter Verwendung eines jeweiligen ersten Fehlercodes. Das Verfahren umfasst bei 440 ein Kombinieren der Sätze von Blockprüfbits, um einen Satz von Signaturbits für die Mehrzahl von Datenbits zu erzeugen. Das Verfahren umfasst bei 450 ein Erzeugen eines Satzes von kumulierten Prüfbits für die Mehrzahl von Datenbits und den Satz von Signaturbits unter Verwendung eines zweiten Fehlercodes. Das Verfahren umfasst bei 460 ein Speichern der Mehrzahl von Datenbits, des Satzes von Signaturbits und des Satzes von kumulierten Prüfbits an einer Speicherstelle.
-
5 zeigt ein Beispiel für ein Verfahren 500 zum Bereitstellen einer kontinuierlichen Fehlerkodierung über einen Lese-/Schreibpfad. Das Verfahren 500 kann von der Schnittstelle 200, 300 der 2, 3A bzw. 3B durchgeführt werden. Das Verfahren umfasst bei 510 ein Empfangen einer Mehrzahl von Datenbits und eines Satzes weiterer Bits, der einen Satz von Signaturbits aufweist, von einer Speicherstelle. Das Verfahren umfasst bei 520 ein Aufteilen der Mehrzahl von Datenbits in mindestens zwei Datenblöcke. Das Verfahren umfasst bei 530 ein Erzeugen eines jeweiligen Satzes von regenerierten Blockprüfbits für jeden jeweiligen Datenblock unter Verwendung eines jeweiligen ersten Fehlercodes. Das Verfahren umfasst bei 540 ein Kombinieren der Sätze von regenerierten Blockprüfbits, um einen Satz von regenerierten Signaturbits zu erzeugen. Das Verfahren umfasst bei 550 ein Vergleichen des Satzes der regenerierten Signaturbits mit dem Satz der Signaturbits. Das Verfahren umfasst bei 560 ein Erkennen eines Fehlers, wenn der Satz der regenerierten Signaturbits nicht dem Satz der Signaturbits entspricht.
-
Die Verfahren der 4 und 5 können mehr als einmal nacheinander ausgeführt werden.
-
Aus der vorstehenden Beschreibung geht hervor, dass die beschriebenen Systeme, Schaltungen und Verfahren eine kontinuierliche Fehlerkodierung und Datensicherung über einen Lese-/Schreibpfad oder eine Speicherschnittstelle ermöglichen.
-
Obwohl die Erfindung in Bezug auf eine oder mehrere Ausführungsformen dargestellt und beschrieben wurde, können an den dargestellten Beispielen Änderungen und/oder Modifikationen vorgenommen werden, ohne vom Geist und Umfang der beigefügten Ansprüche abzuweichen. Insbesondere im Hinblick auf die verschiedenen Funktionen, die von den oben beschriebenen Komponenten oder Strukturen (Baugruppen, Geräte, Schaltungen, Schaltkreise, Systeme usw.) ausgeführt werden, sollen die Begriffe (einschließlich eines Verweises auf ein „Mittel“), die zur Beschreibung solcher Komponenten verwendet werden, sofern nicht anders angegeben, jeder Komponente oder Struktur entsprechen, die die angegebene Funktion der beschriebenen Komponente ausführt (z. B. die funktionell äquivalent ist), auch wenn sie strukturell nicht äquivalent zu der offengelegten Struktur ist, die die Funktion in den hier dargestellten beispielhaften Implementierungen der Erfindung ausführt.
-
Beispiele können Gegenstände wie ein Verfahren, Mittel zur Durchführung von Handlungen oder Blöcken des Verfahrens, mindestens ein maschinenlesbares Medium mit Befehlen umfassen, die, wenn sie von einer Maschine ausgeführt werden, die Maschine veranlassen, eine kontinuierliche Fehlerkodierung gemäß den hier beschriebenen Ausführungsformen und Beispielen bereitzustellen.
-
Beispiel 1 ist ein Verfahren, welches ein Empfangen einer Mehrzahl von Datenbits, ein Aufteilen der Mehrzahl von Datenbits in mindestens zwei Datenblöcke, ein Erzeugen jeweiliger Sätze von Blockprüfbits für jeden jeweiligen Datenblock unter Verwendung eines jeweiligen ersten Fehlercodes, ein Kombinieren der Sätze von Blockprüfbits, um einen Satz von Signaturbits für die Mehrzahl von Datenbits zu erzeugen, ein Erzeugen eines Satzes von kumulierten Prüfbits für die Mehrzahl von Datenbits und den Satz von Signaturbits unter Verwendung eines zweiten Fehlercodes, und ein Speichern der Mehrzahl von Datenbits, des Satzes von Signaturbits und des Satzes von kumulierten Prüfbits an einer Speicherstelle aufweist.
-
Beispiel 2 umfasst den Gegenstand von Beispiel 1, einschließlich optionaler Gegenstände oder unter deren Auslassung, wobei die Sätze von Blockprüfbits die gleiche Anzahl von Bits aufweisen.
-
Beispiel 3 umfasst den Gegenstand von Beispiel 1, einschließlich optionaler Gegenstände oder unter deren Auslassung, wobei die Sätze von Blockprüfbits eine unterschiedliche Anzahl von Bits aufweisen.
-
Beispiel 4 umfasst den Gegenstand von Beispiel 1, einschließlich optionaler Gegenstände oder unter deren Auslassung, einschließlich eines Verwendens desselben ersten Fehlercodes zum Erzeugen der Sätze von Blockprüfbits für verschiedene Datenblöcke.
-
Beispiel 5 umfasst den Gegenstand von Beispiel 1, einschließlich optionaler Gegenstände oder unter deren Auslassung, einschließlich eines Verwendens unterschiedlicher erster Fehlercodes zum Erzeugen der Sätze von Blockprüfbits für unterschiedliche Datenblöcke.
-
Beispiel 6 umfasst den Gegenstand von Beispiel 1, einschließlich optionaler Gegenstände oder unter deren Auslassung, einschließlich eines Durchführens einer komponentenweisen exklusiven ODER- (XOR) oder exklusiven NOR- (XNOR) Operation an den Sätzen von Blockprüfbits, um den Satz von Signaturbits zu erzeugen.
-
Beispiel 7 umfasst den Gegenstand von Beispiel 1, einschließlich optionaler Gegenstände oder unter deren Auslassung, einschließlich eines Erzeugens eines Satzes von Adressbits, die durch Adressbits einer Speicheradresse für den Speicherort festgelegt sind; und eines Kombinierens der Sätze von Blockprüfbits und des Satzes von Adressbits, um den Satz von Signaturbits für die Mehrzahl von Datenbits zu erzeugen.
-
Beispiel 8 umfasst den Gegenstand von Beispiel 7, einschließlich optionaler Gegenstände oder unter deren Auslassung, einschließlich eines Durchführens einer komponentenweisen Exklusiv-ODER (XOR)-Exklusiv-NOR (XNOR)-Operation an den Sätzen von Blockprüfbits, um einen Satz von Zwischensignaturbits zu erzeugen; und eines Durchführens einer komponentenweisen Addition des Satzes von Zwischensignaturbits und des Satzes von Adressbits, um den Satz von Signaturbits zu erzeugen.
-
Beispiel 9 umfasst den Gegenstand von Beispiel 1, einschließlich optionaler Gegenstände oder unter deren Auslassung, einschließlich eines Erzeugens eines Satzes von Adressbits, welche durch die Adressbits einer Speicheradresse für den Speicherort festgelegt werden; Erzeugung des Satzes von kumulierten Prüfbits auf der Grundlage der Adressbits.
-
Beispiel 10 umfasst den Gegenstand von Beispiel 1, einschließlich optionaler Gegenstände oder unter deren Auslassung, wobei der erste Fehlercode ein Fehlererkennungs- oder ein Fehlerkorrekturcode ist und der zweite Fehlercode ein Fehlererkennungs- oder ein Fehlerkorrekturcode ist.
-
Beispiel 11 umfasst den Gegenstand von Beispiel 1, einschließlich optionaler Gegenstände oder unter deren Auslassung, wobei der erste Fehlercode und der zweite Fehlercode jeweils ein Hamming-Code, ein verkürzter Hamming-Code, ein BCH-Fehlercode, ein Hsiao-Fehlercode, ein linearer Fehlercode oder ein nichtlinearer Fehlercode sind.
-
Beispiel 12 ist ein Verfahren, das ein Empfangen einer Mehrzahl von Datenbits und eines Satzes weiterer Bits, der einen Satz von Signaturbits aufweist, von einer Speicherstelle, ein Aufteilen der Mehrzahl von Datenbits in mindestens zwei Datenblöcke, ein Erzeugen eines jeweiligen Satzes regenerierter Blockprüfbits für jeden jeweiligen Datenblock unter Verwendung eines jeweiligen ersten Fehlercodes, ein Kombinieren der Sätze regenerierter Blockprüfbits, um einen Satz regenerierter Signaturbits zu erzeugen, ein Vergleichen des Satzes regenerierter Signaturbits mit dem Satz von Signaturbits und ein Erkennen eines Fehlers, wenn der Satz regenerierter Signaturbits nicht dem Satz von Signaturbits entspricht, aufweist.
-
Beispiel 13 umfasst den Gegenstand von Beispiel 12, , einschließlich optionaler Gegenstände oder unter deren Auslassung, wobei der Satz weiterer Bits einen Satz kumulierter Prüfbits aufweist, wobei das Verfahren ferner ein Korrigieren der Mehrzahl von Datenbits unter Verwendung des Satzes kumulierter Prüfbits und eines zweiten Fehlercodes vor dem Aufteilen der Mehrzahl von Datenbits in mindestens zwei Datenblöcke aufweist.
-
Beispiel 14 umfasst den Gegenstand von Beispiel 13, einschließlich optionaler Gegenstände oder unter deren Auslassung, ferner einschließlich eines Korrigierens des Satzes von Signaturbits unter Verwendung des Satzes von kumulierten Prüfbits und des zweiten Fehlercodes vor einem Vergleichen des Satzes von regenerierten Signaturbits mit dem Satz von Signaturbits.
-
Beispiel 15 umfasst den Gegenstand von Beispiel 13, einschließlich optionaler Gegenstände oder unter deren Auslassung, wobei der erste Fehlercode ein Fehlererkennungs- oder Fehlerkorrekturcode ist und der zweite Fehlercode ein Fehlererkennungs- oder Fehlerkorrekturcode ist.
-
Beispiel 16 umfasst den Gegenstand von Beispiel 13, einschließlich oder unter Auslassung optionaler Gegenstände, wobei der erste Fehlercode und der zweite Fehlercode jeweils ein Hamming-Code, ein verkürzter Hamming-Code, ein BCH-Fehlercode, ein Hsiao-Fehlercode, ein linearer Fehlercode oder ein nichtlinearer Fehlercode sind.
-
Beispiel 17 umfasst den Gegenstand von Beispiel 12, einschließlich optionaler Gegenstände oder unter deren Auslassung, einschließlich eines Verwendens desselben ersten Fehlercodes zum Erzeugen der Sätze von regenerierten Blockprüfbits für verschiedene korrigierte Datenblöcke.
-
Beispiel 18 umfasst den Gegenstand von Beispiel 12, einschließlich oder unter Auslassung optionaler Gegenstände, einschließlich eines Verwendens unterschiedlicher erster Fehlercodes zum Erzeugen der Sätze regenerierter Blockprüfbits für unterschiedliche korrigierte Datenblöcke.
-
Beispiel 19 umfasst den Gegenstand von Beispiel 12, einschließlich optionaler Gegenstände oder unter deren Auslassung, einschließlich eines Durchführens einer komponentenweisen Exklusiv-ODER- (XOR) oder Exklusiv-NOR-(XNOR) Operation an den Sätzen von regenerierten Blockprüfbits, um den Satz von regenerierten Signaturbits zu erzeugen.
-
Beispiel 20 umfasst den Gegenstand von Beispiel 19, einschließlich optionaler Gegenstände oder unter deren Auslassung, einschließlich eines Erzeugens eines Satzes von Adressbits auf der Grundlage einer Speicheradresse für den Speicherort und eines Kombinierens der Sätze von regenerierten Blockprüfbits und des Satzes von Adressbits, um den Satz von regenerierten Signaturbits zu erzeugen.
-
Beispiel 21 umfasst den Gegenstand von Beispiel 20, einschließlich optionaler Gegenstände oder unter deren Auslassung, einschließlich eines Durchführens einer komponentenweisen Exklusiv-ODER- (XOR) oder Exklusiv-NOR-(XNOR) Operation an den Sätzen von regenerierten Blockprüfbits, um einen Satz von regenerierten Zwischensignaturbits zu erzeugen, und eines Durchführens einer komponentenweisen Addition des Satzes von regenerierten Zwischensignaturbits und des Satzes von Adressbits, um den Satz von regenerierten Signaturbits zu erzeugen.
-
Beispiel 22 umfasst den Gegenstand von Beispiel 12, einschließlich optionaler Gegenstände oder unter deren Auslassung, einschließlich eines Erzeugens eines Satzes von Adressbits, die durch die Adressbits einer Speicheradresse für den Speicherort festgelegt werden; und eines Erzeugens des Satzes von kumulierten Prüfbits auf der Grundlage der Adressbits.
-
Beispiel 23 ist ein Verfahren, das Folgendes umfasst: Empfangen einer Mehrzahl von Datenbits, Aufteilen der Mehrzahl von Datenbits in mindestens zwei Datenblöcke, Erzeugen jeweiliger Sätze von Blockprüfbits für jeden jeweiligen Datenblock unter Verwendung eines jeweiligen ersten Fehlercodes, Kombinieren der Sätze von Blockprüfbits, um einen Satz von Signaturbits für die Mehrzahl von Datenbits zu erzeugen, Speichern der Mehrzahl von Datenbits und des Satzes von Signaturbits an einem Speicherort, Empfangen einer zweiten Mehrzahl von Datenbits und eines Satzes weiterer Bits von dem Speicherort, Aufteilen der zweiten Mehrzahl von Datenbits in mindestens zwei Datenblöcke, Erzeugen eines jeweiligen Satzes von regenerierten Blockprüfbits für jeden jeweiligen Datenblock unter Verwendung des jeweiligen ersten Fehlercodes, Kombinieren der Sätze von regenerierten Blockprüfbits, um einen Satz von regenerierten Signaturbits zu erzeugen, Vergleichen des Satzes von regenerierten Signaturbits mit dem Satz von weiteren Bits, und Erkennen eines Fehlers, wenn der Satz von regenerierten Signaturbits nicht äquivalent zu dem Satz von weiteren Bits ist.
-
Beispiel 24 ist ein System, das einen Speicher und einen Kodierer aufweist. Der Kodierer ist eingerichtet, eine Mehrzahl von Datenbits zu empfangen, die Mehrzahl von Datenbits in mindestens zwei Datenblöcke zu unterteilen, jeweilige Sätze von Blockprüfbits für jeden jeweiligen Datenblock unter Verwendung eines jeweiligen ersten Fehlercodes zu erzeugen, die Sätze von Blockprüfbits zu kombinieren, um einen Satz von Signaturbits für die Mehrzahl von Datenbits zu erzeugen, einen Satz von kumulierten Prüfbits für die Mehrzahl von Datenbits und den Satz von Signaturbits unter Verwendung eines zweiten Fehlercodes zu erzeugen, und die Mehrzahl von Datenbits, den Satz von Signaturbits und den Satz von kumulierten Prüfbits an einer Speicherstelle des Speichers zu speichern.
-
Beispiel 25 umfasst den Gegenstand von Beispiel 24, einschließlich optionaler Gegenstände oder unter deren Auslassung, wobei die Sätze von Blockprüfbits die gleiche Anzahl von Bits aufweisen.
-
Beispiel 26 umfasst den Gegenstand von Beispiel 24, einschließlich optionaler Gegenstände oder unter deren Auslassung, wobei die Sätze von Blockprüfbits eine unterschiedliche Anzahl von Bits aufweisen.
-
Beispiel 27 umfasst den Gegenstand von Beispiel 24, einschließlich optionaler Gegenstände oder unter deren Auslassung, wobei der Kodierer eingerichtet ist, einen gleichen ersten Fehlercode zu verwenden, um die Sätze von Blockprüfbits für verschiedene Datenblöcke zu erzeugen.
-
Beispiel 28 umfasst den Gegenstand von Beispiel 24, einschließlich optionaler Gegenstände oder unter deren Auslassung, wobei der Kodierer eingerichtet ist, unterschiedliche erste Fehlercodes zu verwenden, um die Sätze von Blockprüfbits für unterschiedliche Datenblöcke zu erzeugen.
-
Beispiel 29 umfasst den Gegenstand von Beispiel 24, einschließlich optionaler Gegenstände oder unter deren Auslassung, wobei der Kodierer eingerichtet ist, eine komponentenweise Exklusiv-ODER- (XOR) oder Exklusiv-NOR- (XNOR) Operation an den Sätzen von Blockprüfbits durchzuführen, um den Satz von Signaturbits zu erzeugen.
-
Beispiel 30 umfasst den Gegenstand von Beispiel 24, einschließlich optionaler Gegenstände oder unter deren Auslassung, wobei der Kodierer eingerichtet ist, einen Satz von Adressbits zu erzeugen, der durch Adressbits einer Speicheradresse für den Speicherort festgelegt wird, und die Sätze von Blockprüfbits und den Satz von Adressbits zu kombinieren, um den Satz von Signaturbits für die Mehrzahl von Datenbits zu erzeugen.
-
Beispiel 31 umfasst den Gegenstand von Beispiel 30, einschließlich optionaler Gegenstände oder unter deren Auslassung, wobei der Kodierer eingerichtet ist, eine komponentenweise Exklusiv-ODER (XOR)-Exklusiv-NOR (XNOR)-Operation an den Sätzen von Blockprüfbits durchzuführen, um einen Satz von Zwischensignaturbits zu erzeugen, und eine komponentenweise Addition des Satzes von Zwischensignaturbits und des Satzes von Adressbits durchzuführen, um den Satz von Signaturbits zu erzeugen.
-
Beispiel 32 umfasst den Gegenstand von Beispiel 24, einschließlich optionaler Gegenstände oder unter deren Auslassung, wobei der Kodierer eingerichtet ist, einen Satz von Adressbits zu erzeugen, die durch die Adressbits einer Speicheradresse für den Speicherort festgelegt werden, und den Satz von kumulierten Prüfbits auf der Grundlage der Adressbits zu erzeugen.
-
Beispiel 33 umfasst den Gegenstand von Beispiel 24, einschließlich optionaler Gegenstände oder unter deren Auslassung, wobei der erste Fehlercode ein Fehlererkennungs- oder Fehlerkorrekturcode ist und der zweite Fehlercode ein Fehlererkennungs- oder Fehlerkorrekturcode ist.
-
Beispiel 34 umfasst den Gegenstand von Beispiel 24, einschließlich oder unter Auslassung optionaler Gegenstände, wobei der erste Fehlercode und der zweite Fehlercode jeweils ein Hamming-Code, ein verkürzter Hamming-Code, ein BCH-Fehlercode, ein Hsiao-Fehlercode, ein linearer Fehlercode oder ein nichtlinearer Fehlercode sind.
-
Beispiel 35 ist ein System, das einen Speicher, eine Korrekturschaltung, eine Mehrzahl von ersten Fehlerkodierern, eine Kombinationsschaltung und eine Komparatorschaltung aufweist. Die Korrekturschaltung ist eingerichtet, von einer Speicherstelle eine Mehrzahl von Datenbits und einen Satz weiterer Bits zu empfangen, der einen Satz von Signaturbits aufweist, und die Mehrzahl von Datenbits in mindestens zwei Datenblöcke aufzuteilen. Die mehreren ersten Fehlercode-Kodierer sind eingerichtet, einen jeweiligen Satz regenerierter Blockprüfbits für jeden jeweiligen Datenblock unter Verwendung eines jeweiligen ersten Fehlercodes zu erzeugen. Die Kombinationsschaltung ist eingerichtet, die Sätze von regenerierten Blockprüfbits zu kombinieren, um einen Satz von regenerierten Signaturbits zu erzeugen. Die Komparatorschaltung ist eingerichtet, den Satz der regenerierten Signaturbits mit dem Satz der Signaturbits zu vergleichen und einen Fehler zu erkennen, wenn der Satz der regenerierten Signaturbits nicht mit dem Satz der Signaturbits übereinstimmt.
-
Beispiel 36 umfasst den Gegenstand von Beispiel 35, einschließlich optionaler Gegenstände oder unter deren Auslassung, wobei der Satz weiterer Bits einen Satz kumulierter Prüfbits aufweist, wobei die Korrekturschaltung ferner eingerichtet ist, die Mehrzahl von Datenbits unter Verwendung des Satzes kumulierter Prüfbits und eines zweiten Fehlercodes zu korrigieren, bevor sie die Mehrzahl von Datenbits in mindestens zwei Datenblöcke unterteilt.
-
Beispiel 37 umfasst den Gegenstand von Beispiel 36, einschließlich optionaler Gegenstände oder unter deren Auslassung, wobei die Korrekturschaltung ferner eingerichtet ist, den Satz von Signaturbits unter Verwendung des Satzes von kumulierten Prüfbits und des zweiten Fehlercodes zu korrigieren, bevor der Satz von regenerierten Signaturbits mit dem Satz von Signaturbits verglichen wird.
-
Beispiel 38 umfasst den Gegenstand von Beispiel 36, einschließlich optionaler Gegenstände oder unter deren Auslassung, wobei der erste Fehlercode ein Fehlererkennungs- oder ein Fehlerkorrekturcode ist und der zweite Fehlercode ein Fehlererkennungs- oder ein Fehlerkorrekturcode ist.
-
Beispiel 39 umfasst den Gegenstand von Beispiel 36, einschließlich optionaler Gegenstände oder unter deren Auslassung, wobei der erste Fehlercode und der zweite Fehlercode jeweils ein Hamming-Code, ein verkürzter Hamming-Code, ein BCH-Fehlercode, ein Hsiao-Fehlercode, ein linearer Fehlercode oder ein nichtlinearer Fehlercode sind.
-
Beispiel 40 umfasst den Gegenstand von Beispiel 35, einschließlich optionaler Gegenstände oder unter deren Auslassung, wobei die mehreren ersten Fehlercode-Kodierer eingerichtet sind, einen gleichen ersten Fehlercode zu verwenden, um die Sätze von regenerierten Blockprüfbits für verschiedene korrigierte Datenblöcke zu erzeugen.
-
Beispiel 41 umfasst den Gegenstand von Beispiel 35, einschließlich optionaler Gegenstände oder unter deren Auslassung, wobei die mehreren ersten Fehlercode-Kodierer eingerichtet sind, unterschiedliche erste Fehlercodes zu verwenden, um die Sätze von regenerierten Blockprüfbits für unterschiedliche korrigierte Datenblöcke zu erzeugen.
-
Beispiel 42 umfasst den Gegenstand von Beispiel 35, einschließlich optionaler Gegenstände oder unter deren Auslassung, wobei die Kombinationsschaltung eingerichtet ist, eine komponentenweise Exklusiv-ODER-(XOR) oder Exklusiv-NOR- (XNOR) Operation an den Sätzen von regenerierten Blockprüfbits durchzuführen, um den Satz von regenerierten Signaturbits zu erzeugen.
-
Beispiel 43 umfasst den Gegenstand von Beispiel 42, einschließlich optionaler Gegenstände oder unter deren Auslassung, ferner aufweisend eine Adressenkompaktorschaltung, die eingerichtet ist, einen Satz von Adressbits auf der Grundlage einer Speicheradresse für die Speicherstelle zu erzeugen, und ein Summierungselement, das eingerichtet ist, die Sätze von regenerierten Blockprüfbits und den Satz von Adressbits zu kombinieren, um den Satz von regenerierten Signaturbits zu erzeugen.
-
Beispiel 44 umfasst den Gegenstand von Beispiel 43, einschließlich optionaler Gegenstände oder unter deren Auslassung, wobei die Kombinationsschaltung eingerichtet ist, eine komponentenweise Exklusiv-ODER-(XOR) oder Exklusiv-NOR- (XNOR) Operation an den Sätzen von regenerierten Blockprüfbits durchzuführen, um einen Satz von regenerierten Zwischensignaturbits zu erzeugen, und das Summierungselement eingerichtet ist, eine komponentenweise Addition des Satzes von regenerierten Zwischensignaturbits und des Satzes von Adressbits durchzuführen, um den Satz von regenerierten Signaturbits zu erzeugen.
-
Beispiel 45 umfasst den Gegenstand von Beispiel 35, einschließlich optionaler Gegenstände oder unter deren Auslassung, einschließlich einer Adressenkompaktorschaltung, die eingerichtet ist, einen Satz von Adressbits zu erzeugen, der durch die Adressbits einer Speicheradresse für den Speicherort festgelegt wird, und wobei die Korrekturschaltung eingerichtet ist, den Satz von kumulierten Prüfbits auf der Grundlage der Adressbits zu erzeugen.
-
Beispiel 46 ist ein Verfahren, das Folgendes umfasst: Empfangen einer Mehrzahl von Datenbits, Aufteilen der Mehrzahl von Datenbits in mindestens zwei Datenblöcke, Erzeugen jeweiliger Sätze von Blockprüfbits für jeden jeweiligen Datenblock unter Verwendung eines jeweiligen ersten Fehlercodes, Kombinieren der Sätze von Blockprüfbits, um einen Satz von Signaturbits für die Mehrzahl von Datenbits zu erzeugen, Erzeugen eines Satzes von kumulierten Prüfbits für die Mehrzahl von Datenbits und die Signaturbits unter Verwendung eines zweiten Fehlercodes, Speichern der Mehrzahl von Datenbits, des Satzes von Signaturbits und des Satzes von kumulierten Prüfbits an einer Speicherstelle, Empfangen einer zweiten Mehrzahl von Datenbits und eines Satzes weiterer Bits von der Speicherstelle, Aufteilen der zweiten Mehrzahl von Datenbits in mindestens zwei Datenblöcke, Erzeugen eines jeweiligen Satzes regenerierter Blockprüfbits für jeden jeweiligen Datenblock unter Verwendung des jeweiligen ersten Fehlercodes, Kombinieren der Sätze regenerierter Blockprüfbits, um einen Satz regenerierter Signaturbits zu erzeugen, Vergleichen des Satzes regenerierter Signaturbits mit dem Satz weiterer Bits, und Erkennen eines Fehlers, wenn der Satz regenerierter Signaturbits dem Satz weiterer Bits nicht entspricht.
-
Beispiel 47 ist ein Verfahren, das Folgendes umfasst: Empfangen einer Mehrzahl von Datenbits, Aufteilen der Mehrzahl von Datenbits in mindestens zwei Datenblöcke, Erzeugen jeweiliger Sätze von Blockprüfbits für jeden jeweiligen Datenblock unter Verwendung eines jeweiligen ersten Fehlercodes, Kombinieren der Sätze von Blockprüfbits zum Erzeugen eines Satzes von Signaturbits für die Mehrzahl von Datenbits, Erzeugen eines Satzes von kumulierten Prüfbits für die Mehrzahl von Datenbits und die Signaturbits unter Verwendung eines zweiten Fehlercodes, Speichern der Mehrzahl von Datenbits, des Satzes von Signaturbits und des Satzes von kumulierten Prüfbits an einer Speicherstelle, Empfangen einer zweiten Mehrzahl von Datenbits, eines zweiten Satzes von Signaturbits und eines zweiten Satzes von kumulierten Prüfbits von der Speicherstelle, Korrigieren der zweiten Mehrzahl von Datenbits und des zweiten Satzes von Signaturbits unter Verwendung des zweiten Satzes von kumulierten Prüfbits und des zweiten Fehlercodes, um eine Mehrzahl von korrigierten Datenbits und einen Satz von korrigierten Signaturbits zu erzeugen, Aufteilen der Mehrzahl von korrigierten Datenbits in mindestens zwei korrigierte Datenblöcke, Erzeugen eines jeweiligen Satzes von regenerierten Blockprüfbits für jeden jeweiligen korrigierten Datenblock unter Verwendung des jeweiligen ersten Fehlercodes, Kombinieren der Sätze von regenerierten Blockprüfbits, um einen Satz von regenerierten Signaturbits zu erzeugen, Vergleichen des Satzes von regenerierten Signaturbits mit dem Satz von korrigierten Signaturbits, und Erkennen eines Fehlers, wenn der Satz von regenerierten Signaturbits nicht äquivalent zu dem Satz von korrigierten Signaturbits ist.
-
Die vorstehende Beschreibung einer oder mehrerer Ausführungsformen dient der Veranschaulichung und Beschreibung, erhebt jedoch keinen Anspruch auf Vollständigkeit und beschränkt den Anwendungsbereich der Ausführungsbeispiele nicht auf die genaue offengelegte Form. Modifikationen und Variationen sind im Lichte der obigen Lehren möglich oder können aus der Praxis der verschiedenen Implementierungen der beispielhaften Ausführungen erworben werden.
-
Verschiedene anschauliche Logiken, logische Blöcke, Module, Schaltkreise und Schaltungen, die im Zusammenhang mit den hier offengelegten Aspekten beschrieben werden, können mit einem Universalprozessor, einem digitalen Signalprozessor (DSP), einer anwendungsspezifischen integrierten Schaltung (ASIC), einem Field Programmable Gate Array (FPGA) oder einem anderen programmierbaren Logikbaustein, einer diskreten Gate- oder Transistorlogik, diskreten Hardwarekomponenten oder einer beliebigen Kombination davon implementiert oder ausgeführt werden, um die hier beschriebenen Funktionen auszuführen. Ein Mehrzweckprozessor kann ein Mikroprozessor sein, aber auch jeder andere herkömmliche Prozessor, Controller, Mikrocontroller oder Zustandsautomat.
-
Die obige Beschreibung veranschaulichter Ausführungsformen der vorliegenden Offenbarung, einschließlich dessen, was in der Zusammenfassung beschrieben ist, erhebt keinen Anspruch auf Vollständigkeit oder darauf, die offengelegten Ausführungsformen auf die genauen offengelegten Formen zu beschränken. Während spezifische Ausführungsformen und Beispiele hier zur Veranschaulichung beschrieben werden, sind verschiedene Modifikationen möglich, die innerhalb des Anwendungsbereichs solcher Ausführungsformen und Beispiele betrachtet werden, wie die Fachleute auf dem entsprechenden Gebiet erkennen können.
-
Obwohl der offengelegte Gegenstand in Verbindung mit verschiedenen Ausführungsformen und entsprechenden Figuren beschrieben wurde, ist es zu verstehen, dass andere ähnliche Ausführungsformen verwendet oder Änderungen und Ergänzungen an den beschriebenen Ausführungsformen vorgenommen werden können, um die gleiche, ähnliche, alternative oder Ersatzfunktion des offengelegten Gegenstands auszuführen, ohne davon abzuweichen. Daher soll der offengelegte Gegenstand nicht auf eine einzelne hierin beschriebene Ausführungsform beschränkt sein, sondern sollte vielmehr in seiner Breite und seinem Umfang gemäß den unten angehängten Ansprüchen ausgelegt werden.
-
In der vorliegenden Offenlegung werden durchgängig gleiche Referenznummern für gleiche Elemente verwendet, wobei die abgebildeten Strukturen und Geräte nicht unbedingt maßstabsgetreu gezeichnet sind. Die hier verwendeten Begriffe „Modul“, „Komponente“, „System“, „Schaltkreis“, „Schaltung“, „Element“, „Slice“ und dergleichen beziehen sich auf eine computerbezogene Einheit, Hardware, Software (z. B. in Ausführung) und/oder Firmware. Ein Schaltkreis oder ein ähnlicher Begriff kann beispielsweise ein Prozessor, ein auf einem Prozessor ablaufender Prozess, ein Controller, ein Objekt, ein ausführbares Programm, ein Speichergerät und/oder ein Computer mit einem Verarbeitungsgerät sein. Zur Veranschaulichung: Eine Anwendung, die auf einem Server läuft, und der Server können auch eine Schaltung sein. Ein oder mehrere Schaltkreise können sich innerhalb eines Prozesses befinden, und Schaltkreise können auf einem Computer lokalisiert und/oder auf zwei oder mehr Computer verteilt sein. Ein Satz von Elementen oder ein Satz von anderen Schaltkreisen kann hier beschrieben werden, wobei der Begriff „Satz“ als „ein oder mehrere“ interpretiert werden kann.
-
Als weiteres Beispiel kann der Begriff „Schaltung“ oder ein ähnlicher Begriff ein Gerät mit einer bestimmten Funktionalität sein, die durch mechanische Teile bereitgestellt wird, die durch elektrische oder elektronische Schaltungen betrieben werden, wobei die elektrischen oder elektronischen Schaltungen durch eine Softwareanwendung oder eine Firmware-Anwendung betrieben werden können, die von einem oder mehreren Prozessoren ausgeführt wird. Der eine oder die mehreren Prozessoren können sich innerhalb oder außerhalb des Geräts befinden und können zumindest einen Teil der Software- oder Firmware-Anwendung ausführen. Die elektronischen Komponenten können Feldgatter, logische Komponenten, hardwarekodierte Logik, Registerübertragungslogik und einen oder mehrere Prozessoren aufweisen, die Software und/oder Firmware ausführen, die zumindest teilweise die Funktionalität der elektronischen Komponenten gewährleisten.
-
Wenn ein Element als „elektrisch verbunden“ oder „elektrisch gekoppelt“ mit einem anderen Element bezeichnet wird, kann es physisch mit dem anderen Element verbunden oder gekoppelt sein, so dass Strom und/oder elektromagnetische Strahlung entlang eines von den Elementen gebildeten leitenden Pfades fließen kann. Zwischen dem Element und dem anderen Element können leitende, induktive oder kapazitive Elemente vorhanden sein, wenn die Elemente als elektrisch gekoppelt oder miteinander verbunden bezeichnet werden. Wenn die Elemente elektrisch miteinander gekoppelt oder verbunden sind, kann ein Element in der Lage sein, einen Spannungs- oder Stromfluss oder die Ausbreitung einer elektromagnetischen Welle in dem anderen Element zu induzieren, ohne dass ein physischer Kontakt oder dazwischen liegende Komponenten vorhanden sind. Wenn eine Spannung, ein Strom oder ein Signal an ein Element „angelegt“ wird, kann die Spannung, der Strom oder das Signal über eine physische Verbindung oder über eine kapazitive, elektromagnetische oder induktive Kopplung, die keine physische Verbindung beinhaltet, an das Element geleitet werden.
-
Die Verwendung des Wortes „beispielhaft“ soll dazu dienen, Konzepte in einer konkreten Weise darzustellen. Die hier verwendete Terminologie dient nur der Beschreibung bestimmter Beispiele und ist nicht als Einschränkung von Beispielen zu verstehen. Die hier verwendeten Singularformen „ein“, „ein“ und „die“ schließen auch die Pluralformen ein, sofern aus dem Kontext nicht eindeutig etwas anderes hervorgeht. Es versteht sich ferner, dass die Begriffe „umfasst“, „weisen auf“, „schließt ein“ und/oder „einschließlich“, wenn sie hier verwendet werden, das Vorhandensein bestimmter Merkmale, ganzer Zahlen, Schritte, Operationen, Elemente und/oder Komponenten spezifizieren, aber das Vorhandensein oder Hinzufügen eines oder mehrerer anderer Merkmale, ganzer Zahlen, Schritte, Operationen, Elemente, Komponenten und/oder Gruppen davon nicht ausschließen. Wie hierin verwendet, schließt der Begriff „oder“ die Möglichkeit aller Elemente ein, die durch das Wort oder miteinander verbunden sind. So ist z. B. A oder B so auszulegen, dass es nur A, nur B und sowohl A als auch B einschließt. Ferner ist die Formulierung „eines oder mehrere von“, gefolgt von A, B oder C, so auszulegen, dass sie A, B, C, AB, AC, BC und ABC einschließt.