-
HINTERGRUND
-
Die vorliegende Erfindung bezieht sich auf Verwalten von Speichern und insbesondere Auslesen von Fehlervektoren aus einer Speichereinheit.
-
Eine Speichereinheit wie beispielsweise ein dynamischer Direktzugriffsspeicher (DRAM) enthält üblicherweise die Möglichkeit der Fehlerkorrektur. Fehlerkorrektur-Codier-Bits (ECC-Bits) werden über einen Codierer in Daten codiert, die in dem DRAM gespeichert sind. Wenn die Daten aus dem DRAM ausgelesen werden, wird ein Decodierer verwendet, um auf der Grundlage der ECC-Bits korrekte Daten zu erhalten. Der Decodierer erzeugt einen Fehlervektor, der mit den Rohdaten (in einer XOR-Operation) verknüpft wird, um die korrigierten Daten zu erhalten.
-
KURZDARSTELLUNG
-
Gemäß einer Ausführungsform enthält ein System zur Speicherverwaltung eine Steuereinheit, die so eingerichtet ist, dass sie einen Lesebefehl empfängt und eine Speichereinheit anhand des Lesebefehls steuert; wobei die Speichereinheit so eingerichtet ist, dass sie Rohdaten und Fehlerkorrektur-Codier-Bits (ECC-Bits) speichert und die Rohdaten mit den ECC-Bits, die der Speicheradresse entsprechen, die in dem Lesebefehl angegeben ist, ausgeben kann; einen ECC-Decodierer, der so eingerichtet ist, dass er einen Fehlervektor, der den Speicheradressen zugehörig ist, auf der Grundlage der Rohdaten und der ECC-Bits, die den Speicheradressen entsprechen, die durch die Speichereinheit ausgegeben werden, ausgibt, wobei der Fehlervektor, der den Speicheradressen zugehörig ist, Fehler in den Rohdaten angibt, die den Speicheradressen entsprechen; und einen Multiplexer (MUX), der so eingerichtet ist, dass er den Fehlervektor auf der Grundlage einer Auswahl ausgibt, die in dem Lesebefehl angegeben ist.
-
Gemäß einer weiteren Ausführungsform beinhaltet ein Verfahren zum Verwalten von Ausgabedaten, die aus einer Speichereinheit stammen, die Rohdaten und Fehlerkorrektur-Codier-Bits (ECC-Bits) speichert, Empfangen eines Lesebefehls, wobei der Lesebefehl eine Spezifikation einer oder mehrerer Speicheradressen in der Speichereinheit enthält; aus der Speichereinheit Ausgeben der Rohdaten, die der einen oder den mehreren Speicheradressen entsprechen, und der ECC-Bits, die der einen oder den mehreren Speicheradressen entsprechen; Decodieren der Rohdaten und der ECC-Bits, die der einen oder den mehreren Speicheradressen entsprechen, um einen Fehlervektor auszugeben, der der einen oder den mehreren Speicheradressen zugehörig ist, wobei der Fehlervektor, der der einen oder den mehreren Speicheradressen zugehörig ist, Fehler in den Rohdaten angibt, die der einen oder den mehreren Speicheradressen entsprechen, und Ausgeben des Fehlervektors, der der einen oder den mehreren Speicheradressen zugehörig ist, als Ausgabedaten anhand einer Auswahl, die in dem Lesebefehl angegeben ist.
-
Zusätzliche Merkmale und Vorteile werden durch die Techniken der vorliegenden Erfindung realisiert. Weitere Ausführungsformen und Aspekte der Erfindung werden hier genau beschrieben und als Teil der beanspruchten Erfindung betrachtet. Für ein besseres Verständnis der Erfindung mit den Vorteilen und den Merkmalen sollte auf die Beschreibung und die Zeichnungen Bezug genommen werden.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Der erfindungsgemäße Gegenstand wird am Ende der Spezifikation speziell hervorgehoben und eindeutig beansprucht. Die vorhergehenden und weitere Merkmale sowie Vorteile der Erfindung werden aus der nachfolgenden genauen Beschreibung deutlich, die in Verbindung mit den beigefügten Zeichnungen erfolgt, in denen:
-
1 ein Blockschaltbild eines Systems zur Speicherverwaltung gemäß einer Ausführungsform der Erfindung ist;
-
2 die Ausgabedaten veranschaulicht, die sich aus zwei unterschiedlichen Befehlen gemäß einer Ausführungsform ergeben;
-
3 die Ausgabedaten veranschaulicht, die sich aus zwei unterschiedlichen Befehlen gemäß einer weiteren Ausführungsform ergeben;
-
4 die Ausgabedaten veranschaulicht, die sich aus zwei unterschiedlichen Befehlen gemäß einer nochmals weiteren Ausführungsform ergeben;
-
5 einen beispielhaften Kompressionsalgorithmus für einen beispielhaften Fehlervektor gemäß einer Ausführungsform zeigt;
-
6 beispielhafte Daten- und Fehlervektorbits im Fall eines korrigierbaren Fehlers gemäß Ausführungsformen veranschaulicht;
-
7 beispielhafte Daten- und Fehlervektorbits im Fall eines nichtkorrigierbaren Fehlers gemäß Ausführungsformen veranschaulicht;
-
8 beispielhafte Daten- und Fehlervektorbits im Fall eines nichtkorrigierbaren Fehlers gemäß einer weiteren Ausführungsform veranschaulicht;
-
9 veranschaulicht Fehlervektoren für verschiedene Szenarien gemäß einer Ausführungsform;
-
10 Fehlervektoren für verschiedene Szenarien gemäß einer weiteren Ausführungsform veranschaulicht;
-
11 eine beispielhafte Umsetzung des Befehls-Decodierers des Systems zur Speicherverwaltung gemäß einer Ausführungsform ist;
-
12 ein Prozessablauf eines Verfahrens zum Verwenden des Fehlervektors ist, der gemäß Ausführungsformen erhalten wird;
-
13 ein Prozessablauf eines weiteren Verfahrens zum Verwenden des Fehlervektors ist, der gemäß Ausführungsformen erhalten wird; und
-
14 ein Prozessablauf eines nochmals weiteren Verfahrens zum Verwenden des Fehlervektors ist, der gemäß Ausführungsformen erhalten wird.
-
GENAUE BESCHREIBUNG
-
Wie oben angegeben werden ECC-Bits, die in Daten codiert werden, die in einer Speichereinheit (z.B. ein DRAM) gespeichert werden, verwendet, um beim Auslesen aus der Speichereinheit korrekte Daten zu erhalten. Alle Fehler in den Rohdaten, die in der Speichereinheit gespeichert werden, werden durch Verknüpfen der Rohdaten mit decodierten ECC-Bits korrigiert, die ebenfalls gespeichert werden. Im Einzelnen erzeugt das Decodieren der ECC-Bits einen Fehlervektor, der mit den Rohdaten (z.B. mittels XOR) verknüpft wird, um korrigierte Daten bereitzustellen. Zwar werden die korrigierten Daten, die mit dem Fehlervektor erhalten werden, bereitgestellt, der eigentliche Fehlervektor steht jedoch aktuell nicht zur Verfügung. Der Fehlervektor kann jedoch verwendet werden, um Informationen zu erhalten, die eine bessere Speicherverwaltung ermöglichen. Beispielsweise gibt der Fehlervektor, der Adressinformationen enthält, die Adresspositionen von Fehlern an, ermöglicht ein Überwachen von Fehlern (z.B. ihre Häufigkeit, die Konzentration in bestimmten Speicherpositionen) und des Korrekturumfangs, der erforderlich wäre, um die korrigierten Daten zu erhalten. Diese Beispiele sind in Bezug auf die Informationen, die aus dem Fehlervektor erhalten werden können, nicht erschöpfend. Früher konnte eine Flagpin-Anzeige oder ein anderer Mechanismus verwendet werden, um der Speichersteuereinheit einen Fehler anzugeben. Die Speichersteuereinheit musste jedoch die Leseoperation unterbrechen und das interne Register der Speichereinheit lesen, um die Speicherposition des Fehlers zu ermitteln. Zwar würden zusätzliche Flagpins die Notwendigkeit des Prozesses vermeiden, sie stellen jedoch eine Nutzung bedeutender zusätzlicher Ressourcen dar. Ausführungsformen der Systeme und Verfahren, die hier genau beschrieben werden, betreffen ein Erhalten des Fehlervektors ohne eine Einbuße bei der Leistungsfähigkeit oder die Notwendigkeit zusätzlicher Ressourcen. Das heißt, bei den nachfolgend erläuterten Ausführungsformen handelt es sich nicht wie bei früheren Konzepten um Konzepte zum Unterbrechen und Prüfen bzw. sie erfordern keine zusätzlichen Pins oder weitere Ressourcen.
-
1 ist ein Blockschaltplan eines Systems 100 zur Speicherverwaltung gemäß einer Ausführungsform der Erfindung. Auf das System 100 zur Speicherverwaltung kann durch eine Speichersteuereinheit 10 zugegriffen werden, die auf eine beliebige Anzahl von Speichereinheiten 110 zugreift. Die Speichersteuereinheit 10 enthält eine oder mehrere Speichereinheiten, die Befehle speichern, und einen oder mehrere Prozessoren, die die Befehle umsetzen. Beispielhafte Prozesse, die durch die Speichersteuereinheit 10 ausgeführt werden, werden nachfolgend unter Bezugnahme auf die 12 bis 14 weiter erläutert. Eine Speichereinheit 110 wird gezeigt, in der Daten 113 und ECC-Bits 115 gespeichert sind. Die Daten 113 sind mit ECC-Bits 115 in der Speichereinheit 110 codiert. Ein Befehl 153, der in den Befehls-Decodierer 155 eingegeben wird, ergibt einen decodierten Befehl 155. Der Befehl 153 wird nachfolgend weiter erläutert und stammt möglicherweise von der Speichersteuereinheit 10. Auf der Grundlage des decodierten Befehls 155 wird ein Auslesen von Daten aus der Speichereinheit 110 ausgelöst. Ein Auslesen von Daten beinhaltet Auslesen von Rohdaten 113 sowie der ECC-Bits 115. Die Speicheradressen oder der Adressbereich, aus denen entsprechende Rohdaten 113 und ECC-Bits 115 aus der Speichereinheit 110 ausgegeben werden sollen, sind in dem Lesebefehl 153 spezifiziert. Der ECC-Decodierer 120 verwendet die Daten 113 und ECC-Bits 115 zum Erzeugen des Fehlervektors 125. Eine Komponente 130 (z.B. ein digitales Exklusiv-ODER-Logikgatter (XOR)) wirkt an den Rohdaten 113 und dem Fehlervektor 125, um die korrigierten Daten 135 auszugeben. Gemäß einer Ausführungsform gibt der Fehlervektor 125 die Position von Fehlern in den Rohdaten 113 an, die in den korrigierten Daten 135 korrigiert wurden. Weitere Ausführungsformen werden nachfolgend erläutert. Der decodierte Befehl 155 wird außerdem einem MUX 140 bereitgestellt und wird verwendet, um entweder die korrigierten Daten 135 oder den Fehlervektor 125 gemäß einer Ausführungsform als Ausgabedaten 145 auszugeben. Bei alternativen Ausführungsformen kann es sich bei den Ausgabedaten 145 des MUX 140 um die Rohdaten 113 handeln oder sie können eine komprimierte Version des Fehlervektors 125 enthalten, wie nachfolgend weiter erläutert wird. Der Befehl 153 kann ein oder mehrere Bits enthalten, die spezifizieren, ob es sich bei den Ausgabedaten 145 um den Fehlervektor 125 handeln sollte (z.B. Bit EV = 0, wenn der Fehlervektor 125 nicht ausgegeben werden soll, und EV = 1, wenn der Fehlervektor 125 ausgegeben werden soll). Bei einer alternativen Ausführungsform können dasselbe eine oder dieselben mehreren Bits oder eine andere Gruppe von Bits verwendet werden, um zu spezifizieren, ob es sich bei den Ausgabedaten 145, die durch den MUX 140 ausgegeben werden, um die Rohdaten 113 handeln sollte. Nachfolgend werden weitere Ausführungsformen erläutert, bei denen andere Optionen der Ausgabedaten 145 spezifiziert werden. Die Ausgabedaten 145 können der Speichersteuereinheit 10 bereitgestellt werden. Beispielhafte Auslesevorgänge werden nachfolgend erläutert.
-
Die 2 bis 4 veranschaulichen beispielhafte Auslesevorgänge gemäß drei unterschiedlichen Ausführungsformen. Bei jeder Ausführungsform hat ein Eingabebefehl 153 bestimmte Ausgabedaten 145 von dem MUX 140 zur Folge. Zwar wird die Ausführungsform, bei der anstelle von korrigierten Daten 135 Rohdaten 113 als Ausgabedaten 145 ausgegeben werden, nicht explizit erläutert, Rohdaten 113 können in jeder der in den 2 bis 4 gezeigten Ausführungsformen auf der Grundlage des Befehls 153 ausgegeben werden. Das kann realisiert werden, indem ein Bit (z.B. RV) in dem Befehl 153 gesetzt wird, um anzugeben, dass die Rohdaten 113 durch den MUX 140 als Ausgabedaten 145 ausgegeben werden sollten.
-
2 veranschaulicht die Ausgabedaten 145, die sich aus zwei unterschiedlichen Befehlen 153 gemäß einer Ausführungsform ergeben. Der erste Befehl 153 (Read1) enthält das auf 0 gesetzte Fehlervektorbit (z.B. EV), das angibt, dass der Fehlervektor 125 nicht ausgegeben werden soll. Folglich werden korrigierte Daten 135 (oder alternativ Rohdaten 113) ausgegeben, wie durch den Pfeil in 2 angegeben. Bei den beispielhaften korrigierten Daten 135 handelt es sich in 2 um 32 Bits, es ist jedoch nicht vorgesehen, dass die Länge der korrigierten Daten 135 oder die Anordnung des Datenbusses, der die Ausgabedaten 145 bereitstellt, durch das Beispiel eingeschränkt wird. Wenn ein anderer Befehl 153 (Read2) ausgegeben wird, wobei EV auf 1 gesetzt ist, wodurch angegeben wird, dass der Fehlervektor 125 ausgegeben werden soll, wird der Fehlervektor 125 als Ausgabedaten 145 bereitgestellt. Der Befehl 153 (Read2 mit EV = 1) kann nach einer bestimmten festgelegten Anzahl von regulären Lesebefehlen 153 (Read1 mit EV = 0) (beispielsweise nach jeweils 100 Lesebefehlen) ausgegeben werden oder kann auf der Grundlage eines Ereignisses oder gemäß einem anderen Auslöseereignis ausgegeben werden.
-
3 veranschaulicht die Ausgabedaten 145, die sich aus zwei unterschiedlichen Befehlen 153 gemäß einer weiteren Ausführungsform ergeben. Der erste Befehl 153 (Read1) enthält das auf 0 gesetzte Fehlervektorbit (z.B. EV), das angibt, dass der Fehlervektor 125 nicht ausgegeben werden soll. Folglich und ähnlich wie bei der in 2 gezeigten Ausführungsform werden korrigierte Daten 135 als Ausgabedaten 145 ausgegeben. Bei alternativen Ausführungsformen können anstelle von korrigierten Daten 135 Rohdaten 113 als Ausgabedaten 145 ausgegeben werden. Wenn ein anderer Befehl 153 (Read2) ausgegeben wird, bei dem EV auf 1 gesetzt wurde, ist das Ergebnis gemäß der vorliegenden Ausführungsform anders als bei der in 2 veranschaulichten Ausführungsform. Wenn EV auf 1 gesetzt ist, werden sowohl die korrigierten Daten 135 (oder Rohdaten 113) als auch der Fehlervektor 125 als Ausgabedaten 145 ausgegeben. Folglich werden bei dem beispielhaft dargestellten Fall, bei dem es sich bei den Daten um 32 Bit handelt, 64 Bits als Ausgabedaten 145 ausgegeben, wenn EV auf 1 gesetzt wurde. Die Adressbereiche der korrigierten Daten 135, die ausgegeben werden, wenn EV = 0 und wenn EV = 1, können unterschiedlich sein (könnten jedoch auch gleich sein) und hängen von dem Adressbereich ab, der in dem Befehl 153 spezifiziert ist. Ein Vergleich der 2 und 3 gibt an, dass die in 3 gezeigte Ausführungsform ein Auslesen des Fehlervektors 125 zusammen mit einem Auslesen von Daten (113 oder 135) ermöglicht, jedoch infolge der zusätzlichen Bits in den Ausgabedaten 145 eine längere Zeit erfordert. Tatsächlich wird für die in 3 gezeigte Ausführungsform (für Read2) im Vergleich mit der in 2 gezeigten Ausführungsform die doppelte Zeit benötigt.
-
4 veranschaulicht die Ausgabedaten 145, die sich aus zwei unterschiedlichen Befehlen 153 gemäß einer nochmals weiteren Ausführungsform ergeben. 4 zeigt eine Ausführungsform, die einen Kompromiss zwischen den in den 2 und 3 gezeigten Ausführungsformen darstellt. Für den ersten Befehl 153 (Read1), bei dem EV auf 0 gesetzt ist, handelt es sich bei den Ausgabedaten 145 wiederum um die korrigierten Daten 135 (oder Daten 113). Wenn ein anderer Befehl 153 (Read2) ausgegeben wird, bei dem EV auf 1 gesetzt ist, enthalten die resultierenden Ausgabedaten 145 einen komprimierten Fehlervektor 125‘ zusammen mit den korrigierten Daten 135. Das heißt, der Fehlervektor (in dem in 3 gezeigten Beispiel mit einer Länge von 8 Bit für jede Busleitung) ist (auf 2 Bit) komprimiert. Das Komprimieren kann gemäß dem in 5 gezeigten beispielhaften Algorithmus ausgeführt werden. Diese Ausführungsform stellt einen Kompromiss zwischen den in den 2 und 3 gezeigten Ausführungsformen dar, da keine Informationen von dem Fehlervektor 125 anstelle von Daten (135 oder 113) wie das in der in 2 gezeigten Ausführungsform der Fall ist, sondern weniger Daten befördert werden und somit im Vergleich zu der in 3 gezeigten Ausführungsform eine kürzere Zeit erforderlich ist, um die Ausgabedaten 145 bereitzustellen, wenn EV auf 1 gesetzt ist. 5 zeigt einen beispielhaften Kompressionsalgorithmus für einen beispielhaften Fehlervektor gemäß einer Ausführungsform. Die Tabelle 510 gibt an, wie vier Bit zu einem Bit komprimiert werden. Das Zeichen ║ in der Tab 510 gibt eine logische ODER-Operation an.
-
6 veranschaulicht beispielhafte Daten- und Fehlervektorbits bei einem korrigierbaren Fehler gemäß Ausführungsformen. Die Rohdaten 113 enthalten ein Bit (schattiert), das einen Fehler enthält. Dieses Bit ist in den korrigierten Daten 135 korrigiert und wird als ein Fehler in dem entsprechenden Bit des Fehlervektors 125 angegeben. Bei den Ausgabedaten 145 handelt es sich um die korrigierten Daten 135, wenn das Fehlervektorbit (EV) auf 0 gesetzt ist. Bei den Ausgabedaten 145 kann es sich um eine von drei unterschiedlichen Gruppen von Bits handeln, wenn EV auf 1 gesetzt ist, gemäß den Ausführungsformen, die oben unter Bezugnahme auf die 2 bis 4 erläutert wurden. Bei den Ausgabedaten 145 kann es sich nur um den Fehlervektor 125 (wie in 3 gezeigt), die korrigierten Daten 135 und den Fehlervektor 125 (wie in 3 gezeigt) oder die korrigierten Daten 135 und eine komprimierte Version des Fehlervektors 125‘ (wie in 4 gezeigt) handeln. Das in 6 gezeigte Beispiel enthält einen korrigierbaren Fehler. Beispielhafte Ausführungsformen, die Muster enthalten, um nichtkorrigierbare Fehler anzugeben, werden nachfolgend erläutert.
-
7 veranschaulicht beispielhafte Daten- und Fehlervektorbits bei einem nichtkorrigierbaren Fehler gemäß einer Ausführungsform. Die Rohdaten 113 enthalten zwei Bit (schattiert) mit Fehlern. Die Bits mit Fehlern sind gegebenenfalls nichtkorrigierbar, da Informationen darüber, welches Bit im Einzelnen fehlerhaft ist, z.B. durch die ECC-Bits 115 möglicherweise nicht zur Verfügung stehen. Somit sind die Fehler erkennbar, aber nichtkorrigierbar. Gemäß der vorliegenden Ausführungsform sind in diesem Fall die korrigierten Daten 135 gleich den Rohdaten 113, bei dem Fehlervektor 125 handelt es sich jedoch um ein im Voraus definiertes Muster (z.B. bei dem Beispiel nur ‚1‘), das einen oder mehrere nichtkorrigierbare Fehler angibt. 8 veranschaulicht beispielhafte Daten- und Fehlervektorbits bei einem nichtkorrigierbaren Fehler gemäß einer weiteren Ausführungsform. Bei der in 8 gezeigten Ausführungsform handelt es sich sowohl bei den korrigierten Daten 135 als auch bei dem Fehlervektor 125 um im Voraus definierte Muster (wobei es sich um das gleiche oder verschiedene Muster handeln könnte), die das Vorhandensein von nichtkorrigierbaren Daten in den Rohdaten 113 angeben.
-
9 veranschaulicht Fehlervektoren 125 für unterschiedliche Szenarien 910 bis 940 gemäß einer Ausführungsform. Gemäß der Ausführungsform, die durch 9 veranschaulicht ist, gibt der Fehlervektor 125 Fehlerbits unter den ECC-Bits 115 sowie in den Rohdaten 113 an. Bei dem Szenario 910, bei dem weder in den Rohdaten 113 noch in den ECC-Bits 115 Fehler vorhanden sind, weist der Fehlervektor 125 nur Nullen auf. Bei dem Szenario 920 mit einem korrigierbaren Fehler in den Rohdaten 113 und ohne Fehler in den ECC-Daten 115, ist das entsprechende Bit in dem Fehlervektor 125 auf 1 gesetzt (wobei alle anderen Bits auf 0 gesetzt sind). Bei dem Szenario 930 gibt es keine Fehler in den Rohdaten 113, aber es ist ein Fehler bei einem der ECC-Bits 115 vorhanden. Es wird angemerkt, dass die Anzahl von Bits des Fehlervektors 125 gleich der Anzahl von Bits der Rohdaten 113 ist, so dass keine Ersatzbits vorhanden sind, um Fehler in den ECC-Bits 115 anzugeben, wobei ein Muster (das für die schattierten Bits gezeigt ist) verwendet wird, um anzugeben, dass ein Fehler in den ECC-Bits 115 bei den Bits 935 gezeigt wird. Das Bit in dem Fehlervektor 125 innerhalb der Bits 935, das dem fehlerhaften ECC-Bit 115 entspricht, ist auf 1 gesetzt, während die anderen Bits innerhalb der Bits 935 auf 0 gesetzt sind. Bei dem Szenario 940 wird ein nichtkorrigierbarer Fehler in den Rohdaten 113 erkannt. In diesem Fall wird der Fehlervektor 125 mit einem Muster erzeugt, das den in den 7 und 8 gezeigten Ausführungsformen ähnlich ist. Es sei angemerkt, dass die Szenarien 910 bis 940 nichterschöpfend sind (z.B. Kombinationen der Szenarien 910 bis 940).
-
10 veranschaulicht Fehlervektoren 125 für unterschiedliche Szenarien 1010 bis 1050 gemäß einer weiteren Ausführungsform. Gemäß der Ausführungsform, die durch die 10 veranschaulicht ist, gibt der Fehlervektor 125 Fehler nicht nur bei den Rohdaten 113, auf die zugegriffen wird, und den ECC-Bits 115 an, sondern auch bei Rohdaten 113, auf die nicht zugegriffen wird. Diese Ausführungsform bezieht sich auf ECC-Bits 115, die über Daten 113, auf die zugegriffen wird, und über Daten 113‘, auf die nicht zugegriffen wird, berechnet werden. Die Speichereinheit 110 verwendet die ECC-Bits 115 und ein zusätzliches Bit, um die doppelte Anzahl von Daten 113 abzudecken (z.B. 64 Bits anstelle von lediglich 32 Bits). Die Daten 113‘, auf die nicht zugegriffen wird, werden in der Speichereinheit 110 gespeichert, jedoch in den hier erläuterten Beispielen nicht als Rohdaten ausgelesen. Wenn in den Daten 113, auf die zugegriffen wird, den Daten 113‘, auf die nicht zugegriffen wird, oder ECC-Bits 115 wie in dem Szenario 1010 keine Fehler vorhanden sind, enthält der Fehlervektor 125 nur Nullen. Wenn wie in dem Szenario 1020 ein korrigierbarer Fehler in den Daten 113, auf die zugegriffen wird, vorhanden ist, wird das Fehlerbit in einem entsprechenden Bit des Fehlervektors 125 angegeben. Wenn die Daten 113‘, auf die nicht zugegriffen wird, wie im Szenario 1030 einen korrigierbaren Fehler enthalten, handelt es sich bei dem Fehlervektor um ein Muster, das angibt, dass in einem der beiden Datengruppen (113, 113‘), die den ECC-Bits 115 zugehörig sind, in Fehler vorhanden ist. Alternativ kann der Fehlervektor 125 lediglich aus Nullen bestehen, um anzugeben, dass die Daten 113, auf die zugegriffen wird, keinen Fehler enthalten. Bei dem Szenario 1040 gibt es einen korrigierbaren Fehler bei den ECC-Bits 115. Bei diesem Szenario 1040 ergibt sich ein Muster ähnlich wie beim Szenario 930 und außerdem eine Angabe in dem Fehlervektor 125 des fehlerhaften Bit unter den ECC-Bits 115. Wenn es in den Daten 113, auf die zugegriffen wird, einen nichtkorrigierbaren Fehler gibt wie im Szenario 1050, handelt es sich bei dem Fehlervektor 125 um ein Muster ähnlich wie beim Szenario 940.
-
11 ist eine beispielhafte Umsetzung des Befehls-Decodierers 150 des Systems 100 zur Speicherverwaltung gemäß einer Ausführungsform. Die verschiedenen Bits, die als Befehl 153 gesetzt sind, der in den Decodierer 150 eingegeben wird, enthalten das Bit EV. Wie 11 angibt, kann ein Betriebsartregister 1110 verwendet werden, um das Auslesebit EV freizugeben oder zu sperren.
-
Die 12 bis 14 veranschaulichen beispielhafte Prozessabläufe, die durch die Speichersteuereinheit 10 umgesetzt werden, die das System 100 zur Speicherverwaltung verwendet. 12 ist ein Prozessablauf eines Verfahrens zum Verwenden des Fehlervektors, der gemäß hier erläuterter Ausführungsformen erhalten wird. Die vorliegende Ausführungsform bezieht sich beispielsweise auf einen regulären Lesevorgang. Im Block 1210 erfolgt eine Leseoperation, wobei EV auf 0 gesetzt ist, was anzeigt, dass der Fehlervektor 125 nicht ausgegeben werden sollte. Es erfolgt im Block 1220 ein Ermitteln, ob es sich bei den korrigierten Daten 135 um ein im Voraus definiertes Muster handelt. Wie beispielsweise in 8 gezeigt, können die korrigierten Daten 135, wenn sie ein im Voraus definiertes Muster aufweisen, einen nichtkorrigierbaren Fehler angeben. Wenn es sich bei den korrigierten Daten 135 um ein im Voraus definiertes Muster handelt, erfolgt im Block 1230 ein weiterer Lesevorgang (Read2), wobei EV auf 1 gesetzt ist, was anzeigt, dass der Fehlervektor 125 ausgegeben werden sollte. Auf der Grundlage anderer Bits, die gemäß verschiedenen Ausführungsformen, die oben erläutert wurden, in dem Befehl 153 gesetzt sind, kann dieser zweite Lesevorgang zusätzlich verlangen, dass Rohdaten 113 oder korrigierte Daten 135 ausgegeben werden. Im Block 1240 wird auf der Grundlage des Fehlervektors 125 ermittelt, ob in den Rohdaten 113 ein nichtkorrigierbarer Fehler vorhanden ist. Wenn festgestellt wird, dass in den Rohdaten 113 ein nichtkorrigierbarer Fehler vorhanden ist, wird im Block 1250 eine Fehlerwiederherstellung verfolgt. Die Fehlerwiederherstellung kann durch bekannte Techniken ausgeführt werden. Wenn festgestellt wird, dass es sich bei den korrigierten Daten 135 nicht um ein im Voraus definiertes Muster handelt (im Block 1220) oder wenn festgestellt wird, dass in den Rohdaten 113 (im Block 1240) kein nichtkorrigierbarer Fehler vorhanden ist, wird der Prozess zum Fortsetzen einer normalen Operation im Block 1260 fortgesetzt. Dieser Prozess kann beispielsweise ein Lesen zusätzlicher Daten von der Speichereinheit 110 enthalten.
-
13 ist ein Prozessablauf eines weiteren Verfahrens zum Verwenden des Fehlervektors, der gemäß Ausführungsformen erhalten wird. Die vorliegende Ausführungsform bezieht sich beispielsweise auf einen Speicher-Bereinigungsprozess, bei dem Speicherpositionen der Speichereinheit 110 gelesen und bei Bedarf korrigiert werden. Speicherpositionen, bei denen Fehler bestehen bleiben, nachdem korrigierte Daten zurückgeschrieben wurden, gelten als harte Fehler, während Speicherpositionen, an denen kein Fehler bestehen bleibt, als weiche Fehler gelten. Im Block 1310 folgt einem ersten Lesevorgang (Read1), wobei EV auf 0 gesetzt ist, was angibt, dass der Fehlervektor 125 nicht ausgegeben werden soll (d.h., lediglich Daten (113 oder 135) sollten ausgegeben werden), ein zweiter Lesevorgang (Read2), wobei EV auf 1 gesetzt ist, was angibt, dass der Fehlervektor 125 ausgegeben werden sollte. Im Block 1320 wird ermittelt, ob in den Daten (113 oder 135) oder im Fehlervektor 125 Fehler vorhanden sind (bei dem Fehlervektor 125 handelt es sich beispielsweise um ein im Voraus definiertes Muster). Wenn in den Daten 113, 135 oder im Fehlervektor 125 ein Fehler vorhanden ist, werden im Block 1330 korrekte Daten auf die Speicherposition geschrieben. Dieser Korrektur folgt im Block 1340 eine weitere Gruppe von Lesevorgängen (Read1 und Read2). Im Block 1350 wird ermittelt, ob in den Daten 113, 125 oder im Fehlervektor 125 Fehler vorhanden sind. Wenn in den Daten 113, 135 oder im Fehlervektor 125 bei dieser Stufe (noch) ein Fehler vorhanden ist (nach der Korrektur im Block 1330), wird der Fehler im Block 1360 in dem Protokoll für harte Fehler protokolliert. Wenn in den Daten 113, 135 oder im Fehlervektor 125 nach der Korrektur im Block 1330 kein Fehler vorhanden ist, wird im Block 1370 ein weicher Fehler protokolliert. Nach dem Protokollieren harter und weicher Fehler (Blöcke 1360, 1370) oder wenn (im Block 1320) festgestellt wird, dass in den Daten 113, 135 oder in dem Fehlervektor 125 nach der ersten Gruppe von Lesevorgängen (im Block 1310) kein Fehler vorhanden ist, wird der Prozess fortgesetzt. Der Prozess wird fortgesetzt, indem zur nächsten Adresse oder Speicherposition der Speichereinheit 110 vorgegangen wird, bis jede Speicherposition der Speichereinheit 110 gelesen wurde.
-
14 ist ein Prozessablauf eines nochmals weiteren Verfahrens zum Verwenden des Fehlervektors, der gemäß Ausführungsformen erhalten wurde. Wie das Beispiel, das unter Bezugnahme auf 13 erläutert wurde, bezieht sich die in 14 gezeigte Ausführungsform auf einen Speicher-Bereinigungsprozess. Im Block 1410 erfolgt ein Lesevorgang, wobei EV auf 1 gesetzt ist, was angibt, dass der Fehlervektor 125 ausgegeben werden sollte. Wie beispielsweise unter Bezugnahme auf 3 erläutert wurde, können die Daten (113 und/oder 135) zusätzlich ausgegeben werden. Im Block 1420 wird ermittelt, ob in den Daten 113, 125 oder im Fehlervektor 125 ein Fehler vorhanden ist. Wenn im Block 1420 ein Fehler gefunden wird, wird im Block 1430 ein weiterer Lesevorgang ausgeführt, wobei EV auf 0 gesetzt ist, was angibt, dass der Fehlervektor 125 nicht ausgegeben werden sollte. Im Block 1440 werden korrigierte Daten zu der Speicherposition bzw. den Speicherpositionen zurückgeschrieben, die einen Fehler enthielten (festgestellt im Block 1420). Dann wird im Block 1450 ein weiterer Lesevorgang ausgeführt, wobei EV auf 1 gesetzt ist. Im Block 1460 wird ermittelt, ob in den Daten 113, 135 oder in dem Fehlervektor 125 ein Fehler vorhanden ist. Wenn erneut ein Fehler vorhanden ist, ist der Fehler dauerhaft und wird im Block 1470 als harter Fehler protokolliert. Wenn nach diesem Lesevorgang (im Block 1450) kein Fehler vorhanden ist, wird der Fehler im Block 1480 als weicher Fehler protokolliert. Nach dem Protokollieren der harten oder weichen Fehler (Blöcke 1470 oder 1480) oder wenn (im Block 1420) festgestellt wird, dass nach dem ersten Lesevorgang (im Block 1410) kein Fehler in den Daten 113, 135 oder in dem Fehlervektor 125 vorhanden ist, wird der Prozess fortgesetzt. Bis jede Speicherposition der Speichereinheit 110 gelesen wurde, enthält ein Fortsetzen das Übergehen zur nächsten Adresse oder Speicherposition der Speichereinheit 110.
-
Die hier verwendete Terminologie dient lediglich dem Zweck des Beschreibens bestimmter Ausführungsformen und soll die Erfindung nicht einschränken. Die hier verwendeten Singular-Formen „ein“ und „der/die/das“ sollen ebenso die Plural-Formen einschließen, falls im Kontext nicht anders angegeben. Es ist ferner klar, dass die Ausdrücke „weist auf“ und/oder „aufweisend“ bei Verwendung in dieser Spezifikation das Vorhandensein von festgestellten Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen und/oder Komponenten spezifiziert, jedoch nicht das Vorhandensein oder das Hinzufügen von einem oder mehreren Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen, Komponenten und/oder deren Gruppen ausschließt.
-
Die entsprechenden Strukturen, Materialien, Wirkungen und Ersetzungen aller Mittel oder Schritte plus Funktionselemente in den nachfolgenden Ansprüchen sollen gegebenenfalls alle Strukturen, Materialien oder Wirkungen zum Ausführen der Funktion in Kombination mit anderen Elementen, die speziell beansprucht werden, enthalten. Die Beschreibung der vorliegenden Erfindung wurde für Zwecke der Erläuterung und Beschreibung dargestellt, es ist jedoch nicht vorgesehen, dass sie in der offenbarten Form für die Erfindung erschöpfend oder einschränkend sein soll. Viele Modifikationen und Variationen werden einem Fachmann offensichtlich erscheinen, ohne vom Umfang und Erfindungsgedanken der Erfindung abzuweichen. Die Ausführungsform wurde gewählt und beschrieben, um die Grundgedanken der Erfindung und der praktischen Anwendung am besten zu erläutern und um Nichtfachleute zu befähigen, die Erfindung zu verstehen, da verschiedene Ausführungsformen mit zahlreichen Modifikationen für die vorgesehene praktische Verwendung geeignet sind.
-
Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder Medien) enthalten, auf dem sich computerlesbare Programmbefehle befinden, um einen Prozessor zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
-
Bei dem computerlesbaren Speichermedium kann es sich um eine materielle Einheit handeln, die Befehle zum Verwenden durch eine Befehlsausführungseinheit halten und speichern kann. Bei dem computerlesbaren Speichermedium kann es sich beispielsweise um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder jede geeignete Kombination der Vorhergehenden handeln, ist jedoch nicht darauf beschränkt. Eine nicht erschöpfende Liste von spezielleren Beispielen des computerlesbaren Speichermediums enthält Folgendes: eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Festwertspeicher (ROM), einen löschbaren programmierbaren Festwertspeicher (EPROM oder Flash-Speicher), einen statischen Direktzugriffsspeicher (SRAM), einen tragbaren Compactdisk-Festwertspeicher (CD-ROM), eine digitale Versatile-Disk (DVD), einen Speicherstick, eine Diskette (Floppy Disk), eine mechanisch codierte Einheit wie beispielsweise Lochkarten oder erhabene Strukturen in einer Nut, in denen Befehle aufgezeichnet sind, oder jede geeignete Kombination des Vorhergehenden. Ein hier verwendetes computerlesbares Speichermedium sollte nicht so ausgelegt werden, dass es sich dabei per se um vergängliche Signale handelt wie beispielsweise Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Hohlleiter oder andere Übertragungsmedien ausbreiten (z.B. Lichtimpulse, die ein Lichtwellenleiterkabel durchlaufen) oder elektrische Signale, die durch eine Leitung übertragen werden.
-
Computerlesbare Programmbefehle, die hier beschrieben werden, können von einem computerlesbaren Speichermedium zu betreffenden Datenverarbeitungs/Verarbeitungs-Einheiten oder über ein Netzwerk, z.B. das Internet, ein Lokalbereichsnetz, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk zu einem externen Computer oder einer externen Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupfer-Übertragungskabel, Lichtwellenleiter, drahtlose Übertragungen, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerk-Adapterkarte oder eine Netzwerk-Schnittstelle in jeder Datenverarbeitungs/Verarbeitungs-Einheit empfängt computerlesbare Programmbefehle von dem Netzwerk und leitet die computerlesbaren Programmbefehle zum Speichern in einem computerlesbaren Speichermedium in der betreffenden Datenverarbeitungs/Verarbeitungs-Einheit weiter.
-
Bei computerlesbaren Programmbefehlen zum Ausführen von Operationen der vorliegenden Erfindung kann es sich um Assembler-Befehle, Befehle mit Befehlssatz-Architektur (ISA), Maschinenbefehle, maschinenabhängige Befehle, Mikrocode, Firmware-Befehle, Zustandseinstellungsdaten oder Quellencode bzw. Objektcode handeln, die in jeder Kombination aus einer oder mehreren Programmiersprachen geschrieben sind, darunter eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie etwa die Programmiersprache "C" oder ähnliche Programmiersprachen. Die computerlesbaren Programmbefehle können nur auf dem Computer eines Benutzers, teilweise auf dem Computer eines Benutzers, als ein eigenständiges Software-Paket, teilweise auf dem Computer eines Benutzers und teilweise auf einem fernen Computer oder nur auf dem fernen Computer oder Server ausgeführt werden. In dem zuletzt genannten Szenario kann der ferne Computer mit dem Computer des Benutzers durch jeden Netzwerktyp verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer (z.B. über das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt werden. Bei einigen Ausführungsformen können elektronische Schaltungsanordnungen, darunter beispielsweise eine programmierbare logische Schaltungsanordnung, vor Ort programmierbare Gate-Arrays (FPGA) oder programmierbare Logik-Arrays (PLA) die computerlesbaren Programmbefehle ausführen, indem Zustandsinformationen der computerlesbaren Programmbefehle genutzt werden, um die elektronische Schaltungsanordnung zu personalisieren, um Aspekte der vorliegenden Erfindung auszuführen.
-
Aspekte der vorliegenden Erfindung werden hier unter Bezugnahme auf Ablaufplan-Darstellungen und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es ist klar, dass jeder Block der Ablaufplan-Darstellungen und/oder Blockschaltbilder und Kombinationen von Blöcken in den Ablaufplan-Darstellungen und/oder Blockschaltbildern durch computerlesbare Programmbefehle umgesetzt werden können.
-
Diese computerlesbaren Programmbefehle können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu bilden, so dass Befehle, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zum Umsetzen der Funktionen/Wirkungen, die in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind, erzeugen. Diese computerlesbaren Programmbefehle können außerdem in einem computerlesbaren Speichermedium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, so dass das computerlesbare Speichermedium mit darin gespeicherten Befehlen einen Herstellungsgegenstand aufweist, der Befehle enthält, die Aspekte der Funktion/Wirkung umsetzen, die in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind.
-
Die computerlesbaren Programmbefehle können außerdem in einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um eine Reihe von Funktionsschritten zu bewirken, die auf dem Computer, der anderen programmierbaren Datenverarbeitungsvorrichtung oder der anderen Einheit ausgeführt werden sollen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, so dass die Befehle, die auf dem Computer, der anderen programmierbaren Vorrichtung oder der anderen Einheit ausgeführt werden, die Funktionen/Wirkungen, die in dem Block oder Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind, umsetzen.
-
Der Ablaufplan und die Blockdarstellungen in den Figuren veranschaulichen die Architektur, Funktionalität und Operation von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in dem Ablaufplan oder in Blockdarstellungen ein Modul, Segment oder Abschnitt von Befehlen repräsentieren, der einen oder mehrere ausführbare Befehle zum Umsetzen der spezifizierten logischen Funktion(en) aufweist. Bei einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen möglicherweise nicht in der in den Figuren angegebenen Reihenfolge auftreten. Zum Beispiel können zwei Blöcke, die nacheinander gezeigt sind, tatsächlich im Wesentlichen gleichzeitig ausgeführt werden oder die Blöcke können gelegentlich in Abhängigkeit von der beteiligten Funktionalität in der umgekehrten Reihenfolge ausgeführt werden. Es wird außerdem angemerkt, dass jeder Block in den Blockdarstellungen und/oder Ablaufplan-Darstellungen und Kombinationen von Blöcken in den Blockdarstellungen und/oder der Ablaufplan-Darstellung durch Systeme, die auf spezieller Hardware beruhen, die die spezifizierten Funktionen oder Wirkungen ausführen, oder Kombinationen aus spezieller Hardware und Computerbefehlen umgesetzt werden können.
-
Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden für Zwecke der Erläuterung dargestellt, es ist jedoch nicht vorgesehen, dass sie für die offenbarten Ausführungsformen erschöpfend oder einschränkend sein sollen. Viele Modifikationen und Variationen werden einem Fachmann offensichtlich erscheinen, ohne vom Umfang und Erfindungsgedanken der Erfindung abzuweichen. Die hier verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder die technische Verbesserung gegenüber Am Markt vorhandenen Technologien am besten zu erläutern oder um Nichtfachleute zu befähigen, die hier offenbarten Ausführungsformen zu verstehen.
-
Aus Gründen der Vollständigkeit können einige zusätzliche Ausführungsformen des Verfahrens außerdem erwähnt werden:
Gemäß einer Ausführungsform kann das Verfahren ferner aufweisen:
Ausgeben der korrigierten Daten, die einer oder mehreren Speicheradressen zugehörig sind, oder der Rohdaten, die der einen oder den mehreren Speicheradressen entsprechen, als Ausgabedaten zusätzlich oder anstelle des Fehlervektors, der der einen oder den mehreren Speicheradressen zugehörig ist, auf der Grundlage der Auswahl, die in dem Lesebefehl angegeben ist.
-
Gemäß einer weiteren Ausführungsform kann das Verfahren ferner aufweisen: Ausgeben der korrigierten Daten, die der einen oder den mehreren Speicheradressen zugehörig sind, oder der Rohdaten, die der einen oder den mehreren Speicheradressen entsprechen, zusätzlich zu einer komprimierten Version des Fehlervektors, der der einen oder den mehreren Speicheradressen zugehörig ist, als Ausgabedaten auf der Grundlage der Auswahl, die in dem Lesebefehl angegeben ist.
-
Gemäß einer weiteren Ausführungsform des Verfahrens enthält das Ausgeben des Fehlervektors, der der einen oder den mehreren Speicheradressen zugehörig ist, Ausgeben eines im Voraus definierten Musters nichtkorrigierbarer Fehler, das einen nichtkorrigierbaren Fehler in den Rohdaten angibt, die der einen oder den mehreren Speicheradressen entsprechen, oder Ausgeben eines im Voraus definierten Muster von Daten, auf die nicht zugegriffen wird, das einen Fehler in den Rohdaten angibt, der sich an anderen Speicheradressen befindet als an der einen oder den mehreren Speicheradressen, die in dem Lesebefehl spezifiziert sind, jedoch den ECC-Bits zugehörig ist, die der einen oder den mehreren Speicheradressen entsprechen.
-
Gemäß einer zusätzlichen Ausführungsform kann das Verfahren ferner eine Steuereinheit aufweisen, die den Lesebefehl sendet, um reguläre Auslesevorgänge aus der Speichereinheit auszuführen, oder eine Mehrzahl von Lesebefehlen sendet, um einen Bereinigungsprozess an der Speichereinheit auszuführen, um dauerhafte Fehler und korrigierbare Fehler zu kennzeichnen.