-
Technisches Gebiet
-
Die vorliegende Erfindung bezieht sich auf Speichervorrichtungen und auf Verfahren zum Korrigieren einer gespeicherten Bitfolge. Die vorliegende Erfindung bezieht sich ferner auf ein adressenabhängiges Wiederherstellen von fehlerhaften Speicherinhalten.
-
Stand der Technik
-
Informationsspeicher oder Speicher zum Speichern von Bitfolgen können eine Mehrzahl oder Vielzahl von Speicherzellen aufweisen. Bei adressierbaren Speichern kann eine Speicherzelle oder eine Gruppe von Speicherzellen basierend auf einer Adresse adressiert werden, d. h. es kann ein Lesezugriff und/oder ein Schreibzugriff auf die Speicherzellen erfolgen. Die Speicherzellen können ausgebildet sein, um Informationen flüchtig oder nicht-flüchtig zu speichern. In einem Speicher gespeicherte Bitfolgen können einen Bitfehler aufweisen.
-
Zusammenfassung
-
Ausführungsbeispiele schaffen eine Speichervorrichtung mit einem Speicher, der erste Speicherzellen und zweite Speicherzellen aufweist. Die zweiten Speicherzellen sind von den ersten Speicherzellen verschieden. In den ersten Speicherzellen kann eine erste Bitfolge gespeichert sein und in den zweiten Speicherzellen kann eine zweite Bitfolge gespeichert sein. Die Speichervorrichtung umfasst eine Speichersteuerung, die ausgebildet ist, um die erste Bitfolge mit einer den ersten Speicherzellen zugeordneten Häufigkeit zu überprüfen. Die den ersten Speicherzellen zugeordnete Häufigkeit hängt von einer Zuverlässigkeitsinformation für die ersten Speicherzellen ab. Die Speichersteuerung ist ausgebildet, um bei einem Fehlerzustand ein fehlerhaftes Bit der ersten Bitfolge zu korrigieren und um zumindest das korrigierte Bit in den Speicher zurückzuschreiben. Die zweite Bitfolge wird basierend auf einer Zuverlässigkeitsinformation für die zweiten Speicherzellen weniger oft überprüft wird als die erste Bitfolge.
-
Weitere Ausführungsbeispiele schaffen eine Speichervorrichtung mit einem adressierbaren Speicher zum Speichern von Bitfolgen und einer Speichersteuerung. Die gespeicherten Bitfolgen sind im fehlerfreien Fall jeweils Bits eines Codeworts eines fehlerkorrigierenden Codes. Die Speichersteuerung ist ausgebildet, um für eine Korrektur fehlerhafter Inhalte die gespeicherten Bitfolgen auszulesen, um einen Auslesevorgang durchzuführen. Der fehlerkorrigierende Code ist ein t-Bit korrigierender Code, wobei t ≥ 2 gilt. Die Speichersteuerung ist ausgebildet, um eine gespeicherte und ausgelesene fehlerhafte Bitfolge, die eine Anzahl von σ Fehlern aufweist, unter Verwendung des fehlerkorrigierenden Codes zu korrigieren und um die fehlerhafte Bitfolge mit einer korrigierten Bitfolge zu überschreiben und/oder um die korrigierte Bitfolge zurückzuschreiben, wobei gilt, dass 1 ≤ τ < σ ≤ t ist. Die Speichersteuerung ist ausgebildet, um die fehlerhafte Bitfolge nicht mit einer korrigierten Bitfolge zu überschreiben und um die korrigierte Bitfolge nicht zurückzuschreiben, wenn die ausgelesene Bitfolge eine Anzahl von σ Fehlern aufweist und σ ≤ τ gilt.
-
Weitere Ausführungsbeispiele schaffen Verfahren zum Korrigieren von Bitfolgen.
-
Weitere vorteilhafte Ausführungsformen sind der Gegenstand der abhängigen Patentansprüche.
-
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen erläutert. Es zeigen:
-
1 ein schematisches Blockschaltbild einer Speichervorrichtung gemäß einem Ausführungsbeispiel;
-
2 ein schematisches Blockschaltbild einer Speichervorrichtung, die gegenüber der 1 modifiziert ist, gemäß einem Ausführungsbeispiel;
-
3 ein schematisches Blockschaltbild einer weiteren Speichervorrichtung gemäß einem Ausführungsbeispiel;
-
4a einen ersten schematischen Zeitverlauf für ein Auslesen und/oder ein Überschreiben von Speicherzellen, gemäß einem Ausführungsbeispiel;
-
4b einen zweiten schematischen Zeitverlauf für ein Auslesen und/oder ein Überschreiben von Speicherzellen, gemäß einem Ausführungsbeispiel;
-
5 ein schematisches Flussdiagramm eines Verfahrens, wie es beispielsweise von einer Speichersteuerung ausführbar ist, gemäß einem Ausführungsbeispiel;
-
6 ein schematisches Diagramm mit einer Verteilung von Speicherzellen gemäß einem Ausführungsbeispiel;
-
7 ein schematisches Diagramm mit einer Zuordnung von Speicherzellen zu Adressen des Speichers gemäß einem Ausführungsbeispiel;
-
8 eine schematische Darstellung von unter den Adressen aus 7 gespeicherten Bitfolgen gemäß einem Ausführungsbeispiel;
-
9 eine schematische Darstellung des Speichers aus 7, der ein gespeichertes Codewort aufweist, gemäß einem Ausführungsbeispiel;
-
10 eine schematische Darstellung des Speichers 12, bei dem die Parität für die Bildung von Codewörtern genutzt wird gemäß einem Ausführungsbeispiel;
-
11 eine schematische Darstellung eines adressierbaren Speichers mit 32 Adressen gemäß einem Ausführungsbeispiel;
-
12 schematisch die Belegung eines Speichers gemäß einem Ausführungsbeispiel;
-
13 ein schematisches Blockschaltbild einer Schaltungsanordnung zur Speicherung codierter Daten in dem adressierbaren Speicher gemäß einem Ausführungsbeispiel;
-
14 ein schematisches Blockschaltbild einer weiteren Speichervorrichtung zur Speicherung codierter Daten in dem adressierbaren Speicher, gemäß einem Ausführungsbeispiel;
-
15 ein schematisches Blockschaltbild einer Speichervorrichtung zur Speicherung codierter Nutzdaten in dem adressierbaren Speicher, bei der aus Adressbits Information abgeleitet wird, gemäß einem Ausführungsbeispiel;
-
16 ein schematisches Blockschaltbild einer Speichervorrichtung umfassend den adressierbaren Speicher und die Speichersteuerung, gemäß einem Ausführungsbeispiel;
-
17 ein schematisches Flussdiagramm von Verfahren, die ausführbar sind, um eine Zuordnung von Adressen zu einer Teilmenge zu beeinflussen oder zu verändern, gemäß einem Ausführungsbeispiel;
-
18 ein schematisches Blockschaltbild einer Speichervorrichtung, die eine modifizierte Speichersteuerung umfasst, gemäß einem Ausführungsbeispiel;
-
19 eine schematische Darstellung einer Verteilung von Speicherzellen über verschiedene thermische Stabilitäten gemäß einem Ausführungsbeispiel;
-
20 ein schematisches Diagramm einer Wahrscheinlichkeitsverteilung, das ein Bit innerhalb eines Zeitintervalls oder nach einem Schreibvorgang einen Bitfehler aufweist, gemäß einem Ausführungsbeispiel;
-
21 ein schematisches Flussdiagramm eines Verfahrens zur Fehlerkorrektur, wie es bspw. von der Speichervorrichtung gem. 1 implementierbar ist, gemäß einem Ausführungsbeispiel;
-
22 ein schematisches Flussdiagramm eines Verfahrens zur Fehlerkorrektur gemäß einem Ausführungsbeispiel;
-
23 ein schematisches Flussdiagramm eines Verfahrens, wie es beispielsweise von der Speichervorrichtung aus 18 implementierbar ist, gemäß einem Ausführungsbeispiel;
-
24 eine schematische Darstellung einer zu speichernden Bitfolge, die als bitweise invertierte Bitfolge gespeichert wird, gemäß einem Ausführungsbeispiel; und
-
25 eine schematische Darstellung einer Klassifizierung der Speicherzelle als einen permanenten Fehler aufweisend gemäß einem Ausführungsbeispiel.
-
Bevor nachfolgend Ausführungsbeispiele der vorliegenden Erfindung im Detail anhand der Zeichnungen näher erläutert werden, wird darauf hingewiesen, dass identische, funktionsgleiche oder gleichwirkende Elemente, Objekte und/oder Strukturen in den unterschiedlichen Figuren mit den gleichen Bezugszeichen versehen sind, so dass die in unterschiedlichen Ausführungsbeispielen dargestellte Beschreibung dieser Elemente untereinander austauschbar ist bzw. aufeinander angewendet werden kann.
-
Die Erfinder haben herausgefunden, dass eine Zeit, eine Rechenleistung und/oder ein Energieaufwand einer Speichervorrichtung gering ist, wenn eine Bitfolge basierend auf einer ermittelten Wahrscheinlichkeit für ein Auftreten einer fehlerhaften Bitfolge auf ein Vorhandensein eines Fehlers überprüft wird. Für eine geringe Wahrscheinlichkeit kann eine geringe Häufigkeit, d. h. ein großes Zeitintervall, zwischen zwei Überprüfungen gewählt werden, während für eine hohe Wahrscheinlichkeit eine hohe Häufigkeit, d. h. ein geringes Zeitintervall, gewählt werden kann. Eine Überprüfung von Bitfolgen mit einer geringen Wahrscheinlichkeit ermöglicht eine Einsparung von Zeit, Rechenleistung und/oder elektrischer Energie, so dass die Speichervorrichtung mit geringen oder ohne Einbußen bezüglich der Zuverlässigkeit der gespeicherten Information mit einer hohen Effizienz betrieben werden kann.
-
Nachfolgende Ausführungsbeispiele beziehen sich auf Speichervorrichtungen mit einem Speicher, der adressierbar sein kann. Adressierbare Speicher können ausgebildet sein, um Information flüchtig oder nicht-flüchtig zu speichern. Hierfür können unter Verwendung einer Adresse des Speichers eine oder mehrere Speicherzellen adressiert werden. In der Speicherzelle kann Information gespeichert und/oder ausgelesen werden. Flüchtige Speicher können beispielsweise als Cache-Speicher oder als RAM-Speicher einsetzbar sein. Nicht-flüchtige Speicher können beispielsweise Flash-Speicher, Festplatten, Disketten, CD (Compact Disk), DVD (Digital Video/versatile Disc), Datenbänder oder dergleichen sein. Insbesondere kann es sich bei nicht-flüchtigen Speichern um einen magnetoresistiven Speicher mit direktem Zugriff (MRAM) handeln.
-
Manche der nachfolgend erläuterten Ausführungsbeispiele beziehen sich auf eine Verwendung einer Zuverlässigkeitsinformation zum Bestimmen oder Festlegen einer Häufigkeit, mit der Bitfolgen auf eine Anwesenheit von Bitfehlern überprüft werden. Eine jeweilige Zuverlässigkeitsinformation kann einer jeweiligen Speicherzelle zugeordnet sein und bspw. basierend auf einem physikalischen Parameter bestimmbar sein oder der physikalische Parameter sein. Der physikalische Parameter kann bspw. einen Lesestrom der Speicherzelle, einen Schreibstrom der Speicherzelle, eine thermische Stabilität der Speicherzelle und/oder einen weiteren/anderen Parameter umfassen, der mit der thermischen Stabilität korreliert ist. Der physikalische Parameter kann eine Wahrscheinlichkeit eines Auftretens eines Bitfehlers/Flippen eines Bits in der Speicherzelle innerhalb eines Zeitintervalls beeinflussen. Aus dem physikalischen Parameter kann somit eine Aussage ableitbar sein, wie zuverlässig (dauerhaft) Information in der jeweiligen Speicherzelle gespeichert werden kann. Die Aussage kann vereinfacht so verstanden werden, dass eine Unterscheidung zwischen „guten”, d. h., zuverlässigen, und „schlechten”, d. h., weniger zuverlässigen, Speicherzellen möglich ist, wobei andere oder weitere Unterscheidungen oder Untergruppierungen ebenfalls möglich sind. Zu einem Zeitpunkt nach einer Herstellung eines Speichers kann der physikalische Parameter für jede Speicherzelle des Speichers erfasst werden. Aus dem physikalischen Parameter kann direkt oder mittelbar, etwa basierend auf einer Rechenoperation oder einem Schwellwertvergleich, die Zuverlässigkeitsinformation erhalten oder abgeleitet werden. Das bedeutet, dass durch Erfassen des physikalischen Parameters für eine Speicherzelle auch die Zuverlässigkeitsinformation für die Speicherzelle vorliegt.
-
Die Zuverlässigkeitsinformation kann auf dem physikalischen Parameter basieren und eine Information darüber andeuten, wie wahrscheinlich ein Auftreten eines Bitfehlers in der Speicherzelle ist. In adressierbaren Speichern, wie etwa MRAM Speichern, können mehrere Speicherzelle durch eine gemeinsame Speicheradresse adressierbar sein. Die Zuverlässigkeitsinformation der einzelnen Speicherzellen kann in eine Zuverlässigkeitsinformation der mehreren Speicherzellen einer Adresse aggregiert oder zusammengefasst werden. Eine Zuverlässigkeitsinformation für eine Anzahl von Speicherzellen, die durch eine gemeinsame Speicheradresse adressierbar sind, kann darauf basieren, wie zuverlässig die beste oder schlechteste Speicherzelle der Anzahl von Speicherzellen ist.
-
Vereinfachend werden manche der nachfolgend beschriebenen Ausführungsbeispiele so beschrieben, dass eine Zuverlässigkeitsinformation für eine Speicherzelle oder eine Gruppe von Speicherzellen als gespeicherte Information vorliegt, die den Speicherzellen zugeordnet werden kann. Diese Ausführungen dienen der besseren Verständlichkeit, sollen die Ausführungsbeispiele jedoch nicht dahingehend einschränken, dass die gespeicherte oder hinterlegte Information die Zuverlässigkeitsinformationen sind. Vielmehr ist die Zuverlässigkeitsinformation als Entscheidung über die Zuverlässigkeit einer Speicherzelle oder einer Speicherzellengruppe basierend auf dem Erfassen des physikalischen Parameters zu verstehen. Ein Ergebnis der Entscheidung kann als Hinterlegen oder nicht-Hinterlegen einer entsprechenden Information erfolgen. Somit kann bei einer Gruppierung der Speicherzellen in eine Anzahl von Gruppen (etwa gut/schlecht) zumindest eine Gruppe durch eine Abwesenheit einer entsprechenden Information identifiziert werden, obwohl für diese Gruppe die Zuverlässigkeitsinformation vorliegt oder bestimmt wurde.
-
Manche der nachfolgend erläuterten Ausführungsbeispiele beziehen sich auf einen adressierbaren Speicher, der einen MRAM-Speicher aufweist. Der MRAM-Speicher kann eine Mehrzahl oder Vielzahl von Speicherzellen aufweisen. Eine oder mehrere Speicherzellen können jeweils durch eine Adresse, die auf die Speicherzelle(n) verweist, adressiert werden. Basierend auf einem Lesezugriff auf die zumindest eine Speicherzelle unter Verwendung der Adresse kann eine Information, die in der zumindest einen Speicherzelle gespeichert ist, ausgelesen werden. Basierend auf einem Schreibzugriff kann eine Information in die zumindest eine Speicherzelle gespeichert werden, beispielsweise mittels eines Schreibens oder Umschreibens zumindest einer Speicherzelle von einem Zustand logisch null auf logisch eins oder andersherum.
-
Ein Überschreiben der fehlerhaften Bitfolge mit einer korrigierten Bitfolge kann sich auf ein Überschreiben oder Neubeschreiben von unter der gleichen Adresse ausgelesenen Speicherzellen beziehen. Ein Zurückschreiben oder Umschreiben in den Speicher kann sich auf ein Speichern der korrigierten Bitfolge unter einer hiervon verschiedenen Adresse beziehen. Alternativ können beide Begriffe wechselseitig vertauschbar verwendet werden.
-
Manche der nachfolgend beschrieben Ausführungsbeispiele beziehen sich auf einen fehlererkennenden und/oder fehlerkorrigierenden Code sowie dessen Verwendung. Codes können eine Mehrzahl oder Vielzahl von Codewörtern aufweisen, die als gültige Bitkombination innerhalb des Codes verstanden werden können. Codes können einen Codeabstand (Minimalabstand), etwa einen Δ-Abstand bzw. eine Hamming-Distanz aufweisen. Der Codeabstand kann als ein Maß für eine Anzahl von Fehlern oder Bitfehlern verstanden werden, die innerhalb eines Codeworts auftreten können, ohne dass das fehlerhafte Codewort ein anderes Codewort darstellt. Basierend auf dem Codeabstand können unter Verwendung des Codes eine Anwesenheit und gegebenenfalls eine Anzahl von Fehlern in der Bitfolge erkennbar sein. Basierend auf der Minimaldistanz kann ferner zumindest ein Fehler in einer fehlerhaften Bitfolge korrigierbar sein. Dies kann auch so verstanden werden, dass ein Code mit einem Codeabstand von d verwendbar ist, um eine Anzahl von (d – 1) Fehlern zu erkennen und/oder um eine Anzahl von k-Fehlern zu korrigieren, wobei gilt, dass k < d/2 ist. Mit einem Code, der einen Codeabstand von d = 3 aufweist, kann beispielsweise eine Anzahl von 2 (Bit-)Fehlern erkennbar sein. Alternativ oder zusätzlich kann der Code verwendbar sein, um eine Anzahl von k = 1 Fehlern zu korrigieren.
-
In einem Speicher gespeicherte Informationen können durch einen fehlerhaften Schreibzugang, durch auf den Speicher einwirkende Einflüsse und/oder durch Eigenschaften des Speichers Fehler aufweisen. In elektronischen Speicherelementen können digitale Werte in Speicherzellen beispielsweise als analoge Werte, etwa als Ladungen oder Widerstände gespeichert werden. Die analogen Werte können beim Auslesen der Speicherelemente in digitale Werte gewandelt werden, wie es beispielsweise in einem Flash-Speicher oder einem DRAM-(dynamischer RAM) möglich ist. Im Laufe der Zeit können sich die analogen Speicherzustände verändern. Wird ein Zustand beispielsweise als Ladung gespeichert, so kann sich die Ladung durch Leckströme (engl.: Leak-Ströme) und/oder Diffusion vermindern. Um zu verhindern, dass die Ladung unter einen gewissen Schwellenwert absinkt und damit die in den Speicherzellen gespeicherten Informationen fehlerhaft interpretiert werden, können die Daten in einem Flash-Speicher oder in einem DRAM etwa periodisch in die gleichen Speicherzellen zurückgeschrieben werden. Nach dem erneuten Einschreiben können die analogen Zustandswerte wieder hinreichend weit von dem Schwellenwert entfernt sein.
-
Im Unterschied dazu kann in magnetoresistiven Speicherelementen (MRAMs) digitale Information durch bspw. zwei voneinander verschiedene Zustände, etwa zwei Zuständen, die auf magnetischer Anisotropie beruhen, in den Speicherzellen digital gespeichert werden. Die Stabilität dieser Zustände kann von einer Energiebarriere ΔE zwischen den Zuständen abhängen, die als thermische Stabilität bezeichnet werden kann.
-
Es ist gemäß Ausführungsbeispielen möglich, dass ein digitaler Zustand einer Speicherzelle in einem anderen ebenfalls digitalen Zustand (beispielsweise durch Quanteneffekte) gestört ist, d. h. es liegt ein Fehler vor. Eine Wahrscheinlichkeit p
stable (stable = stabil), dass ein digitaler Zustand einer Zelle zu einem Zeitpunkt t + Δt korrekt ist, wenn er zum Zeitpunkt t korrekt war, kann durch eine Beziehung
beschrieben werden. Dabei sind k
B die Boltzmann-Konstante, T
abs die absolute Temperatur, ΔE die thermische Stabilität und τ
0 eine Zeitkonstante mit τ
0 ≈ 1 ns. Eine Wahrscheinlichkeit p
error (error = Fehler), das eine Speicherzelle zu einem Zeitpunkt t + Δt fehlerhaft ist, wenn sie zu dem Zeitpunkt t korrekt war, kann durch
Perror = 1 – pstable bestimmt werden. Der Parameter τ hängt beispielsweise exponentiell von der thermischen Stabilität ΔE ab. Die Wahrscheinlichkeit p
stable kann beispielsweise ihrerseits exponentiell von τ abhängen, so dass die thermische Stabilität ΔE über zwei Exponentialfunktionen die Stabilität von Speicherzellen bestimmen kann. Kleine Schwankungen der thermischen Stabilität der Speicherzellen wirken sich dadurch gegebenenfalls stark auf die Stabilität der Speicherzellen eines MRAM-Speichers aus.
-
Es ist schwer oder nicht möglich, die Korrektheit der in den Speicherzellen eines MRAM-Speichers gespeicherten Daten zu verbessern, indem die Inhalte der Speicherzellen etwa periodisch ausgelesen und unverändert zurückgeschrieben werden, um das Anhäufen von Fehlern in einem MRAM zu verhindern.
-
Gemäß einem Ausführungsbeispiel können die Speicherinhalte unter Verwendung eines fehlerkorrigierenden Codes korrigiert werden. Unter den Adressen des MRAMs können Bitfolgen oder Binärfolgen als Codewörter eines fehlerkorrigierenden Codes gespeichert werden und periodisch ausgelesen werden. Fehlerhafte Codewörter können bei dem periodischen Auslesen korrigiert und in die entsprechenden Zellen des MRAMS korrigiert zurückgeschrieben werden. Damit können digitale Fehler in den Speicherzellen korrigiert werden, ehe sich zu viele Fehler anhäufen.
-
Aufgrund von Schwankungen in der thermischen Stabilität der Speicherzellen kann ihre Stabilität basierend auf der zweifachen exponentiellen Abhängigkeit von der thermischen Stabilität ΔE stark variieren.
-
Manche der nachfolgend beschriebenen Ausführungsbeispiele beschreiben Vorrichtungen oder Speicher während eines Betriebs derselben. Blöcke oder Komponenten der jeweiligen Vorrichtung oder des Speichers sind ausgebildet, um die beschriebene Funktionalität bereitzustellen.
-
1 zeigt ein schematisches Blockschaltbild einer Speichervorrichtung 10. Die Speichervorrichtung 10 umfasst einen Speicher 12. Der Speicher 12 kann erste Speicherzellen 14-1 bis 14-3 bzw. 14 und zweiten Speicherzellen 16-1 bis 16-3 bzw. 16 aufweisen. Die ersten Speicherzellen 14 und die zweiten Speicherzellen 16 können von einander verschieden sein, so dass in den ersten Speicherzellen 14 und den zweiten Speicherzellen 16 von einander verschiedene Bitfolgen 17a und 17b speicherbar sind. Bspw. kann in den ersten Speicherzellen 14 die Bitfolge 17a und in den zweiten Speicherzellen die Bitfolge 17b gespeichert sein.
-
Die Speichervorrichtung 10 umfasse eine Speichersteuerung 18. Die Speichersteuerung 18 ist ausgebildet um die Bitfolge 17a mit einer Häufigkeit x1/T zu überprüfen, wobei x1 eine Anzahl von Auslesevorgängen oder Überprüfungsvorgängen und T ein beliebiges Zeitintervall beschreiben kann. Die Häufigkeit x1/T kann den ersten Speicherzellen zugeordnet sein. Die den ersten Speicherzellen 14 zugeordnete Häufigkeit x1/T kann von einer Zuverlässigkeitsinformation 22 für die ersten Speicherzellen 14 abhängen.
-
Die Zuverlässigkeitsinformation 22 kann einen Hinweis auf die Zuverlässigkeit der ersten Speicherzellen 14 liefern. Bspw. kann der Speicher 12 ein adressierbarer Speicher sein und die Zuverlässigkeitsinformation 22 auf eine Adresse der ersten Speicherzellen 14 hinweisen oder die Adresse umfassen.
-
Die Speichersteuerung 18 kann ausgebildet sein, um bei einem Fehlerzustand ein fehlerhaftes Bit, bspw. ein in der Speicherzelle 14-3 gespeichertes Bit 15, der ersten Bitfolge zu korrigieren. Die Korrektur kann ein Korrigieren zumindest eines Bits umfassen. Basierend auf der Korrektur der Bitfolge 17a kann eine korrigierte Bitfolge 17'a erhalten werden, die eine geringere Anzahl von Bitfehlern oder keine Bitfehler aufweisen kann. Die Speichersteuerung 18 kann ausgebildet sein, um zumindest das korrigierte Bit in den Speicher 12 zurückzuschreiben. Bspw. kann die Speichersteuerung 18 ausgebildet sein, um die korrigierte Bitfolge 17'a in den Speicher 12 zurückzuschreiben. Gemäß weiteren Ausführungsbeispielen kann die Speichersteuerung 18 ausgebildet sein, um zumindest ein korrigiertes Bit in den Speicher 12 zurückzuschreiben. Dies kann so verstanden werden, dass ein fehlerhaftes Bit, bspw. das in der Speicherzelle 14-3 gespeicherte Bit 15 mit einer Information „1” als korrigiertes Bit „0” in den Speicher 12 zurückgeschrieben wird und dass ein fehlerfreies Bit nicht in den Speicher zurückgeschrieben wird.
-
Die zweite Bitfolge 17b kann basierend auf der Zuverlässigkeitsinformation für die zweiten Speicherzellen 14 weniger oft überprüft werden als die erste Bitfolge 17a. Bspw. kann basierend auf einer Bestimmung der Zuverlässigkeit, d. h., der Zuverlässigkeitsinformation für die zweiten Speicherzellen eine Information hinterlegt werden oder keine Information hinterlegt werden. Gemäß einem Ausführungsbeispiel wird die die Zuverlässigkeitsinformation für die ersten Speicherzellen 14 so bestimmt, dass diese als unzuverlässig eingestuft werden, wobei die Zuverlässigkeitsinformation für die zweiten Speicherzellen 16 so bestimmt wird, dass diese als zuverlässig eingestuft werden. Ein Hinterlegen einer Information (Zuverlässigkeitsinformation 22), die eine Identifizierung oder Adressierung der ersten oder zweiten Speicherzellen, kann ermöglicht somit auch eine Identifizierung oder Adressierung der anderen Speicherzellen.
-
Gemäß einem Ausführungsbeispiel kann zumindest eine der Speicherzellen 14-1 bis 14-3 als fehleranfällig erkannt werden oder bekannt sein, etwa durch ermitteln der Zuverlässigkeitsinformation. Bspw. ist die Speicherelle 14-3 als fehleranfällig bekannt, d. h., verglichen mit anderen Speicherzellen (Referenzzellen) weist die Speicherzelle 14-3 eine erhöhte Wahrscheinlichkeit auf, innerhalb eines Zeitintervalls t + Δt einen Bitfehler aufzuweisen, d. h., eine gespeicherte Information zu verfälschen. Die Zuverlässigkeitsinformation 22 kann einen Hinweis darauf liefern, dass die Bitfolge 17a, die das in der Speicherzelle 14-3 gespeicherte Bit umfasst, innerhalb des Zeitintervalls t + Δt fehlerhaft wird oder am Ende desselben (mit einer hohen Wahrscheinlichkeit) fehlerhaft ist. Das bedeutet, dass die Zuverlässigkeitsinformation 22 auf einer Wahrscheinlichkeit für ein Auftreten eines Bitfehlers in den ersten Speicherzellen 14 und/oder den zweiten Speicherzellen 16 basieren kann. Bspw. kann die Zuverlässigkeitsinformation auf einer absoluten Wahrscheinlichkeit der ersten oder zweiten Speicherzellen 14 oder 16, dass diese innerhalb des Zeitintervalls zumindest einen Bitfehler aufweisen, basieren oder davon abhängen. Alternativ oder zusätzlich kann die Zuverlässigkeitsinformation auf einer relativen Wahrscheinlichkeit, d. h., ein Auftreten des Bitfehlers ist in einer Bitfolge höher als in einer anderen, basieren oder davon abhängen.
-
Bspw. können die die Speicherzellen 14-1 bis 14-3 bspw. gemeinsam genutzt werden, etwa basierend auf einer gemeinsamen Speicheradresse, so dass eine Fehleranfälligkeit der Speicherzelle 14-3 auf die Speicherzellen 14 übertragbar ist. Vereinfacht ausgedrückt kann die Speicherzelle 14-3 und mithin die ersten Speicherzellen 14 als fehleranfällig oder „schlecht” und andere Speicherzellen 14-1, 14-2 und/oder 16 als „in Ordnung” oder „gut” verstanden werden. Die Zuverlässigkeitsinformation kann einen Hinweis auf gute oder schlechte Speicherzellen liefern, so dass die jeweils andere Kategorie ableitbar ist. Gemäß weiteren Ausführungsbeispielen kann für jede Kategorie eine Teil-Zuverlässigkeitsinformation vorliegen, so dass die Zuverlässigkeitsinformation 22 als eine Gesamtinformation von Teilzuverlässigkeitsinformation verstanden werden kann.
-
Die Speichersteuerung kann ausgebildet sein, um zu bestimmen, ob für die erste Bitfolge ein Fehlerzustand vorliegt. Der Fehlerzustand kann sich auf die Anwesenheit von zumindest einem Bitfehler in der Bitfolge 17a beziehen. Gemäß Ausführungsbeispielen kann die Bitfolge 17a zumindest ein Teil eines Codeworts eines fehlerkorrigierenden Codes sein, das bedeutet Bits des Codeworts umfassen, oder das Codewort sein. Der fehlerkorrigierende Code kann nutzbar sein, um eine Anzahl von t Bitfehlern in einem Codewort zu korrigieren. Bspw. ist t ≥ 1 oder ≥ 2 oder größer. Ist bspw. t ≥ 2, so kann die Speichersteuerung ausgebildet sein, um zu bestimmen, dass der Fehlerzustand vorliegt, wenn zumindest zwei Bitfehler vorliegen und um zu bestimmen, dass kein Fehlerzustand vorliegt, wenn eine Anzahl von NULL oder eine Anzahl von einem Fehler vorliegen. Dies kann auch als Verwendung oder Nutzung einer Code-Reserve verstanden werden. Das bedeutet, es können gemäß Ausführungsbeispielen dann Fehler korrigiert werden, wenn eine gewisse Anzahl derselben vorliegt. Liegt eine geringere Anzahl vor, kann die Speichersteuerung 18 ausgebildet sein, um auf eine Korrektur zu verzichten, da eine weitere Anzahl (bspw. von zumindest NULL oder zumindest einem Fehler) korrigierbar ist. Dies ermöglicht eine Ersparnis von Schreibvorgängen und mithin von Zeit und/oder Energie verglichen mit einer Korrektur jedes einzelnen Bitfehlers bei einem Auftreten.
-
2 zeigt ein schematisches Blockschaltbild einer Speichervorrichtung 20, die eine Funktionalität gemäß der Speichervorrichtung 10 aufweisen kann und gegenüber der Speichervorrichtung 10 modifiziert ist. Bspw. kann die Speichersteuerung 18 ausgebildet sein, um basierend auf der Zuverlässigkeitsinformation 22 die zweite Bitfolge 17b mit einer den zweiten Speicherzellen 16 zugeordneten Häufigkeit x2/T zu überprüfen. Der Wert x1 kann als eine Anzahl von Auslesevorgängen für die zweiten Speicherzellen oder Überprüfungsvorgänge der Bitfolge 17b verstanden werden, die innerhalb des Zeitintervalls T ausgeführt werden. Die Anzahl von x2 kann einen Wert aufweisen, der kleiner ist als die Anzahl x1. Bspw. kann die Anzahl x2 einen Wert von NULL aufweisen, das bedeutet, die Speichersteuerung 18 kann ausgebildet sein, um die zweite Bitfolge 17b basierend auf der Zuverlässigkeitsinformation 22 von einer Überprüfung auszunehmen.
-
Wird ein Auslesevorgang oder Überprüfungsvorgang der zweiten Bitfolge 17b ausgeführt, kann die Speichersteuerung 18 ausgebildet sein, um zu überprüfen ob ein Fehlerzustand bzgl. der zweiten Bitfolge 17b vorliegt. Die Kriterien für ein Vorliegen eines Fehlerzustands der zweiten Bitfolge 17b und die Kriterien für ein Vorliegen des Fehlerzustands der ersten Bitfolge 17a können gleich oder vergleichbar sein. Liegt ein Fehlerzustand der zweiten Bitfolge 17b vor, so kann die Speichersteuerung 18 ausgebildet sein, um zumindest ein fehlerhaftes Bit der zweiten Bitfolge, bspw. das in der Speicherzelle 16-1 gespeicherte Bit 15', zu korrigieren und um die korrigierte Bitfolge 17b' oder zumindest ein korrigiertes Bit in den Speicher zurückzuschreiben. Ein Zurückschreiben einer gesamten Bitfolge 17b' oder lediglich Teilen (Bits) hiervon für die erste Bitfolge 17'a und 17'b gleich oder vergleichbar sein.
-
Ist die erste Bitfolge 17a oder die zweite Bitfolge 17b in einem fehlerfreien Fall ein Codewort eines t-Bit fehlerkorrigierenden Codes mit t ≥ 2 oder ein Teil des Codeworts und wird die Codereserve genutzt, so kann der Fehlerzustand der ersten oder zweiten Bitfolge auch so ausgedrückt werden, dass der Fehlerzustand vorliegt, wenn zumindest eine Anzahl von σ Bitfehler in der ersten bzw. zweiten Bitfolge vorliegen. Hierbei kann gelten, dass σ > τ. τ kann ein Fehlerschwellwert mit einem Wert von τ ≥ 1 sein. Liegt der Fehlerzustand nicht vor, kann die Speichersteuerung ausgebildet sein, um die korrigierte Bitfolge nicht zurückzuschreiben.
-
3 zeigt ein schematisches Blockschaltbild einer Speichervorrichtung 30 gemäß einem Ausführungsbeispiel, die die Speichervorrichtung 10 modifiziert. Die Speichervorrichtung 30 umfasst den Speicher 12, der als adressierbarer Speicher gebildet ist. Der adressierbare Speicher 12 weist erste Speicherzellen 14-1 bis 14-5 bzw. 14 auf, die durch eine erste Adresse a1,1 adressiert werden. Der adressierbare Speicher weist zweite Speicherzellen 16-1 bis 16-5 bzw. 16 auf, die durch eine zweite Adresse a2,1 adressiert werden. Die zweite Adresse a2,1 kann von ersten Adresse a1,1 verschieden sein. Die unter der ersten Adresse a1,1 und der zweiten Adresse a2,1 gespeicherten Bitfolgen können im fehlerfreien Fall jeweils Bits eines Codeworts eines fehlerkorrigierenden Codes Ccor sein. Eine fehlerhafte Bitfolge 17 kann zumindest einen Bitfehler aufweisen. Eine korrigierte Bitfolge 17' kann eine gegenüber der Bitfolge 17 reduzierte Fehleranzahl aufweisen, ggf. keine Fehler.
-
Gemäß Ausführungsbeispielen stellen die Bitfolgen ein Segment des Codeworts dar. Gemäß weiteren Ausführungsbeispielen stellen die Bitfolgen das Codewort dar.
-
Die Speichervorrichtung 30 umfasst die Speichersteuerung 18, die ausgebildet ist, um für eine Korrektur fehlerhafter Inhalte in den gespeicherten Bitfolgen die ersten und/oder zweiten Speicherzellen 14 und/oder 16 auszulesen, um einen Auslesevorgang durchzuführen. Eine Häufigkeit von aufeinanderfolgenden Auslesevorgängen der ersten Speicherzellen 14 und der zweiten Speicherzellen 16 kann unterschiedlich sein, falls für die ersten Speicherzellen 14 und/oder die zweiten Speicherzellen 16 die Zuverlässigkeitsinformation 22 vorliegt. Die Zuverlässigkeitsinformation kann auf einer ermittelten Wahrscheinlichkeit für ein Auftreten einer fehlerhaften Bitfolge in den ersten Speicherzellen 14 und/oder in den zweiten Speicherzellen 16 basieren.
-
Die Zuverlässigkeitsinformation 22 kann so interpretiert werden, dass Speicherzellen, für die oder für deren Adresse die Zuverlässigkeitsinformation vorliegt, eine höhere oder niedrigere Zuverlässigkeit (d. h., eine niedrigere Fehlerwahrscheinlichkeit) aufweisen, wenn sie mit anderen (gleichartigen oder in dem gleichen Speicher angeordneten) Speicherzellen verglichen werden.
-
Beispielsweise ist die Speichersteuerung 18 durch eine Datenleitung 24 mit dem adressierbaren Speicher 12 verbunden. Die Datenleitung 24 kann beispielsweise eine bidirektionale Datenverbindung sein. Alternativ kann die Datenleitung 24 auch zumindest zwei unidirektionale Verbindungen umfassen, beispielsweise eine erste Verbindung von der Speichersteuerung 18 zu dem adressierbaren Speicher 12 und eine zweite Verbindung von dem adressierbaren Speicher 12 zu der Speichersteuerung 18. Die Datenleitung 24 kann drahtgebunden oder drahtlos ausgeführt sein.
-
Bei dem adressierbaren Speicher kann es sich um jedweden Speicher handeln, bei dem unter Verwendung einer Adresse auf zumindest eine Speicherzelle mit einem Lesezugriff und/oder einem Schreibzugriff zugegriffen werden kann. Beispielsweise kann es sich hierbei um vorangehend erläuterte flüchtige oder nicht-flüchtige Speicher handeln. Insbesondere kann es sich bei dem Speicher 12 um einen MRAM-Speicher handeln.
-
Für eine Korrektur fehlerhafter Inhalte in den gespeicherten Bitfolgen der ersten Speicherzellen 14 und/oder der zweiten Speicherzellen 16 kann die Speichersteuerung 18 ausgebildet sein, um unter Verwendung der jeweiligen Adresse a1,1 und/oder a2,1 die in den Speicherzellen 14 bzw. 16 gespeicherten Bitfolgen über die Datenleitung 24 auszulesen und unter Verwendung des Codes Ccor eine Anwesenheit eines Fehlers zu prüfen oder zu bestimmen.
-
Die Speichersteuerung kann ausgebildet sein, um die Speicherzellen 14 und/oder 16 häufiger auszulesen, für die die Zuverlässigkeitsinformation anzeigt, dass eine höhere Fehlerwahrscheinlichkeit angenommen wird. Die Speichersteuerung kann alternativ ausgebildet sein, um die Speicherzellen 14 und/oder 16 weniger häufig auszulesen, für die eine geringere Fehlerwahrscheinlichkeit angenommen wird. Ein Anteil von Speicherzellen mit einer höheren Fehlerwahrscheinlichkeit kann geringer sein, als ein Anteil von Speicherzellen mit einer geringeren Fehlerwahrscheinlichkeit, so dass eine Zuordnung der Zuverlässigkeitsinformation zu den Speicherzellen mit der höheren Fehlerwahrscheinlichkeit mit geringerem Aufwand und einer höheren Effizienz erfolgen kann. Die Zuverlässigkeitsinformation 22 kann somit auch als Fehlerwahrscheinlichkeitsinformation bezeichnet werden.
-
Die Speichersteuerung 18 kann ausgebildet sein, um die ersten Speicherzellen 14 häufiger auf eine Anwesenheit eines Bitfehlers in darin gespeicherten Bitfolgen zu überprüfen. Hierfür kann die Speichersteuerung 18 beispielsweise für die Adresse a1,1 die Zuverlässigkeitsinformation aufweisen. Bei der Zuverlässigkeitsinformation kann es sich bspw. um die Adresse a1,1 oder einer hieraus abgeleiteten Information (Bitfolge) handeln. Die Zuverlässigkeitsinformation 22 kann eine Information über Adressen a1,1 und/oder a2,1 aufweisen, die auf Speicherzellen 14 bzw. 16 verweisen, die eine von anderen Speicherzellen 16 bzw. 14 verschiedene Zuverlässigkeit aufweisen. Vereinfacht ausgedrückt kann die Zuverlässigkeitsinformation 22 eine Information darüber liefern, ob Speicherzellen 14 oder 16 häufiger als andere Speicherzellen oder weniger häufig als andere Speicherzellen auf die Anwesenheit eines Fehlers überprüft werden oder werden sollen.
-
Die Zuverlässigkeitsinformation kann in einem Speicher 26 gespeichert sein. Der Speicher 26 kann ein flüchtiger oder nicht-flüchtiger Speicher sein, der mit der Speichersteuerung 18 mittels einer Datenleitung 28 verbunden ist. Alternativ oder zusätzlich kann der Speicher 26 ein Teil der Speichersteuerung 18 sein. Alternativ oder zusätzlich kann die Zuverlässigkeitsinformation 22 in dem adressierbaren Speicher 12 gespeichert sein.
-
Die Zuverlässigkeitsinformation kann zumindest einen ersten Wert aufweisen, der angibt, dass die Speicherzelle(n) als in Ordnung betrachtet werden und einen zweiten Wert aufweisen, der angibt, dass die Speicherzelle(n) als nicht in Ordnung angesehen werden. Weitere Zuverlässigkeitsinformationen können bspw. anzeigen, dass eine Untergruppe von Adressen des ersten oder zweiten Wertes innerhalb der Gruppe „in Ordnung” oder „nicht in Ordnung” mit einem höheren oder niedrigeren Intervall überprüft wird.
-
Obwohl sich nachfolgende Ausführungen darauf beziehen, dass die Zuverlässigkeitsinformation eine Information darüber liefert, dass Speicherzellen eine erhöhte Wahrscheinlichkeit aufweisen, einen Bitfehler aufzuweisen, wobei die Speichersteuerung 18 ausgebildet ist, um diese Speicherzellen 14 verglichen mit anderen Speicherzellen 16 häufiger auf die Anwesenheit eines Fehlers zu überprüfen, kann dies auch wechselseitig vertauscht werden. So kann die Zuverlässigkeitsinformation 22 beispielsweise eine Information darüber liefern, dass die Speicherzellen 16 eine geringere Wahrscheinlichkeit für die Anwesenheit eines Bitfehlers aufweist, so dass die Speicherzellen 16 mit einer geringeren Häufigkeit auf die Anwesenheit von Bitfehlern überprüft werden, wenn dies mit einer Häufigkeit verglichen wird, mit der die ersten Speicherzellen 14 auf die Anwesenheit von Bitfehlern überprüft werden.
-
Die Häufigkeit von aufeinanderfolgenden Auslesevorgängen kann auch als Auslesevorgänge in aufeinanderfolgenden Zeitpunkten verstanden werden.
-
Die Zuverlässigkeitsinformation 22 basiert bspw. auf einer ermittelten (geschätzten) Wahrscheinlichkeit für ein Auftreten einer fehlerhaften Bitfolge 17. Weist beispielsweise zumindest eine Speicherzelle 14-1 bis 14-5 der ersten Speicherzellen 14 eine erhöhte Wahrscheinlichkeit auf, einen Bitfehler innerhalb eines Zeitintervalls t + Δt aufzuweisen, so kann dies für die ersten Speicherzellen 14 generalisiert oder aggregiert und in der Adresse a1,1 bzw. daraus abgeleiteten Informationen zusammengefasst werden. Wie es nachfolgend detailliert ausgeführt wird, kann die ermittelte (geschätzte) Wahrscheinlichkeit für ein Auftreten eines Bitfehlers basierend auf einem physikalischen Parameter der Speicherzellen 14 ermittelt, d. h. bestimmt oder geschätzt werden. Beispielsweise kann eine Lesestrom zum Lesen einer Speicherzelle und/oder ein Schreibstrom zum Schreiben einer Speicherzelle genutzt werden, um die ermittelte Wahrscheinlichkeit zu schätzen oder zu bestimmen. Alternativ oder zusätzlich kann der physikalische Parameter ein weiterer Parameter sein, der mit der thermischen Stabilität korreliert ist und/oder von einer thermischen Stabilität der Speicherzellen beeinflusst sein.
-
Die Speichersteuerung kann ausgebildet sein, um eine unter der ersten Adresse a1,1 und/oder der zweiten Adresse a2,1 gespeicherten und ausgelesenen fehlerhaften Bitfolge 17 unter Verwendung des fehlerkorrigierenden Codes zu korrigieren. Beispielsweise kann die Speichersteuerung 18 ausgebildet sein, um die fehlerhafte Bitfolge 17 zu korrigieren, um die korrigierte Bitfolge 17' zu erhalten, und um die Speicherzellen 14-1 bis 14-5 bzw. 16-1 bis 16-5 mit der korrigierten Bitfolge 17' zu überschreiben, so dass in dem adressierbaren Speicher 12 die korrigierte Bitfolge 17' vorliegt.
-
Obwohl manche der hierin beschriebene Ausführungsbeispiele so beschrieben sind, dass für Speicherzellen, für die eine geringere bzw. höhere Fehlerwahrscheinlichkeit bestimmt oder geschätzt wird, die Zuverlässigkeitsinformation 22 vorliegt, kann die Zuverlässigkeitsinformation auch so vorliegen, dass für eine erste Teilmenge von Adressen des adressierbaren Speichers angezeigt wird, dass diese eine erste Fehlerwahrscheinlichkeit aufweisen und für eine zweite Teilmenge von Adressen angezeigt wird, dass diese eine gegenüber der ersten Teilmenge veränderte zweite Fehlerwahrscheinlichkeit aufweisen. Alternativ oder zusätzlich kann zumindest eine weitere Zuverlässigkeitsinformation anzeigen, dass eine weitere Teilmenge von Adressen Speicherzustände adressiert, für die eine dritte Fehlerwahrscheinlichkeit angenommen wird. Eine Verwendung von weiteren Zuverlässigkeitsinformationen ermöglicht ein Auslesen/Überprüfen von Speicherzellen mit verschiedenen Zeitintervallen.
-
Die Häufigkeit der Auslesevorgänge der ersten Speicherzellen kann höher sein als die Häufigkeit der Auslesevorgänge der zweiten Speicherzellen, falls für die ersten Speicherzellen die Zuverlässigkeitsinformation (Fehlerwahrscheinlichkeitsinformation) vorliegt. Die Zuverlässigkeitsinformation kann auf einer gegenüber einem Referenzzustand erhöhten Wahrscheinlichkeit für das Auftreten einer fehlerhaften Bitfolge 17 in den ersten Speicherzellen 14 basieren.
-
Vereinfacht ausgedrückt kann die Speichervorrichtung 18 ausgebildet sein, um erste Speicherzellen, die eine höhere Wahrscheinlichkeit für das Auftreten einer fehlerhaften Bitfolge 17 aufweisen, häufiger, d. h. in geringeren Zeitintervallen, zu überprüfen als andere Speicherzellen 16. Dies kann auch so verstanden werden, dass für Speicherzellen 16, für die eine Überprüfung mit einer geringeren Häufigkeit ausreichend ist, mit der geringeren Häufigkeit überprüft werden. Dies ermöglicht eine Einsparung von Rechenoperationen und mithin von Zeit und elektrischer Energie, indem auf manche Überprüfungen von Speicherzellen verzichtet wird.
-
In bekannten Konzepten erfolgt ein periodisches Überschreiben von Zellen so oft oder in so kurzen Perioden, dass die Speicherzellen mit der kleinsten thermischen Stabilität oder Zuverlässigkeit hinreichend oft korrigiert werden. Dies kann dazu führen dass die Speicherzellen mit einer großen thermischen Stabilität, obwohl sie viel seltener fehlerhaft sind, ebenso oft ausgelesen werden, wie Speicherzellen mit einer geringeren thermischen Stabilität, die viel öfter fehlerhaft sind, was zu hohem Aufwand an Zeit und Strom führt. Gemäß Ausführungsbeispielen wird dieser Aufwand reduziert, indem beispielsweise Speicherzellen mit einer großen thermischen Stabilität seltener ausgelesen werden als Speicherzellen mit einer geringen thermischen Stabilität.
-
Zur besseren Verständlichkeit beziehen sich nachfolgende Ausführungen auf fehlerkorrigierende und/oder fehlererkennende Codes, die verwendbar sind, um 1, 2, 3 oder mehr Fehler zu erkennen bzw. zu korrigieren. Die hierin beschriebenen Ausführungsbeispiele sind jedoch durch die Fähigkeiten des Codes, Fehler zu erkennen bzw. Fehler zu korrigieren, nicht limitiert. Beispielsweise können fehlerkorrigierenden Codes ausgebildet sein, um zumindest einen und höchstens 100 Fehler zu korrigieren, um zumindest zwei und höchstens 90 Fehler zu korrigieren und/oder um zumindest drei Fehler und höchstens 80 Fehler zu korrigieren.
-
4a und 4b zeigen schematische Zeitverläufe für ein Auslesen und/oder ein Überschreiben von Speicherzellen basierend auf der Zuverlässigkeitsinformation 22. Beispielsweise liegt für die Speicherzellen, die durch die Adresse a1,1 adressiert werden, die Zuverlässigkeitsinformation vor. Ein Zeitintervall Δt2, mit der die Bitfolge unter der Adresse a2,1 ausgelesen wird, kann größer sein, als ein Zeitintervall Δt1, mit der die Bitfolgen unter der Adresse a1,1 ausgelesen wird. Eine Häufigkeit mit der die Bitfolge unter der Adresse a2,1 ausgelesen wird, kann kleiner sein, als eine Häufigkeit, mit der die Bitfolgen unter der Adresse a1,1 ausgelesen wird. Die Häufigkeiten können bspw. als eine Anzahl von Auslesevorgängen innerhalb des Zeitintervalls T verstanden werden.
-
Wie es in 4b schematisch dargestellt ist, kann das Zeitintervall Δt2 ein Vielfaches, gegebenenfalls ein ganzzahliges Vielfaches, des Zeitintervalls Δt1 sein. Beispielsweise kann die Speichersteuerung ausgebildet sein, um mit dem Zeitintervall Δt1 eine Ausleseprozedur zu starten und, um zu überprüfen, ob für eine oder mehrere Adressen die Zuverlässigkeitsinformation vorliegt.
-
Die Speichersteuerung 18 kann ausgebildet sein, um mit dem Zeitintervall Δt1 die Adressen auszulesen, für die die Zuverlässigkeitsinformation vorliegt und Adressen nicht auszulesen, für die die Zuverlässigkeitsinformation nicht vorliegt. Mit dem Zeitintervall Δt2 kann die Speichervorrichtung 18 ausgebildet sein, um alle Adressen a1,1 und a2,1 auszulesen, unabhängig davon, ob die Zuverlässigkeitsinformation vorliegt. Dies kann auch komplementär ausführbar sein, etwa wenn die Zuverlässigkeitsinformation anzeigt, dass eine Adresse (Adresse a2,1) eine geringere Wahrscheinlichkeit für das Auftreten eines Fehlers aufweist. Beispielsweise kann die Speichervorrichtung ausgebildet sein, um mit dem Zeitintervall Δt1 alle Adressen auszulesen, für die die Zuverlässigkeitsinformation nicht vorliegt.
-
5 zeigt ein schematisches Flussdiagramm eines Verfahrens 500, wie es beispielsweise von der Speichersteuerung 18 ausführbar ist. In einem Schritt 510 kann eine Bitfolge aus dem adressierbaren Speicher ausgelesen werden. Die Bitfolge kann beispielsweise unter der ersten Adresse a1,1 und/oder unter der zweiten Adresse a2,1 gespeichert sein, d. h. durch diese Adresse adressierbar sein.
-
In einem Schritt 520 kann die ausgewiesene Bitfolge decodiert werden. Hierfür kann der fehlerkorrigierende Code Ccor von der Speichersteuerung angewendet werden. Der fehlerkorrigierende Code Ccor kann beispielsweise ein t-Bit korrigierender Code sein. Beispielsweise kann t ≥ 1 gelten. Gemäß weiteren Ausführungsbeispielen gilt t ≥ 2, das bedeutet, es sind zumindest zwei Bitfehler in der ausgelesenen Bitfolge korrigierbar. Gemäß Ausführungsbeispielen kann t ≥ 3, t ≥ 4 oder t ≥ 5 oder höher gelten.
-
In einem Schritt 530 kann basierend auf einer vorhandenen Anzahl σ von Bitfehlern die Fehlerkorrektur beendet werden (Schritt 540), etwa wenn die Anzahl σ kleiner als 1 ist (kein Fehler vorhanden) oder größer als t ist.
-
Ist die Bedingung des Schritts 530 erfüllt, so kann die Speichersteuerung ausgebildet sein, um in einem Schritt 550 zu bestimmen, ob die Anzahl σ kleiner ist als ein Schwellwert τ oder gleich dem Schwellwert ist. Für den Schwellwert τ kann beispielsweise gelten, dass τ ≥ 1 und τ ≤ t ist. Ist eine Bedingung σ ≤ τ erfüllt, d. h. ist die Anzahl σ von Fehlern kleiner als der Schwellwert τ oder gleich dem Schwellwert, so kann in den Schritt 540 gewechselt werden. Dies kann auch so verstanden werden, dass die Bedingung 550 eine Aussage darüber liefert, ob die vorliegende Anzahl σ von Fehlern die Anzahl von Fehlern, die durch den fehlerkorrigierenden Code Ccor korrigierbar sind, vollständig oder bis zu einem gewissen Grad (Schwellwert) ausreizt und/oder ob eine Code-Reserve vorhanden ist. Ist die Anzahl korrigierbarer Fehler nicht hinreichend ausgereizt, so kann auf ein Rückschreiben verzichtet werden.
-
Ist die Bedingung des Schritts 550 beispielsweise erfüllt, d. h. die Anzahl σ von Fehlern hat den Schwellwert τ überschritten, kann die Speichersteuerung ausgebildet sein, um in einem Schritt 560 die Bitfehler zu korrigieren, um eine korrigierte Bitfolge, bspw. die korrigierte Bitfolge 17' zu erhalten.
-
Die Speichersteuerung kann ausgebildet sein, um die korrigierte Bitfolge in einem Schritt 570 in den adressierbaren Speicher zurückzuschreiben. Das bedeutet, dass die Speichersteuerung ausgebildet sein kann, um in einer fehlerhaften Bitfolge fehlerhafte Bits mit korrigierten Bits zu überschreiben und um fehlerfreie Bits nicht zu überschreiben. Vorteilhaft daran ist, dass auf eine Korrektur von Fehlern verzichtet werden kann, wenn eine Anzahl von vorliegenden Fehlern so gering ist, dass der korrigierende Code auch weitere auftretende Fehler noch korrigieren kann. Bspw. kann ein Auftreten eines weiteren Fehlers so unwahrscheinlich sein, dass ein einzelner auftretender Fehler ständig korrigiert würde und mittels des Codes zumindest ein weiterer Fehler korrigierbar ist. Dann kann auf eine Korrektur und/oder auf ein Zurückschreiben in den Speicher verzichtet werden, was die Speichervorrichtung weiter in ihrer Effizienz verbessert.
-
Wie es nachfolgend ausgeführt wird, kann in dem Schritt 570 das Zurückschreiben so ausgeführt werden, dass die gesamte Bitfolge in die adressierten Speicherzellen zurückgeschrieben wird. Alternativ können auch lediglich die Bits (Speicherzellen) neu beschrieben werden, die einen Bitfehler aufweisen. Das bedeutet, dass eine Anzahl von beschriebenen Speicherzellen gering bzw. verringert sein kann, was zu einer weiteren Effizienzsteigerung führt.
-
Die vorangehend beschriebenen Schritte können in der beschriebenen Reihenfolge ausführbar sein. Alternativ kann eine Reihenfolge auch anders erhalten werden und/oder manche Schritte ausgeführt oder nicht ausgeführt werden. Beispielsweise kann der Schritt 560 vor dem Schritt 530 ausgeführt werden. Alternativ oder zusätzlich kann der Schritt 560 auch vor dem Schritt 550 ausgeführt werden. Alternativ oder zusätzlich kann beispielsweise der Schritt 530 implizit ausgeführt werden, etwa indem bei einer Bestimmung, ob eine Fehler vorliegt, die Bedingung des Schritts 550 geprüft wird und auf eine explizite Ausführung des Schritts 530 verzichtet wird.
-
Vereinfacht ausgedrückt kann die Speichervorrichtung ausgebildet sein, um eine unter der ersten Adresse a1,1 gespeicherte und ausgelesene fehlerhafte Bitfolge, die eine Anzahl von σ Fehlern aufweist, unter Verwendung des fehlerkorrigierenden Codes zu korrigieren und um die fehlerhafte Bitfolge mit einer korrigierten Bitfolge zu überschreiben und/oder um die korrigierte Bitfolge zurückzuschreiben. Der fehlerkorrigierende Code kann ein t-Bit korrigierender Code mit t ≥ 2 sein. Es kann gelten, dass 1 < σ ≤ t ist. Alternativ kann die Speichersteuerung ausgebildet sein, um die ausgelesene Bitfolge zu korrigieren, wenn zumindest ein Fehler erkannt wird und/oder um die fehlerhafte Bitfolge mit einer korrigieren Bitfolgen zu überschreiben und/oder um die korrigierte Bitfolge zurückzuschreiben.
-
Die Speichersteuerung kann ausgebildet sein, um die fehlerhafte Bitfolge nicht mit einer korrigierten Bitfolge zu überschreiben und um die korrigierte Bitfolge nicht zurückzuschreiben, wenn die Anzahl von σ Fehlern kleiner oder gleich ist als ein Schwellwert τ, wobei gelten kann, dass 1 ≤ τ ≤ t und σ ≤ τ, wenn kein Zurückschreiben erfolgt. Wird ein korrigiertes Bit zurückgeschrieben kann gelten, dass 1 ≤ τ < σ ≤ t.
-
Die Speichersteuerung kann ausgebildet sein, um bei aufeinanderfolgenden Auslesevorgängen, bei denen die ersten Speicherzellen unter der Adresse a1,1 gelesen werden und bei denen ein Fehler in der ausgelesenen Bitfolge durch den Code Ccor korrigiert wird, die ersten Speicherzellen mit der korrigierten Bitfolge zu überschreiben. Die Speichersteuerung kann ausgebildet sein, um bei Auslesevorgängen, bei denen die ersten Speicherzellen unter der Adresse a1,1 gelesen werden, und bei denen kein Fehler in der ausgelesenen Bitfolge durch den Code korrigiert wird, die ersten Speicherzellen nicht mit einer Bitfolge zu überschreiben. Beispielsweise kann dies durch ein Nichterfüllen der Bedingung des Schritts 530 und/oder durch eine Erfüllung der Bedingung in dem Schritt 550 erfolgen.
-
Wie es durch die optionale Linie 522 angedeutet ist, kann die Speichersteuerung bzw. die Speichervorrichtung ausgebildet sein, um bei aufeinanderfolgenden Auslesevorgängen, bei denen die ersten Speicherzellen unter der Adresse a1,1 gelesen werden und bei denen kein Fehler in der ausgelesenen Bitfolge durch den Code korrigiert oder erkannt wird, die ersten Speicherzellen mit der ausgelesenen Bitfolge zu überschreiben. Das bedeutet, dass die ausgelesenen Speicherzellen mit der fehlerfreien Bitfolge auch bei Abwesenheit von Fehlern oder einer nicht ausgeführten Korrektur (d. h. Fehler wurde erkannt, jedoch nicht korrigiert) überschrieben werden können.
-
Die ermittelte Wahrscheinlichkeit für ein Auftreten einer fehlerhaften Bitfolge in den ersten Speicherzellen und/oder den zweiten Speicherzellen, auf der die Zuverlässigkeitsinformation basiert, kann sich darauf beziehen, dass eine unter der ersten Adresse a1,1 zu einem Zeitpunkt t in den ersten Speicherzellen gespeicherte fehlerfreie Bitfolge zu einem Zeitpunkt t + Δt fehlerhaft ist. Die ermittelte Wahrscheinlichkeit für ein Auftreten einer fehlerhaften Bitfolge kann unter Verwendung eines Wertes mindestens eines physikalischen Parameters ermittelt werden.
-
Bei dem physikalischen Parameter kann es sich beispielsweise um einen Lesestrom zum Lesen einer ersten oder zweiten Speicherzelle, um einen Schreibstrom zum Schreiben einer ersten oder zweiten Speicherzelle und/oder allgemein um einen physikalischen Parameter handeln, der mit der thermischen Stabilität einer Speicherzelle korreliert ist.
-
6 zeigt ein schematisches Diagramm, bei dem an der Abszisse ein Schreibstrom von Speicherzellen eines adressierbaren Speichers und an der Ordinate ein Anteil der jeweiligen Speicherzellen, die den an der Abszisse angetragenen Schreibstrom aufweisen, darstellt. Eine Gesamtmenge 32 der Speicherzellen weist exemplarisch die dargestellte Verteilung auf. Ein erster Anteil (Teilmenge) 34 der Gesamtmenge 32 von Speicherzellen weist einen Schreibstrom i auf, der kleiner ist als ein erster Schwellwert i1. Ein zweiter Anteil (Teilmenge) 36 der Gesamtmenge 32 weist einen Schreibstrom i auf, der größer ist als ein zweiter Schwellwert i2, wobei der zweite Schwellwert größer ist als der erste Schwellwert. Ein dritter Anteil (Teilmenge) 38 der Gesamtmenge 32 weist einen Schreibstrom auf, der größer oder gleich dem ersten Schwellwert i1 und kleiner oder gleich dem zweiten Schwellwert i2 ist. Ein Bereich zwischen den Schwellwerten i1 und i2 kann als Referenzzustand betrachtet werden. Alternativ kann auch ein Mittelwert der Schwellwerte i1 und i2 und/oder der Mittelwert unter Berücksichtigung eines Toleranzbereichs als Referenzwert betrachtet werden. Der Toleranzberiech kann bspw. in einem Bereich von ±50%, ±40% oder ±30% um den Mittelwert angeordnet sein.
-
Eine Häufigkeit der Auslesevorgänge der ersten Speicherzellen kann höher sein als eine Häufigkeit der Auslesevorgänge der zweiten Speicherzellen, falls für die ersten Speicherzellen die Zuverlässigkeitsinformation vorliegt. Alternativ kann für die zweiten Speicherzellen die Zuverlässigkeitsinformation vorliegen. Die Zuverlässigkeitsinformation kann auf einer gegenüber einem Referenzzustand erhöhten Wahrscheinlichkeit P für das Auftreten einer fehlerhaften Bitfolge in den ersten Speicherzellen basieren.
-
Bezieht sich die Gesamtmenge 32 beispielsweise auf Speicherzellen eines MRAM-Speichers, so kann eine Speicherzelle der Teilmenge 34 eine höhere Wahrscheinlichkeit aufweisen, in einem Zeitintervall t + Δt einen Fehler aufzuweisen, als Speicherzellen der Teilmenge 38. Speicherzellen der Teilmenge 36 können beispielsweise als permanent fehlerhaft klassifiziert werden. Der Schwellwert i1 kann beispielsweise in einem Bereich von zumindest 10 μA und höchstens 40 μA, von zumindest 15 μA und höchstens 30 μA oder von in etwa 20 μA aufweisen. Der Schwellwert i2 kann beispielsweise einen Wert von zumindest 100 μA und höchstens 300 μA, von zumindest 150 μA und höchstens 300 μA oder von etwa 200 μA aufweisen. In ähnlicher Weise können andere physikalische Parameter mit einer Wahrscheinlichkeit, dass eine Speicherzelle innerhalb eines Zeitintervalls einen Fehler aufweist, nutzbar sein. Für andere Arten von Speichern oder andere Arten von physikalischen Parametern können andere Werte nutzbar sein.
-
Die Speichervorrichtung bzw. die Speichersteuerung kann ausgebildet sein, um den physikalischen Parameter zu bestimmen. Alternativ oder zusätzlich kann die Speichersteuerung ausgebildet sein, um den physikalischen Parameter oder eine hieraus abgeleitete Information zu erhalten, ggf. von extern. Beispielsweise kann die Speichersteuerung ausgebildet sein, um einen Strom zum Lesen einer Speicherzelle und/oder einen Strom zum Schreiben einer Speicherzelle zu bestimmen, d. h. zu messen. Dies ermöglicht, dass die Speichervorrichtung eine oder mehrere erste Adressen während eines Betriebs der Speichervorrichtung bestimmt. Alternativ kann der Speichersteuerung, wie im Zusammenhang mit der 3 erläutert, die Zuverlässigkeitsinformation auch bereitgestellt werden, etwa indem die Zuverlässigkeitsinformation in dem adressierbaren Speicher oder in einem weiteren Speicher hinterlegt ist.
-
Die Speichersteuerung kann ausgebildet sein, um den physikalischen Parameter mit weiteren Schwellwerten zu vergleichen, beispielsweise dem Schwellwert i3, der größer ist als der Schwellwert i1 und kleiner als der Schwellwert i2. Das bedeutet, dass der adressierbare Speicher dritte Speicherzellen 38' aufweist, die durch eine dritte Adresse a3,1 adressierbar sein können. Die unter der Adresse a3,1 gespeicherte Bitfolge kann im fehlerfreien Fall Bits eines Codeworts des fehlerkorrigierenden Codes umfassen. Die Speichersteuerung kann ausgebildet sein, um für eine Korrektur fehlerhafter Inhalte in den gespeicherten Bitfolgen die ersten, zweiten und/oder dritten Speicherzellen auszulesen, um den Auslesevorgang durchzuführen. Eine Häufigkeit von aufeinanderfolgenden Auslesevorgängen der ersten Speicherzellen, der zweiten Speicherzellen und der dritten Speicherzellen kann unterschiedlich sein, falls für die erste Speicherzellen eine erste Zuverlässigkeitsinformation und für die dritten Speicherzellen eine dritte Zuverlässigkeitsinformation vorliegt. Die erste Zuverlässigkeitsinformation und die zweite Zuverlässigkeitsinformation können auf einer ermittelten Wahrscheinlichkeit für ein Auftreten einer fehlerhaften Bitfolge in den ersten, den zweiten und/oder den dritten Speicherzellen basieren. Das bedeutet, dass weitere Teilmengen von Adressen gespeichert oder ermittelten werden können bzw. dass die Adressen des adressierbaren Speichers in mehr als zwei voneinander verschiedenen Häufigkeiten ausgelesen werden. Dies kann auch so verstanden werden, dass die Speichersteuerung ausgebildet sein kann, um die zweite Bitfolge, die in den zweiten Speicherzellen gespeichert ist, mit einer den zweiten Speicherzellen zugeordneten Häufigkeit zu überprüfen und um eine in den dritten Speicherzellen 38' gespeicherte Bitfolge mit einer den dritten Speicherzellen zugeordneten Häufigkeit zu überprüfen. Die den ersten Speicherzellen zugeordneten Häufigkeit, die den zweiten Speicherzellen zugeordnete Häufigkeit und die den dritten Speicherzellen zugeordnete Häufigkeit kann basierend auf der Zuverlässigkeitsinformation und/oder basierend auf dem physikalischen Parameter für die ersten Speicherzellen, basierend auf der Zuverlässigkeitsinformation und/oder basierend auf dem physikalischen Parameter für die zweiten Speicherzellen und basierend auf einer Zuverlässigkeitsinformation und/oder basierend auf dem physikalischen Parameter für die dritten Speicherzellen unterschiedlich sein.
-
Alternativ oder zusätzlich kann die Speichersteuerung gemäß einem weiteren Ausführungsbeispiel ausgebildet sein, um basierend auf einem Schwellwert i4 eine Unterteilung der Teilmenge 34 vorzunehmen. Das bedeutet, dass verschiedenen als fehleranfällig eingestuften Speicherzellen voneinander verschiedene Häufigkeiten zugeordnet werden können, etwa basierend auf von einander verschiedenen Teilzuverlässigkeitsinformationen. Die Speichersteuerung kann ausgebildet sein, um diese Speicherzellen basierend auf der Zuverlässigkeitsinformation umfassend die Teilzuverlässigkeitsinformationen mit den voneinander verschiedenen Häufigkeiten zu überprüfen. Bspw. können die Teilzuverlässigkeitsinformationen als Adressen oder hiervon abgeleitete Informationen in voneinander verschiedenen Speichern oder Speicherbereichen gespeichert sein, die unterschiedlich oft abgefragt werden.
-
In anderen Worten zeigt 6 ein Beispiel für den Anteil von Speicherzellen beispielsweise eines MRAMs in Abhängigkeit von den Werten des Schreibstromes i bzw. eine Veranschaulichung von prozentualen Anteilen von Speicherzellen mit unterschiedlichen Schreibströmen. Der Anteil von Speicherzellen, die einen Schreibstrom i mit i < i1 erfordern, ist durch die mit 1 markierte Fläche dargestellt. Dabei kann i1 beispielsweise ein Wert von ca. 20 Mycroamper und i2 ein Wert von 200 Mycroamper sein. Der Anteil der Speicherzellen, die einen Schreibstrom i mit i1 < i ≤ i2 haben, ist durch die mit 2 markierte Fläche dargestellt. Der Anteil der Speicherzellen, die einen Schreibstrom i mit i > i2 haben, ist durch die mit 3 markierte Fläche dargestellt.
-
Es kann bspw. angenommen werden, dass Speicherzellen mit einem Schreibstrom kleiner als i1 eine größere Wahrscheinlichkeit haben, dass sie zu einem Zeitpunkt t + Δt in einem fehlerhaften Zustand sind, wenn sie zum Zeitpunkt t in einem korrekten Zustand waren als Speicherzellen, die einen Schreibstrom i mit i1 < i ≤ i2 haben. Speicherzellen mit einem Schreibstrom i mit i > i2 können mit einer relativ großen Wahrscheinlichkeit als permanent fehlerhaft angenommen werden.
-
Adressen, die mindestens eine Speicherzelle adressieren, die einen Schreibstrom i mit i > i2 aufweist, können im Falle eines vorhandenen Fehlers als Adressen gewählt werden, die mit einem Reparaturverfahren repariert werden.
-
Werden von einer Adresse α Speicherzellen adressiert, so dass mindestens eine dieser Speicherzellen einen permanenten Fehler aufweist, dann kann man, wenn der in einer derartigen Zelle zu speichernde aktuelle Wert von dem permanenten Wert abweicht, eine invertierte Bitsequenz speichern oder in einer Gruppe von Bit invertierte Bitsequenz speichern und durch mindestens ein Invertierungsbit markieren, ob die gespeicherte Bitsequenz oder Gruppe von Bits invertiert oder nicht invertiert gespeichert ist.
-
Wird als fehlerkorrigierenden Code Ccor ein t-Bit-Fehler korrigierenden Code mit beispielsweise t = 2 verwendet, so kann die Menge der Adressen α1 als die Adressen bestimmen werden, die Speicherzellen adressieren, die zwei Speicherzellen mit einem Schreibstrom kleiner oder gleich i1 aufweisen. Die Menge der Adressen, die zwei Speicherzellen mit einem Schreibstrom kleiner oder gleich i1 aufweisen ist kleiner als die Menge der Adressen, die eine Speicherzelle mit einem Schreibstrom kleiner oder gleich i1 aufweisen.
-
Wird ein t-Bit-Fehler korrigierenden Code mit t ≥ 3 verwendet, dann kann die Menge der Adressen α1 als die Adressen bestimmt werden, die Speicherzellen adressieren, die τ Speicherzellen mit einem Schreibstrom kleiner oder gleich i1 aufweisen, wobei τ ≤ 3 gilt.
-
Man kann auch die Adressen, die mehr als τ Speicherzellen mit einem Schreibstrom kleiner oder gleich i1 adressieren, als Adressen wählen, die repariert werden. Ausführungsbeispiele sehen vor, die verschiedenen Mengen der Adressen im laufenden Betrieb zu modifizieren.
-
Andere Ausführungsbeispiele sehen vor, die verschiedenen Mengen der Adressen zum Start-up zu bestimmen und sie dann im laufenden Betrieb zu modifizieren.
-
So ist es beispielsweise möglich, eine Adresse a, die zunächst nicht zu α1 gehört, dann der Menge α1 zuzuordnen, wenn ein τ-Bit-Fehler unter dieser Adresse aufgetreten ist, wenn ein t-Bit-Fehler korrigierender Code zur Fehlerkorrektur verwendet wird und 1 ≤ τ ≤ t mit t ≥ 1 gilt.
-
Andere Ausführungsbeispiele sehen vor, eine Adresse a1,j der Menge α1 aus dieser Menge zu entfernen, wenn bei S Zugriffen auf diese Adresse kein Fehler aufgetreten ist und S eine vorzugebende Anzahl von Zugriffen ist.
-
Andere Ausführungsbeispiele sehen vor, im laufenden Betrieb oder im Start-up-Mode eine Tabelle zu führen, wie oft Speicherzellen bei einem Speicherzugriff fehlerhaft geworden sind und auf der Grundlage der in der Tabelle gespeicherten Daten die Mengen α1 oder α2 zu modifizieren.
-
Auch ist es möglich, mehr als zwei Schwellenwerte für den Schreibstrom zu betrachten und mehr als zwei Teilmengen von Adressen zu bilden.
-
Andere Ausführungsbeispiele sehen vor, den Anteil der Speicherzellen mit einem Lesestrom i zu bestimmen und in Abhängigkeit vom Wert des Lesestromes für eine Speicherzelle die Wahrscheinlichkeit vorherzusagen oder zu schätzen, dass ein in einer Speicherzelle zum Zeitpunkt t gespeicherter fehlerfreier Wert zu einem Zeitpunkt t + Δt fehlerhaft ist und in Abhängigkeit vom erforderlichen Lesestrom die Menge α1 von Adressen zu bestimmen.
-
Andere Ausführungsbeispiele sehen vor, in Abhängigkeit sowohl vom gemessenen Schreibstrom als auch vom Lesestrom für eine Speicherzelle die Wahrscheinlichkeit vorherzusagen oder zu schätzen, dass ein in der Speicherzelle zum Zeitpunkt t gespeicherter fehlerfreier Wert zu einem Zeitpunkt t + Δt fehlerhaft ist und in Abhängigkeit sowohl vom Schreibstrom als auch von Lesestrom die Menge α1 von Adressen zu bestimmen, die häufiger ausgelesen werden, wobei die ausgelesenen Daten im Falle eines korrigierbaren Fehlers korrigiert und zurückgeschrieben werden.
-
Nachfolgend wird Bezug genommen auf Speicherzellen, die durch eine Adresse in dem adressierbaren Speicher adressierbar sind.
-
7 zeigt ein schematisches Diagramm mit einer Zuordnung von Speicherzellen zu Adressen des Speichers 12. Eine Adresse des adressierbaren Speichers kann beispielsweise über eine Anzahl von l Bits auflösbar sein, so dass basierend auf den l Bits eine Anzahl von 2l Adressen in einem Bereich von 0 bis 2l – 1 auflösbar, d. h. adressierbar sind. Unter einer Mehrzahl, Vielzahl oder gegebenenfalls allen der Adressen a kann eine Anzahl von c Prüfbits und eine Anzahl von u Datenbits speicherbar sein. Ein Codewort 42 des zu korrigierenden Codes Ccor kann die Prüfbits c und die Datenbits u umfassen. Alternativ oder zusätzlich kann ein Codewort 42' die Prüfbits c, die Datenbits u und Adressbits a oder daraus abgeleitete Bitfolgen umfassen. Die hochgestellten Indices 0 bis 2l – 1 der Adressbits a, der Prüfbits c und der Datenbits u können der Veranschaulichung dienen, unter welcher der Adressen 0 bis 2l – 1 die jeweiligen Bits speicherbar sind.
-
Vorteilhaft an dem Codewort 42' ist, dass auch die gespeicherte Adressinformation der ersten und/oder zweiten Adressen a1,1 und/oder a1,2 codierbar und mithin korrigierbar sind. Das bedeutet, dass ein Bitfehler in einer gespeicherten Adressinformation erkennbar und/oder korrigierbar ist.
-
Alternativ kann das Codewort 42' auch eine andere aus den Adressbits a abgeleitete Information umfassen, etwa umfassend eine redundante Information bezüglich der Adressbits.
-
Nachfolgend beschriebene Ausführungsbeispiele beziehen sich auf den adressierbaren Speicher, wobei beispielsweise die erste Adresse a1,1 und die zweite Adresse a2,1 genauer betrachtet wird. Gemäß Ausführungsbeispielen weist der adressierbare Speicher eine Vielzahl von Adressen auf, die jeweils ausgebildet sind, um Speicherzellen zu adressieren, wobei in den jeweiligen Speicherzellen Informationen speicherbar sind, die Teil eines Codeworts des fehlerkorrigierenden Codes sind oder, die das Codewort sind.
-
Vorangehende Beschreibungen bezüglich der ersten und der zweiten Adresse können so verstanden werden, dass gemäß Ausführungsbeispielen der adressierbare Speicher eine Vielzahl von weiteren ersten Adressen a1,2, ... a1,m mit m > 1 aufweisen kann. Darüber hinaus kann der adressierbare Speicher weitere zweite Speicherzellen aufweisen, die durch weitere zweite Adresse a2,2, ..., a2,M mit M > 1 adressierbar sind. Die erste Speicherzelle und die weiteren ersten Speicherzellen können eine Gesamtmenge von ersten Speicherzellen bilden, etwa die Teilmenge 34.
-
Obige Ausführungen bezüglich der ersten Speicherzellen sind ohne weiteres auf die weiteren ersten Speicherzellen übertragbar. Die Gesamtmenge von ersten Speicherzellen kann durch eine erste Teilmenge von Adressen α1 adressierbar sein, wobei die Teilmenge α1 die Adressen a1,1, ... a1,m mit m ≥ 1 umfassen kann. Die zweite Speicherzelle und die weiteren Speicherzellen (etwa die Speicherzellen, die durch die Adresse a2,2 ... a2,M adressierbar sind) bilden bspw. eine Gesamtmenge von zweiten Speicherzellen, etwa die Teilmenge 38 oder die Gesamtmenge 32. Obige Ausführungen bezüglich der zweiten Speicherzellen sind ohne weiteres auf die weiteren zweiten Speicherzellen übertragbar. Die Gesamtmenge von zweiten Speicherzellen kann durch eine zweite Teilmenge von Adressen α2 adressierbar sein, wobei α2 die Adressen a2,1, a2,M mit M ≥ 1 umfassen kann. Die Adressen α2 können auch alle verwendeten Adressen des Speichers sein und/oder die Adressen α1 umfassen.
-
Die ersten und zweiten Adressen bzw. die erste Teilmenge α1 und zweite Teilmenge α2 von Adressen kann jeweils in einem Speicher hinterlegt sein. Alternativ kann beispielsweise die erste Teilmenge α1 von Adressen oder die zweite Teilmenge α2 von Adressen in einem Adressspeicher hinterlegt sein, während sich die andere Teilmenge beispielsweise auf alle adressierbaren oder verwendeten Adressen beziehen kann und implizit bekannt sein kann. Diese Teilmenge kann beispielsweise auch ohne Hinterlegung derselben in einem Speicher adressierbar sein, etwa durch einen Adress-Zähler, der ausgebildet ist, um eine Adressinformation zu inkrementieren oder zu dekrementieren, so dass zyklisch alle Adressen durchlaufen werden. Die Speichersteuerung kann ausgebildet sein, um den jeweiligen Wert des Adresszählers mit einem Inhalt des Speichers 26 zu vergleichen. Vereinfacht ausgedrückt kann eine Teilmenge oder die Gesamtmenge von Adressen die andere Teilmenge von Adressen umfassen.
-
Die Speichersteuerung kann ausgebildet sein, um für eine Korrektur fehlerhafter Inhalte in gespeicherten Bitfolgen 44a und/oder 44b die Gesamtmenge von ersten und/oder zweiten Speicherzellen 14a–b bzw. 16a–b auszulesen, um einen Auslesevorgang durchzuführen. Die Häufigkeit von aufeinanderfolgenden Auslesevorgängen der Gesamtmenge von ersten Speicherzellen 14a–b und der Gesamtmenge von zweiten Speicherzellen 16a–b kann unterschiedlich sein, falls für die Gesamtmenge von ersten Speicherzellen 14a–b und/oder für die Gesamtmenge von zweiten Speicherzellen 16a–b die Zuverlässigkeitsinformation vorliegt. Unter Bezugnahme auf 3 kann die Zuverlässigkeitsinformation 22 beispielsweise die Adresse a1,1 und die Adresse a1,2 umfassen oder darauf hinweisen.
-
Die Häufigkeit der Auslesevorgänge der Gesamtmenge von ersten Speicherzellen 14a–b kann höher sein als die Häufigkeit der Auslesevorgänge der Gesamtmenge von zweiten Speicherzellen 16a–b, falls für die Gesamtmenge von ersten Speicherzellen 14a–b die Zuverlässigkeitsinformation vorliegt.
-
Unter Bezugnahme auf 3 kann die Speichervorrichtung 10 ausgebildet sein, um die Teilmenge α1 während eines Start-Up der Speichervorrichtung 10 zu bestimmen. Der Start-Up kann sich beispielsweise auf eine Inbetriebnahme, auf einen Bootvorgang und/oder auf einen zyklischen Überprüfungsvorgang der Vorrichtung beziehen. Beispielsweise kann die Speichersteuerung 18 ausgebildet sein, um den physikalischen Parameter einer jeweiligen Speicherzelle und/oder einer Gruppe von Speicherzellen zu erfassen, und um die erste Teilmenge α1 und/oder die zweite Teilmenge α2 basierend auf dem erfassten physikalischen Parameter zu bestimmen. Alternativ kann die erste oder zweite Teilmenge von einer anderen Vorrichtung bestimmt und hinterlegt werden, etwa während eines Fertigungsprozesses.
-
Die Speichersteuerung 18 kann ausgebildet sein, um die bestimmte erste Teilmenge α1 und/oder die zweite Teilmenge α2 in einem flüchtigen Speicher zu speichern. Alternativ oder zusätzlich kann die Speichersteuerung ausgebildet sein, um die erste Teilmenge α1 und/oder die zweite Teilmenge α2 in einem nicht-flüchtigen Speicher und/oder in dem adressierbaren Speicher 12 zu speichern. Ein Hinterlegen der ersten oder zweiten Teilmenge in dem adressierbaren Speicher 12 kann ermöglichen, dass in dem adressierbaren Speicher 12 bereits Informationen enthalten sind, welche Speicherzellen eine häufigere bzw. seltenere Überprüfung benötigen. Ein Hinterlegen der ersten Teilmenge α1 und/oder der zweiten Teilmenge α2 in einem nicht-flüchtigen Speicher, etwa in dem Speicher 26 bzw. einem lokalen Speicher der Speichervorrichtung 18 kann einen schnellen Zugriff auf die Zuverlässigkeitsinformation und/oder auf Adressinformationen ermöglichen. Ferner kann ein Hinterlegen der ersten Teilmenge α1 und/oder der zweiten Teilmenge α2 in einem Speicher, der von dem adressierbaren Speicher 12 verschieden ist, ermöglichen, dass die hinterlegte Information bezüglich der Teilmengen von einer Fehlerwahrscheinlichkeit des adressierbaren Speichers 12 unabhängig ist.
-
In anderen Worten zeigt
7 einen adressierbarer Speicher mit l-dimensionalen Adressen, der unter jeder Adresse n Bits speichern kann. In dem adressierbaren Speicher können Prüfbits und Datenbits eines fehlerkorrigierenden Codes gespeichert sein. Es sind bspw. 2
l Adressen vorhanden, die binär als
geschrieben werden können.
-
Die unter der Adresse ai gespeicherten Bits sind als xi = x i / 0, ..., x i / n-1 bezeichnet.
-
Die Bits xi bestehen in dem betrachteten Ausführungsbeispiel aus m Prüfbits ci = c i / 0, ... c i / m-1 und k Nutzdatenbits ui = u i / 0, ..., u i / k-1 oder Datenbits ui = u i / 0, ..., u i / k-1 wobei n = m + k und xi = ci, ui = c i / 0, ... c i / m-1, u i / 0, ..., u i / k-1 gelten.
-
Für i = 0, ..., 2l – 1 sind die Prüfbits ci und die Nutzdatenbits ui im fehlerfreien Fall Bits eines Codewortes eines fehlererkennenden/fehlerkorrigierenden Codes Ccor, wie das im Folgenden genauer erläutert wird. Die Nutzdatenbits können auch einfach als Datenbits bezeichnet werden.
-
8 zeigt eine schematische Darstellung von unter den Adressen gespeicherten Bitfolgen. In anderen Worten veranschaulicht 8 ein Ausführungsbeispiel eines Adressierbaren Speichers in dem bspw. Codewörter eines fehlerkorrigierenden Codes gespeichert sind. Beispielsweise sind l = 3, m = 5 und k = 7 gewählt.
-
Unter 8 Adressen a0 = [0, 0, 0], a1 = [0, 0, 1], ..., a7 = [1, 1, 1] werden jeweils 5 Prüfbits c0, c1, c2, c3, c4 und 7 Datenbits u0, ..., u7 gespeichert. Die Prüfbits c0, c1, c2, c3, c4 und die Datenbits u0, ..., u7 sind im fehlerfreien Fall Bits eines Codewortes eines fehlererkennenden/fehlerkorrigierenden Codes C1, der bspw. durch seine H-Matrix H1 gegeben ist.
-
In dem betrachteten Ausführungsbeispiel sind die in dem Speicher unter den Adressen a
0, ..., a
7 abgespeicherten Bits c
0, ..., c
4, u
0, ..., u
7 jeweils Codewörter des durch die H-Matrix H
1 bestimmten Codes C
1, so dass bspw.
gilt.
-
Die H-Matrix H
1 in ihrer systematischen Form ist
woraus sich durch Ausmultiplizieren aus Gleichung (1) die Gleichungen
c0 = u0 + u1 + u2 + u3 + u4 + u5
c1 = u0 + u1 + u2 + u6
c2 = u0 + u3 + u4 + u6
c3 = u1 + u3 + u5 + u6
c4 = u2 + u4 + u5 für die Prüfbits c
0, ..., c
4 ergeben. Die Operation ”+” bedeutet hier und im Folgenden bei der Verknüpfung binärer Werte die Addition modulo 2, die als logische XOR-Verknüpfung durch XOR-Gatter realisiert werden kann.
-
Der Code C1 ist bspw. ein Hsiao-Code, der es erlaubt, 1-Bit-Fehler zu korrigieren und 2-Bit Fehler zu erkennen. Alle Spalten der H-Matrix H1 weisen bspw. eine ungerade Anzahl von Einsen auf, und sie sind Paarweise verschieden.
-
Ein durch einen Fehler gestörtes Codewort wird durch [ci, ui]' = c i' / 0, ..., c i' / 4, u i' / 0, ..., c i' / 6 bezeichnet. Die komponentenweise XOR-Summe eines fehlerfreien Codewortes ci, ui und des durch Fehler aus diesem Codewort hervorgegangen gestörten Codewortes [ci, ui]' wird bspw. als Fehlervektor ei bezeichnet, so dass in diesem Ausführungsbeispiel ei = e i / 0, ..., e i / 12 = c i / 0 + c i' / 0, ..., c i / 4 + c i' / 4, u i / 0 + u i' / 0, ..., u i / 6 + u i' / 6 gelten kann.
-
Ist eine Komponente des Fehlervektors gleich 1, dann liegt in dieser Komponente ein Fehler vor.
-
Das Fehlersyndrom s eines Vektors [ci, ui]' ist zu sT = H1·([ci, ui]')T = H1·(ei)T (3) bestimmt werden. Als sT wird ein Spaltenvektor bezeichnet, der Komponenten s0, s1, ... aufweist, wobei s ein entsprechender Zeilenvektor ist. Ist eine einzige Komponente von [ci, ui] fehlerhaft, dann weist der Fehlervektor ei genau eine Eins auf. Dies kann als ein 1-Bit Fehler bezeichnet werden. Sind q, q ≥ 1 Komponenten von [ci, ui] fehlerhaft, dann weist der Fehlervektor ei genau q, q ≥ 1 Einsen auf. Dies kann als q-Bit Fehler bezeichnet werden. In dem betrachteten Ausführungsbeispiel ist das Fehlersyndrom s = s0, ..., s4 gleich s0 = c0' + u0' + u1' + u2' + u3' + u4' + u5'
s1 = c1' + u0' + u1' + u2' + u6'
s2 = c2 + u0' + u3' + u4' + u6'
s3 = c3' + u1' + u3' + u5' + u6'
s4 = c4' + u2' + u4' + u5'. (4)
-
Praktisch kann das Fehlersyndrom s durch einen Syndromgenerator bestimmt werden, der die Gleichung (4) implementiert und der sich beispielsweise unter Verwendung von XOR-Gattern leicht implementieren lässt. Bspw. kann ein verfügbares Synthesetool verwendet werden.
-
Für einen 1-Bit Fehler kann sich ein Fehlersyndrom ergeben, das gleich einer Spalte der H-Matrix ist.
-
Ist beispielsweise die 12-te Komponente u
6 von c, u in u
6' = u
6 + 1 =
gestört, dann kann sich ein Fehlersyndrom
ST = H1·(0, ..., 0, 1)T = (0, 1, 1, 1, 0)T ergeben, was gleich der 12-ten Spalte der H-Matrix H
1 ist. Für einen 2-Bit Fehler ergibt sich ein Fehlersyndrom, das gleich der komponentenweisen XOR-Summe zweier entsprechender Spalten der H-Matrix ist.
-
Sind beispielsweise die 12-te Komponente u6 und die 11-te Komponente von c, u in u6' = u6 + 1 = u 6 und u5' = u5 + 1 = u 5 gestört, dann ergibt sich ein Fehlersyndrom sT = H1(0, ..., 0, 1, 1)T = (1, 1, 1, 0, 1)T, was gleich der komponentenweise XOR-Verknüpfung der 12-ten Spalte und der sechsten Spalte der H-Matrix H1 ist. Jeder 2-Bit Fehler kann in diesem Ausführungsbeispiel auf ein Fehlersyndrom ungleich 0 führen, das eine gerade Anzahl von Einsen aufweist. Jeder der 12 möglichen 1-Bit Fehler führt auf ein unterschiedliches Fehlersyndrom, das gleich einer der paarweise verschiedenen Spalten der H-Matrix H1 ist, so dass jedem 1-Bit Fehler umkehrbar eindeutig ein Fehlersyndrom zugeordnet ist, so dass ein 1-Bit Fehler auf Grund seines Fehlersyndromes eindeutig decodiert werden kann.
-
Beispielsweise sind aus den Nutzdatenbits u0, ..., u6 = 1010010 die Prüfbits entsprechend Gleichung (4) zu c0, c1, c2, c3, c4 = 10110 bestimmt und in 8 ist unter der Adresse a11 = 010 das Codewort 101101010010 gespeichert. Aus den Nutzdatenbits u0, ..., u6 = 1101100 sind die Prüfbits entsprechend Gleichung (4) zu c0, c1, c2, c0, c4 = 00101 bestimmt und in 8 ist unter der Adresse a2,1 = 101 das Codewort 001011101100 gespeichert.
-
In dem betrachteten Ausführungsbeispiel sind die Adresse a1,1 = 010 eine erste Adresse und die Adresse a2,1 = 101 eine davon verschiedene zweite Adresse.
-
Zu einem Zeitpunkt t ist unter der ersten Adresse a1,1 = 010 eine fehlerfreie Bitfolge, hier die Bitfolge 101101010010 gespeichert und unter der zweiten Adresse a2,1 = 101 eine fehlerfreie Bitfolge 101101010010.
-
Die geschätzte Wahrscheinlichkeit, dass zu einem Zeitpunkt t + Δt mit Δt > 0 eine fehlerhafte Bitfolge unter der Adresse a1,1 gespeichert ist, wenn zu dem Zeitpunkt t eine fehlerfreie Bitfolge unter der Adresse a1,1 gespeichert war, sei größer als die geschätzte Wahrscheinlichkeit, dass zu einem Zeitpunkt t + Δt eine fehlerhafte Bitfolge unter der Adresse a2,1 gespeichert ist, wenn zu dem Zeitpunkt t eine fehlerfreie Bitfolge unter der Adresse a2,1 gespeichert war.
-
Ausführungsbeispiele sehen vor, dass die Speicherzellen, die durch die Adresse a2,1 adressiert werden, weniger anfällig gegenüber Fehlern sind als die Speicherzellen, die durch die Adresse a1,1 adressiert werden.
-
Andere Ausführungsbeispiele sehen vor, dass die Speicherzellen, die durch die Adresse a1,1 adressiert werden, eine oder mehrere Speicherzellen enthalten, die in stärkerem Maße anfällig gegenüber Fehlern sind als die Speicherzellen, die durch die Adresse a2,1 adressiert werden.
-
Es kann möglich sein, dass durch Messen eines physikalischen Parameters oder von mehreren physikalischen Parametern vorhergesagt oder geschätzt werden kann, ob die Wahrscheinlichkeit eines Fehlers in einer unter der Adresse a1,1 gespeicherten Bitfolge größer ist, als die Wahrscheinlichkeit eines Fehlers in einer unter der Adresse a2,1 gespeicherten Bitfolge in einer Bitfolge. Beispielsweise kann der Parameter ein Wert eines Schreibstromes oder die erforderliche Zeitdauer sein, einen Wert unter der entsprechenden Adresse zu schreiben.
-
Über einen Verlauf der Zeit können sich die in Speicherzellen gespeicherten Werte fehlerhaft verändern. Beispielsweise können in Flashspeichern Zustände als elektrische Ladungen gespeichert sein, die sich im Verlaufe der Zeit vermindern können. Werden sie kleiner als ein bestimmter Schwellenwert, dann können sich die Ladungsverluste als Fehler auswirken. Der Zustand der Speicherzelle ist hier ein kontinuierlicher Wert. Um den beschriebenen Ladungsverlusten entgegen zu wirken, kann die gespeicherten Werte ausgelesen werden, ehe die analogen Zustandswerte unter einen Schwellenwert fallen und die ausgelesenen digital gewandelten Werte erneut in die gleichen Speicherzellen oder in andere Speicherzellen als analoge Zustände schreiben, was für Speicherzellen mit analogen Zustandswerten als Refresh bezeichnet werden kann. Durch das Refreshen kann ein analoger Zustand einer Speicherzelle, der schon nahe an dem Schwellenwert liegt, so verändert werden, dass er wieder weiter von dem entsprechenden Schwellenwert entfernt ist.
-
Im Unterschied dazu sind in einem M-RAM die gespeicherten Zustände digitale Größen. Es ist in einem MRAM möglich, dass sich die digitalen Zustände zum Beispiel durch Quanteneffekte in fehlerhafte digitale Zustände der Speicherzellen ändern. Es ist auch möglich, dass sich im Laufe der Zeit in mehreren Speicherzellen, die mit einer Adresse adressiert werden, fehlerhafte digitale Zuständen bilden, die sich als Multibitfehler auswirken. Ausführungsbeispiele sehen vor, dass sich derartige Multibitfehler mit einem verwendeten fehlerkorrigierenden Code nicht korrigieren lassen, was nachteilig ist.
-
Um eine Anhäufung von Fehler zu vermeiden, die eventuell von einem verwendeten fehlerkorrigierenden Code nicht korrigiert werden können, kann es kann es hier sinnvoll sein, die unter einer Adresse gespeicherten eventuell fehlerhaften Bitfolgen auszulesen, ehe sich mehrere Fehler gebildet haben, sie unter Verwendung eines fehlerkorrigierenden Codes zu korrigieren und die korrigierten Bitfolgen unter der gleichen Adresse in die gleichen Speicherzellen zurückzuschreiben.
-
Liegt kein Fehler in einer ausgelesenen Bitfolge vor, so kann es als nicht erforderlich erachtet werden, diese Bitfolge zurückzuschreiben, da ein Zurückschreiben der gleichen, schon in den Speicherzellen gespeicherten digitalen Werte die digitalen Zustände der entsprechenden Speicherzellen nicht ändert. Vorteilhafterweise kann dann unnötige Zeit für das Rückschreiben korrekter Werte und unnötiger Stromverbrauch eingespart werden, wenn nur Inhalte von Speicherzellen unter den Adressen zurückgeschrieben werden, in denen fehlerhafte Bitfolgen gespeichert werden.
-
Mit nochmals anderen Worten: Ein Anhäufen von Fehlern in einem Speicher, dessen Bits digital in Speicherzellen gespeichert sind, kann dadurch vermindert werden, dass die in den Speicherzellen gespeicherten Bitfolgen beispielsweise periodisch oder zu gewissen Zeitpunkten ausgelesen werden ehe sich eine zu große Vielzahl von Fehlern gebildet hat, und dass sie nur dann, wenn ein Fehler vorliegt, durch einen fehlerkorrigierenden Code korrigiert werden, wenn der Fehler durch den betrachteten Code korrigierbar ist, und die korrigierten Bitfolgen zurückgeschrieben. Dazu ist es erforderlich, dass die unter einer Adresse gespeicherten Bitfolgen Bits eines fehlerkorrigierenden Codes CCor sind.
-
Wenn hier der Begriff „Zurückschreiben” oder der Begriff „überschreiben” verwendet wird, dann kann die folgende Situation beschrieben sein:
Es wird unter einer Adresse a eine Binärfolge aus Speicherzellen ausgelesen, die durch a adressiert werden. Ist die ausgelesene Binärfolge fehlerhaft und kann der Fehler durch den verwendeten fehlerkorrigierenden Code korrigiert werden, dann wird die ausgelesene Binärfolge korrigiert, und die korrigierte Binärfolge wird in dem Speicher unter einer Adresse a* gespeichert. Dabei ist es möglich, dass a* = a ist und die korrigierte Binärfolge unter der gleichen Adresse gespeichert (überschrieben) wird, unter der die ausgelesene fehlerhafte Binärfolge gespeichert war.
-
Ist a ≠ a*, dann wird die korrigierte Binärfolge unter einer anderen Adresse, beispielsweise in einem anderen Speicherblock oder in einem anderen Speicher gespeichert (Zurückgeschrieben). Das Zurückschreiben oder Überschreiben kann in verschiedener Weise realisiert sein. Das bedeutet, dass die Speichersteuerung ausgebildet sein kann, um die erste und/oder die zweite Adresse mittels eines Reparaturverfahrens durch eine andere Adresse zu ersetzen.
-
Ist a = a*, dann ist es beispielsweise möglich, dass die Speicherzellen, in denen die fehlerhafte Binärfolge gespeichert war, zunächst gelöscht werden, ehe die korrigierte Binärfolge in die Speicherzellen unter der Adresse a geschrieben werden.
-
Andere Ausführungsbeispiele sehen vor, dass auch nur die Speicherzellen, in denen die fehlerhaften Bits der fehlerhaften Binärfolge gelöscht werden ehe nur die korrigierten Bits in diese Speicherzellen geschrieben werden und die übrigen Speicherzellen unverändert bleiben.
-
Andere Ausführungsbeispiele sehen vor, dass Bits einer Gruppe von Bits gelöscht werden, die die fehlerhaften Bits der fehlerhaften Binärfolge enthalten, ehe entsprechende Bits der korrigierten Binärfolge in die gelöschten Speicherzellen geschrieben werden. Die beschriebenen Möglichkeiten sind nicht ausschließend oder abschließend sondern dienen lediglich der besseren Verständlichkeit.
-
Ausführungsbeispiele sehen vor, dass für unterschiedliche Adressen des Speichers die Wahrscheinlichkeit oder die geschätzte Wahrscheinlichkeit, dass eine zum Zeitpunkt t unter dieser Adresse gespeicherte fehlerfreie Bitfolge zum Zeitpunkt t + Δt fehlerhaft ist, unterschiedlich ist. Es kann möglich sein, dass z. B. auf Grund von Werten von physikalischen Parametern beim Schreiben von Daten in Speicherzellen oder beim Lesen von Daten aus Speicherzellen, diese Wahrscheinlichkeiten vorhergesagt oder geschätzt werden können.
-
Dabei kann es ausreichend sein, eine relativ grobe Abschätzung dieser Wahrscheinlichkeit zu bestimmen. Es kann auch ausreichend sein, abzuschätzen, unter welchen Adressen zu einem Zeitpunkt t fehlerfreie Bitfolgen mit einer größeren Wahrscheinlichkeit zu einem Zeitpunkt t + Δt fehlerhaft sind als unter anderen Adressen gespeicherte Bitfolgen, ohne dass die konkreten Werte dieser Wahrscheinlichkeiten bestimmt werden müssen.
-
Wenn hier der einfachen Beschreibung halber ausgeführt ist, dass die geschätzte Wahrscheinlichkeit, dass eine unter einer Adresse a1,1 zum Zeitpunkt t gespeicherte korrekte Bitfolge zum Zeitpunkt t + Δt fehlerhaft ist, größer als die geschätzte Wahrscheinlichkeit, dass eine unter einer Adresse a2,1 gespeicherte korrekte Bitfolge zum Zeitpunkt t + Δt fehlerhaft ist, können damit beispielsweise die folgenden Situationen beschrieben werden:
- 1. Die Wahrscheinlichkeiten sind auf Grund von Beobachtungen oder auf Grund von Messungen von beispielsweise physikalischen Parametern als Zahlenwert vorhersagbar oder vorhergesagt.
- 2. Auf Grund von Beobachtungen oder Messungen von beispielsweise physikalischen Parametern kann begründet vorhergesagt werden, dass eine unter einer Adresse a1,1 zum Zeitpunkt t gespeicherte korrekte Bitfolge zum Zeitpunkt t + Δt fehlerhaft ist, größer als die geschätzte Wahrscheinlichkeit, dass eine unter einer Adresse a2,1 gespeicherte korrekte Bitfolge zum Zeitpunkt t + Δt fehlerhaft ist, ohne dass ein konkreter Wert für diese Wahrscheinlichkeiten bestimmt werden muss.
-
Ausführungsbeispiele sehen vor, zu bestimmten Zeitpunkten oder in bestimmten Zeitintervallen für alle Adressen beispielsweise eines MRAMs die unter diesen Adressen gespeicherten Bitfolgen auszulesen, wobei die Bitfolgen im fehlerfreien Fall Bitfolgen eines fehlerkorrigierenden Codes Ccor sind.
-
Wird ein Fehler erkannt, der durch den Code Ccor korrigiert werden kann, dann kann die Bitfolge korrigiert und die korrigierte Bitfolge unter die entsprechende Adresse zurückgeschrieben werden.
-
Bspw. können bei einem solchen Vorgehen alle Adressen des MRAMs adressiert und ausgelesen und auf Fehler überprüft werden. Dies kann einen hohen zeitlichen Aufwand erfordern, obwohl bspw. nur ein relativ kleiner Teil der Bitfolgen, nämlich nur die Bitfolgen zurückgeschrieben werden, die fehlerhaft sind und korrigiert worden sind. Ebenso ist ein hoher Aufwand an Strom erforderlich. Der hohe Aufwand für Zeit und Strom ist nachteilig.
-
Insbesondere ist nachteilig, dass bei dem beschriebenen Vorgehen der zeitliche Abstand oder die Häufigkeit für das Auslesen der Speicherzellen an die Speicherzellen angepasst wird für die die Wahrscheinlichkeit, dass ein zum Zeitpunkt t gespeicherter korrekter Wert zum Zeitpunkt L + Δt fehlerhaft ist, am größten ist.
-
Gemäß Ausführungsbeispielen werden Bitfolgen unter den Adressen häufiger ausgelesen, die mit größerer geschätzter Wahrscheinlichkeit fehlerhafte Bitfolgen ausgeben als Adressen, die mit geringerer geschätzter Wahrscheinlichkeit fehlerhafte Bitfolgen ausgeben, wobei die gespeicherten Bitfolgen im fehlerfreien Falle Bits eines Codewortes eines fehlerkorrigierenden Codes sind.
-
Ist ein erkannter Fehler in einer ausgelesenen Bitfolge durch den verwendeten fehlerkorrigierenden Code korrigierbar, dann kann er korrigiert werden und die korrigierte Bitfolge kann zurückgeschrieben werden, wobei das Zurückschreiben einer korrigierten Bitfolge unter der gleichen Adresse erfolgen kann unter der die fehlerhafte Bitfolge ausgelesen wurde oder auch unter einer anderen Adresse. Adressen, die mit größerer Wahrscheinlichkeit fehlerhafte Bitfolgen speichern, werden bspw. häufiger ausgelesen als Adressen, die mit geringerer Wahrscheinlichkeit fehlerhafte Bitfolgen speichern. Adressen, die mit geringerer Wahrscheinlichkeit fehlerhafte Bitfolgen speichern, werden seltener ausgelesen. Zusätzlich kann gleichzeitig beispielsweise für ein MRAM nur die Bitfolgen zurückgeschrieben werden, die als fehlerhafte Bitfolgen ausgelesen wurden und korrigiert worden sind. Damit sind der zeitliche Aufwand und der Aufwand an Strom wie z. B. Schreibstrom und Lesestrom, gering, was vorteilhaft ist.
-
Sowohl die relative Anzahl von Adressen, die mit größerer Wahrscheinlichkeit fehlerhafte Bitfolgen speichern als auch die Wahrscheinlichkeit, dass ausgelesene Bitfolgen fehlerhaft sind, können gering sein. Dabei sind, wie ausgeführt, die Bitfolgen, die unter einer Adresse gespeichert werden, in fehlerfreien Fall bspw. Bits eines fehlerkorrigierenden Codes.
-
Die Adressen des betrachteten Speichers können dabei in eine erste Gruppe von Adressen α1 und eine zweite Gruppe von Adressen α2 eingeteilt sein, so dass die geschätzte Wahrscheinlichkeit dass eine unter einer Adresse a1,i ∈ α1 zum Zeitpunkt t gespeicherte korrekte Bitfolge zum Zeitpunkt t + Δt fehlerhaft ist größer als die geschätzte Wahrscheinlichkeit ist, dass eine unter einer Adresse a2,j ∈ α2 gespeicherte zum Zeitpunkt t korrekte Bitfolge zum Zeitpunkt t + Δt fehlerhaft ist. Die Adressen des Speichers können auch in Q Gruppen α1, ..., αQ mit Q > 2 eingeteilt sein, so dass die geschätzte Wahrscheinlichkeit, dass eine unter einer Adresse ak,j ∈ αk zum Zeitpunkt t gespeicherte korrekte Bitfolge zum Zeitpunkt t + Δt fehlerhaft ist größer als die geschätzte Wahrscheinlichkeit, dass eine unter einer Adresse ar,j ∈ αr mit r > k und 1 ≤ k < r ≤ Q gespeicherte zum Zeitpunkt t korrekte Bitfolge zum Zeitpunkt t + Δt fehlerhaft ist. Dann können gemäß Ausführungsbeispielen die Bitfolgen unter den Adressen der Gruppe αk häufiger als unter den Adressen der Gruppe αr ausgelesen und im Falle eines korrigierbaren Fehlers zurückgeschrieben werden.
-
Als fehlerkorrigierender Code Ccor kann ein t-Bit-Fehler korrigierender Code verwendet werden, wobei t ≥ 1 ist. Ausführungsbeispiele sehen vor, dass der Code auch ein (t + 1)-Bit Fehler erkennender Code ist.
-
Ist t ≥ 2, dann ist es auch möglich, die unter einer Adresse ausgelesenen Bitfolgen zu korrigieren und korrigiert zurückzuschreiben, wenn ein 2-Bit-Fehler vorliegt und nicht zurückzuschreiben, wenn ein 1-Bit-Fehler oder kein Fehler vorliegt.
-
Ist t > 2, dann ist es auch möglich, die unter einer Adresse ausgelesenen Bitfolgen zu korrigieren und korrigiert zurückzuschreiben, wenn mindestens ein τ-Bit Fehler vorliegt (d. h. eine Anzahl von σ Fehlern mit σ > τ) und nicht zurückzuschreiben, wenn höchstens ein τ – 1-Bit Fehler vorliegt, wobei dann bspw. τ < t gilt.
-
Ist der Code Ccor beispielsweise ein 2-Bit-Fehler korrigierender und 3-Bit-Fehler erkennender BCH-Code, dann ist es möglich, im Falle eines 1-Bit Fehlers eine unter einer Adresse a ausgelesene fehlerhafte Bitfolge nicht als korrigierte Bitfolge zurückzuschreiben, so dass unter der Adresse a weiterhin eine fehlerhafte Bitfolge mit einem 1-Bit-Fehler gespeichert ist. Ausführungsbeispiele sehen vor, im Falle eines 2-Bit Fehlers eine unter einer Adresse a ausgelesene fehlerhafte Bitfolge als korrigierte Bitfolge zurückzuschreiben, so dass unter der Adresse a nach dem Auslesen und Zurückschreiben eine korrigierte Bitfolge gespeichert ist.
-
Es ist dann möglich, dass die gespeicherten Bitfolgen 1-Bit-Fehler aufweisen, die aber bei einem Auslesen zum Zwecke der Verwendung der ausgelesenen Daten mit dem 2-Bit-Fehler korrigierenden Code Ccor sicher korrigiert werden. Selbst dann, wenn sich in einer Bitfolge ein weiterer Fehler einstellt, korrigiert der 2-Bit-Fehler korrigierenden Code noch korrekt.
-
Bspw. treten 2-Bit Fehler relativ selten (mit einer geringeren Wahrscheinlichkeit als 1-Bit Fehler) in den abgespeicherten Bitfolgen auf. Ein Umfang des Zurückschreibens von korrigierten Bitfolgen kann verringert werden, ohne dass die Korrektheit der ausgelesenen und unter Verwendung des fehlerkorrigierenden Codes Ccor korrigierten Bitfolgen wesentlich verschlechtert wird. Selbst ein sehr seltener 3-Bit-Fehler wird bspw. noch als nicht korrigierbarer Fehler erkannt.
-
Wird ein t-Bit-Fehler korrigierender Code mit t ≥ 2 verwendet wird, dann kann es möglich sein, die Menge der Adressen α1, die häufiger zum Zwecke der Korrektur der gespeicherten Daten gelesen werden, kleiner zu wählen als wenn ein Code verwendet wird, der weniger als t Fehler korrigieren kann, was vorteilhaft sein kann.
-
Ist beispielsweise t = 2, dann ist es, wie schon beschrieben, bei möglich, Bitfolgen dann zu korrigieren und zurückzuschreiben, wenn ein 2-Bit-Fehler aufgetreten ist und nicht zurückzuschreiben, wenn ein 1-Bit Fehler aufgetreten ist. Eine Adresse a kann dann der Menge α1 zugeordnet werden, wenn zu den durch a adressierten Speicherzellen mindestens 2 Speicherzellen gehören, die eine vergleichsweise große geschätzte Wahrscheinlichkeit aufweisen, dass ihre Belegung zum Zeitpunkt t + Δt fehlerhaft ist, wenn sie zum Zeitpunkt t korrekt war. Eine solche Wahrscheinlichkeit kann beispielsweise auf Grund des erforderlichen Schreibstromes oder des erforderlichen Lesestromes geschätzt werden. Die Menge α1 der häufiger zu lesenden Adressen kann relativ klein sein, da zwei Speicherzellen, die mit einer größeren Wahrscheinlichkeit fehlerhaft sind und von der gleichen Adresse adressiert werden, bspw. relativ selten auftreten.
-
Eine Adresse a kann alternativ auch der Menge α1 zugeordnet werden, wenn zu den durch a adressierten Speicherzellen 1 Speicherzelle gehört, die eine vergleichsweise große geschätzte Wahrscheinlichkeit aufweist, dass ihre Belegung zum Zeitpunkt t + Δt fehlerhaft ist, wenn sie zum Zeitpunkt t korrekt war. Die Menge α1 der häufiger zu lesenden Adressen kann dann größer sein. Die Wahrscheinlichkeit, dass sich Fehler in den Speicherzellen akkumulieren kann aber entsprechend kleiner sein.
-
Ist der verwendete Code ein t-Bit-Fehler korrigierender Code, dann kann die Menge α1 folgendermaßen bestimmt sein:
- 1. Ist bspw. t = 1 dann kann eine Adresse a der Menge α1 zugeordnet sein, wenn mit der Adresse a mindestens eine Speicherzelle adressiert wird, die eine vergleichsweise große geschätzte Wahrscheinlichkeit aufweist, dass ihre Belegung zum Zeitpunkt t + Δt fehlerhaft ist, wenn sie zum Zeitpunkt t korrekt war.
- 3. Ist bspw. t = 2, dann kann eine Adresse a der Menge α1 zugeordnet sein, wenn mit der Adresse a mindestens zwei Speicherzellen adressiert werden, die eine vergleichsweise große geschätzte Wahrscheinlichkeit aufweisen, dass ihre Belegung zum Zeitpunkt t + Δt fehlerhaft ist, wenn sie zum Zeitpunkt t korrekt war.
Ist bspw. t = 2 dann kann eine Adresse a der Menge α1 zugeordnet sein, wenn mit der Adresse a mindestens eine Speicherzelle adressiert wird, die eine vergleichsweise große geschätzte Wahrscheinlichkeit aufweist, dass ihre Belegung zum Zeitpunkt t + Δt fehlerhaft ist, wenn sie zum Zeitpunkt t korrekt war.
Ist bspw. t = 3, dann kann eine Adresse a der Menge α1 zugeordnet sein, wenn mit der Adresse a mindestens drei Speicherzellen adressiert werden, die eine vergleichsweise große geschätzte Wahrscheinlichkeit aufweisen, dass ihre Belegung zum Zeitpunkt t + Δt fehlerhaft ist, wenn sie zum Zeitpunkt t korrekt war.
Ist bspw. t = 3, dann kann eine Adresse a der Menge α1 zugeordnet sein, wenn mit der Adresse a mindestens zwei Speicherzellen adressiert werden, die eine vergleichsweise große geschätzte Wahrscheinlichkeit aufweisen, dass ihre Belegung zum Zeitpunkt t + Δt fehlerhaft ist, wenn sie zum Zeitpunkt t korrekt war.
Ist bspw. t = 3 dann kann eine Adresse a der Menge α1 zugeordnet sein, wenn mit der Adresse a mindestens eine Speicherzelle adressiert wird, die eine vergleichsweise große geschätzte Wahrscheinlichkeit aufweist,
dass ihre Belegung zum Zeitpunkt t + Δt fehlerhaft ist, wenn sie zum Zeitpunkt t korrekt war.
-
Der Code kann größere Werte für t aufweisen. Eine Adresse kann beispielsweise zur Menge α1 gehören oder zugeordnet werden, wenn mit der Adresse a mindestens τ Speicherzellen adressiert werden, die eine vergleichsweise große geschätzte Wahrscheinlichkeit aufweisen, dass ihre Belegung zum Zeitpunkt t + Δt fehlerhaft ist, wenn sie zum Zeitpunkt t korrekt war, wobei τ ≤ t gilt. In Abhängigkeit von τ ergeben sich verschiedene Varianten.
-
Es ist in einem Speicher auch möglich, dass eine Menge αper vorhanden ist, wobei unter diesen Adressen adressierte Speicherzellen permanente Fehler aufweisen.
-
Gemäß Ausführungsbeispielen ist für diese Adressen ein Repair-Mechanismus vorgesehen. Ausführungsbeispiele sehen vor, einen Repair-Mechanismus dann vorzusehen, wenn mit einer Adresse mehr als σ Speicherzellen adressiert werden, die permanente Fehler aufweisen, wobei σ ≤ t gilt.
-
Es ist aber gemäß Ausführungsbeispielen auch möglich, für die unter derartigen Adressen zu speichernden Bitfolgen invertierte Bitfolgen, oder auf bestimmten Bitgruppen invertierte Bitfolgen zu speichern. So ist es zum Beispiel möglich, eine Bitfolge zu invertieren, wenn in einer Speicherzelle ein permanenter Fehler stuck-at-0 vorliegt und in der zu speichernden Bitfolge an der entsprechenden Position ein Wert 1 vorhanden ist. Wird die zu speichernde Bitfolge invertiert, dann ist an der entsprechenden Stelle eine 0 vorhanden, die in der Speicherzelle mit stuck-at-0 fehlerfrei gespeichert werden kann.
-
Der adressierbare Speicher kann Speicherzellen aufweisen, die durch eine dritte Teilmenge αper von Adressen adressierbar sind, wobei die Speichersteuerung ausgebildet ist, um eine zu speichernde Bitfolge bitweise invertiert in Speicherzellen, die durch die dritte Teilmenge, etwa die Teilmenge 36, von Adressen adressiert werden zu speichern. Durch eine Adresse der dritten Teilmenge von Adressen ist mit einer ermittelten Wahrscheinlichkeit pper zumindest eine Speicherzelle adressierbar, die einen permanenten Fehler aufweist. Hierbei kann gelten, dass pper ≥ SWper, wobei SWper ein Schwellwert mit 0 < SWper ≤ 1 ist.
-
Gemäß Ausführungsbeispielen kann ein Repair-Mechanismus mit dem Invertieren von zu speichernden Bitfolgen kombiniert werden. Ein Repair kann beispielsweise dann vorgesehen werden, wenn mehr als eine Speicherzelle mit einem permanenten Fehler adressiert wird und bei einem verbliebenen Fehler kann die zu speichernde Bitfolge invertiert werden. Die Bitfolge kann teilweise erfolgen, bspw. für die fehlerhaften Speicherzellen. Alternativ kann die Invertierung für die gesamte Bitfolge ausgeführt werden.
-
Gemäß Ausführungsbeispielen ist ein Repair-Mechanismus vorgesehen, wenn unter einer Adresse ein nicht korrigierbarer Fehler erkannt wird.
-
9 zeigt eine schematische Darstellung des adressierbaren Speichers 12, der ein Codewort 44'a bzw. 44'b, die Adressbits a0 bis a2, die Prüfbits c0 bis c4 sowie die Datenbits u0 bis u6 umfasst bzw. gespeichert hat. Verglichen mit den Prüf- bzw. Datenbits, wie sie in 8 dargestellt sind, weist beispielsweise die Speicherzelle 14-2, die durch die erste Adresse a1,1 adressiert wird, einen anderen Wert/Bitfehler) auf.
-
In anderen Worten veranschaulicht 9 ein Ausführungsbeispiel eines adressierbaren Speichers, bei dem die Adressen in die Bildung der Codewörter eines fehlerkorrigierenden Codes einbezogen sind, d. h., eines adressierbaren Speichers wobei Adressenbits zur Bildung von Codewörtern verwendet wurden.
-
In dem in
9 dargestellten Ausführungsbeispiel ist l = 3, m = 5 und k = 7 gewählt. Es sind 8 Adressen
a0 = a 0 / 0, a 0 / 1, a 0 / 2 = [0, 0, 0], a1 = a 1 / 0, a 1 / 1, a 1 / 2 = [0, 0, 1], ...,
a7 = a 7 / 0, a 7 / 1, a 7 / 2 = [1, 1, 1], 5 Prüfbits
ci = c i / 0, c i / 1, c i / 2, c i / 3, c i / 4 und 7 Datenbits
ui = u i / 0, u i / 1, ..., u i / 6 vorhanden. Für i = 0, ..., 6 bilden bspw. die Bits
ci, ui, ai = c i / 0, c i / 1, c i / 2, c i / 3, c i / 4, u i / 0, u i / 1, ..., u i / 6, a 0 / 0, a 0 / 1, a 0 / 2 = ui im fehlerfreien Fall ein Codewort eines fehlerkorrigierenden/fehlererkennenden Codes C
2, der durch seine H-Matrix H
2 beschrieben werden kann, so dass für i = 0, ..., 8
gilt.
-
Die H-Matrix H
2 ist in diesem Ausführungsbeispiel
-
Die erste bis fünfzehnte Spalte der H-Matrix H2 entspricht bspw. den Bits c0, ..., c4, u0, ..., u6, a0, a1, a2, so dass die Prüfbits c0, ..., c4 durch c0 = u0 + u1 + u2 + u3 + u4 + u5
c1 = u0 + u1 + u2 + u6 + a0 + a1
c2 = u0 + u3 + u4 + u6 + a0 + a2
c3 = u1 + u3 + u5 + u6 + a1 + a2
c4 = u2 + u4 + u5 + a0 + a1 + a2 bestimmt sind. Alle Spalten der H-Matrix H2 weisen bspw. eine ungerade Anzahl von Einsen auf und sie sind paarweise verschieden. Alle 12 verschiedenen 1-Bit-Fehler in den Bits c0, ..., c4, u0, ..., u6 resultieren in 12 verschiedenen Fehlersyndromen, die den ersten 12 Spalten der H-Matrix H2 entsprechen. Wenn ein Fehlersyndrom auftritt, das einer dieser Spalten der H-Matrix gleich ist, wird der dieser Spalte entsprechende Fehler korrigiert. Auch alle 1-Bit Fehler in den Adressenbits a0, a1, a2 führen zu verschiedenen Fehlersyndromen, die gleich den letzten 3 Spalten der H-Matrix H2 sind. Tritt ein Fehlersyndrom auf, das einer der letzten drei Spalten der H-Matrix gleich ist, dann wird kein Fehler korrigiert, sondern ein Adressenfehler angezeigt, da Fehler in den Adressenbits nicht sinnvoll korrigiert werden können. Eine fehlerhafte Adresse führt zu einem fehlerhaften Speicherzugriff, der nur dann korrigiert werden könnte, wenn er durch einen korrekten Speicherzugriff ersetzt werden würde.
-
Einem 1-Bit Fehler in dem Adressenbit a in a0' = a0 + 1 entspricht ein Fehlersyndrom (01101)T, das gleich der 13-ten Spalte der Matrix H2 ist.
-
Einem 1-Bit Fehler in dem Adressenbit a1 in a1' = a1 + 1 entspricht ein Fehlersyndrom (01011)T, das gleich der 14-ten Spalte der Matrix H2 ist. Einem 1-Bit Fehler in dem Adressenbit a2 in a2 = a2 + 1 entspricht ein Fehlersyndrom (00111)T, das gleich der 15-ten Spalte der Matrix H2 ist. Diese Fehlersyndrome sind unterschiedlich von allen Fehlersyndromen von 1-Bit-Fehlern in den Prüfbits oder den Datenbits, so dass ein 1-Bit-Fehler in den Adressenbits auf Grund seines Syndroms sich von allen 1-Bit-Fehlern in den Prüfbits oder den Datenbits unterscheidet und als Adressenfehler erkannt werden kann.
-
Ein 2-Bit Fehler in den Adressenbits kann zu einem Fehlersyndrom ungleich 0 führen, das eine gerade Anzahl von Einsen aufweist. Ein solcher Fehler kann als ein nicht korrigierbarer Fehler erkannt werden. Unter der Adresse a1,1 = 010 ist bspw. die Bitfolge 111011010010 gespeichert, die selbst kein Codewort des Codes C2 ist, die aber ergänzt durch die Adressenbits 010 ein Codewort 111011010010010 des Codes C2 bildet. Unter der Adresse a2,1 = 101 ist die Bitfolge 011111101100 gespeichert, die selbst kein Codewort des Codes C2 ist, die aber ergänzt durch die Adressenbits 101 ein Codewort 011111101100101 des Codes C2 bildet. Vorteilhaft ist hier, dass der Speicher nicht vergrößert werden muss obwohl die Adressen in die Fehlererkennung einbezogen sind und Adressenfehler erkannt werden können. Andere Ausführungsbeispiele sehen vor, anstelle der Adressenbits aus den Adressenbits abgeleitete Bits in die Bildung von Codewörtern zu verwenden.
-
So sehen Ausführungsbeispiele vor, die Parität von Adressenbits P(a) zu bilden und die Parität der Adressen zur Bildung der Prüfbits eines fehlerkorrigierenden Codes zu verwenden.
-
Ebenso ist es gemäß Ausführungsbeispielen möglich, eine andere lineare Funktion oder eine nichtlineare Funktion f(a) der Adressenbits zu verwenden, um aus den Adressenbits a = a1, ..., al der Leseadresse beim Lesen und der Schreibadresse beim Schreiben abgeleitete Bits oder modifizierte Adressenbits zu bilden und diese abgeleiteten oder modifizierten Adressenbits zur Bestimmung von Prüfbits eines fehlererkennenden/fehlerkorrigierenden Codes zu verwenden.
-
10 veranschaulicht schematisch ein Ausführungsbeispiel des adressierbaren Speichers 12, bei dem die Parität der Adressenbits für die Bildung von Codewörtern eines fehlererkennenden/fehlerkorrigierenden Codes verwendet wird.
-
Wie in 8 und 9 ist bspw. l = 3, m = 5 und k = 7 gewählt. Gemäß anderen Ausführungsbeispielen können die Werte unterschiedlich sein und in Zusammenhang mit einer Anzahl korrigierbarer Fehler stehen.
-
Es sind 8 Adressen a0 = [0, 0, 0], ..., a7 = [1, 1, 1], 5 Prüfbits ci = [c i / 0, ..., c i / 4] und 7 Datenbits ui = [u i / 0, ..., u i / 6] vorhanden, die jeweils unter der Adresse ai mit i = 0, ..., 7 gespeichert sind. Die Parität der Adressenbits P(a) ist durch P(a) = a0 + a1 + a2 der Schreib- bzw. Leseadresse a bestimmt.
-
Für i = 0, ..., 7 bilden die Bits
ci, ui, P(a) = c i / 0, ..., c i / 4, u i / 0, ..., u i / 6, P(a) Im fehlerfreien Fall ein Codewort eines fehlererkennenden/fehlerkorrigierenden Codes C
3, der durch seine H-Matrix H
3 gegeben ist. Die H-Matrix H
3 ist in diesem Ausführungsbeispiel
-
Die erste bis dreizehnte Spalte der H-Matrix H2 entspricht den Bits c0, ..., c4, u0, ..., u6, P(a), so dass die Prüfbits c0, ..., c4 durch c0 = u0 + u1 + u2 + u3 + u4 + u5
c1 = u0 + u1 + u2 + u6 + P(a)
c2 = u0 + u3 + u4 + u6 + P(a)
c3 = u1 + u3 + u5 + u6
c4 = u2 + u4 + u5 + P(a) bestimmt sind. Unter der Adresse a1,1 = 010 ist bspw. die Bitfolge 110111010010 gespeichert, die ergänzt um P(010) = 0 + 1 + 0 = 1 ein Codewort 1101110100101 des Codes C3 bildet. Unter der Adresse a2,1 = 101 die Bitfolge 001011101100 gespeichert, die ergänzt um P(101) = 1 + 0 + 1 = 0 ein Codewort 0010111011000 des Codes C3 bilden kann.
-
11 veranschaulicht einen adressierbaren Speicher mit 32 Adressen a0, a1, ..., a31 unter denen in Speicherzellen im fehlerfreien Fall Codewörter w0, w1, ..., w31 eines fehlerkorrigierenden Codes C4 gespeichert sind und gemäß einem Ausführungsbeispiel.
-
Die Adressen a1, a11, a13, a20, a30 bilden beispielhaft die Menge α1 = {a1, a11, a13, a20, a30}. Die Menge der Adresse α2 ist bspw. α2 = {a0, a2, a3, a4, a5, a6, a7, a8, a9, a10, a12, a14, a15, a16, a17, a18, a19, a21, a22, a23, a24, a25, a26, a27, a18, a29, a31}. Gemäß weiteren Ausführungsbeispielen kann α2 = {a0, ..., a31} sein.
-
Die Adressen der Menge α1 sind die Adressen, für die die geschätzte Wahrscheinlichkeit, dass die unter diesen Adressen gespeicherten Bitfolgen zum Zeitpunkt t + Δt fehlerhaft sind, wenn sie zum Zeitpunkt t fehlerfrei waren, größer ist als die geschätzte Wahrscheinlichkeit, dass die unter den Adressen der Menge α2 gespeicherten Bitfolgen zum Zeitpunkt t + Δt fehlerhaft sind, wenn sie zum Zeitpunkt t fehlerfrei waren.
-
12 zeigt die Belegung eines Speichers, in dem unter einer 3-Bit Adresse b0, b1, b2 die Adressen der Menge α1 gespeichert sind. Unter den Adressen 0 = [0, 0, 0], 1 = [0, 0, 1], 2 = [0, 1, 0], 3 = [0, 1, 1], 4 = [1, 0, 1] sind die Adressen a1 = 00001, a11 = 01011, a13 = 01101, a20 = 10100 und a30 = 11110 der Menge α2 und ein Gültigkeitsbit g = 1 gespeichert. Unter den Adressen 5, 6, 7, ... sind beliebige Werte und das Gültigkeitsbit g = 0 gespeichert. Dabei kann der Speicher ein volatile Memory, beispielsweise ein S-RAM sein, das beispielsweise beim Start-up auf Grund des gemessenen erforderlichen Schreibstromes oder der Schreibdauer in die Speicherzellen des MRAMs von 11 beschrieben wird.
-
Die Adressen der Menge α1 können aber auch in einem nonvolatile Memory (nicht-flüchtiger Speicher) gespeichert sein. Sie können beispielsweise auch in einem Speicherbereich eines MRAMs, beispielsweise in einem Speicherbereich des gleichen MRAMs gespeichert sein, in dem auch die Nutzdaten gespeichert sind oder auch in einem anderen MRAM gespeichert sein. Die Bits b1, b2, b3 können eine aus den Adressbits abgeleitete Information umfassen, etwa basierend auf einer Paritätsinformation.
-
Gemäß Ausführungsbeispielen ist es möglich, dass die Adressen der Menge α1 redundant gespeichert sind, indem sie etwa verdreifacht oder verfünffacht abgelegt sind und über einen VBCHoter (Entscheider) ausgelesen werden, so dass 1-Bit oder 2-Bit Fehler in einer der abgespeicherten Adresse der Menge α1 toleriert werden und sich nicht auswirken können.
-
Andere Ausführungsbeispiele sehen vor, die abgespeicherten Adressen beispielsweise der Menge α1 durch einen fehlerkorrigierenden Code, beispielsweise einen Hsiao-Code oder einen BCH-Code (Bose-Chaudhur-Hocquenghem) zu schützen. Dieser Code kann auch der gleiche Code sein, der zur Codierung der Nutzdatenbits oder zur Codierung der Nutzdatenbits unter Einbeziehung der Adressenbits oder aus Adressenbits abgeleiteten Bits verwendet wird.
-
Um die Zuverlässigkeit von in einem Speicher gespeicherten Daten zu erhöhen, wie es bspw. in Zusammenhang mit 11 beschrieben ist, kann gemäß Ausführungsbeispielen folgendermaßen verfahren werden:
Zu einem Zeitpunkt T1 werden die Adressen 0, ..., 4 an den Speicher angelegt und die in dem Speicher gespeicherten Adressen a1, a11, a13, a20, a30 der Menge α1 werden aus diesem Speicher ausgelesen und als Adressen an den Speicher von 11 angelegt, so dass aus dem Speicher von 11 die eventuell fehlerhaften Bitfolgen w1, w11, w13, w20, w30 ausgelesen. Wenn eine dieser Bitfolgen w1, w11, w13, w20, w30 mindestens einen τ-Bit Fehler (d. h. eine Anzahl von σ Fehlern mit σ > τ) aufweist der durch den Code C4 erkannt und korrigiert werden kann, dann wird die entsprechende korrigierte Bitfolge unter der gleichen Adresse in den Speicher von 11 zurückgeschrieben.
-
Ist beispielsweise die unter der Adresse a13 ausgelesene Bitfolge w20 nicht fehlerhaft oder weist sie höchsten einen τ – 1-Bit Fehler auf, dann wird die Bitfolge w20 nicht in den Speicher von 11 zurückgeschrieben. Ist beispielsweise die unter der Adresse a13 ausgelesene Bitfolge w und weist sie mindesten einen τ-Bit-Fehler auf, und wird sie unter Verwendung des Codes C4 als fehlerhaft erkannt und in wcor korrigiert, dann wird die korrigierte Bitfolge wcor unter der Adresse a13 in den Speicher von 11 zurückgeschrieben.
-
Der (Schwell-)Wert τ kann dabei als einer der Werte 1, 2, ..., t gewählt werden, wenn C4 ein t-Bit Fehler korrigierenden Code mit t ≥ 1 ist. Dieses Vorgehen kann zu den Zeitpunkten T1 + δ1, T1 + 2·δ1, T1 + 3·δ1, ... wiederholt werden.
-
Ist der Code C4 beispielsweise in einem Ausführungsbeispiel ein 2-Bit-Fehler korrigierender Code, dann kann τ = 1 oder 2 gelten. Liegt beispielsweise unter der Adresse a11 ein 1-Bit Fehler vor, dann kann es möglich sein, dass die fehlerhafte, unter dieser Adresse ausgelesene Binärfolge w11 nicht korrigiert und zurückgeschrieben wird. Liegt beispielsweise unter der Adresse a20 ein 2-Bit Fehler vor, dann kann die fehlerhafte, unter dieser Adresse ausgelesene Binärfolge w20 in wcor korrigiert werden und zurückgeschrieben werden.
-
Zu Zeitpunkten T2 + δ2, T2 + 2·δ2, T2 + 3·δ2, ... können die unter den Adressen der Menge α2 gespeicherten Bitfolgen ausgelesen und gegebenenfalls korrigiert werden, wenn in einer der ausgelesenen Bitfolgen ein erkennbarer und korrigierbarer τ-Bit Fehler vorliegt. Dabei ist bspw. δ2 > δ1.
-
Es ist natürlich auch möglich, zu den Zeitpunkten T2 + δ2, T2 + 2·δ2, T2 + 3·δ2, ... alle Bitfolgen in dem Speicher von 11 auszulesen und im Falle eines Fehlers zurückzuschreiben.
-
Es ist gemäß Ausführungsbeispielen auch möglich, die Adressen in mehr als 2 Teilmengen α1, α2, α3, ...,.
-
einzuteilen und die unter den Adressen von α1 ausgelesenen Bitfolgen zu den Zeitpunkten T1 + δ1, T1 + 2·δ1, T1 + 3·δ1, ... auszulesen und im Fehlerfall zurückzuschreiben, die unter den Adressen von α2 ausgelesenen Bitfolgen zu den Zeitpunkten T2 + δ2, T2 + 2·δ2, T2 + 3·δ2, ... auszulesen und im Fehlerfall zurückzuschreiben, die unter den Adressen von α3 ausgelesenen Bitfolgen zu den Zeitpunkten T3 + δ3, T3 + 2·δ3, T3 + 3·δ3, ... auszulesen und im Fehlerfall zu korrigieren, ..., wobei δ1 > δ2 > δ 3 gilt. Es ist dabei auch nicht notwendig, dass das Auslesen und eventuelle Zurückschreiben jeweils im gleichen zeitlichen Abstand erfolgt. Ein gleicher Abstand δi wird hier der besseren Verständlichkeit halber verwendet.
-
Die Verwendung eines t-Bit Fehler korrigierenden Codes mit t ≥ 2 erlaubt es überraschenderweise die Menge α1 der Adressen, die häufig ausgelesen und im Fehlerfalle korrigiert zurückgeschrieben werden sollen, erheblich kleiner zu wählen, als wenn ein nur 1-Bit-Fehler korrigierender Code verwendet wird. Ist die Wahrscheinlichkeit gleich p, dass eine Speicherzelle, die zu einem Zeitpunkt t + Δt fehlerhaft ist, wenn sie zu einem Zeitpunkt t fehlerfrei war, dann ist die Wahrscheinlichkeit, dass gleichzeitig zwei Speicherzellen von N Speicherzellen fehlerhaft zum Zeitpunkt t + Δt sind, wenn sie zum Zeitpunkt t fehlerfrei waren nach einer Binominalverteilung gleich ( N / 2)·p2·(1 – p)N-2 < p wobei angenommen werden kann, dass Speicherzellen voneinander unabhängig fehlerhaft werden. Dabei ist N = k + m, wobei k die Anzahl der Nutzdatenbits und m die Anzahl der Prüfbits des betrachteten Codes ist.
-
Im Falle eines 2-Bit-Fehler korrigierenden Codes Ccor können beispielsweise nur die Adressen der Menge α1 zugeordnet werden, die zwei Speicherzellen adressieren, die zum Zeitpunkt t + Δt eine relativ große geschätzte Wahrscheinlichkeit aufweisen, dass sie fehlerhaft sind, wenn sie zum Zeitpunkt t fehlerfrei waren. Es kann sich dabei um solche Speicherzellen handeln, die einen Schreibstrom über einem gewissen Schwellenwert aufweisen, wie es bspw. im Zusammenhang mit 6 beschrieben ist.
-
Es kann sich dadurch eine kleinere Menge α1 von Adressen ergeben, die öfter gelesen und im Fehlerfall korrigiert zurückgeschrieben werden, als wenn die Menge α1 der Adressen, die öfter gelesen und im Fehlerfall korrigiert zurückgeschrieben werden als wenn die Menge von Adressen auswählt wird, die mindestens eine Speicherzelle adressieren, die zum Zeitpunkt t + Δt eine relativ große geschätzte Wahrscheinlichkeit aufweisen, dass sie fehlerhaft ist, wenn sie zum Zeitpunkt t fehlerfrei war, was vorteilhaft sein kann, da der erforderliche Aufwand an Zeit und Stromaufwand verkleinert werden kann.
-
Bezüglich der Adressen 000, 001, 010, 011 und 100 kann eine erste Teilzuverlässigkeitsinformation 22' vorliegen. Bezüglich der Adresse 101 kann beispielsweise eine zweite Zuverlässigkeitsinformation bzw. Teilzuverlässigkeitsinformation 22'' vorliegen. Die Zuverlässigkeitsinformation 22 kann die Teilzuverlässigkeitsinformationen 22' und 22'' umfassen. Beispielsweise wird die Adresse a3,1 (101), die einer dritten Teilmenge α3 von Adressen zugeordnet sein kann, mit einer geringeren Häufigkeit wie die Adressen 0–4 und mit einer höheren Wahrscheinlichkeit als die Adresse 6 bzw. 7 ausgelesen.
-
Alternativ oder zusätzlich kann eine Adresse auch in keiner oder in mehr als zwei Teilmengen von Adressen zugeordnet sein.
-
In anderen Worten zeigt 12 einen Speicher zur Speicherung von Adressen, die mit einer größeren Wahrscheinlichkeit fehlerhafte Speicherzellen adressieren als andere Adressen.
-
13 zeigt ein schematisches Blockschaltbild einer Schaltungsanordnung zur Speicherung codierter Daten in dem adressierbaren Speicher 12 bzw. ein Blockschaltbild einer Speichervorrichtung 130. Zu codierende Nutzdaten 52 (gekennzeichnet durch u) können an einem Eingang 54 eines Coders (Speichersteuerung) 56 anliegen. An einem Datenausgang 58 des Coders 56, der mit einem Dateneingang 62 des adressierbaren Speichers verbunden ist, können codierte Daten w = c, u (d. h., die Bitfolge w umfasst die Bits c und die Bits u) ausgegeben und unter einer an einem Adresseingang 64 des adressierbaren Speichers 12 anliegenden Adresse a gespeichert werden. Beispielsweise können die codierten Daten w = c, u das Codewort 42 des fehlerkorrigierenden Codes Ccor sein. Alternativ kann es sich um ein Codewort 42', 44 oder 42' handeln.
-
In anderen Worten zeigt 13 einen Speicher mit vorgeschaltetem Coder.
-
14 zeigt ein schematisches Blockschaltbild einer Schalungsanordnung (Speichervorrichtung) 140 zur Speicherung codierter Daten in dem adressierbaren Speicher 12. Ein Coder (Speichersteuerung) 56' kann ausgebildet sein, um die zu codierenden Daten 52 an dem Eingang 54 zu erhalten. Ein einem weiteren Eingang 66 ist der Coder ausgebildet, um die Adressenbits der Schreibadresse a zu erhalten. An dem Datenausgang 58 des Coders 56', der mit dem Dateneingang 62 des adressierbaren Speichers 12 gekoppelt ist, können Prüfbits c und die Nutzdatenbits u ausgegeben und unter der an dem Adresseingang 66 anliegenden Adresse a in dem adressierbaren Speicher 12 gespeichert werden. Bits c, u, a können das Codewort w des fehlerkorrigierenden Codes Ccor bilden. Verglichen mit 13 werden beispielsweise in dem adressierbaren Speicher 12 keine Codewörter eines fehlererkennenden/fehlerkorrigierenden Codes gespeichert. Die unter einer Adresse a gespeicherten Bits bilden im fehlerfreien Fall gemeinsam mit der am Adresseneingang 64 des adressierbaren Speichers 12 anliegenden Adresse a ein Codewort des Codes Ccor.
-
Das bedeutet, dass die Speichervorrichtung 140 ausgebildet ist, um die Bitfolgen in dem adressierbaren Speicher 12 zu speichern, wobei die Bitfolge Teil des Codeworts des fehlerkorrigierenden Codes ist. Die Speichersteuerung 56 der Speichervorrichtung 140 kann hingegen ausgebildet sein, um Bitfolgen zu speichern, die ein Codewort des fehlerkorrigierenden Codes bilden.
-
In anderen Worten zeigt 14 einen Speicher mit vorgeschaltetem Coder, wobei Adressenbits zur Bildung von Codewörtern verwendet werden.
-
15 zeigt ein schematisches Blockschaltbild einer Speichervorrichtung 150 zur Speicherung codierter Nutzdaten in dem adressierbaren Speicher 12. Die zu codierenden Nutzdaten u bzw. 52 können an dem ersten Eingang 54 des Coders 56' anliegen, während an dem zweiten Eingang 66 modifizierte Adressenbits A mit A = f(a) der Schreibadresse a anliegen. f kann beispielsweise eine eindeutige Funktion der Adressenbits a sein.
-
Beispielsweise kann A = f(a) = f(a0, ..., al-1) = a0 + a1 + ... + al-1 gelten, so dass in diesem Fall die modifizierten Adressenbits, d. h. aus den Adressenbits abgeleitete Bits aus einem Bit bestehen, welches die Parität der Adressenbits ist. Alternativ kann die eindeutige Funktion auch eine andere eindeutige Abbildung sein, beispielsweise ein Binärwert der Anzahl der Nullen der Adresse. Am Datenausgang 58 des Coders 56', der mit dem Dateneingang 62 des adressierbaren Speichers 12 verbunden ist, können Prüfbits c und die Nutzdatenbits u ausgegeben und unter der am Adresseneingang anliegenden Adresse a in dem adressierbaren Speicher 12 gespeichert werden. Bits c, u und A können ein Codewort des fehlerkorrigierenden Codes bilden. Die Bits c und u können Bits eines Codeworts umfassend Bits c, u, A des fehlerkorrigierenden Codes Ccor sein. Die Coder 56 und/oder 56' können beispielsweise die Speichersteuerung 18 sein.
-
In anderen Worten zeigt 15 einen Speicher mit vorgeschaltetem Coder, wobei bspw. Paritätsbits aus Adressenbits zur Bildung von Codewörtern verwendet werden können.
-
16 zeigt ein schematisches Blockschaltbild einer Speichervorrichtung 160 umfassend den adressierbaren Speicher 12 und die Speichersteuerung 18. Die Speichersteuerung 18 kann bspw. folgendes umfassen: einen Syndromgenerator 84, einen Fehlerdetektor 86, einen Fehlerkorrektor 88, eine XOR-Schaltung 92, ein AND-Gatter 94, ein AND-Gatter 96, einen ersten Adressengenerator Ad1 98, einen Adressspeicher 102, einen zweiten Adressgenerator Ad2 104 und einen Multiplexer 106. Andere Speichervorrichtungen können andere Komponenten aufweisen. Das bedeutet, dass die Speichervorrichtung einen Adresswertspeicher 102 zum Speichern einer Adressbitfolge umfassend die Bits der ersten Adresse a1,1 aufweisen kann. Die Bits der ersten Adresse können redundant in dem Adresswertspeicher gespeichert sein, so dass mindestens eine Anzahl von einem Fehler in dem redundant gespeicherten Adressbits der Adresse a1,1 erkennbar und/oder korrigierbar ist.
-
In anderen Worten können in dem adressierbaren Speicher 12 unter den Adressen a0, a1, amax die Bitfolgen c0, u0; c1, u1; ...; cmax, umax speicherbar sein, so dass c0, u0, a0; c1, u1, a1; ...; cmax, umax, amax im fehlerfreien Fall Codewörter des fehlerkorrigierenden Codes Ccor sind. Die dargestellte Schaltungsanordnung kann zum Korrigieren von fehlerhaften von Speicherzellen nutzbar sein.
-
Eine beispielhafte Funktion der Vorrichtung kann gemäß einem Ausführungsbeispiel wie folgt beschrieben werden. Zu einem ersten Zeitpunkten t werden bspw. die Bitfolgen aus dem Speicher 12, die unter den Adressen aus α1 gespeichert sind, gelesen und wenn ein korrigierbarer Fehler aufgetreten ist zurückgeschrieben. Wie zu dem Zeitpunkt t werden bspw. zu den Zeitpunkten t + δ1, t + 2·δ1, t + 3·δ1, ... die Bitfolgen aus dem Speicher 12 gelesen, die unter den Adressen aus α1 gespeichert sind. Wenn ein korrigierbarer Fehler aufgetreten ist, werden die korrigierten Bitfolgen zurückgeschrieben. Ein Auslesen zur Fehlerkorrektur der unter den Adressen aus α1 gespeicherten Bitfolgen erfolgt im zeitlichen Abstand δ1. Die ausgelesenen Bitfolgen werden dann, wenn ein korrigierbarer Fehler aufgetreten ist, korrigiert und beispielsweise unter die Adresse zurückgeschrieben von der sie ausgelesen wurden.
-
In dem ersten adressierbaren Speicher oder Adressspeicher 102 sind die Adressen aus α1 beispielsweise fortlaufend gespeichert. Der erste Adressengenerator Ad1 98 ist hier als Zähler ausgeführt. Sein Ausgang ist mit dem Adresseneingang des Adressspeichers 102 verbunden. Werden von dem als Zähler ausgeführten Adressengenerator die Werte 0, 1, 2, ... als Adressen für den Adressspeicher ausgegeben, dann werden von dem Adressspeicher 102 die Adressen a1,1, a1,2, a1,3, ... ausgegeben. Ist der Wert des Steuersignales st des Multiplexers 106 gleich 0, dann verbindet der Multiplexer 106 seinen 0-Eingang mit seinem Ausgang. Am Adresseneingang des Speichers 12 liegen die Adressen a1,1, a1,2, a1,3, ... als Adresse a' an. Der Speicher 12 gibt an seinem Datenausgang die unter der Adresse a' gespeicherte eventuell fehlerhafte Bitfolge c', u' aus, die durch eventuelle Fehler aus der korrekten Bitfolge c, u hervorgegangen ist.
-
Die eventuell fehlerhafte Bitfolge c', u' liegt an einem ersten Eingang des Syndromgenerators 84 an, während die eventuell fehlerhafte Adresse a' an einem zweiten Eingang des Syndromgenerators 84 anliegt, der an seinem Ausgang ein Fehlersyndrom s ausgibt. Die eventuell fehlerhafte Bitfolge c', u' liegt gleichzeitig an einem ersten Eingang der XOR-Schaltung 92 zur komponentenweisen XOR-Verknüpfung an. Der Ausgang des Syndromgenerators 84 der das Fehlersyndrom s führt, ist mit dem Eingang eines Fehlererkenners oder Fehler-Detektors 86 verbunden und gleichzeitig mit dem Eingang des Fehler-Korrektors 88 verbunden, der an seinem Ausgang einen Korrekturvektor e zur bitweisen Korrektur der Bits der eventuell fehlerhaften Binärfolge c', u' ausgibt. Der Ausgang des Fehler-Korrektors 88 ist in einen zweiten Eingang der XOR-Schaltung 92 geführt, die eine bitweise XOR-Verknüpfung der entsprechenden Bits von c', u' und e realisiert und an ihrem Ausgang den korrigierten Wert (c, u)cor ausgibt.
-
Der Ausgang der XOR-Schaltung 92 ist in den Dateneingang des Speichers 12 geführt. Der ErrorDetector 86 bildet ein 1-Bit breites Fehlersignal E, das dann gleich 1 ist, wenn mindestens ein τ-Bit Fehler mit 1 ≤ τ ≤ t vorliegt, wobei die fehlerhafte Binärfolge c', u' korrigiert und zurückgeschrieben wird, und wobei Ccor ein t-Bit korrigierender Code ist.
-
Der Ausgang des Error-Detectors 86, der das Fehlersignal E führt, ist mit einem ersten Eingang eines AND-Gatters 96 und über einen Negator mit einem AND-Gatter 94 verbunden, an deren jeweils ersten Eingängen ein binäres read/write Signal r/w anliegt und gleichzeitig mit einem 1-Bit breiten Eingang des Adressengenerators Ad1 98 und des Adressengenerators Ad2 104 verbunden.
-
Ist das Signal r/w = 1, dann ist read = 1, wenn E = 0 ist und read = 0, wenn E = 1 ist. Der Adressengenerator Ad1 98 adressiert den Adressspeicher 102, der beim jeweiligen Anlegen einer vom Adressengenerator Ad1 98 generierten Adresse eine Adresse a aus α1 ausgibt, die über den Multiplexer 106 am Adresseneingang des Speichers 12 anliegt. Ist das read-Signal read = 1, dann gibt der Speicher 12 die unter der Adresse a gespeicherte Bitfolge c, u aus. Der Syndromgenerator 84 bildet aus dem eventuell fehlerhaften Adressenbit a und der eventuell fehlerhaften Bitfolge c, u ein Fehlersyndrom s, aus dem der Fehlerdetektor 86 ein Fehlersignal E bestimmt und der Fehlerkorrektor 88 einen Korrekturvektor e bestimmt. Der Adressengenerator Ad1 88 ist so konfiguriert, dass er dann, wenn E = 0 ist, die nächste Adresse ausgibt. Ist E = 0, dann ist das write-Signal write = 0 und das read-Signal ist read = 1. Das Steuersignal st des Multiplexers ist weiterhin st = 0, so dass nun eine von Address memory 102 (Adressspeicher) ausgegebene weitere Adresse aus α1 am Adresseneingang des Speichers 12 anliegt.
-
Ist das Fehlersignal E = 1, dann ist das write-Signal write = 1. Der Adressgenerator Ad1 98 ist so konfiguriert, dass er keine neue Adresse ausgibt, solange E = 1 ist, so dass die bisherige Adresse a weiterhin am Adresseneingang des Speichers 12 anliegt und die korrigierte Bitfolge cucor in den Speicher 12 unter der Adresse a geschrieben wird, so dass die unter der Adresse gespeicherte fehlerhafte Bitfolge korrigiert zurückgeschrieben wird, wenn der Fehler durch den Code Ccor korrigiert werden kann und die Adresse fehlerfrei ist.
-
Ein Zurückschreiben findet nur dann statt, wenn die unter einer Adresse aus α1 gespeicherte Bitfolge fehlerhaft ist und durch den Code Ccor korrigiert werden kann. Ein Adressenfehler wird als ein nicht korrigierbarer Fehler erkannt.
-
Ist das Steuersignal st des Multiplexers 106 gleich st = 1, dann verbindet der Multiplexer 106 seinen 1-Eingang mit seinem Ausgang und die von dem Adressengerator Ad2 104 generierten Adressen liegen an dem Adresseneingang des Speichers 12 an. Das Steuersignal st wird zu den Zeitpunkten T, T + δ2, T + 2δ2, T + 3δ2, ... zu st = 1 gewählt und jeweils so lange auf diesem Wert gehaltenn, bis der Adressengenerator Ad2 104 alle Adressen generiert hat, die zu den größeren Zeitabständen gelesen und im Fehlerfall korrigiert zurückgeschrieben werden. Ausführungsbeispiele sehen vor, dass alle Adressen des Speichers 12 zum Zwecke der Korrektur fehlerhafter Werte im Speicher von dem Adressengenerator Ad2 zu den Zeitpunkten T, T + δ2, T + 2δ2, T + 3δ2, ... gelesen und im Falle eines Fehlers korrigiert zurückgeschrieben werden. Wird ein zu korrigierender Fehler erkannt, dann ist E = 1 und das read-Signal read nimmt als Ausgang des AND-Gatters 94 den Wert 0 an, während das write Signal write als Ausgang des AND-Gatters 94 den Wert 1 annimmt, so das die korrigierte Bitfolge c, ucor in den Speicher 12 unter der Adresse a geschrieben wird. Das Fehlersignal E ist auch an einen Eingang des Adressengenerators Ad2 geführt, wobei der Adressengenerator Ad2 so ausgestaltet ist, dass er bei Anliegen eines Fehlersignales E = 1 die bisherige Adresse beibehält.
-
Der Adressengenerator Ad1 98 adressiert den Adressspeicher 102, der beim jeweiligen Anlegen einer vom Adressengenerator Ad1 98 generierten Adresse eine Adresse a aus α1 ausgibt, die über den Multiplexer 106 am Adresseneingang des Speichers 12 anliegt. Ist das read-Signal read = 1, dann gibt der Speicher 12 die unter der Adresse a gespeicherte Bitfolge c, u aus. Der Syndromgenerator 84 bildet aus dem eventuell fehlerhaften Adressenbit a und der eventuell fehlerhaften Bitfolge c, u ein Fehlersyndrom s, aus dem der Fehlerdetektor 86 ein Fehlersignal E bestimmt und der Fehlerkorrektor 88 einen Korrekturvektor e bestimmt. Der Adressengenerator Ad1 98 ist so konfiguriert, dass er dann, wenn E = 0 ist, die nächste Adresse ausgibt. Ist E = 0, dann ist das write-Signal write = 0 und das read-Signal ist read = 1. Das Steuersignal st des Multiplexers ist weiterhin st = 0, so dass nun eine von Address memory 102 ausgegebene weitere Adresse aus α1 am Adresseneingang des Speichers 12 anliegt.
-
Ist das Fehlersignal E = 1, dann ist das write-Signal write = 1. Der Adressgenerator Ad1 98 ist so konfiguriert, dass er keine neue Adresse ausgibt, solange E = 1 ist, so dass die bisherige Adresse a weiterhin am Adresseneingang des Speichers 12 anliegt und die korrigierte Bitfolge cucor in den Speicher 12 unter der Adresse a geschrieben wird, so dass die unter der Adresse gespeicherte fehlerhafte Bitfolge korrigiert zurückgeschrieben wird, wenn der Fehler durch den Code Ccor korrigiert werden kann und die Adresse fehlerfrei ist.
-
Ein Zurückschreiben findet nur dann statt, wenn die unter einer Adresse aus α1 gespeicherte Bitfolge fehlerhaft ist und durch den Code Ccor korrigiert werden kann. Ein Adressenfehler wird als ein nicht korrigierbarer Fehler erkannt.
-
Zu den Zeitpunkten T, T + δ2, T + 2δ2, ... nimmt das Steuersignal st den Wert st = 1 solange an, bis die von dem Adressengenerator Ad2 generierten Adressen aus dem Speicher 12 ausgelesen sind. Dabei ist es möglich, dass der Adressengenerator Ad2 104 sequentiell alle Adressen des Speichers 12 generiert oder dass er Adressen eines Adressenbereiches ausgibt.
-
Ebenso, wie die Erzeugung einer folgenden Adresse für den Adress-Generator 104 durch das Fehlersignal E bestimmt ist, ist auch die Erzeugung einer folgenden Adresse für den Adressengenerator 810 durch das Fehlersignal E bestimmt. Das Auslesen und Korrigieren der Daten, die unter einer vom Adressengenerator Ad2 104 generierten Adressen gespeichert sind, erfolgt analog dem Auslesen und Korrigieren der Daten, die unter einer vom Adressengenerator 102 ausgegebenen Adresse gespeichert sind.
-
Es ist gemäß weiteren Ausführungsbeispielen auch möglich, die Menge α1 der Adressen, die häufiger als andere Adressen gelesen und im Falle eines Fehlers korrigiert und zurückgeschrieben werden, dynamisch zu verändern. So ist es zum Beispiel möglich, die Menge α1 beim Start-up auf Grund von Messungen physikalischer Parameter der Speicherzellen zu bestimmen, etwa indem die Speichersteuerung den physikalischen Parameter bestimmt. Werden nun die Adressen von α1 jeweils beginnend zu den Zeitpunkten T1 + δ1, T1 + 2·δ1, T1 + 3·δ1, ..., T1 + R·δ1 ausgelesen, dann kann die Speichersteuerung bestimmen oder schätzen, wie oft die unter einer Adresse a1,i ∈ α1 gespeicherte Bitfolge bei einem S-maligen Auslesen fehlerhaft ist und unter Verwendung des verwendeten fehlererkennenden Codes korrigiert werden kann, vgl. Verfahren 1550. Das S-malige Auslesen kann sich auf eine absolute Anzahl, auf eine Anzahl innerhalb eines Zeitraums oder auf eine (relative) Anzahl der fehlerbehafteten Auslesevorgänge im Verhältnis zu sämtlichen Auslesevorgängen beziehen.
-
Auch kann feststellt werden, bspw. durch die Speichersteuerung, ob eine unter einer Adresse a1,i ∈ α1 gespeicherte Binärfolge bei einem R-maligen Auslesen überhaupt fehlerhaft gewesen ist. Sind die unter der Adresse a1,i zu den verschiedenen R Zeitpunkten ausgelesenen Binärfolgen stets fehlerfrei, dann kann die Adresse a1,i aus der Menge α1 gestrichen werden und der Menge α2 hinzugefügt.
-
Es ist zum Beispiel möglich, den in dem Adressspeicher (address memory) 102 gespeicherten Adressen von α1 ein weiteres Bit bw hinzuzufügen, das initial auf den Wert 0 gesetzt wird. Wird eine Adresse a1,k aus α1 aus dem Adressspeicher 102 ausgelesen, und an den Datenspeicher 12 angelegt, dann gibt der Datenspeicher 12 eine unter der Adresse a1,i gespeicherte eventuell fehlerhafte Bitfolge c', u' aus. Ist die ausgegebene Bitfolge c', u' fehlerhaft und wird sie unter Verwendung des fehlerkorrigierenden Codes korrigiert und zurückgeschrieben, dann kann der Wert des weiteren Bits bw auf den Wert bw = 1 gesetzt werden, unabhängig davon, ob es den Wert 0 oder 1 hatte. Ist die ausgelesene Bitfolge c', u' nicht fehlerhaft, dann wird der Wert des weiteren Bits bw beibehalten. Ist nach einem R-maligen Auslesen mit R > 0 der unter der Adresse a1,i ∈ α1 in dem Datenspeicher 12 gespeicherten Bitfolge und Korrigieren und Zurückschreiben eventuell fehlerhafter ausgelesener Bitfolgen der Wert des weiteren Bits bw = 0, dann ist die unter der Adresse a1,i gespeicherte Bitfolge beim R-maligen Auslesen stets fehlerfrei gewesen. Es ist dann möglich, diese Adresse aus α1 zu entfernen und sie einer anderen Menge von Adressen, beispielsweise der Menge α2 zu zuordnen.
-
Die Speichersteuerung kann ausgebildet sein, um einen t-Bit-Fehler korrigierenden Code Ccor mit t ≥ 2 zu verwenden. Dies ermöglicht es, eine Adresse a2,j ∈ α2 dann der Menge α1 zuzuordnen, wenn bei einem Speicherzugriff auf den Datenspeicher 12 unter der Adresse a2,j eine Bitfolge c', u' ausgegeben wird, die einen τ-Bit Fehler aufweist, wobei 1 ≤ τ ≤ t gewählt werden kann. Ist z. B. t = 2, dann kann ein 1-Bit-Fehler korrigiert werden, ohne dass die Adresse a2,j nach dem erkannten 1-Bit Fehler der Menge α1 zugeordnet wird. Tritt ein 2-Bit Fehler auf, dann kann die Adresse a2,j aus der Menge α2 entfernt und der Menge α1 zugeordnet werden.
-
Es kann ausreichend sein, nur die Menge α1 der häufig zu lesenden Adressen in einem Adressspeicher 102 zu speichern und die Menge α2 der seltener zu lesenden Adressen nicht in einem Adressspeicher abzulegen und dann, wenn die Adressen aus α zum Zwecke der Fehlerkorrektur der gespeicherten Werte gelesen und im Falle eines Fehlers korrigiert werden auch gleichzeitig die Adressen aus α1 zu lesen und gegebenenfalls zu korrigieren.
-
Teilmengen α1 und α2 können disjunkt oder nicht disjunkt sein. Gehört eine Adresse a sowohl zu α1 als auch zu α2, dann wird sie sowohl dann gelesen, wenn die Adressen aus α1 gelesen werden als auch dann, wenn die Adressen aus α2 gelesen werden. Es kann aber wichtig sein, dass eine Adresse, die häufig gelesen werden soll, zu α1 gehört.
-
Die beschriebenen Beispiele der dynamischen Veränderung der Mengen von Adressen sind Beispiele einer möglichen dynamischen Veränderung der Mengen von Adressen.
-
17 zeigt ein schematisches Flussdiagramm eines Verfahrens 1700 und eines Verfahrens 1750, das beispielsweise von einer Speichersteuerung ausführbar ist, um eine Zuordnung von Adressen zu einer Teilmenge zu beeinflussen oder zu verändern. In einem Schritt 1710 kann die Speichersteuerung ausgebildet sein, um eine Adresse der zweiten Teilmenge auszulesen und, um die Adresse der ersten Teilmenge zuzuordnen, wenn die Speichersteuerung beim Auslesen der gespeicherten Bitfolge für ein vorbestimmtes σ eine Anzahl von σ Fehlern in der ausgelesenen Bitfolge erkennt, wobei 1 ≤ σ ≤ t. Der Code kann ein t-Bit-fehlererkennender und/oder fehlerkorrigierender Code mit t ≥ 1 sein.
-
In einem Schritt 1720 kann die Speichersteuerung die ausgelesene Adresse der ersten Teilmenge α1 von Adressen zuordnen, wenn ein Fehler in der ausgelesenen Bitfolge erkannt wird. Beispielsweise kann die Speichersteuerung ausgebildet sein, um einen ersten Fehler in der ausgelesenen Bitfolge zu korrigieren. Die Speichersteuerung kann ausgebildet sein, um eine Adresse der ersten Teilmenge α1 von Adressen hinzuzufügen, wenn die unter der Adresse ausgelesene Bitfolge nicht der Teilmenge α1 zugeordnet ist und wenn bei einem S'-maligen Lesen der unter dieser Adresse gespeicherten Bitfolge ein Fehler aufgetreten ist, wobei 1 < S' ist. Das bedeutet, dass eine Bitfolge, die wiederholt Fehler aufweist von der Speichersteuerung zu der ersten Teilmenge von Adressen hinzugefügt werden kann.
-
Mittels des Verfahrens 1750 kann die Speichersteuerung beispielsweise ausgebildet sein, um eine Adresse a1,j der ersten Teilmenge α1 aus der Teilmenge α1 zu entfernen, wenn bei einem S-maligen Lesen der unter dieser Adresse gespeicherten Bitfolge in einem Schritt 1760 kein Fehler aufgetreten ist, wobei 1 < S ist. Tritt S Mal kein Fehler auf, so kann die Speichersteuerung ausgebildet sein, um in einem Schritt 1770 die Adresse aus der ersten Teilmenge α1 zu entfernen und/oder der zweiten Teilmenge α2 zuzuordnen. Das bedeutet, dass eine Speichersteuerung, etwa die Speichersteuerung 18 ausgebildet sein kann, um eine Adresse der ersten Teilmenge α1 aus der Teilmenge α1 zu entfernen, wenn bei einem S-maligem Lesen der unter dieser Adresse gespeicherten Bitfolge kein Fehler aufgetreten ist, wobei 1 < S ist.
-
Die Speichersteuerung gemäß Ausführungsbeispielen kann ausgebildet sein, um die erste Teilmenge α1 in Abhängigkeit von beim Auslesen von in dem adressierbaren Speicher gespeicherten Bitfolgen auftretenden Fehlern und/oder in Abhängigkeit vom beim Schreiben in den adressierbaren Speicher und/oder in Abhängigkeit von beim Auslesen aus dem adressierbaren Speicher bestimmten Werten eines physikalischen Parameters zu verändern. Beispielsweise kann sich der physikalische Parameter während eines Betriebs oder über eine Betriebsdauer des adressierbaren Speichers hinweg verändern. Die Steuervorrichtung kann ausgebildet sein, um die Veränderung zu bestimmen, d. h. zu erfassen, und um die Zuordnung zur ersten oder zweiten Teilmenge von Adressen anzupassen.
-
18 zeigt ein schematisches Blockschaltbild einer Speichervorrichtung 180, die den adressierbaren Speicher 12 zum Speichern von Bitfolgen und eine Speichersteuerung 18' umfasst. Die gespeicherten Bitfolgen sind im fehlerfreien Fall Bits eines Codeworts eines fehlerkorrigierenden Codes, d. h. zumindest Teil des Codeworts. Die Speichersteuerung 18' ist ausgebildet, um für eine Korrektur fehlerhafte Inhalte, die gespeicherten Bitfolgen aus dem adressierbaren Speicher 12 auszulesen, um eine Auslesevorgang durchzuführen. Der fehlerkorrigierende Code kann ein t-Bit korrigierender Code mit t ≥ 2 sein.
-
Die Speichersteuerung 18' kann ausgebildet sein, um eine gespeicherte und ausgelesene fehlerhafte Bitfolge, die eine Anzahl von σ Bitfehlern aufweist, unter Verwendung des fehlerkorrigierenden Codes zu korrigieren und um die fehlerhafte Bitfolge mit einer korrigierten Bitfolge zu überschreiben und/oder um die korrigierte Bitfolge zurückzuschreiben, wobei gilt, dass 1 < σ ≤ t ist. Die Speichersteuerung kann ausgebildet sein, um die fehlerhafte Bitfolge nicht mit einer korrigierten Bitfolge zu überschreiben und um die korrigierte Bitfolge nicht zurückzuschreiben, wenn die ausgelesene Bitfolge eine Anzahl von σ Fehlern aufweist und gilt, dass σ ≤ τ, wobei τ ein Schwellwert ist und gilt, dass 1 ≤ τ ≤ t. Bezüglich einer Unterscheidung, ob eine fehlerhafte Bitfolge zurückgeschrieben wird oder nicht, kann die Speichervorrichtung 180 eine Funktion aufweisen, die vergleichbar ist, mit einer Funktion, wie sie etwa im Zusammenhang mit der 5 beschrieben ist.
-
Wie es im Zusammenhang mit der 3 beschrieben ist, kann der adressierbare Speicher erste Speicherzellen aufweisen, die durch eine erste Adresse a1,1 adressiert werden. Der adressierbare Speicher kann zweite Speicherzellen aufweisen, die durch eine zweite, von der ersten Adresse verschiedene Adresse a2,1 adressiert werden. Die unter der Adresse a1,1 und der Adresse a2,1 gespeicherten Bitfolgen können im fehlerfreien Fall jeweils Bit eines Codeworts eines fehlerkorrigierenden Codes sein. Die Speichersteuerung kann ausgebildet sein, um für eine Korrektur fehlerhafte Inhalte in den gespeicherten Bitfolgen die ersten und/oder zweiten Speicherzellen auszulesen. Die unter der Adresse a1,1 und der Adresse a2,1 gespeicherten Bitfolgen können im fehlerfreien Fall jeweils Bits eines Codeworts eines fehlerkorrigierenden Codes sein. Die Speichersteuerung kann ausgebildet sein, um für eine Korrektur fehlerhafte Inhalte in den gespeicherten Bitfolgen die ersten und/oder zweiten Speicherzellen auszulesen, um einen Auslesevorgang durchzuführen. Eine Häufigkeit von aufeinanderfolgenden Auslesevorgängen der ersten Speicherzellen und der zweiten Speicherzellen kann unterschiedlich sein, falls für die ersten Speicherzellen und/oder die zweiten Speicherzellen eine Zuverlässigkeitsinformation vorliegt. Die Zuverlässigkeitsinformation kann auf einer ermittelten Wahrscheinlichkeit für ein Auftreten einer fehlerhaften Bitfolgen in den ersten Speicherzellen und/oder den zweiten Speicherzellen basieren.
-
Weitere Ausführungsbeispiele schaffen Speichervorrichtungen, die die Speichervorrichtung 180 bezüglich einer Auswertung und/oder Korrektur der Speicherzellen mit einer unterschiedlichen Häufigkeit weiterbilden, wie es im Zusammenhangt mit den anderen hierin beschriebenen Ausführungsbeispielen erläutert wird. Das bedeutet, dass die beschriebenen Merkmale der vorangehend erläuterten Ausführungsbeispiele ohne weiteres auf die Speichervorrichtung 180 übertragbar sind.
-
19 zeigt eine schematische Darstellung einer Verteilung von Bits (Speicherzellen) über verschiedene thermische Stabilitäten ΔE[kBT]. Die thermische Stabilität kann als physikalischer Parameter nutzbar sein. Beispielsweise können Adressen durch die Speicherzellen adressiert werden, die eine Abweichung größer als σ, größer als 2σ oder größer als 3σ von einem Mittelwert aufweisen, als erste Adressen gespeichert werden, wobei σ hier eine Varianz einer Verteilung bezeichnet.
-
19 zeigt, dass eine große Variation der thermischen Stabilität ΔE in einem MRAM Speicher auftreten kann.
-
20 zeigt ein schematisches Diagramm einer Wahrscheinlichkeitsverteilung P, dass ein Bit innerhalb eines Zeitintervalls oder nach einem Schreibvorgang einen Bitfehler aufweist. Über verschiedene Zeitdauern (eine Sekunde, 10.000 Sekunden, 108 Sekunden, die in etwa 3,1 Jahren entsprechen) wird ersichtlich, dass eine Wahrscheinlichkeit, dass ein Bitfehler vorliegt, auf der verwendeten Zeitspanne, auf der Art des verwendeten fehlerkorrigierenden Codes, beispielsweise ein Bit fehlerkorrigierender Code – engl.: error correction code, ECC – oder 3 Bit fehlerkorrigierender Code und/oder auf der thermischen Stabilität ΔE basieren kann. Diese Zusammenhänge lassen sich als geschätzte Wahrscheinlichkeit in der Unterscheidung in erste Adressen und zweite Adressen berücksichtigen.
-
Vereinfacht ausgedrückt zeigt 20 einen Zusammenhang zwischen einem physikalischen Parameter, d. h. der thermischen Stabilität, und einer Wahrscheinlichkeit für ein Auftreten eines Bitfehlers.
-
21 zeigt ein schematisches Flussdiagramm eines Verfahrens 2100 umfassend einen Schritt 2110. Das Verfahren 2100 kann von der Speichervorrichtung 10 implementierbar sein. In dem Schritt 2110 erfolgt ein Überprüfen einer ersten Bitfolge, die in ersten Speicherzellen eines Speichers gespeichert ist, wobei der Speicher zweite Speicherzellen aufweist, die von den ersten Speicherzellen verschieden sind, und in denen eine zweite Bitfolge gespeichert ist. Die erste Bitfolge wird mit einer den ersten Speicherzellen zugeordneten Häufigkeit überprüft, die von einer Zuverlässigkeitsinformation für die ersten Speicherzellen abhängt. Bei einem Fehlerzustand wird ein fehlerhaftes Bit der ersten Bitfolge korrigiert und zumindest das korrigierte Bit in den Speicher zurückgeschrieben. Die zweite Bitfolge wird basierend auf einer Zuverlässigkeitsinformation für die zweiten Speicherzellen weniger oft überprüft als die erste Bitfolge.
-
22 zeigt ein schematisches Flussdiagramm eines Verfahrens 2200, wie es beispielsweise durch die hierin beschriebenen Speichervorrichtungen implementierbar ist. Das Verfahren 2200 kann genutzt werden, um eine Anzahl von Bitfehlern in einem Speicher mit geringer Effizienz gering zu halten, bspw. wenn es von der Speichervorrichtung 30 implementiert wird.
-
In einem Schritt 2210 werden Bitfolgen in einem adressierbaren Speicher gespeichert, der erste Speicherzellen aufweist, die durch eine erste Adresse a1,1 adressiert werden und der zweite Speicherzellen aufweist, die durch eine zweite, von der ersten Adresse verschiedenen Adressen a2,1 adressiert werden, wobei die unter der ersten Adresse a1,1 und der zweiten Adresse a2,1 gespeicherte Bitfolgen im fehlerfreien Fall jeweils Bits eines Codeworts eines fehlerkorrigierenden Codes sind.
-
In einem Schritt 2220 werden die ersten und/oder die zweiten Speicherzellen ausgelesen, um für eine Korrektur fehlerhafter Inhalte in den gespeicherten Bitfolgen einen Auslesevorgang auszuführen, wobei eine Häufigkeit von aufeinanderfolgenden Auslesevorgängen der Speicherzellen und der zweiten Speicherzellen unterschiedlich ist, falls für die ersten Speicherzellen und/oder die zweiten Speicherzellen eine Zuverlässigkeitsinformation vorliegt, wobei die Zuverlässigkeitsinformation auf einer ermittelten Wahrscheinlichkeit für ein Auftreten einer fehlerhaften Bitfolge in den ersten Speicherzellen und/oder den zweiten Speicherzellen basiert.
-
23 zeigt ein schematisches Flussdiagramm eines Verfahrens, wie es beispielsweise von der Speichervorrichtung 180 und/oder zusätzlich von anderen hierin beschriebenen Speichervorrichtungen implementierbar ist. Das Verfahren kann genutzt werden, um Bitfehler mit einem geringen Aufwand zu korrigieren.
-
In einem Schritt 2310 werden Bitfolgen in einem adressierbaren Speicher gespeichert, so dass die gespeichert Bitfolgen im fehlerfreien Fall jeweils Bits eines Codeworts eines t-Bit fehlerkorrigierenden Codes sind und t ≥ 2 gilt.
-
In einem Schritt 2320 werden die gespeichert Bitfolgen für eine Korrektur fehlerhafter Inhalte ausgelesen, um einen Auslesevorgang durchzuführen.
-
In einem Schritt 2330 wird eine gespeicherte und ausgelesene fehlerhafte Bitfolge korrigiert, wobei die Bitfolge eine Anzahl von σ Fehlern aufweist. Die Korrektur erfolgt unter Verwendung des fehlerkorrigierenden Codes. In einem Schritt 2340 wird die fehlerhafte Bitfolge mit einer korrigierten Bitfolge überschrieben und/oder die korrigierte Bitfolge wird zurückgeschrieben, wobei gilt, dass 1 < σ ≤ t ist. Die fehlerhafte Bitfolge wird nicht mit einer korrigierten Bitfolge überschrieben und die korrigierte Bitfolge wird nicht zurückgeschrieben, wenn die ausgelesene Bitfolge eine Anzahl von σ Fehlern aufweist und σ ≤ τ gilt, wobei τ ein Schwellwert ist und gilt, dass 1 ≤ τ ≤ t ist.
-
24 zeigt eine schematische Darstellung einer zu speichernden Bitfolge 112, die als bitweise invertierte Bitfolge 112' in einem adressierbaren Speicher speicherbar ist, etwa wenn die Adresse unter der die Bitfolge gespeichert wird, von der Speichervorrichtung als Adresse aper,1 identifiziert wird, die eine permanent defekte Speicherzelle 114 aufweist, die bspw. „stuck at 0” ist, d. h., auf einem Wert von 0 festhängt. Die Bitfolge 11001 kann nicht fehlerfrei in den Speicherzellen unter der Adresse aper,1 gespeichert werden, während die invertierte Bitfolge 00110 fehlerfrei unter der Adresse aper,1 gespeichert werden kann. Gemäß Ausführungsbeispielen wird kann gesamte Bitfolge invertiert werden. Gemäß weiteren Ausführungsbeispielen kann die Bitfolge teilweise invertiert werden, wobei der Teil zumindest das Bit umfasst, das in der fehlerhaften Bitfolge gespeichert wird. Die Speicherzelle 114 bzw. die Adresse aper,1 kann bspw. in der Teilmenge αper von Adressen gespeichert sein.
-
25 zeigt eine schematische Darstellung, einer Klassifizierung der Speicherzelle 114 als einen permanenten Fehler aufweisend. Basierend auf einem physikalischen Parameter, der größer oder kleiner ist, als ein Schwellwert kann eine Wahrscheinlichkeit pper ermittelbar sein, die angibt, wie wahrscheinlich die Speicherzelle 114 einen permanenten Fehler aufweist. Ist die Wahrscheinlichkeit größer als ein Schwellwert SWper, so kann die Adresse aper,1 der Teilmenge αper zugeordnet werden, bspw. von der Speichersteuerung. Der Schwellwert kann größer als 0 und kleiner oder gleich 1 sein, größer oder gleich 0,1 und kleiner oder gleich 0,99 oder größer oder gleich 0,2 und kleiner oder gleich 0,95 sein.
-
Vorangehend beschriebene Ausführungsbeispiele ermöglichen eine effiziente Fehlerkorrektur in adressierbaren Speichern, insbesondere in MRAM-Speichern. Diese weisen beispielsweise einen geringen Anteil von Zellen auf, die oft Fehler aufweisen. Die anderen Zellen weisen weniger häufig einen Fehler auf. Adressen können als erste Adresse betrachtet oder eingestuft werden, wenn sie zumindest eine Speicherzelle adressieren, die eine häufige Fehlerwahrscheinlichkeit aufweist.
-
Vereinfacht ausgedrückt können nicht zuverlässige (unzuverlässige) Speicherzellen vorhergesagt (beispielsweise während eines Start-ups, gegebenenfalls unter Auswertung des Schreibstroms oder des Lesestroms) werden. Unzuverlässige Adressen können bestimmt werden und in verschiedenen Arten von Speichern gespeichert werden.
-
Bitfolgen (Wörter), die in unzuverlässigen Adressen gespeichert sind, werden öfter gelesen und beispielsweise nur korrigiert, wenn ein korrigierbarer Fehler festgestellt und korrigiert wird. Bitfolgen in zuverlässigen Adressen werden weniger oft gelesen und lediglich in Fällen, in denen ein korrigierbarer Fehler korrigiert wurde, zurückgeschrieben, d. h. wiederhergestellt. Dies ermöglicht eine Reduzierung des Aufwands in Bezug auf Zeit und Energieverbrauch, insbesondere in MRAM-Speichern. Unzuverlässige Adressen können in flüchtigen Speichern oder in nicht-flüchtigen Speichern gespeichert werden. Alternativ oder zusätzlich können sie in einem speziellen Speicherbereich in demselben Speicher gespeichert werden, wo die Daten auf dem adressierbaren Speicher gespeichert werden. Dies ermöglicht, dass die Werte der unzuverlässigen Adressen auch von dem fehlerkorrigierenden Code korrigiert werden. Unzuverlässige Adressen können verdreifacht und gespeichert werden.
-
Eine Zusammenstellung unzuverlässiger Adressen kann während eines Betriebs der Speichervorrichtung dynamisch verändert werden. Beispielsweise können Adressen mit Multi-Bit-Fehlern in die Zusammenstellung unzuverlässiger Adressen aufgenommen werden. Adressen der unzuverlässigen Adressen können aus der Zusammenstellung entfernt werden, wenn sie für eine gewisse, gegebenenfalls lange Zeit keinen Fehler aufweisen.
-
Wird ein t-Bit fehlerkorrigierender Code mit t ≥ 2 verwendet, können Daten, die unter einer zuverlässigen oder unzuverlässigen Adresse gespeichert werden beispielsweise korrigiert und wiederhergestellt werden, wenn zumindest ein 2-Bit-Fehler vorliegt. Bei beispielsweise einem 1-Bit-Fehler kann der Fehler korrigiert werden oder unkorrigiert bleiben und nicht wiederhergestellt werden. Damit kann der Aufwand (overhead) für die Wiederherstellung wesentlich reduziert werden, da die Wahrscheinlichkeit für einen 2-Bit-Fehler, bei dem eine Wiederherstellung erfolgt, wesentlich geringer ist als die Wahrscheinlichkeit für einen 1-Bit-Fehler. Es können mehr als 2 verschiedene Arten von Adressen implementiert werden.
-
Ausführungsbeispiele können auch so formuliert werden, dass für ein Verfahren zur Verkleinerung der Anzahl von Fehlern von in einem adressierbaren Speicher gespeicherten Bitfolgen, der adressierbare Speicher erste Speicherzellen aufweist, die durch eine erste Adresse a1,1 adressiert werden und zweite Speicherzellen aufweist, die durch eine zweite, von der ersten Adresse verschiedene Adresse a2,1 adressiert werden, wobei die geschätzte Wahrscheinlichkeit, dass eine unter der ersten Adresse a1,1 zu einem Zeitpunkt t in den ersten Speicherzellen gespeicherte fehlerfreie Bitfolge zu einem Zeitpunkt t + Δt fehlerhaft ist, größer ist als die geschätzte Wahrscheinlichkeit, dass eine unter der zweiten Adresse a2,1 in den zweiten Speicherzellen zu dem Zeitpunkt t gespeicherte korrekte Bitfolge zu dem Zeitpunkt t + Δt fehlerhaft ist, wobei Δt > 0 ist und die unter der Adresse a1,1 und der Adresse a2,1 gespeicherten Bitfolgen im fehlerfreien Fall jeweils Bits eines Codewortes eines fehlerkorrigierenden Codes Ccor mit einem Codeabstand d ≥ 3 sind, wobei zur Korrektur fehlerhafter Inhalte von Speicherzellen die ersten Speicherzellen unter der Adresse a1,1 häufiger in aufeinanderfolgenden Zeitpunkten gelesen werden als die zweiten Speicherzellen unter der Adresse a2,1 und dass eine unter der Adresse a1,1 gespeicherte und ausgelesene fehlerhafte Bitfolge mit einer unter Verwendung des Codes Ccor korrigierten Bitfolge überschrieben wird.
-
Weitere Ausführungsbeispiele definieren, dass der Code Ccor ein t-Bit korrigierender Code ist und t ≥ 2 gilt, wobei dann, wenn eine unter der Adresse a1,1 gespeicherte und ausgelesene Bitfolge einen t-Bit, (t – 1)-Bit, ..., oder τ-Bit-Fehler aufweist, die fehlerhafte Bitfolge mit einer unter Verwendung des Codes Ccor korrigierten Bitfolge überschrieben oder zurückgeschrieben wird, wobei τ ≥ 1 gilt.
-
Weitere Ausführungsbeispiele definieren, dass dann, wenn eine unter der Adresse a1,1 gespeicherte und ausgelesene Bitfolge einen σ-Bit Fehler aufweist und σ ≤ τ gilt, die mit einem σ-Bit-Fehler fehlerhafte Bitfolge nicht mit einer korrigierten Bitfolge überschrieben oder zurückgeschrieben wird.
-
Weitere Ausführungsbeispiele definieren, dass in aufeinanderfolgenden Zeitpunkten in denen die ersten Speicherzellen unter der Adresse a1,1 gelesen werden und in denen ein Fehler in der ausgelesenen Bitfolge durch den Code Ccor korrigiert wird, die ersten Speicherzellen mit der korrigierten Bitfolge überschrieben werden und zu den Zeitpunkten, in denen die ersten Speicherzellen unter der Adresse a1,1 gelesen werden und in denen kein Fehler in der ausgelesenen Bitfolge durch den Code Ccor korrigiert wird, die ersten Speicherzellen nicht mit einer Bitfolge überschrieben werden.
-
Weitere Ausführungsbeispiele definieren, dass in aufeinanderfolgenden Zeitpunkten in denen die ersten Speicherzellen unter der Adresse a1,1 gelesen werden und in denen kein Fehler in der ausgelesenen Bitfolge durch den Code Ccor korrigiert oder erkannt wird, die ersten Speicherzellen mit der ausgelesenen Bitfolge überschrieben werden.
-
Weitere Ausführungsbeispiele definieren, dass die geschätzte Wahrscheinlichkeit, dass eine unter der ersten Adresse a1,1 zu einem Zeitpunkt t in den ersten Speicherzellen gespeicherte fehlerfreie Bitfolge zu einem Zeitpunkt t + Δt fehlerhaft ist, unter Verwendung eines Wertes mindestens eines physikalischen Parameters bestimmt ist.
-
Weitere Ausführungsbeispiele definieren, dass der Wert des mindestens einen physikalischen Parameters der Wert des Schreibstromes oder der Wert des Lesestrom einer Speicherzelle ist.
-
Weitere Ausführungsbeispiele definieren, dass unter der Adresse a1,1 eine Bitfolge gespeichert ist, die aus Datenbits und Prüfbits besteht, wobei die Datenbits und die Prüfbits im fehlerfreien Fall ein Codewort des fehlerkorrigierenden Codes Ccor bilden.
-
Weitere Ausführungsbeispiele definieren, dass unter der Adresse a1,1 eine Bitfolge gespeichert ist, die aus Datenbits und Prüfbits besteht, wobei die Datenbits und die Prüfbits und die Adressenbits der Adresse a1,1 oder aus den Adressenbits der Adresse a1,1 abgeleitete Bits im fehlerfreien Fall ein Codewort des fehlerkorrigierenden Codes Ccor bilden.
-
Weitere Ausführungsbeispiele definieren, dass der Speicher neben der Adresse a1,1 weitere Adressen a1,2, ..., a1,m mit m > 1 aufweist, die eine erste Teilmenge α1 = {a1,2, ..., a1,m} bilden und neben der Adresse a2,1 weitere Adressen a2,2, ..., a2,M mit M > 1 aufweist, die eine zweite Teilmenge α2 = {a2,2, ..., a2,M} bilden, wobei die geschätzte Wahrscheinlichkeit, dass eine unter einer Adresse a1,i mit i ∈ {1, ..., m} zu einem Zeitpunkt t in den ersten Speicherzellen gespeicherte fehlerfreie Bitfolge zu einem Zeitpunkt t + Δt fehlerhaft ist, größer ist als die Wahrscheinlichkeit, dass eine unter einer Adresse a2,j mit j ∈ {1, ..., M} in den zweiten Speicherzellen zu dem Zeitpunkt t gespeicherte korrekte Bitfolge zu dem Zeitpunkt t + Δt fehlerhaft ist, wobei Δt > 0 ist und die unter der Adresse a1,i und der Adresse a2,j gespeicherten Bitfolgen im fehlerfreien Fall jeweils Bits eines Codewortes eines fehlerkorrigierenden Codes Ccor sind, wobei die Speicherzellen unter der Adresse a1,i häufiger in aufeinanderfolgenden Zeitpunkten gelesen werden und dann, wenn die ausgelesene Bitfolge fehlerhaft ist und die fehlerhafte Bitfolge unter Verwendung des Codes Ccor korrigiert werden kann, mit einer aus der ausgelesenen Bitfolge bestimmten, unter Verwendung des Codes Ccor korrigierten Bitfolge überschrieben werden als die Speicherzellen unter der Adresse a2,1.
-
Weitere Ausführungsbeispiele definieren, dass die Teilmenge α1 beim Start-up bestimmt wird.
-
Weitere Ausführungsbeispiele definieren, dass die erste Teilmenge α1 oder die zweite Teilmenge α2 in einem flüchtigen Speicher gespeichert wird.
-
Weitere Ausführungsbeispiele definieren, dass die erste Teilmenge α1 oder die zweite Teilmenge α2 in einem nicht-flüchtigen Speicher gespeichert wird.
-
Weitere Ausführungsbeispiele definieren, dass die Teilmenge α1 in dem gleichen Speicher gespeichert wird, wo auch die unter der Adresse a1,1 gespeicherte Binärfolge gespeichert wird.
-
Weitere Ausführungsbeispiele definieren, dass die Teilmenge α1 in einem Speicher gespeichert wird, wo die unter der Adresse a1,1 gespeicherte Binärfolge nicht gespeichert wird.
-
Weitere Ausführungsbeispiele definieren, dass die Menge α1 in Abhängigkeit von beim Auslesen von in dem Speicher gespeicherten Binärfolgen aufgetretenen Fehlern oder von beim Schreiben in den Speicher oder beim Auslesen aus dem Speicher bestimmten Werten physikalischer Parameter verändert wird.
-
Weitere Ausführungsbeispiele definieren, dass die Binärfolgen, die unter den Adressen a1,1, ..., a1,m gespeichert sind, Bits eines t-Bit-Fehler erkennenden/korrigierenden Codes mit t ≥ 1 sind und wobei dann, wenn beim Auslesen von unter einer Adresse a, wobei die Adresse a kein Element von α1 ist, gespeicherten Binärfolge für ein vorgegebenes τ ein τ-Bit Fehler mit 1 τ ≤ t erkannt wird, a zu der Menge α1 hinzugefügt wird.
-
Weitere Ausführungsbeispiele definieren, dass eine Adresse a vorhanden ist, die in einem Reparaturverfahren durch eine andere Adresse ersetzt wird.
-
Weitere Ausführungsbeispiele definieren, dass eine Menge αper von Adressen vorhanden ist, so dass Speicherzellen, die unter einer Adresse aus der Menge αper gespeichert sind, mit einer geschätzten Wahrscheinlichkeit ppper eine Speicherzelle mit einem permanenten Fehler aufweisen, pper ≥ SWper ist, wobei SWper ein Schwellenwert mit 0 < SWper ≤ 1 ist und wobei Speicherzellen, die durch eine Adresse a ∈ αper adressiert werden und für die ein Fehler erkannt wird, mit einer bitweise invertierten Binärfolge beschrieben werden.
-
Weitere Ausführungsbeispiele definieren, dass eine Adresse a1,j der Menge α1 aus der Menge α1 entfernt wird, wenn bei einem S-maligem Lesen dieser Adresse kein Fehler aufgetreten ist und 1 < S ist.
-
Weitere Ausführungsbeispiele definieren, dass die Bits der Adresse a1,1 redundant in Speicherzellen gespeichert sind, so dass mindestens 1-Bit Fehler in den Adressenbits der Adresse a1,1 erkannt und/oder korrigiert werden können.
-
Vorangehend beschriebene Ausführungsbeispiele ermöglichen, unzuverlässigere Speicherzellen, die eine höhere Fehlerwahrscheinlichkeit aufweisen, häufiger auszulesen. Gleichzeitig ermöglichen Ausführungsbeispiele, eine Effizienz von Korrekturmechanismen in einem hohen Umfang beizubehalten, da Speicherzellen, die keine höhere Fehlerwahrscheinlichkeit aufweisen, nicht häufiger ausgelesen werden. Bei einer höheren Wahrscheinlichkeit für das Vorliegen einer fehlerhaften Bitfolge in den ersten Speicherzellen gegenüber der Wahrscheinlichkeit für das Vorliegen einer fehlerhaften Bitfolge in den zweiten Speicherzellen kann die Häufigkeit des Auslesens in aufeinanderfolgenden Zeitpunkten der ersten Speicherzellen höher sein als die Häufigkeit des Auslesens in aufeinanderfolgenden Zeitpunkten der zweiten Speicherzellen.
-
Vorangehend beschriebene Ausführungsbeispiele ermöglichen, dass eine Teilmenge von Adressen eines MRAMs bestimmt wird, die Speicherzellen adressieren, die mit einer relativ großen Wahrscheinlichkeit Fehler aufweisen und beispielsweise eine geringe thermische Stabilität haben, wobei die unter diesen Adressen gespeicherten fehlerfreien Bitfolgen Bits eines Codewortes eines fehlerkorrigierenden Codes Ccor sind. Nur dann, wenn in den ausgelesenen Bits ein durch den Code Ccor korrigierbarer Fehler auftritt, wird der Fehler korrigiert und die korrigierten Bits werden in das MRAM beispielsweise unter der gleichen Adresse gespeichert, unter der die Bits ausgelesen wurden.
-
Dabei ist es möglich, dass Speicherzellen, die mit einer relativ großen Wahrscheinlichkeit Fehler aufweisen, häufiger zum Zwecke der Fehlerkorrektur adressiert werden als andere Speicherzellen, die mit einer relativ großen Wahrscheinlichkeit keine Fehler aufweisen.
-
Dadurch, dass die Anzahl der Speicherzellen, die eine relativ große Wahrscheinlichkeit für Fehler aufweisen, verhältnismäßig klein ist und dass auch nur dann ein Rückschreiben korrigierter Daten erfolgt, wenn in einer adressierten Speicherzelle tatsächlich ein Fehler aufgetreten ist, wird der Aufwand für das Korrigieren reduziert.
-
Dabei ist es möglich, dass die Wahrscheinlichkeit, dass ein Fehler in einer Speicherzelle auftritt, auf Grund von Messungen physikalischer Parameter beim Schreiben oder beim Lesen geschätzt oder vorhergesagt wird. Ein derartiger Parameter kann beispielsweise ein Schreibstrom, eine Schreibdauer oder ein Lesestrom sein. Dabei ist es nicht notwendig, konkrete Zahlenwerte für diese Wahrscheinlichkeit vorherzusagen. Oftmals ist es ausreichend, vorherzusagen, dass die betrachtete Speicherzelle mit einer kleinen Wahrscheinlichkeit oder mit einer großen Wahrscheinlichkeit fehlerhaft ist.
-
Es ist aber auch möglich, eine Wahrscheinlichkeit auf Grund von statistischen Beobachtungen der aufgetretenen Fehler zu schätzen oder eine auf Grund von Messungen von physikalischen Parametern geschätzte Wahrscheinlichkeit auf Grund von Beobachtungen von Fehlern zu modifizieren. Im Folgenden sprechen wir von einer geschätzten oder vorhergesagten Wahrscheinlichkeit. Es ist dabei möglich, dass es sich um einen geschätzten Zahlenwert für diese Wahrscheinlichkeit oder um die Aussage handelt, dass die Wahrscheinlichkeit einen relativ kleinen oder einen relativ großen Wert annimmt.
-
Die Auswahl der Adressen kann beispielsweise dadurch erfolgen, dass feststellt wird, etwa durch die Speichersteuerung, dass unter der Adresse mindestens eine Speicherzelle adressiert wird, die eine große Wahrscheinlichkeit hat, fehlerhaft zu sein. Die Auswahl der Adressen kann aber auch dadurch erfolgen, dass feststellt wird, ob mindestens 2 oder mindestens 3 oder allgemein mehrere Speicherzellen von der Adresse adressiert werden, die eine große Wahrscheinlichkeit aufweisen, fehlerhaft zu sein.
-
Obwohl manche Aspekte im Zusammenhang mit einer Vorrichtung beschrieben wurden, versteht es sich, dass diese Aspekte auch eine Beschreibung des entsprechenden Verfahrens darstellen, sodass ein Block oder ein Bauelement einer Vorrichtung auch als ein entsprechender Verfahrensschritt oder als ein Merkmal eines Verfahrensschrittes zu verstehen ist. Analog dazu stellen Aspekte, die im Zusammenhang mit einem oder als ein Verfahrensschritt beschrieben wurden, auch eine Beschreibung eines entsprechenden Blocks oder Details oder Merkmals einer entsprechenden Vorrichtung dar.
-
Je nach bestimmten Implementierungsanforderungen können Ausführungsbeispiele der Erfindung ganz oder teilweise in Hardware oder in Software implementiert sein. Die Implementierung kann unter Verwendung eines digitalen Speichermediums, beispielsweise einer Floppy-Disk, einer DVD, einer Blu-ray Disc, einer CD, eines ROM, eines PROM, eines EPROM, eines EEPROM oder eines FLASH-Speichers, einer Festplatte oder eines anderen magnetischen oder optischen Speichers durchgeführt werden, auf dem elektronisch lesbare Steuersignale gespeichert sind, die mit einem programmierbaren Computersystem derart zusammenwirken können oder zusammenwirken, dass das jeweilige Verfahren durchgeführt wird. Deshalb kann das digitale Speichermedium computerlesbar sein. Manche Ausführungsbeispiele gemäß der Erfindung umfassen also einen Datenträger, der elektronisch lesbare Steuersignale aufweist, die in der Lage sind, mit einem programmierbaren Computersystem derart zusammenzuwirken, dass eines der hierin beschriebenen Verfahren durchgeführt wird.
-
Allgemein können Ausführungsbeispiele der vorliegenden Erfindung als Computerprogrammprodukt mit einem Programmcode implementiert sein, wobei der Programmcode dahin gehend wirksam ist, eines der Verfahren durchzuführen, wenn das Computerprogrammprodukt auf einem Computer abläuft. Der Programmcode kann beispielsweise auch auf einem maschinenlesbaren Träger gespeichert sein.
-
Andere Ausführungsbeispiele umfassen das Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren, wobei das Computerprogramm auf einem maschinenlesbaren Träger gespeichert ist.
-
Mit anderen Worten ist ein Ausführungsbeispiel des erfindungsgemäßen Verfahrens somit ein Computerprogramm, das einen Programmcode zum Durchführen eines der hierin beschriebenen Verfahren aufweist, wenn das Computerprogramm auf einem Computer abläuft. Ein weiteres Ausführungsbeispiel der erfindungsgemäßen Verfahren ist somit ein Datenträger (oder ein digitales Speichermedium oder ein computerlesbares Medium), auf dem das Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren aufgezeichnet ist.
-
Ein weiteres Ausführungsbeispiel des erfindungsgemäßen Verfahrens ist somit ein Datenstrom oder eine Sequenz von Signalen, der bzw. die das Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren darstellt bzw. darstellen. Der Datenstrom oder die Sequenz von Signalen kann bzw. können beispielsweise dahin gehend konfiguriert sein, über eine Datenkommunikationsverbindung, beispielsweise über das Internet, transferiert zu werden.
-
Ein weiteres Ausführungsbeispiel umfasst eine Verarbeitungseinrichtung, beispielsweise einen Computer oder ein programmierbares Logikbauelement, die dahin gehend konfiguriert oder angepasst ist, eines der hierin beschriebenen Verfahren durchzuführen.
-
Ein weiteres Ausführungsbeispiel umfasst einen Computer, auf dem das Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren installiert ist.
-
Bei manchen Ausführungsbeispielen kann ein programmierbares Logikbauelement (beispielsweise ein feldprogrammierbares Gatterarray, ein FPGA) dazu verwendet werden, manche oder alle Funktionalitäten der hierin beschriebenen Verfahren durchzuführen. Bei manchen Ausführungsbeispielen kann ein feldprogrammierbares Gatterarray mit einem Mikroprozessor zusammenwirken, um eines der hierin beschriebenen Verfahren durchzuführen. Allgemein werden die Verfahren bei einigen Ausführungsbeispielen seitens einer beliebigen Hardwarevorrichtung durchgeführt. Diese kann eine universell einsetzbare Hardware wie ein Computerprozessor (CPU) sein oder für das Verfahren spezifische Hardware, wie beispielsweise ein ASIC.
-
Die oben beschriebenen Ausführungsbeispiele stellen lediglich eine Veranschaulichung der Prinzipien der vorliegenden Erfindung dar. Es versteht sich, dass Modifikationen und Variationen der hierin beschriebenen Anordnungen und Einzelheiten anderen Fachleuten einleuchten werden. Deshalb ist beabsichtigt, dass die Erfindung lediglich durch den Schutzumfang der nachstehenden Patentansprüche und nicht durch die spezifischen Einzelheiten, die anhand der Beschreibung und der Erläuterung der Ausführungsbeispiele hierin präsentiert wurden, beschränkt sei.