-
TECHNISCHES GEBIET
-
Die vorliegende Erfindung bezieht sich allgemein auf Vorrichtungen, die Ersatzarbeitsspeicher-Dies aufweisen.
-
HINTERGRUND
-
Arbeitsspeicher mit wahlfreiem Zugriff (RAMs) verwenden oft mehrere Arbeitsspeicher-Dies, bei denen jeder Arbeitsspeicher-Die ein separates Halbleitersubstrat aufweist, auf dem ein integrierter Arbeitsspeicherschaltkreis gefertigt ist. Die Arbeitsspeicher-Dies sind häufig in einem Array von Dies angeordnet, wobei die gesamte Datenspeicherkapazität des Arbeitsspeicher-Arrays die Summe der addierten Speicherkapazitäten jedes einzelnen Arbeitsspeicher-Dies ist.
-
Ein Arbeitsspeicher-Die des Arbeitsspeicher-Arrays kann aufgrund vielfältiger Ursachen ausfallen. Ein Flash-Arbeitsspeicher kann eine Funktion nutzen, die oft als „Die-Reserve“ bezeichnet wird, bei der ein zusätzlicher Arbeitsspeicher-Die bereitgestellt ist, um für den Fall, dass einer der Primärarbeitsspeicher-Dies ausfällt, einen Primärarbeitsspeicher-Die zu ersetzen. Beispielsweise kann das Arbeitsspeicher-Array zehn Primärarbeitsspeicher-Dies aufweisen, in die das System im Zusammenhang mit regulären Dateneingabe- und -ausgabevorgängen Daten speichert und Daten aus ihnen liest. Das Array kann einen zusätzlichen Arbeitsspeicher-Die als einen Ersatz- oder Sekundärarbeitsspeicher-Die aufweisen, dieser wird aber normalerweise nicht aktiv verwendet, bis er verwendet wird, um einen ausgefallenen Primärarbeitsspeicher-Die des Arrays zu ersetzen. Dementsprechend greifen Datenein- und -ausgabevorgänge bei Datenspeichervorgängen normalerweise auf die zehn Primärarbeitsspeicher-Dies zu, greifen aber normalerweise nicht auf den Ersatzarbeitsspeicher-Die zu, bis der Ersatz-Die einen Primärarbeitsspeicher-Die ersetzt.
-
Bei Erkennung des Ausfalls eines Primärarbeitsspeicher-Dies werden die Daten, die zuvor im ausgefallenen Primärarbeitsspeicher-Die gespeichert wurden, in der Folge im Ersatzarbeitsspeicher-Die gespeichert, sodass der Ersatzarbeitsspeicher-Die anstelle des ausgefallenen Primärarbeitsspeicher-Dies als Primärarbeitsspeicher-Die verwendet werden kann. Da die im ausgefallenen Primärarbeitsspeicher-Die gespeicherten Daten möglicherweise nicht abrufbar sind, können Verfahren zur Datenwiederherstellung verwendet werden, um die fehlenden Daten des ausgefallenen Primärarbeitsspeicher-Dies zu rekonstruieren und die rekonstruierten Daten in dem Ersatzarbeitsspeicher-Die, der als der Austauscharbeitsspeicher-Die für den ausgefallenen Arbeitsspeicher-Die verwendet werden soll, zu speichern.
-
Es gibt verschiedene bekannte Fehlerkorrekturcode(ECC)-Verfahren zum Erkennen und Korrigieren von Datenfehlern, einschließlich zum Beispiel Block-Codes wie Reed-Solomon-Fehlerkorrekturcodes, beispielsweise, die Daten blockweise verarbeiten, und Faltungscodes, beispielsweise, die Daten bitweise verarbeiten. Bei einigen Anwendungen, wie Weltraumübertragungen von Daten zwischen Erde und Raumsonden und Compact-Disk-Aufzeichnungs- und Wiedergabevorrichtungen, beispielsweise, ist es bekannt, dass Daten zweimal unter Verwendung von zwei verschiedenen ECC-Verfahren kodiert werden, die als ein äußeres ECC-Verfahren und ein inneres ECC-Verfahren miteinander verkettet sind, um sequenziell die Daten zu bearbeiten. Durch die Verkettung der ECC-Verfahren können Fehlererkennung und Fehlerkorrektur in einigen Anwendungen, verglichen mit dem Einsatz nur eines der ECC-Verfahren allein, verbessert werden.
-
Figurenliste
-
- 1 ist ein schematisches Diagramm von einer Ausführungsform einer Computerarchitekturvorrichtung, die vorausschauende Arbeitsspeicherinstandhaltung gemäß einem Aspekt der vorliegenden Beschreibung einsetzt.
- 2 stellt ein Beispiel für Vorgänge eines Arbeitsspeichers dar, der eine Ausführungsform vorausschauender Arbeitsspeicherinstandhaltung gemäß der vorliegenden Beschreibung einsetzt.
- 3 ist ein detaillierteres schematisches Diagramm von einem Beispiel vorausschauender Arbeitsspeicherinstandhaltungslogik gemäß einer Ausführungsform der vorliegenden Beschreibung.
- 4a stellt ein Beispiel für Spiegelungsvorgänge von einem ausgewählten operationellen Primärarbeitsspeicher-Die auf einen Ersatzarbeitsspeicher-Die vor jeglichem erkannten Ausfall des ausgewählten Primärarbeitsspeicher-Dies dar.
- 4b stellt ein anderes Beispiel für Spiegelungsvorgänge von einem anderen ausgewählten operationellen Primärarbeitsspeicher-Die auf einen Ersatzarbeitsspeicher-Die vor jeglichem erkannten Ausfall des ausgewählten Primärarbeitsspeicher-Dies dar.
- 5 ist ein schematisches Diagramm von einer Ausführungsform von Fehlerkorrekturcode-Logik, die vorausschauende Arbeitsspeicherinstandhaltung gemäß einem Aspekt der vorliegenden Beschreibung einsetzt.
- 6 stellt ein Beispiel von Fehlererkennungs- und -korrekturvorgängen der Fehlerkorrekturcode-Logik von 5 in Verbindung mit vorausschauender Arbeitsspeicherinstandhaltung gemäß einem Aspekt der vorliegenden Beschreibung dar.
- 7a stellt ein Beispiel eines Datenlesevorgangs von kodierten Lesedaten für die Fehlerkorrekturcode-Logik von 5 in Verbindung mit vorausschauender Arbeitsspeicherinstandhaltung gemäß einem Aspekt der vorliegenden Beschreibung dar.
- 7b stellt ein anderes Beispiel eines Datenlesevorgangs von kodierten Lesedaten für die Fehlerkorrekturcode-Logik von 5 in Verbindung mit vorausschauender Arbeitsspeicherinstandhaltung gemäß einem Aspekt der vorliegenden Beschreibung dar.
-
BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
-
Vorausschauende Arbeitsspeicherinstandhaltung gemäß einem Aspekt der vorliegenden Beschreibung kann einen Ausfall eines ausgewählten Primärarbeitsspeicher-Dies eines Arrays prognostizieren und einen Ersatzarbeitsspeicher-Die mit den Daten des ausgewählten Primärarbeitsspeicher-Dies, der als ausfallgefährdet eingestuft wird, vor jeglichem tatsächlichen Ausfall des ausgewählten Arbeitsspeicher-Dies, vorladen. Für den Fall, dass der ausgewählte Primärarbeitsspeicher-Die in der Folge tatsächlich ausfällt, kann der mit den Daten des ausgewählten Primärarbeitsspeicher-Dies vorgeladene Ersatzarbeitsspeicher-Die mit einer bereits vorhandenen Kopie der Daten des ausgefallenen Primärarbeitsspeicher-Dies ohne Weiteres den Platz des ausgefallenen Primärarbeitsspeicher-Dies einnehmen. Dadurch kann der Ersatz des ausgefallenen Primär-Dies durch einen mit den Daten des ausgefallenen Arbeitsspeicher-Dies vorgeladenen Ersatzarbeitsspeicher-Dies mit geringer oder keiner Verzögerung, die durch Versuche, den Ersatzarbeitsspeicher nach Ausfall des Primärarbeitsspeicher-Dies zu laden, entstehen, erreicht werden. Infolgedessen können lang anhaltende Unterbrechungen der Datenspeichervorgänge als Folge des Ausfalls des Primärarbeitsspeicher-Dies reduziert oder beseitigt werden.
-
Es ist ferner ersichtlich, dass Versuche, die Daten eines Primärarbeitsspeicher-Dies, der ausgefallen ist, zu rekonstruieren, zu einer erhöhten Ausfallgefährdung führen können, nachdem der Primärarbeitsspeicher-Die ausgefallen ist, insbesondere für den Fall, dass andere Datenfehler auftreten, wie der Ausfall oder andere Fehlfunktion eines zweiten Primärarbeitsspeicher-Dies, beispielsweise. Gemäß der vorliegenden Beschreibung, durch Vorladen des Ersatzarbeitsspeicher-Dies mit den Daten des Primärarbeitsspeicher-Dies mit der höchsten angenommenen Ausfallwahrscheinlichkeit, bevor er tatsächlich ausgefallen ist, kann die Genauigkeit der vorgeladenen Daten im Vergleich zu Daten, die durch Rekonstruktionsvorgänge produziert werden, die eingeleitet wurden, nachdem ein Ausfall eines Arbeitsspeicher-Dies bereits eingetreten ist, verbessert werden.
-
In einer Ausführungsform wird vorausschauende Arbeitsspeicherinstandhaltung gemäß der vorliegenden Beschreibung auf einen nichtflüchtigen dreidimensionalen (3D) Crosspoint-Arbeitsspeicher angewendet. Vorausschauende Arbeitsspeicherinstandhaltung gemäß der vorliegenden Beschreibung kann auf Systeme angewendet werden, die eine Vielzahl verschiedener Arten von Arbeitsspeichervorrichtungen einsetzen, einschließlich zusätzlich zum oben genannten dreidimensionalen (3D) Crosspoint-Arbeitsspeicher, nichtflüchtige Arbeitsspeicher wie Spindrehmomenttransfer-Arbeitsspeicher mit wahlfreiem Zugriff (STT-RAM), Phasenwechselspeicher, Magnet-RAM, ein resistiver Arbeitsspeicher, Nanodrahtspeicher, FeTRAM (Ferroelectric Transistor Random Access Memory), Flash-Arbeitsspeicher wie NAND oder NOR und flüchtige Arbeitsspeicher wie 2D RAM, beispielsweise. Andere Arbeitsspeichertypen können ebenfalls geeignet sein.
-
1 veranschaulicht eine Ausführungsform der Computerarchitekturvorrichtung 100 unter Einsatz vorausschauender Arbeitsspeicherinstandhaltung gemäß einem Aspekt der vorliegenden Beschreibung. Die Computerarchitekturvorrichtung 100 kann jegliches in der Fachwelt bekannte Computergerät umfassen, wie einen Großrechner, Server, Personal Computer, eine Workstation, ein Telefoniegerät, Netzwerkgerät, eine Virtualisierungsvorrichtung, einen Datenspeichercontroller, tragbare oder mobile Geräte (z. B. Laptops, Netbooks, Tablet-Computer, persönliche digitale Assistenten (PDAs), tragbare Mediaplayer, tragbare Spielegeräte, Digitalkameras, Mobiltelefone, Smartphones, Feature-Phones usw.) oder Komponente (z. B. Ein-Chip-System, Prozessor, Brücke, Arbeitsspeichercontroller, Arbeitsspeicher usw.). Die Architekturvorrichtung 100 kann einen Prozessor 102 (z. B. einen Mikroprozessor), einen Arbeitsspeicher 104 (z. B. eine flüchtige oder nichtflüchtige Arbeitsspeichervorrichtung) und einen Arbeitsspeichercontroller 106 aufweisen, der Ein- und Ausgabevorgänge zum und vom Arbeitsspeicher 104 steuert.
-
Wie im Folgenden näher erläutert, weist der Arbeitsspeichercontroller 106 einen Logikschaltkreis für die vorausschauende Arbeitsspeicherinstandhaltung 110 auf, der den Primärspeicher-Die eines Arrays des Arbeitsspeichers 104 identifizieren und auswählen kann, der aufgrund bestimmter gemessener Leistungsfähigkeitsmerkmale als am meisten ausfallgefährdet eingestuft wird, und einen Ersatzarbeitsspeicher-Die mit den Daten des ausgewählten Primärarbeitsspeicher-Dies vor dem Ausfall des ausgewählten Primärarbeitsspeicher-Dies vorladen kann. Als Ergebnis kann, sollte der ausgewählte Primärarbeitsspeicher-Die tatsächlich ausfallen, die Kontinuität von Datenübertragungsvorgängen mit einem Minimum an Unterbrechung und Verzögerung als eine Folge eines Ausfalls eines Primärarbeitsspeicher-Dies des Arbeitsspeichers 104, ermöglicht werden.
-
In einem anderen Aspekt kann der Logikschaltkreis für die vorausschauende Arbeitsspeicherinstandhaltung 110 periodisch oder zyklisch neu evaluieren, welcher Primärarbeitsspeicher-Die eines Arrays des Arbeitsspeichers 104 höchstwahrscheinlich ausfallen wird, während Leistungsfähigkeitsdaten für jeden Primärarbeitsspeicher-Die akkumuliert werden. Als Ergebnis kann der als die Quelle für das Vorladen des Ersatzarbeitsspeicher-Dies ausgewählte Primärarbeitsspeicher-Die wechseln, wenn sich die vergleichenden Leistungsfähigkeitsmerkmale eines anderen Primärarbeitsspeicher-Dies in einem größeren Ausmaß als bei einem zuvor ausgewählten Primärarbeitsspeicher-Die verschlechtern. Daher kann, sollte ein Primärarbeitsspeicher-Die tatsächlich ausfallen, die Wahrscheinlichkeit, dass die Daten des ausgefallenen Primärarbeitsspeicher-Dies bereits in den Ersatzarbeitsspeicher-Die vorgeladen wurden, verbessert werden.
-
In noch einem weiteren Aspekt können Vorgänge der vorausschauenden Arbeitsspeicherinstandhaltung gemäß der vorliegenden Beschreibung Datenübertragungsvorgänge vor einem tatsächlichen Ausfall eines Primärarbeitsspeicher-Dies verbessern. Wenn beispielsweise Datenkorrektur für aus dem Arbeitsspeicher gelesene Lesedaten versagt, können die Lesedaten, die aus dem Primärarbeitsspeicher-Die gewonnen wurden, der als am ehesten ausfallend ausgewählt wurde, durch gespiegelte Lesedaten aus dem Ersatzarbeitsspeicher-Die substituiert werden. Infolgedessen können Fehler, die in den originalen Lesedaten erkannt wurden, durch das Ersetzen mit gespiegelten Lesedaten vom Ersatzarbeitsspeicher-Die, der mit größerer Wahrscheinlichkeit eine niedrigere Bitfehlerrate aufweist als der Primärarbeitsspeicher-Die, der als der am ehesten ausfallende Arbeitsspeicher-Die ausgewählt wurde, eliminiert oder korrigierbarer gemacht werden.
-
In der abgebildeten Ausführungsform ist der Arbeitsspeichercontroller 106 auf einem oder mehreren Halbleiter-Dies innerhalb der Vorrichtung 100 angeordnet, und der Logikschaltkreis für die vorausschauende Arbeitsspeicherinstandhaltung 110 kann auf dem selben Die oder den selben Dies des Arbeitsspeichercontrollers 106 angeordnet sein. Obwohl der Schaltkreis für die vorausschauende Arbeitsspeicherinstandhaltung 110 als ein Teil des Arbeitsspeichercontrollers 106 dargestellt wird, ist es ersichtlich, dass der Logikschaltkreis für die vorausschauende Arbeitsspeicherinstandhaltung 110 als ein Teil anderer Schaltkreise der Computerarchitekturvorrichtung 100 gefertigt werden kann. Beispielsweise können in einer Ausführungsform ein oder mehrere der Arbeitsspeicher-Dies des Arbeitsspeichers 104 im gleichen Gehäuse wie der Logik-Die oder die Logik-Dies für den Arbeitsspeichercontroller 106 oder der Logikschaltkreis für die vorausschauende Arbeitsspeicherinstandhaltung 110 untergebracht sein. Folglich können in einer Ausführungsform der Halbleiter-Die des Arbeitsspeichercontrollers 106 und Dies des Arbeitsspeichers 104 in einem Steckmodul, wie einem Dual-In-Line-Speichermodul (DIMM), angeordnet sein. Alternativ können ein oder mehrere der Arbeitsspeicher-Dies des Arbeitsspeichers 104 außerhalb des Gehäuses des Arbeitsspeichercontroller-Logik-Dies, oben auf dem Arbeitsspeichercontroller-Logik-Die, angrenzend zum Arbeitsspeichercontroller-Logik-Die oder in einem separaten Steckmodul, wie einem Dual-in-Line-Speichermodul (DIMM), gehäust sein.
-
So wie hier verwendet, umfasst der Begriff „automatisiert“ voll automatisiert, wobei die Vorgänge der vorausschauenden Arbeitsspeicherinstandhaltung gemäß der vorliegenden Beschreibung ohne jeglichen Benutzereingriff erfolgen. Der Begriff „automatisiert“ umfasst auch weitgehend automatisiert, wobei Vorgänge der vorausschauenden Arbeitsspeicherinstandhaltung gemäß der vorliegenden Beschreibung mit begrenztem Benutzereingriff erfolgen. Jedoch laufen bei weitgehend automatisierten Vorgängen die meisten Vorgänge der vorausschauenden Arbeitsspeicherinstandhaltung ohne jeglichen Benutzereingriff ab. In einer Ausführungsform sind die Vorgänge der vorausschauenden Arbeitsspeicherinstandhaltung gemäß der vorliegenden Beschreibung voll automatisiert und erfolgen ohne jeglichen Benutzereingriff. In anderen Ausführungsformen laufen mindestens 50 %, mindestens 75 % oder mindestens 95 % der Vorgänge der vorausschauenden Arbeitsspeicherinstandhaltung ohne jeglichen Benutzereingriff ab.
-
Die Computerarchitekturvorrichtung 100 kann außerdem Datenspeicher 116 aufweisen (z. B. einen nichtflüchtigen Datenspeicher, wie Magnetplattenlaufwerke, optische Laufwerke, ein Bandlaufwerk, Flash-Speicher usw.). Der Datenspeicher 116 kann eine vorausschauende Arbeitsspeicherinstandhaltung gemäß der vorliegenden Beschreibung einsetzen, und kann eine interne Datenspeichervorrichtung oder einen angeschlossenen oder per Netzwerk zugänglichen Datenspeicher umfassen. Programme im Datenspeicher 116 werden in den Arbeitsspeicher 104 geladen und vom Prozessor 102 in einer in der Fachwelt bekannten Weise ausgeführt.
-
Die Computerarchitekturvorrichtung 100 weist weiterhin einen Netzwerk-Controller oder NetzwerkAdapter 118 auf, um die Kommunikation mit einem Netzwerk, wie einem Ethernet, einem Fiber-Channel-Arbitrated-Loop usw., zu ermöglichen. Außerdem kann die Architektur, in bestimmten Ausführungsformen, einen Videocontroller 120 aufweisen, der ausgelegt ist, um ein Display als Reaktion auf den Prozessor zu steuern, um Informationen auf einem Display darzustellen. Der Videocontroller 120 kann auf einer Videokarte oder integriert auf integrierten Schaltkreiskomponenten, die auf einem Motherboard oder anderen Substrat montiert sind, verkörpert sein. Eine Eingabevorrichtung 122 wird verwendet, um dem Prozessor 102 Benutzereingaben bereitzustellen, und kann eine Tastatur, eine Maus, einen Tablettstift, ein Mikrofon, einen berührungsempfindlichen Bildschirm, Eingabestifte, Buchsen oder jegliche andere in der Fachwelt bekannte Aktivierungs- oder Eingabemechanismen aufweisen. Eine Ausgabevorrichtung 124 ist in der Lage, vom Prozessor 102 oder anderen Komponenten, wie einem Bildschirm oder Monitor, Drucker, Datenspeicher, Ausgangspins, Buchsen usw., übertragene Informationen wiederzugeben. Der Netzwerkadapter 118 kann auf einer Netzwerkkarte, wie einer Peripheral Component Interconnect (PCI)-Karte, PCI-Express oder einer anderen Erweiterungskarte, oder auf integrierten Schaltkreiskomponenten, die auf einem Motherboard oder anderen Substrat montiert sind, verkörpert sein.
-
Eine oder mehrere Komponenten der Vorrichtung 100 können, je nach der bestimmten Anwendung, weggelassen werden. Beispielsweise kann einem Netzwerkrouter z. B. ein Videocontroller 120 fehlen. Außerdem können eine beliebige oder mehrere der Komponenten der Computerarchitekturvorrichtung 100 eine oder mehrere integrierte Arbeitsspeicherschaltkreise aufweisen, die vorausschauende Arbeitsspeicherinstandhaltung gemäß der vorliegenden Beschreibung aufweisen.
-
2 zeigt ein Beispiel für Vorgänge der vorausschauenden Arbeitsspeicherinstandhaltungslogik 110 des Arbeitsspeichercontrollers 106 (1). In einem Vorgang wird die vorausschauende Arbeitsspeicherinstandhaltung durch Auswahl (Block 210) eines anfänglichen Primärarbeitsspeicher-Dies der Primärarbeitsspeicher-Dies des Arbeitsspeichers 104 und Spiegelung der Daten des ausgewählten Primärarbeitsspeicher-Dies auf einen Ersatzarbeitsspeicher-Die des Arbeitsspeichers 104 initialisiert. 3 zeigt ein ausführlicheres Beispiel des Arbeitsspeichers 104, der ein Array von Primärarbeitsspeicher-Dies 310a, 310b, ... 310n zusammen mit einem Ersatz- oder Sekundärarbeitsspeicher-Die 314 aufweist.
-
In einer Ausführungsform kann das Arbeitsspeicher-Array beispielsweise zehn Primärarbeitsspeicher-Dies aufweisen, die durch die Primär-Dies 310a, 310b, ... 310n repräsentiert werden, wobei das System 100 im Zusammenhang mit regelmäßigen Dateneingabe und -ausgabevorgängen Daten in die Primär-Dies 310a, 310b, .... 310n speichert und daraus ausliest. Einer der Primär-Dies 310a, 310b, .... 310n, wie beispielsweise Primärarbeitsspeicher-Die 310n, wird anfänglich als Quelle der Spiegelungsdaten ausgewählt (Block 210), derart, dass die im ausgewählten Primärarbeitsspeicher-Die 310n während der regulären Datenübertragungsvorgänge gespeicherten Daten auch auf den Ersatzarbeitsspeicher-Die 314 gespiegelt werden. Dies hat zur Folge, dass jegliche Daten, die im ausgewählten Arbeitsspeicher-Die (in diesem Beispiel Die 310n) gespeichert werden, auch zum Ersatzarbeitsspeicher-Die 314 kopiert oder anderweitig im Ersatzarbeitsspeicher-Die 314 gespeichert werden.
-
In einer Ausführungsform wird der Primärarbeitsspeicher-Die, der anfänglich für die Spiegelung zum Ersatzarbeitsspeicher-Die ausgewählt wurde, durch die Logik für die Auswahl der Spiegelungsquelle 320 (3) der vorausschauenden Arbeitsspeicherinstandhaltungslogik 110 ausgewählt. Die Logik für die Auswahl der Spiegelungsquelle 320 kann ausgelegt werden, um in einigen Ausführungsformen den anfänglichen Primärarbeitsspeicher-Die in willkürlicher Weise auszuwählen (Block 210, 2). Daher kann einer der anderen Primärarbeitsspeicher-Dies 310a, 310b .... als anfängliche Spiegelungsquelle ausgewählt werden. Es ist jedoch ersichtlich, dass abhängig von der bestimmten Anwendung andere Auswahlkriterien von der Logik für die Auswahl der Spiegelungsquelle 320 verwendet werden können, um einen anfänglichen Primärarbeitsspeicher-Die als die Quelle der Spiegelungsdaten auszuwählen, die auf den Ersatzarbeitsspeicher-Die 314 gespiegelt werden sollen. Weitere Beispiele für alternative Auswahlkriterien werden im Folgenden näher erläutert.
-
In einer Ausführungsform wird bewirkt, dass die Daten, die in dem Primärarbeitsspeicher-Die gespeichert sind, der als die Quelle ausgewählt ist, durch die Datenspiegelungslogik 324 der vorausschauenden Arbeitsspeicherinstandhaltungslogik 110 gespiegelt werden. Es ist ersichtlich, dass die Spiegelung durchgeführt werden kann, indem Daten vom Quell-Primärarbeitsspeicher-Die direkt oder über Zwischenspeicherorte zum Ersatzarbeitsspeicher-Die kopiert werden. Es ist weiterhin ersichtlich, dass Aktualisierungen an den Daten, die im ausgewählten Primärarbeitsspeicher-Die gespeichert sind, parallel übertragen werden können, um die Daten des Ersatzarbeitsspeicher-Dies parallel zur Aktualisierung des ausgewählten Primärarbeitsspeicher-Dies zu aktualisieren. In anderen Ausführungsformen können beispielsweise Aktualisierungen am ausgewählten Primärarbeitsspeicher-Die vom Quell-Primärarbeitsspeicher-Die auf den Ersatzarbeitsspeicher-Die kopiert werden. Andere Spiegelungstechniken können verwendet werden, sodass die Daten des ausgewählten Primärarbeitsspeicher-Dies im Ersatzarbeitsspeicher-Die dupliziert werden. Es ist ersichtlich, dass in einigen Ausführungsformen zu jedem beliebigen Zeitpunkt die Aktualisierungen des Ersatzarbeitsspeicher-Dies denen des ausgewählten Primär-Dies hinterherhinken können.
-
Zuvor wies ein Arbeitsspeicher-Array einen Ersatz- oder Sekundärarbeitsspeicher-Die einen zusätzlichen Arbeitsspeicher-Die auf, dieser wurde aber normalerweise nicht aktiv verwendet oder darauf zugegriffen, bis er verwendet wurde, um einen ausgefallenen Primärarbeitsspeicher-Die des Arrays zu ersetzen. Dementsprechend haben in vorherigen Systemen Datenein- und -ausgabevorgänge für Datenspeichervorgänge normalerweise auf die zehn Primärarbeitsspeicher-Dies zugegriffen, griffen aber normalerweise nicht auf den Ersatzarbeitsspeicher-Die zu, bis der Ersatz-Die einen ausgefallenen Primärarbeitsspeicher-Die ersetzt hat. Jedoch werden gemäß einem Aspekt der vorliegenden Beschreibung Daten eines Primärarbeitsspeicher-Dies auf den Ersatzarbeitsspeicher-Die gespiegelt, bevor der Ausfall des Primärarbeitsspeicher-Dies wie oben beschrieben erkannt wird. Darüber hinaus können, wie im Folgenden näher erläutert, die auf den Ersatzarbeitsspeicher-Die 314 gespiegelten Daten genutzt werden, um die Zuverlässigkeit der Datenübertragungsvorgänge zu erhöhen, noch bevor der Ausfall eines Primärarbeitsspeicher-Dies erkannt wird.
-
Nach dem Initialisierungsvorgang der Auswahl der Spiegelungsquelle von Block 210 und dem Beginn der Arbeitsspeichervorgänge kann eine Bestimmung (Block 214) durchgeführt werden, ob einer der Primärarbeitsspeicher-Dies 310a, 310b, ... 310n im Laufe der Arbeitsspeichervorgänge des Primärarbeitsspeicher-Dies, einschließlich beispielsweise Auffrischungsvorgänge und Datentransfervorgänge, ausgefallen ist. Eine solche Ausfallerkennung kann z. B. durch die Die-Ausfallerkennungslogik 328 der vorausschauenden Arbeitsspeicherinstandhaltungslogik 110 erfolgen. Folglich kann in der Ausführungsform von 3 die Die-Ausfallerkennungslogik 328 ausgelegt sein, um zu erkennen, ob einer der Primärarbeitsspeicher-Dies 310a, 310b ... 310n ausgefallen ist. Ist dies nicht der Fall, kann eine vorherige Auswahl eines gegenwärtig operationellen Primärarbeitsspeichers neu bewertet werden. Folglich kann entweder derselbe oder ein anderer der gegenwärtig operationellen Primärarbeitsspeicher-Dies als der Primärarbeitsspeicher-Die identifiziert werden (Block 218, 2), bei dem angenommen wird, dass er an einem Punkt in der Zukunft am ehesten ausfallen wird.
-
In einer Ausführungsform kann die Auswahl eines operationellen Primärarbeitsspeicher-Dies als dem Primärarbeitsspeicher-Die, der als am ehesten ausfallgefährdet eingestuft wird, durch die Logik für die Auswahl der Spiegelungsquelle 320 der vorausschauenden Arbeitsspeicherinstandhaltungslogik 110 vorgenommen werden. Die Logik für die Auswahl der Spiegelungsquelle 320 kann ausgelegt sein, um den Primärarbeitsspeicher-Die, der am wahrscheinlichsten ausfallen wird, als eine Funktion vielfältiger Auswahlkriterien, wie beispielsweise Leistungsfähigkeitskriterien für Arbeitsspeicher, auszuwählen (Block 218, 2). Ein Beispiel für ein Leistungsfähigkeitskriterium für Arbeitsspeicher, das geeignet ist, einen Primärarbeitsspeicher-Die auszuwählen, der wahrscheinlicher als die anderen Primärarbeitsspeicher-Dies ausfällt, ist eine unkorrigierte Bitfehlerrate (RBER), die durch die Logik für die Auswahl der Spiegelungsquelle 320 der vorausschauenden Arbeitsspeicherinstandhaltungslogik 110 für jeden operationellen Primärarbeitsspeicher-Die 310a, 310b .... 310n des Arbeitsspeichers 104 ermittelt und akkumuliert werden kann.
-
4a zeigt ein Beispiel der Primärarbeitsspeicher-Dies 310a, 310b, .... 310n, bei welchem die Logik für die Auswahl der Spiegelungsquelle 320 ausgelegt wurde, um einen RBER-Wert für jeden der Primärarbeitsspeicher-Dies 310a, 310b, ... 310n zu ermitteln, wie in Klammern für jeden Primärarbeitsspeicher-Die angegeben. Die unkorrigierte Bitfehlerrate (RBER) wird häufig als eine bestimmte Anzahl von Fehlern ausgedrückt, die im Arbeitsspeicher-Die während einer definierten Anzahl von Arbeitsspeicherzugriffen entdeckt wurden, die üblicherweise als Zahl mit Zehnerfaktor ausgedrückt wird. So hat im Beispiel von 4a die Logik für die Auswahl der Spiegelungsquelle 320 beispielsweise einen RBER-Wert von 1E-04 für den Primärarbeitsspeicher-Die 310a ermittelt, was anzeigt, dass die unkorrigierte Bitfehlerrate für den Primärarbeitsspeicher-Die 310a als 1 Fehler pro 104 Arbeitsspeichervorgänge, die auf den Primärarbeitsspeicher-Die 310a zugreifen, ermittelt wurde. Im Vergleich dazu hat die Logik für die Auswahl der Spiegelungsquelle 320 beispielsweise einen RBER-Wert von 2E-04 für den Primärarbeitsspeicher-Die 310c ermittelt, was anzeigt, dass die unkorrigierte Bitfehlerrate für den Primärarbeitsspeicher-Die 310c als zwei Fehler pro 104 Arbeitsspeichervorgänge, die auf den Primärarbeitsspeicher-Die 310a zugreifen, ermittelt wurde. Im Beispiel von 4a hat die Logik für die Auswahl der Spiegelungsquelle 320 für jeden der übrigen Primärarbeitsspeicher-Die 310b, 310e, ... 310n einen RBER-Wert von 1E-04 ermittelt.
-
Entsprechend einer Ausführungsform der vorausschauenden Arbeitsspeicherinstandhaltung gemäß der vorliegenden Beschreibung kann, da ermittelt wurde, dass der Primärarbeitsspeicher-Die 310c den höchsten RBER-Wert der operationellen Primärarbeitsspeicher-Dies aufweist, der Primärarbeitsspeicher-Die 310c als der operationelle Primärarbeitsspeicher-Die bestimmt werden (Block 218, 2), der zu irgendeinem Zeitpunkt in der Zukunft am wahrscheinlichsten ausfallen wird. Dementsprechend kann der als die Quelle der Datenspiegelung ausgewählte Primärarbeitsspeicher-Die von dem anfänglich vorgesehenen (Block 210, 2) und als Quelle ausgewählten Primärarbeitsspeicher-Die 310n zu dem Primärarbeitsspeicher-Die 310c geändert werden, der als der operationelle Primärarbeitsspeicher-Die identifiziert wurde (Block 218, 2), der zu irgendeinem Zeitpunkt in der Zukunft am wahrscheinlichsten ausfallen wird. Dadurch können die Daten, die im Quell-Primärarbeitsspeicher-Die 310c gespeichert sind und gerade gespeichert werden, auf den Ersatzarbeitsspeicher-Die 314 gespiegelt werden (Block 222), anstatt die gespeicherten und im Speichern befindlichen Daten auf den anfänglich ausgewählten Primärarbeitsspeicher-Die 314n zu spiegeln. Jegliche Aktualisierungen an den Daten des Quell-Primärarbeitsspeicher-Dies 314c werden auch auf den Ersatzarbeitsspeicher-Die 314 gespiegelt. Nachdem der Spiegelungsvorgang (Block 222) abgeschlossen ist, enthält der Ersatzarbeitsspeicher-Die 314 ein Duplikat der Daten des in Block 218 identifizierten Primärarbeitsspeicher-Dies 314c, anstelle des anfänglich in Block 210 ausgewählten Primärarbeitsspeicher-Dies 314n.
-
In der Ausführungsform von 4a wird der operationelle Primärarbeitsspeicher-Die, der als der operationelle Primärarbeitsspeicher-Die ausgewählt (Block 218) wurde, der zu irgendeinem Zeitpunkt in der Zukunft am wahrscheinlichsten ausfallen wird, und folglich als der Quell-Primärarbeitsspeicher-Die des Spiegelungsvorgangs (Block 222) ausgewählt wurde, als eine Funktion des für jeden operationellen Primär-Die ermittelten RBER-Wertes ausgewählt. Es ist jedoch ersichtlich, dass abhängig von der bestimmten Anwendung von der Logik für die Auswahl der Spiegelungsquelle 320 andere Auswahlkriterien verwendet werden können, um einen Primärarbeitsspeicher-Die als den Primärarbeitsspeicher-Die, der am wahrscheinlichsten ausfallen wird, als die Quelle für die Spiegelungsdaten zum Ersatzarbeitsspeicher-Die 314 auszuwählen.
-
Beispielsweise weisen Arbeitsspeicher-Dies häufig einen Temperatursensor auf, der die Betriebstemperatur des Arbeitsspeicher-Dies erfasst und Temperaturdaten ausgibt, die die Betriebstemperatur des Arbeitsspeicher-Dies anzeigen. Es ist ersichtlich, dass es bei einem operationellen Primärarbeitsspeicher-Die, der eine höhere Betriebstemperatur als die der anderen operationellen Primärarbeitsspeicher-Dies aufweist, wahrscheinlicher sein kann, dass er zu einem Zeitpunkt in der Zukunft ausfällt. Daher kann in einer Ausführungsform der operationelle Primärarbeitsspeicher-Die, der als der Primärarbeitsspeicher-Die ausgewählt (Block 218) wird, der am wahrscheinlichsten ausfallen wird und somit als der Quell-Primärarbeitsspeicher-Die des Spiegelungsvorgangs (Block 222) ausgewählt wird, als eine Funktion der individuellen Betriebstemperaturen jedes operationellen Primärarbeitsspeicher-Dies ausgewählt werden.
-
In einem anderen Aspekt vorausschauender Arbeitsspeicherinstandhaltung gemäß der vorliegenden Beschreibung ist es ersichtlich, dass die Vorgänge der Blöcke 214-222 eine Betriebsschleife der Arbeitsspeicherinstandhaltung bilden, die zyklisch oder periodisch wiederholt werden kann. Beispielsweise werden bei der Ausführungsform von 4a die Speicherplätze der Arbeitsspeicher-Dies periodisch in sich wiederholenden Auffrischzyklen, die durch die Auffrischungslogik 140 (1) des Arbeitsspeichercontrollers 106 generiert werden, aufgefrischt. Beispielsweise werden in einem dreidimensionalen(3D) Crosspoint-Arbeitsspeicher Bitzellen über den gesamten Speicher periodisch gelesen und die Daten zur Verbesserung der Leistungsfähigkeit wieder zurückgeschrieben. In jedem Auffrischungszyklus kann bestimmt werden (Block 214, 2), ob ein Primärarbeitsspeicher-Die ausgefallen ist, und wenn nicht, kann ein operationeller Primärarbeitsspeicher-Die als eine Funktion der Leistungsfähigkeit des Arbeitsspeicher-Dies als der Primärarbeitsspeicher-Die identifiziert werden (Block 218), der zu irgendeinem Zeitpunkt in der Zukunft am wahrscheinlichsten ausfallen wird, und die Daten des Primärarbeitsspeicher-Dies, der als derjenige mit der höchsten Ausfallwahrscheinlichkeit identifiziert wurde, können auf den Ersatzarbeitsspeicher-Die 314 gespiegelt werden (Block 222). Daher wird nach Abschluss jedes Spiegelungsvorgangs (Block 222) eines Instandhaltungszyklus der Ersatzarbeitsspeicher-Die mit den Daten des Primärarbeitsspeicher-Dies vorgeladen, welcher zu diesem Zeitpunkt als der Primärarbeitsspeicher-Die eingestuft wird, der zu einem späteren Zeitpunkt am wahrscheinlichsten ausfallen wird.
-
Beispielsweise zeigt 4b Instandhaltungsvorgänge in einem anderen Instandhaltungszyklus. In diesem Beispiel hat die Logik für die Auswahl der Spiegelungsquelle 320 erneut einen RBER-Wert von beispielsweise 1E-04 für den Primärarbeitsspeicher-Die 310a ermittelt, und erneut einen RBER-Wert von beispielsweise 2E-04 für den Primärarbeitsspeicher-Die 310c ermittelt, was anzeigt, dass die unkorrigierte Bitfehlerrate für den Primärarbeitsspeicher-Die 310c als zwei Fehler pro 104 Arbeitsspeichervorgänge, die auf den Primärarbeitsspeicher-Die 310c zugreifen, ermittelt wurde. Allerdings hat in diesem Beispiel die Logik für die Auswahl der Spiegelungsquelle 320 einen RBER-Wert von 3E-04 für den Primärarbeitsspeicher-Die 310d ermittelt, was anzeigt, dass die unkorrigierte Bitfehlerrate für den Primärarbeitsspeicher-Die 310d als drei Fehler pro 104 Arbeitsspeichervorgänge, die auf den Primärarbeitsspeicher-Die 310d zugreifen, ermittelt wurde. Im Beispiel von 4b hat die Logik für die Auswahl der Spiegelungsquelle 320 für jeden der übrigen Primärarbeitsspeicher-Die 310b, 310e, ... 310n erneut einen RBER-Wert von 1E-04 ermittelt.
-
Entsprechend einer Ausführungsform der vorausschauenden Arbeitsspeicherinstandhaltung gemäß der vorliegenden Beschreibung kann, da bestimmt wurde, dass der Primärarbeitsspeicher-Die 310d den höchsten RBER-Wert der operationellen Primärarbeitsspeicher-Dies aufweist, der Primärarbeitsspeicher-Die 310d als der operationelle Primärarbeitsspeicher-Die bestimmt werden (Block 218, 2), der zu irgendeinem Zeitpunkt in der Zukunft am wahrscheinlichsten ausfallen wird. Dementsprechend kann der Quell-Primärarbeitsspeicher-Die für den Datenspiegelungsvorgang von dem zuvor in einem vorherigen Instandhaltungszyklus von 4a als der Quell-Primärarbeitsspeicher-Die identifizierte (Block 218, 2) Primärarbeitsspeicher-Die 310c zum Primärarbeitsspeicher-Die 310d geändert werden, der im gegenwärtigen Instandhaltungszyklus von 4b als der operationelle Primärarbeitsspeicher-Die identifiziert wurde (Block 218, 2), der zu irgendeinem Zeitpunkt in der Zukunft am wahrscheinlichsten ausfallen wird. Dadurch können, wie in 4b gezeigt, die im Quell-Primärarbeitsspeicher-Die 310d gespeicherten Daten auf den Ersatzarbeitsspeicher-Die 314 gespiegelt werden (Block 222), anstatt wie in 4a gezeigt die im zuvor ausgewählten Primärarbeitsspeicher-Die 314c gespeicherten Daten zu spiegeln (4a). Jegliche Aktualisierungen an den Daten des Quell-Primärarbeitsspeicher-Dies 314d werden ebenfalls auf den Ersatzarbeitsspeicher-Die 314 gespiegelt. Nachdem der Spiegelungsvorgang (Block 222) abgeschlossen ist, enthält der Ersatzarbeitsspeicher-Die 314 ein Duplikat der Daten des in Block 218 identifizierten Primärarbeitsspeicher-Dies 310d, anstelle des zuvor in einem vorherigen Instandhaltungszyklus ausgewählten Primärarbeitsspeicher-Dies 314c.
-
Für den Fall, dass ein Primärarbeitsspeicher-Die wie von der Die-Ausfallererkennungslogik 328 erkannt (3) ausfällt (Block 214, 2), wird bestimmt, ob (Block 230) die Daten für den ausgefallenen Primärarbeitsspeicher-Die bereits durch die Datenspiegelungslogik 324 (3) auf den Ersatzarbeitsspeicher-Die 314 gespiegelt wurden. Ist dies der Fall, kann der ausgefallene Primärarbeitsspeicher-Die deaktiviert (Block 234) und durch den bereits mit den Daten des ausgefallenen Primärarbeitsspeicher-Dies vorgeladenen Ersatzarbeitsspeicher-Die 314 ersetzt werden.
-
Im Beispiel von 4b wurden die Daten für den Primärarbeitsspeicher-Die 310d ausgewählt, um auf den Ersatzarbeitsspeicher-Die 314 gespiegelt zu werden. Wenn der Primärarbeitsspeicher-Die 310d der Primärarbeitsspeicher-Die war, der wie vorhergesagt ausgefallen ist (Block 218, 2), können dementsprechend die Daten für den ausgefallenen Primärarbeitsspeicher-Die 310d bereits (Block 230, 2) durch die Datenspiegelungslogik 324 (3) auf den Ersatzarbeitsspeicher-Die 314 gespiegelt (Block 222, 2) worden sein. Ist dies der Fall, kann der ausgefallene Primärarbeitsspeicher-Die 310d deaktiviert (Block 234) und durch den bereits mit den Daten des ausgefallenen Primärarbeitsspeicher-Dies 310d vorgeladenen Ersatzarbeitsspeicher-Die 314 ersetzt werden. Dadurch können Unterbrechungen in den Arbeitsspeichervorgängen durch Ausfall des Primärarbeitsspeicher-Dies reduziert werden. Beispielsweise können Verzögerungen aufgrund von Rekonstruktionen von Daten des ausgefallenen Primärarbeitsspeicher-Dies 310d und aufgrund Kopierens der rekonstruierten Daten auf den Ersatzarbeitsspeicher-Die vermieden werden, wenn die Daten des ausgefallenen Primärarbeitsspeicher-Dies 310d bereits (Block 230, 2) auf den Ersatzarbeitsspeicher-Die 314 gespiegelt wurden (Block 222, 2), bevor der Ausfall des Primärarbeitsspeicher-Dies erkannt wurde (Block 214).
-
In einer Ausführungsform ist eine Die-Austauschlogik 332 (3) der vorausschauenden Arbeitsspeicherinstandhaltungslogik 110 ausgelegt, um den ausgefallenen Primärarbeitsspeicher-Die zu deaktivieren und den deaktivierten Primärarbeitsspeicher-Die durch den Ersatzarbeitsspeicher-Die 314 zu ersetzen. Dementsprechend werden Datentransfervorgänge, die angewiesen worden wären, um auf den ausgefallenen Primärarbeitsspeicher-Die zuzugreifen, stattdessen angewiesen, auf den Ersatzarbeitsspeicher-Die 314 zuzugreifen. Auf diese Weise ersetzt der mit den Daten des ausgefallenen Primärarbeitsspeicher-Dies vorgeladene Ersatzarbeitsspeicher-Die 314 den ausgefallenen und deaktivierten Primärarbeitsspeicher-Die in den Arbeitsspeichervorgängen des Arbeitsspeichers 104.
-
Wie zuvor erwähnt, wurden im Beispiel von 4b die Daten für den Primärarbeitsspeicher-Die 310d ausgewählt, um auf den Ersatzarbeitsspeicher-Die 314 gespiegelt zu werden. Wenn also der Primärarbeitsspeicher-Die 310d der Primärarbeitsspeicher-Die war, der wie vorhergesagt (Block 218, 2) ausgefallen ist, wird prognostiziert, dass die Spiegelung der Daten für den ausgefallenen Primärarbeitsspeicher-Die 310d durch die Datenspiegelungslogik 324 (3) auf den Ersatzarbeitsspeicher-Die 314 zum Zeitpunkt der Erkennung (Block 214) des Ausfalls des Primärarbeitsspeicher-Dies 310d unter Umständen noch nicht abgeschlossen waren (Block 230, 2). Falls das so ist, können die übrig gebliebenen Daten des Primärarbeitsspeicher-Dies 310 durch die Datenspiegelungslogik 324 (3) auf den Ersatzarbeitsspeicher-Die 314 kopiert (Block 240) werden, bis der Kopiervorgang abgeschlossen ist (Block 244). Es ist davon auszugehen, dass die Daten des ausgefallenen Primärarbeitsspeicher-Dies 310d aufgrund seines Ausfalls unter Umständen nicht aus dem Arbeitsspeicher-Die 310d abgerufen werden.
-
Dementsprechend können die übrig gebliebenen Daten wie im Folgenden beschrieben rekonstruiert und zum Ersatzarbeitsspeicher-Die 314 kopiert werden. Sobald die Rekonstruktions- und Kopiervorgänge abgeschlossen sind (Block 244, 2), kann der ausgefallene Primärarbeitsspeicher-Die 310d deaktiviert (Block 234) und wie oben beschrieben durch den Ersatzarbeitsspeicher-Die 314 ersetzt werden.
-
Im Beispiel von 4b wurden die Daten für den Primärarbeitsspeicher-Die 310d ausgewählt, um auf den Ersatzarbeitsspeicher-Die 314 gespiegelt zu werden. Wenn also ein anderer Primärarbeitsspeicher-Die als der Primärarbeitsspeicher-Die 310d der Primärarbeitsspeicher-Die war, der ausgefallen ist, entgegen der Vorhersage (Block 218, 2), dass Primärarbeitsspeicher-Die 310d der am wahrscheinlichsten ausfallende Die war, wurden die Daten für den ausgefallenen Primärarbeitsspeicher-Die nicht bereits (Block 230, 2) durch die Datenspiegelungslogik 324 (3) auf den Ersatzarbeitsspeicher-Die 314 gespiegelt. Dementsprechend werden die Daten für den ausgefallenen Primärarbeitsspeicher-Die durch die Datenspiegelungslogik 324 (3) rekonstruiert und auf den Ersatzarbeitsspeicher-Die 314 kopiert (Block 240). Sobald die Rekonstruktions- und Kopiervorgänge der Daten abgeschlossen sind (Block 244, 2), kann der ausgefallene Primärarbeitsspeicher-Die wie oben erläutert deaktiviert (Block 234) und durch den Ersatzarbeitsspeicher-Die 314 ersetzt werden.
-
Da die in einem ausgefallenen Primärarbeitsspeicher-Die gespeicherten Daten möglicherweise nicht abrufbar sind, kann Fehlerkorrekturcode(ECC)-Logik eingesetzt werden, um die fehlenden Daten vom ausgefallenen Primärarbeitsspeicher-Die zu rekonstruieren und die rekonstruierten Daten im Ersatzarbeitsspeicher-Die, der als der Austauscharbeitsspeicher-Die für den ausgefallenen Arbeitsspeicher-Die verwendet werden soll, zu speichern. Weiterhin können in einem Aspekt der vorliegenden Beschreibung die gespiegelten Daten, die im Ersatzarbeitsspeicher-Die gespeichert sind, sogar noch bevor der Primärarbeitsspeicher-Die ausfällt verwendet werden, um Fehlererkennung und Fehlerkorrektur mittels Fehlerkorrekturcodes zu ermöglichen.
-
Ein Beispiel eines geeigneten Fehlerkorrekturcodes ist ein Reed-Solomon-Fehlerkorrekturcode, bei dem es sich um einen Block-Code handelt, der Datenblöcke in Symbolen kodiert, um Fehlererkennung und Fehlerkorrektur zu ermöglichen. Es ist ersichtlich, dass andere Arten von Fehlerkorrekturcodes bei vorausschauender Arbeitsspeicherinstandhaltung gemäß der vorliegenden Beschreibung verwendet werden können. Beispielsweise können sowohl Block-Codes als auch Faltungscodes für vorausschauende Arbeitsspeicherinstandhaltung gemäß der vorliegenden Beschreibung geeignet sein. Auch können sowohl systematische Codes als auch nicht-systematische Codes für vorausschauende Arbeitsspeicherinstandhaltung gemäß der vorliegenden Beschreibung geeignet sein. Bei einem systematischen Vorgehen hängt ein Encoder an die originalen Schreibdaten eine Anzahl von Prüfbits (wie beispielsweise Paritätsdaten) an, die durch einen geeigneten deterministischen Algorithmus aus den Datenbits abgeleitet werden. In einem System, das einen nichtsystematischen Code verwendet, wird die originale Nachricht in eine kodierte Nachricht umgewandelt, die normalerweise mindestens so viele Bits wie die ursprüngliche Nachricht aufweist. Weitere Beispiele für Codes, die geeignet sind, sind verkettete Codes, rekursive Codes, nicht-rekursive Codes, Repetitions-Codes, Hamming-Codes, multidimensionale Paritätsprüfcodes, Turbo-Codes, Paritätsprüfcodes mit niedriger Dichte (LDPC) usw.
-
In der dargestellten Ausführungsform weist der Arbeitsspeichercontroller 106 Fehlerkorrekturcode(ECC)-Logik 510 (5) auf, die die im Arbeitsspeicher 104 zu speichernden Schreibdaten kodiert und die kodierten Lesedaten dekodiert, um Fehler zu erkennen und diese wenn möglich zu korrigieren. Dementsprechend ist eine ECC-Kodiererlogik 514 ausgelegt, um Schreibdaten für den Arbeitsspeicher 104 in einen Fehlerkorrekturcode (wie beispielsweise einen Reed-Solomon-Fehlerkorrekturcode) zu kodieren. Die kodierten Schreibdaten werden im Verlauf regulärer Schreibdatentransfervorgänge in den Primärarbeitsspeicher-Dies 310a, 310b ... 310n des Arbeitsspeichers 104 gespeichert. Beispielsweise kann in einer Ausführungsform eine Zeile kodierter Schreibdaten, die in den Primärarbeitsspeicher-Dies 310a, 310b ... 310n gespeichert sind, 320 Bytes lang sein und 256 Bytes an Benutzerdaten und 64 Bytes an Metadaten bezüglich der 256 Bytes Benutzerdaten enthalten. Beispielsweise können die 64 Bytes an Metadaten Paritätsdaten oder andere redundante Daten enthalten, die zur Fehlererkennung und Fehlerkorrektur verwendet werden können.
-
Dementsprechend speichert in der dargestellten Ausführungsform jeder der Primärarbeitsspeicher-Dies 310a, 310b ... 310n 32 Bytes kodierter Schreibdaten der 320 Byte langen Zeile kodierter Schreibdaten. Zusätzlich werden die 32 Bytes kodierter Schreibdaten, die dem ausgewählten (Block 218, 2) Primärarbeitsspeicher-Die zugewiesen werden, der als in der Zukunft am wahrscheinlichsten ausfallgefährdet eingestuft ist, ebenfalls wie oben beschrieben auf den Ersatzarbeitsspeicher-Die 314 gespiegelt (Block 222). Es ist ersichtlich, dass in anderen Ausführungsformen die Länge einer Zeile kodierter Schreibdaten und die Menge der in jedem Arbeitsspeicher-Die gespeicherten kodierten Schreibdaten abhängig von der bestimmten Anwendung variieren kann.
-
6 zeigt ein Beispiel von Vorgängen der vorausschauenden Arbeitsspeicherinstandhaltungslogik 110 in Verbindung mit Vorgängen zur Übertragung kodierter Lesedaten der ECC-Logik 510. In einem Vorgang werden kodierte Lesedaten aus den Primärarbeitsspeicher-Dies 310a, 310b ... 310n des Arbeitsspeichers 104 gelesen (Block 610) und durch die ECC-Dekodierlogik 520 der ECC-Logik 510 dekodiert. 7a zeigt ein Beispiel für das Lesen kodierter Lesedaten aus jedem der Primärarbeitsspeicher-Dies 310a, 310b ... 310n. Im Beispiel von 7a werden die kodierten Lesedaten, die vom Primärarbeitsspeicher-Die 310d, der als am wahrscheinlichsten ausfallgefährdet eingestuft worden war, auf den Ersatzarbeitsspeicher-Die 314 gespiegelt wurden, nicht aus dem Arbeitsspeicher 104 gelesen oder zu diesem Zeitpunkt anderweitig verwendet. Die ECC-Dekodierlogik 520 ist ausgelegt, um kodierte Lesedaten, die von der ECC-Kodiererlogik 514 mit einem Fehlerkorrekturcode (beispielsweise einem Reed-Solomon-Fehlerkorrekturcode) kodiert wurden, zu dekodieren.
-
Eine Bestimmung (Block 614) wird durchgeführt, ob die aus den Primärarbeitsspeicher-Dies 310a, 310b ... 310n gelesenen dekodierten Lesedaten Fehler enthalten. Eine Fehlererkennungslogik 524 (5) der ECC-Dekodierlogik 520 ist ausgelegt, um in Übereinstimmung mit dem Fehlerkorrekturcode zu erkennen, ob die aus den Primärarbeitsspeicher-Dies 310a, 310b ... 310n des Arbeitsspeichers 104 gelesenen dekodierten Lesedaten Fehler enthalten. Ist dies der Fall, wird ein Versuch unternommen, um die erkannten Fehler zu korrigieren und es wird eine Bestimmung durchgeführt (Block 620), ob die versuchte Fehlerkorrektur erfolgreich war. In der dargestellten Ausführungsform ist eine Fehlerkorrekturlogik 530 (5) der ECC-Dekodierlogik 520 ausgelegt, um erkannte Fehler in Übereinstimmung mit dem Fehlerkorrektur-Code zu korrigieren. Allgemein gilt, je mehr redundante Daten durch die ECC-Kodierung hinzugefügt werden, umso größer ist die Zahl der erkannten Fehler, die korrigiert werden können. Überschreitet die Anzahl erkannter Fehler ein bestimmtes Maximum, das eine Funktion der ECC-Kodierung ist, kann es sein, dass die Fehlerkorrektur versagt (Block 620, 6).
-
In Übereinstimmung mit einem anderen Aspekt der vorliegenden Beschreibung kann ECC-Fehlerkorrektur vorausschauende Arbeitsspeicherinstandhaltung einsetzen, um Fehlerkorrekturen vor Erkennen eines Ausfalls eines Primärarbeitsspeicher-Dies zu verbessern. Wenn beispielsweise in der Ausführungsform von 6 die Anzahl der erkannten Fehler in den dekodierten Lesedaten aus den Primärarbeitsspeicher-Dies (7a) zum Versagen der Fehlerkorrektur führt (Block 620, 6), können die kodierten Lesedaten durch die kodierten Daten, die auf den Ersatzarbeitsspeicher-Die 314 gespiegelt wurden, substituiert werden (Block 624), wie im Beispiel von 7b gezeigt. Folglich werden im Beispiel von 7b die kodierten Lesedaten, die auf den Ersatzarbeitsspeicher-Die 314 gespiegelt wurden, von der ECC-Dekodierlogik 520 gelesen. Umgekehrt werden im Beispiel von 7b die kodierten Lesedaten, die im Primärarbeitsspeicher-Die 310d, der als am wahrscheinlichsten ausfallgefährdet eingestuft ist, gespeichert sind, nicht vom Arbeitsspeicher 104 gelesen oder zu diesem Zeitpunkt anderweitig verwendet.
-
Eine Auswahllogik für kodierte Lesedaten 340 (3) der vorausschauenden Arbeitsspeicherinstandhaltungslogik 110 ist ausgelegt, um die kodierten Daten, die auf den Ersatzarbeitsspeicher-Die 314 gespiegelt wurden, auszuwählen (Block 624) und damit den Lesevorgang zu ersetzen, wie im Beispiel von 7b gezeigt, anstelle von Beispiel FIG. 7a, bei dem die kodierten Lesedaten, die in dem ausgewählten Primärarbeitsspeicher-Die 310d gespeichert wurden, der als der am wahrscheinlichsten ausfallende Die eingestuft wurde, für den Lesevorgang verwendet wurden.
-
Dementsprechend können die kodierten Lesedaten aus den Primärarbeitsspeicher-Dies 310a, 310b, 310c, 310e .... 310n (7b) zusammen mit den kodierten Lesedaten aus dem Ersatzarbeitsspeicher-Die 314 anstelle der kodierten Lesedaten aus dem Primärarbeitsspeicher-Die 310d, der als am wahrscheinlichsten ausfallend eingestuft wurde, von der ECC-Dekodierlogik 520 (5) der ECC-Logik 510 dekodiert werden. Eine Bestimmung kann erneut durchgeführt werden (Block 614, 6), ob die dekodierten Lesedaten, die diesmal aus den Primärarbeitsspeicher-Dies 310a, 310b, 310c, 310e ... 310n zusammen mit den dekodierten Lesedaten aus dem Ersatzarbeitsspeicher-Die 314 statt aus dem Primärarbeitsspeicher-Die 310d, der als am wahrscheinlichsten ausfallend eingestuft wurde, gelesen wurden, Fehler enthalten. Es ist ersichtlich, dass in einigen Ausführungsformen, indem die Daten des Primärarbeitsspeicher-Dies 310d, der als am wahrscheinlichsten ausfallend eingestuft wurde, durch die Lesedaten aus dem Ersatzarbeitsspeicher-Die 314 substituiert werden, Fehler in den Lesedaten eliminiert werden können, wodurch jegliche nachfolgende Fehlerkorrektur vermieden wird. Falls das so ist, kann der Lesevorgang erfolgreich abgeschlossen werden (Block 630).
-
Wird festgestellt (Block 614), dass die aus den Primärarbeitsspeicher-Dies 310a, 310b, 310c, 310e .... 310n gelesenen dekodierten Lesedaten zusammen mit den dekodierten Lesedaten aus dem Ersatzarbeitsspeicher-Die 314 statt aus dem Primärarbeitsspeicher-Die 310d, der als am wahrscheinlichsten ausfallend eingestuft wurde, tatsächlich Fehler enthalten, kann erneut versucht werden, die erkannten Fehler zu korrigieren, und es wird festgestellt (Block 620), ob die versuchte Fehlerkorrektur erfolgreich war. Es ist ersichtlich, dass in einigen Ausführungsformen, indem die Daten des Primärarbeitsspeicher-Dies 310d, der als am wahrscheinlichsten ausfallend eingestuft wurde, durch die Lesedaten aus dem Ersatzarbeitsspeicher-Die 314 substituiert werden, Fehler in den Lesedaten derart ausreichend reduziert werden können, dass sie in die Fehlerkorrekturfähigkeit der Fehlerkorrekturlogik 530 (5) der ECC-Dekodierlogik 520 fallen. Wenn beispielsweise ein Datenfehler in den kodierten Lesedaten aus dem Primärarbeitsspeicher-Die 310d, der als am wahrscheinlichsten ausfallend eingestuft wurde, aufgetreten ist, zusätzlich zu einem Datenfehler, der in einem anderen Primärarbeitsspeicher-Die aufgetreten ist, aber die kodierten Lesedaten aus dem Ersatzarbeitsspeicher-Die frei von Datenfehlern sind oder weniger Fehler enthalten, wird durch Substituieren (Block 624) der kodierten Lesedaten aus dem Primärarbeitsspeicher-Die 310d, der als am wahrscheinlichsten ausfallend eingestuft wurde, durch die kodierten Lesedaten aus dem Ersatzarbeitsspeicher-Die 314, die Zahl der Datenfehler derart reduziert, dass die Fehlerkorrektur erfolgreich sein kann und der Datentransfer erfolgreich abgeschlossen werden kann (Block 630).
-
In einem anderen Aspekt der vorliegenden Beschreibung ist die Logik für die Auswahl der Quelle 320 (3) ausgelegt, um über einen Zeitraum hinweg vergleichende statistische Daten zur Leistungsfähigkeit zu akkumulieren, die die relative Leistungsfähigkeit eines jeden Primärarbeitsspeicher-Dies des Arbeitsspeichers in Bezug auf ein bestimmtes Leistungsfähigkeitskriterium repräsentieren. Beispielsweise ist, wie bereits erwähnt, die Fehlererkennungslogik 524 (5) des ECC-Dekodierers 520 ausgelegt, um Fehler in den dekodierten Lesedaten, die aus dem Arbeitsspeicher 104 gelesen werden, zu erkennen. Die Logik für die Auswahl der Quelle 320 kann ausgelegt sein, um für jeden Primärarbeitsspeicher-Die die erkannten Fehler nachzuverfolgen und eine unkorrigierte Bitfehlerrate (RBER) für jeden Primärarbeitsspeicher-Die des Arbeitsspeichers 104 zu berechnen. Die berechnete RBER kann periodisch aktualisiert werden, beispielsweise in jedem Auffrischungszyklus. Es ist ersichtlich, dass andere statistische Leistungsfähigkeitsdaten akkumuliert werden können, um eine Grundlage für die Logik für die Auswahl der Quelle 320 zu schaffen, um einen operationellen Arbeitsspeicher-Die des Arbeitsspeichers als den operationellen Primärarbeitsspeicher-Die auszuwählen, der am ehesten ausfallen wird. Die Logik für die Auswahl der Quelle kann ausgelegt sein, um den Primärarbeitsspeicher-Die als eine Funktion des operationellen Arbeitsspeicher-Dies, der die schlechteste relative Leistungsfähigkeit über den Zeitraum aufweist, auszuwählen.
-
Beispiele
-
Die folgenden Beispiele beziehen sich auf weitere Ausführungsformen.
-
Beispiel 1 ist eine Einrichtung, umfassend:
- Auswahllogik, die ausgelegt ist, um Speicherleistungfähigkeit von operationellen Arbeitsspeicher-Dies eines Arbeitsspeichers zu ermitteln, und einen Arbeitsspeicher-Die des Arbeitsspeichers als eine Funktion der Leistungsfähigkeit des Arbeitsspeicher-Dies auszuwählen; und
- Datenspiegelungslogik, die ausgelegt ist, um Daten für den ausgewählten operationellen Arbeitsspeicher-Die auf einen Ersatzarbeitsspeicher-Die zu spiegeln.
-
In Beispiel 2 kann der Gegenstand der Beispiele 1-8 (unter Ausschluss des vorliegenden Beispiels) optional aufweisen:
- Die-Ausfallerkennungslogik, die ausgelegt ist, um Ausfall des ausgewählten operationellen Arbeitsspeicher-Dies zu erkennen; und
- Die-Austauschlogik, die ausgelegt ist, um als Reaktion auf Erkennen des Ausfalls des ausgewählten operatrionellen Arbeitsspeicher-Dies den ausgefallenen operationellen Arbeitsspeicher-Die zu deaktivieren und den ausgefallenen operationellen Arbeitsspeicher-Die durch den Ersatzarbeitsspeicher-Die zu ersetzen, wobei der Ersatzspeicher-Die Daten aufweist, die von dem ausgewählten operationellen Arbeitsspeicher-Die gespiegelt wurden, bevor ein Ausfall des ausgewählten operationellen Arbeitsspeicher-Dies erkannt wurde.
-
In Beispiel 3 kann der Gegenstand der Beispiele 1-8 (unter Ausschluss des vorliegenden Beispiels) optional aufweisen:
- Fehlerkorrekturcode-Logik, die ausgelegt ist, um Daten aus den operationellen Arbeitsspeicher-Dies des Arbeitsspeichers, einschließlich des ausgewählten operationellen Ersatzarbeitsspeicher-Dies, zu lesen, wobei die Lesedaten in Übereinstimmung mit einem Fehlerkorrekturcode kodiert sind, wobei die Fehlerkorrekturcode-Logik aufweist, die Dekodierlogik ausgelegt ist, um die kodierten Lesedaten zu dekodieren, und Fehlererkennungslogik aufweist, die ausgelegt ist, um einen Fehler in den dekodierten Lesedaten zu erkennen, und Fehlerkorrekturlogik aufweist, die ausgelegt ist, um zu versuchen, einen erkannten Fehler in den dekodierten Lesedaten zu korrigieren, wobei die Fehlerkorrekturcode-Logik ferner ausgelegt ist, um als Reaktion auf ein Versagen der Fehlerkorrekturlogik bei der Korrektur eines erkannten Fehlers in den dekodierten Lesedaten Daten aus dem Ersatzarbeitsspeicher-Die zu lesen, wobei die Lesedaten in Übereinstimmung mit einem Fehlerkorrekturcode kodiert sind, und die kodierten Lesedaten aus dem ausgewählten operationellen Arbeitsspeicher-Die durch die kodierten Lesedaten aus dem Ersatzarbeitsspeicher-Die substituiert werden.
-
In Beispiel 4 kann der Gegenstand der Beispiele 1-8 (mit Ausnahme des vorliegenden Beispiels) optional aufweisen, wobei die Dekodierlogik ferner ausgelegt ist, um die kodierten Lesedaten zu dekodieren, welche die kodierten Lesedaten aus dem Ersatzarbeitsspeicher-Die einschließen, und wobei die Fehlererkennungslogik ferner ausgelegt ist, um einen Fehler in den dekodierten Lesedaten zu erkennen, welche die dekodierten Lesedaten aus dem Ersatzarbeitsspeicher-Die einschließen, und wobei die Fehlerkorrekturlogik ferner ausgelegt ist, um einen erkannten Fehler in den dekodierten Lesedaten, welche die dekodierten Lesedaten aus dem Ersatzarbeitsspeicher-Die einschließen, zu korrigieren.
-
In Beispiel 5 kann der Gegenstand der Beispiele 1-8 (mit Ausnahme des vorliegenden Beispiels) optional zyklische vorausschauende Arbeitsspeicherinstandhaltungslogik aufweisen, die ausgelegt ist, um zyklisch vorausschauende Arbeitsspeicherinstandhaltung in einer Vielzahl von Instandhaltungszyklen durchzuführen, wobei in jedem Instandhaltungszyklus die Auswahllogik ferner ausgelegt ist, um in jedem Instandhaltungszyklus die Speicherleistungsfähigkeit der operationellen Arbeitsspeicher-Dies des Arbeitsspeichers zu ermitteln und einen operationellen Arbeitsspeicher-Die des Arbeitsspeichers in Abhängigkeit der Arbeitsspeicher-Die-Leistungsfähigkeit auszuwählen; und wobei die Datenspiegelungslogik ferner ausgelegt ist, um in jedem Instandhaltungszyklus Daten für den ausgewählten Arbeitsspeicher-Die auf den Ersatzarbeitsspeicher-Die zu spiegeln.
-
In Beispiel 6 kann der Gegenstand der Beispiele 1-8 (mit Ausnahme des vorliegenden Beispiels) optional zyklische Auffrischungslogik aufweisen, die ausgelegt ist, um zyklisch Auffrischungen des Arbeitsspeichers in einer Vielzahl von Auffrischungszyklen durchzuführen, wobei die vorausschauende Arbeitsspeicherinstandhaltungslogik ferner ausgelegt ist, um jeden Instandhaltungszyklus in Verbindung mit einem Auffrischungszyklus durchzuführen.
-
In Beispiel 7 kann der Gegenstand der Beispiele 1-8 (mit Ausnahme des vorliegenden Beispiels) optional aufweisen, wobei die Auswahllogik Logik aufweist, die ausgelegt ist, um Arbeitsspeicherleistungsfähigkeit von operationellen Arbeitsspeicher-Dies des Arbeitsspeichers zu ermitteln, einschließlich Logik, die ausgelegt ist, um über einen Zeitraum vergleichende statistische Leistungsfähigkeitsdaten zu akkumulieren, die die relative Leistungsfähigkeit jedes Arbeitsspeicher-Dies des Arbeitsspeichers in Bezug auf ein bestimmtes Leistungsfähigkeitskriterium repräsentieren, und Logik, die ausgelegt ist, um einen operationellen Arbeitsspeicher-Die des Arbeitsspeichers als eine Funktion des operationellen Arbeitsspeicher-Dies, der die schlechteste relative Leistungsfähigkeit über den Zeitraum aufweist, auszuwählen.
-
In Beispiel 8 kann der Gegenstand der Beispiele 1-8 (unter Ausschluss des vorliegenden Beispiels) optional aufweisen, wobei die Leistungsfähigkeitskriterien unkorrigierte Bitfehlerrate aufweisen.
-
Beispiel 9 ist ein System zur Verwendung mit einem Display, umfassend:
- einen Prozessor;
- einen Videocontroller, der ausgelegt ist, um das Display in Reaktion auf den Prozessor zu steuern;
- einen Arbeitsspeicher, der ausgelegt ist, um Daten vom Prozessor zu speichern, und der eine Vielzahl von Arbeitsspeicher-Dies einschließlich eines Ersatzarbeitsspeicher-Dies aufweist; und
- einen Arbeitsspeichercontroller, der ausgelegt ist, um den Arbeitsspeicher zu steuern, wobei der Arbeitsspeichercontroller aufweist:
- Auswahllogik, die ausgelegt ist, um Speicherleistungfähigkeit von operationellen Arbeitsspeicher-Dies des Arbeitsspeichers zu ermitteln, und um einen operationellen Arbeitsspeicher-Die des Arbeitsspeichers als eine Funktion der Leistungsfähigkeit des Arbeitsspeicher-Dies auszuwählen; und
- Datenspiegelungslogik, die ausgelegt ist, um Daten für den ausgewählten operationellen Arbeitsspeicher-Die auf den Ersatzarbeitsspeicher-Die zu spiegeln.
-
In Beispiel 10 kann der Gegenstand der Beispiele 9-16 (mit Ausnahme des vorliegenden Beispiels) optional aufweisen, wobei der Arbeitsspeichercontroller ferner aufweist:
- Die-Ausfallerkennungslogik, die ausgelegt ist, um Ausfall des ausgewählten operationellen Arbeitsspeicher-Dies zu erkennen; und
- Die-Austauschlogik, die ausgelegt ist, um als Reaktion auf Erkennen des Ausfalls des ausgewählten operationellen Arbeitsspeicher-Dies den ausgefallenen operationellen Arbeitsspeicher-Die zu deaktivieren und den ausgefallenen operationellen Arbeitsspeicher-Die durch den Ersatzarbeitsspeicher-Die zu ersetzen, wobei der Ersatzspeicher-Die Daten aufweist, die von dem ausgewählten operationellen Arbeitsspeicher-Die gespiegelt wurden, bevor ein Ausfall des ausgewählten operationellen Arbeitsspeicher-Dies erkannt wurde.
-
In Beispiel 11 kann der Gegenstand der Beispiele 9-16 (mit Ausnahme des vorliegenden Beispiels) optional aufweisen, wobei der Arbeitsspeichercontroller ferner aufweist:
- Fehlerkorrekturcode-Logik, die ausgelegt ist, um Daten aus den operationellen Arbeitsspeicher-Dies des Arbeitsspeichers, einschließlich des ausgewählten operationellen Ersatzarbeitsspeicher-Dies, zu lesen, wobei die Lesedaten in Übereinstimmung mit einem Fehlerkorrekturcode kodiert sind, wobei die Fehlerkorrekturcode-Logik Dekodierlogik aufweist, die ausgelegt ist, um die kodierten Lesedaten zu dekodieren, und Fehlererkennungslogik aufweist, die ausgelegt ist, um einen Fehler in den dekodierten Lesedaten zu erkennen, und Fehlerkorrekturlogik aufweist, die ausgelegt ist, um zu versuchen, einen erkannten Fehler in den dekodierten Lesedaten zu korrigieren, wobei die Fehlerkorrekturcode-Logik ferner ausgelegt ist, um als Reaktion auf ein Versagen der Fehlerkorrekturlogik bei der Korrektur eines erkannten Fehlers in den dekodierten Lesedaten Daten vom Ersatzarbeitsspeicher-Die zu lesen, wobei die Lesedaten in Übereinstimmung mit einem Fehlerkorrektur-Code kodiert sind, und die kodierten Lesedaten aus dem ausgewählten operationellen Arbeitsspeicher-Die durch die kodierten Lesedaten aus dem Ersatzarbeitsspeicher-Die substituiert werden.
-
In Beispiel 12 kann der Gegenstand der Beispiele 9-16 (mit Ausnahme des vorliegenden Beispiels) optional aufweisen, wobei die Dekodierlogik ferner ausgelegt ist, um die kodierten Lesedaten zu dekodieren, welche die kodierten Lesedaten aus dem Ersatzarbeitsspeicher-Die einschließen, und wobei die Fehlererkennungslogik ferner ausgelegt ist, um einen Fehler in den dekodierten Lesedaten zu erkennen, welche die dekodierten Lesedaten aus dem Ersatzarbeitsspeicher-Die einschließen, und wobei die Fehlerkorrekturlogik ferner ausgelegt ist, um einen erkannten Fehler in den dekodierten Lesedaten, welche die dekodierten Lesedaten aus dem Ersatzarbeitsspeicher-Die einschließen, zu korrigieren.
-
In Beispiel 13 kann der Gegenstand der Beispiele 9-16 (mit Ausnahme des vorliegenden Beispiels) optional aufweisen, wobei der Arbeitsspeichercontroller ferner zyklische vorausschauende Arbeitsspeicherinstandhaltungslogik aufweist, die ausgelegt ist, um zyklisch vorausschauende Arbeitsspeicherinstandhaltung in einer Vielzahl von Instandhaltungszyklen durchzuführen, wobei in jedem Instandhaltungszyklus die Auswahllogik ferner ausgelegt ist, um in jedem Instandhaltungszyklus die Speicherleistungsfähigkeit der operationellen Arbeitsspeicher-Dies des Arbeitsspeichers zu ermitteln und einen operationellen Arbeitsspeicher-Die des Arbeitsspeichers als eine Funktion der Arbeitsspeicher-Die-Leistungsfähigkeit auszuwählen; und wobei die Datenspiegelungslogik ferner ausgelegt ist, um in jedem Instandhaltungszyklus Daten für den ausgewählten operationellen Arbeitsspeicher-Die auf den Ersatzarbeitsspeicher-Die zu spiegeln.
-
In Beispiel 14 kann der Gegenstand der Beispiele 9-16 (mit Ausnahme des vorliegenden Beispiels) optional aufweisen, wobei der Arbeitsspeichercontroller ferner zyklische Auffrischungslogik aufweist, die ausgelegt ist, um zyklisch Auffrischungen des Arbeitsspeichers in einer Vielzahl von Auffrischungszyklen durchzuführen, wobei die zyklische vorausschauende Arbeitsspeicherinstandhaltungslogik ferner ausgelegt ist, um jeden Instandhaltungszyklus in Verbindung mit einem Auffrischungszyklus durchzuführen.
-
In Beispiel 15 kann der Gegenstand der Beispiele 9-16 (mit Ausnahme des vorliegenden Beispiels) optional aufweisen, wobei die Auswahllogik Logik aufweist, die ausgelegt ist, um Arbeitsspeicherleistungsfähigkeit von operationellen Arbeitsspeicher-Dies des Arbeitsspeichers zu ermitteln, einschließlich Logik, die ausgelegt ist, um über einen Zeitraum vergleichende statistische Leistungsfähigkeitsdaten zu akkumulieren, die die relative Leistungsfähigkeit jedes Arbeitsspeicher-Dies des Arbeitsspeichers in Bezug auf ein bestimmtes Leistungsfähigkeitskriterium repräsentieren, und Logik, die ausgelegt ist, um einen operationellen Arbeitsspeicher-Die des Arbeitsspeichers als eine Funktion des operationellen Arbeitsspeicher-Dies, der die schlechteste relative Leistungsfähigkeit über den Zeitraum aufweist, auszuwählen.
-
In Beispiel 16 kann der Gegenstand der Beispiele 9-16 (unter Ausschluss des vorliegenden Beispiels) optional aufweisen, wobei die Leistungsfähigkeitskriterien unkorrigierte Bitfehlerrate aufweisen.
-
Beispiel 17 ist ein Verfahren, umfassend:
- Bestimmen von Speicherleistungsfähigkeit von operationellen Arbeitsspeicher-Dies eines Arbeitsspeichers;
- Auswählen eines operationellen Arbeitsspeicher-Dies des Arbeitsspeichers als eine Funktion der Arbeitsspeicherleistungsfähigkeit; und
- Spiegeln von Daten für den ausgewählten operationellen Arbeitsspeicher-Die auf einen Ersatzarbeitsspeicher-Die.
-
In Beispiel 18 kann der Gegenstand der Beispiele 17-24 (mit Ausnahme des vorliegenden Beispiels) optional Erkennen eines Ausfalls des ausgewählten operationellen Arbeitsspeicher-Dies aufweisen, als Reaktion auf Erkennen eines Ausfalls des ausgewählten operationellen Arbeitsspeicher-Dies, Deaktivieren des ausgefallenen operationellen Arbeitsspeicher-Dies und Ersetzen des ausgefallenen operationellen Arbeitsspeicher-Dies durch den Ersatzarbeitsspeicher-Die, wobei der Ersatzarbeitsspeicher-Die Daten aufweist, die vom ausgewählten operationellen Arbeitsspeicher-Die vor dem Erkennen des Ausfalls des ausgewählten operationellen Arbeitsspeicher-Dies gespiegelt wurden.
-
In Beispiel 19 kann der Gegenstand der Beispiele 17-24 (unter Ausschluss des vorliegenden Beispiels) optional aufweisen:
- Lesen von Daten aus den operationellen Arbeitsspeicher-Dies des Arbeitsspeichers, einschließlich des ausgewählten operationellen Arbeitsspeicher-Dies;
- Versuchen einer Fehlerkorrektur der Lesedaten, falls die Lesedaten einen Fehler enthalten;
- falls die Fehlerkorrektur nicht erfolgreich ist, Modifizieren der Lesedaten durch Ersetzen der aus dem ausgewählten operationellen Arbeitsspeicher-Die gelesenen Lesedaten durch die vor Erkennen eines Ausfalls des ausgewählten operationellen Arbeitsspeicher-Dies aus dem Ersatzarbeitsspeicher-Die gelesenen Lesedaten; und
- Versuchen einer Fehlerkorrektur der modifizierten Lesedaten, falls die modifizierten Lesedaten einen Fehler enthalten.
-
In Beispiel 20 kann der Gegenstand der Beispiele 17-24 (mit Ausnahme des vorliegenden Beispiels) optional zyklisches Durchführen von Instandhaltung des Arbeitsspeichers in einer Vielzahl von Instandhaltungszyklen aufweisen, wobei jeder Instandhaltungszyklus aufweist:
- das Bestimmen von Speicherleistungsfähigkeit von operationellen Arbeitsspeicher-Dies des Arbeitsspeichers;
- das Auswählen eines operationellen Arbeitsspeicher-Dies des Arbeitsspeichers als eine Funktion der Arbeitsspeicherleistungsfähigkeit; und
- das Spiegeln von Daten des ausgewählten operationellen Arbeitsspeicher-Dies auf den Ersatzarbeitsspeicher-Die.
-
In Beispiel 21 kann der Gegenstand der Beispiele 17-24 (mit Ausnahme des vorliegenden Beispiels) optional die Durchführung zyklischer Auffrischungen des Arbeitsspeichers in einer Vielzahl von Auffrischungszyklen aufweisen, wobei jeder Instandhaltungszyklus in Verbindung mit einem Auffrischungszyklus durchgeführt wird.
-
In Beispiel 22 kann der Gegenstand der Beispiele 17-24 (mit Ausnahme des vorliegenden Beispiels) optional aufweisen, wobei das Ermitteln von Speicherleistungsfähigkeit von operationellen Arbeitsspeicher-Dies des Arbeitsspeichers Akkumulieren relativer statistischer Leistungsfähigkeitsdaten über einen Zeitraum aufweist, die die relative Leistungsfähigkeit jedes Arbeitsspeicher-Dies des Arbeitsspeichers in Bezug auf ein bestimmtes Leistungsfähigkeitskriterium repräsentieren, und wobei das Auswählen eines operationellen Arbeitsspeicher-Dies des Arbeitsspeichers als eine Funktion von Arbeitsspeicher-Die-Leistungsfähigkeit ein Auswählen des operationellen Arbeitsspeicher-Dies, der die schlechteste relative Leistungsfähigkeit über den Zeitraum aufweist, einschließt.
-
In Beispiel 23 kann der Gegenstand der Beispiele 17-24 (unter Ausschluss des vorliegenden Beispiels) optional aufweisen, wobei die Leistungsfähigkeitskriterien unkorrigierte Bitfehlerrate aufweisen.
-
In Beispiel 24 kann der Gegenstand der Beispiele 17-24 (unter Ausschluss des vorliegenden Beispiels) optional mindestens einen Vorgang aufweisen:
- (1) Erkennen eines Ausfalls des ausgewählten operationellen Arbeitsspeicher-Dies, als Reaktion auf Erkennen eines Ausfalls des ausgewählten operationellen Arbeitsspeicher-Dies, Deaktivieren des ausgefallenen operationellen Arbeitsspeicher-Dies und Ersetzen des ausgefallenen operationellen Arbeitsspeicher-Dies durch den Ersatzarbeitsspeicher-Die, wobei der Ersatzarbeitsspeicher-Die Daten aufweist, die vom ausgewählten operationellen Arbeitsspeicher-Die vor dem Erkennen des Ausfalls des ausgewählten operationellen Arbeitsspeicher-Dies gespiegelt wurden;
- (2) Lesen von Daten aus den operationellen
- Arbeitsspeicher-Dies des Arbeitsspeichers einschließlich des ausgewählten operationellen Arbeitsspeicher-Dies;
- Versuchen einer Fehlerkorrektur der Lesedaten, falls die Lesedaten einen Fehler enthalten;
- falls die Fehlerkorrektur nicht erfolgreich ist, Modifizieren der Lesedaten durch Ersetzen der aus dem ausgewählten operationellen Arbeitsspeicher-Die gelesenen Lesedaten durch die vor Erkennen eines Ausfalls des ausgewählten operationellen Arbeitsspeicher-Dies aus dem Ersatzarbeitsspeicher-Die gelesenen Lesedaten; und
- Versuchen einer Fehlerkorrektur der modifizierten Lesedaten, falls die modifizierten Lesedaten einen Fehler enthalten;
- (3) zyklische Durchführung von Instandhaltung des Arbeitsspeichers in einer Vielzahl von Instandhaltungszyklen, wobei jeder Instandhaltungszyklus aufweist:
- das Bestimmen von Speicherleistungsfähigkeit von operationellen Arbeitsspeicher-Dies des Arbeitsspeichers;
- das Auswählen eines operationellen Arbeitsspeicher-Dies des Arbeitsspeichers als eine Funktion der Arbeitsspeicherleistungsfähigkeit; und
- das Spiegeln von Daten des ausgewählten operationellen Arbeitsspeicher-Dies auf den Ersatzarbeitsspeicher-Die;
- (4) Durchführen zyklischer Auffrischungen des Arbeitsspeichers in einer
Vielzahl von Auffrischungszyklen, wobei jeder Instandhaltungszyklus in Verbindung mit einem Auffrischungszyklus durchgeführt wird;
- (5) wobei das Ermitteln von Speicherleistungsfähigkeit von
operationellen Arbeitsspeicher-Dies des Arbeitsspeichers Akkumulieren vergleichender statistischer Leistungsfähigkeitsdaten über einen Zeitraum aufweist, die die relative Leistungsfähigkeit jedes Arbeitsspeicher-Dies des Arbeitsspeichers in Bezug auf ein bestimmtes Leistungsfähigkeitskriterium repräsentieren, und wobei das Auswählen eines operationellen Arbeitsspeicher-Dies des Arbeitsspeichers als eine Funktion von Arbeitsspeicher-Die-Leistungsfähigkeit ein Auswählen des operationellen Arbeitsspeicher-Dies, der die schlechteste relative Leistungsfähigkeit über den Zeitraum aufweist, einschließt; und
- (6) wobei die Leistungsfähigkeitskriterien unkorrigierte Bitfehlerrate aufweisen.
-
Beispiel 25 ist eine Einrichtung, umfassend:
- Auswahlmittel zum Ermitteln der Speicherleistungfähigkeit von operationellen Arbeitsspeicher-Dies eines Arbeitsspeichers, und Auswählen eines operationellen Arbeitsspeicher-Dies des Arbeitsspeichers als eine Funktion der Leistungsfähigkeit des Arbeitsspeicher-Dies; und
- Mittel zur Datenspiegelung zum Spiegeln von Daten für den ausgewählten operationellen Arbeitsspeicher-Die auf einen Ersatzarbeitsspeicher-Die.
-
In Beispiel 26 kann der Gegenstand der Beispiele 25-32 (unter Ausschluss des vorliegenden Beispiels) optional aufweisen:
- Mittel zur Die-Ausfallerkennung zum Erkennen von Ausfällen des ausgewählten operationellen Arbeitsspeicher-Dies; und
- Mittel zum Ersetzen von Dies, um, als Reaktion auf Erkennen des Ausfalls des ausgewählten Arbeitsspeicher-Dies den ausgefallenen operationellen Arbeitsspeicher-Die zu deaktivieren und den ausgefallenen operationellen Arbeitsspeicher-Die durch den Ersatzarbeitsspeicher-Die zu ersetzen, wobei der Ersatzspeicher-Die Daten aufweist, die vom ausgewählten operationellen Arbeitsspeicher-Die gespiegelt wurden, bevor ein Ausfall des ausgewählten operationellen Arbeitsspeicher-Dies erkannt wurde.
-
In Beispiel 27 kann der Gegenstand der Beispiele 25-32 (unter Ausschluss des vorliegenden Beispiels) optional aufweisen:
- Fehlerkorrekturcode-Mittel zum Lesen von Daten aus den operationellen Arbeitsspeicher-Dies des Arbeitsspeichers einschließlich des ausgewählten operationellen Arbeitsspeicher-Dies, wobei die Lesedaten gemäß einem Fehlerkorrekturcode kodiert sind, wobei die Fehlerkorrekturcode-Mittel Dekodiermittel zum Dekodieren der kodierten Lesedaten, Fehlererkennungsmittel zum Erkennen eines Fehlers in den dekodierten Lesedaten und Fehlerkorrekturmittel Versuchen, einen erkannten Fehler in den dekodierten Lesedaten zu korrigieren, aufweisen, wobei die Fehlerkorrekturcode-Mittel ferner ausgelegt sind, um in Reaktion auf ein Versagen der Fehlerkorrekturmittel, einen erkannten Fehler in den dekodierten Lesedaten zu korrigieren, Daten aus dem Ersatzarbeitsspeicher-Die zu lesen, wobei die Lesedaten gemäß einem Fehlerkorrekturcode kodiert sind, und die kodierten Lesedaten aus dem ausgewählten operationellen Arbeitsspeicher-Die durch die kodierten Lesedaten aus dem Ersatzarbeitsspeicher-Die zu substituieren.
-
In Beispiel 28 kann der Gegenstand der Beispiele 25-32 (mit Ausnahme des vorliegenden Beispiels) optional aufweisen, wobei die Dekodiermittel ferner ausgelegt sind, um die kodierten Lesedaten zu dekodieren, welche die kodierten Lesedaten aus dem Ersatzarbeitsspeicher-Die einschließen, und wobei die Fehlererkennungsmittel ferner ausgelegt sind, um einen Fehler in den dekodierten Lesedaten zu erkennen, welche die dekodierten Lesedaten aus dem Ersatzarbeitsspeicher-Die einschließen, und wobei die Fehlerkorrekturmittel ferner ausgelegt sind, um einen erkannten Fehler in den dekodierten Lesedaten, einschließlich der dekodierten Lesedaten aus dem Ersatzarbeitsspeicher-Die, zu korrigieren.
-
In Beispiel 29 kann der Gegenstand der Beispiele 25-32 (mit Ausnahme des vorliegenden Beispiels) optional zyklische vorausschauende Arbeitsspeicherinstandhaltungsmittel aufweisen, um zyklisch vorausschauende Arbeitsspeicherinstandhaltung in einer Vielzahl von Instandhaltungszyklen durchzuführen, wobei in jedem Instandhaltungszyklus die Auswahlmittel ferner ausgelegt sind, um in jedem Instandhaltungszyklus die Speicherleistungsfähigkeit der operationellen Arbeitsspeicher-Dies des Arbeitsspeichers zu ermitteln und einen operationellen Arbeitsspeicher-Die des Arbeitsspeichers als eine Funktion der Arbeitsspeicher-Die-Leistungsfähigkeit auszuwählen; und wobei die Datenspiegelungsmittel ferner ausgelegt sind, um in jedem Instandhaltungszyklus Daten für den ausgewählten Arbeitsspeicher-Die auf den Ersatzarbeitsspeicher-Die zu spiegeln.
-
In Beispiel 30 kann der Gegenstand der Beispiele 25-32 (mit Ausnahme des vorliegenden Beispiels) optional zyklische Auffrischungsmittel aufweisen, um zyklisch Auffrischungen des Arbeitsspeichers in einer Vielzahl von Auffrischungszyklen durchzuführen, wobei die Mittel für die vorausschauende Arbeitsspeicherinstandhaltung ferner ausgelegt sind, um jeden Instandhaltungszyklus in Verbindung mit einem Auffrischungszyklus durchzuführen.
-
In Beispiel 31 kann der Gegenstand der Beispiele 25-32 (mit Ausnahme des vorliegenden Beispiels) optional aufweisen, wobei die Auswahlmittel Mittel aufweisen, um Arbeitsspeicherleistungsfähigkeit von operationellen Arbeitsspeicher-Dies des Arbeitsspeichers zu ermitteln, einschließlich Mitteln, um über einen Zeitraum vergleichende statistische Leistungsfähigkeitsdaten zu akkumulieren, die die relative Leistungsfähigkeit jedes Arbeitsspeicher-Dies des Arbeitsspeichers in Bezug auf ein bestimmtes Leistungsfähigkeitskriterium repräsentieren, und Mittel, um einen operationellen Arbeitsspeicher-Die des Arbeitsspeichers als eine Funktion des operationellen Arbeitsspeicher-Dies, der die schlechteste relative Leistungsfähigkeit über den Zeitraum aufweist, auszuwählen.
-
In Beispiel 32 kann der Gegenstand der Beispiele 25-32 (unter Ausschluss des vorliegenden Beispiels) optional aufweisen, wobei die Leistungsfähigkeitskriterien unkorrigierte Bitfehlerrate aufweisen.
-
Beispiel 33 ist eine Einrichtung, die Mittel umfasst, um ein Verfahren, wie es in einem der vorhergehenden Beispiele beansprucht wird, auszuführen.
-
Beispiel 34 ist ein maschinenlesbarer Datenspeicher, der maschinenlesbare Befehle aufweist, die bei Ausführung ein Verfahren implementieren oder eine Vorrichtung oder ein System verwirklichen, wie in einem der vorhergehenden Beispiele beansprucht.
-
Die beschriebenen Vorgänge können als ein Verfahren, eine Einrichtung oder ein Computerprogrammprodukt unter Verwendung von Standardprogrammierungs- und/oder Ingenieurtechniken zur Herstellung von Software, Firmware, Hardware oder einer beliebigen Kombination dieser implementiert werden. Die beschriebenen Vorgänge können als Computerprogrammcode implementiert werden, der in einem „computerlesbaren Datenspeichermedium“ unterhalten wird, wobei ein Prozessor den Code aus dem computerlesbaren Datenspeichermedium lesen und ausführen kann. Das computerlesbare Datenspeichermedium weist mindestens einen der elektronischen Schaltkreise, Datenspeichermaterialien, anorganischen Materialien, organischen Materialien, biologischen Materialien, ein Gehäuse, eine Verkleidung, eine Beschichtung und Hardware auf. Ein computerlesbares Datenspeichermedium kann umfassen, aber ist nicht beschränkt auf, ein magnetisches Datenspeichermedium (z. B. Festplattenlaufwerke, Disketten, Bandlaufwerk usw.), optische Datenspeicher (CD-ROMs, DVDs, optische Speicherplatten usw.), flüchtige und nichtflüchtige Arbeitsspeichervorrichtungen (z. B. EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, Flash-Speicher, Firmware, programmierbare Logik usw.), Festkörperbauelemente (SSD) usw. Der Code, der die beschriebenen Vorgänge implementiert, kann ferner in einer Hardwarelogik implementiert sein, die in einer Hardwarevorrichtung implementiert ist (z. B. einem integrierten Schaltkreischip, programmierbaren Gate-Array (PGA), anwendungsspezifischen integrierten Schaltkreis (ASIC) usw.). Darüber hinaus kann der Code, der die beschriebenen Vorgänge implementiert, in „Übertragungssignalen“ implementiert sein, wobei sich Übertragungssignale durch den Raum oder durch ein Übertragungsmedium, wie eine Glasfaser, Kupferdraht usw., ausbreiten können. Die Übertragungssignale, in denen der Code oder die Logik kodiert ist, können außerdem ein drahtloses Signal, eine Satellitenübertragung, Funkwellen, Infrarotsignale, Bluetooth usw. umfassen. Der in einem computerlesbaren Datenspeichermedium eingebettete Programmcode kann in Form von Übertragungssignalen von einer Sendestation oder einem Computer zu einer Empfangsstation oder einem Computer übertragen werden. Ein computerlesbares Datenspeichermedium umfasst nicht nur Übertragungssignale. Der Fachmann wird anerkennen, dass viele Modifikationen an dieser Konfiguration vorgenommen werden können, ohne vom Schutzumfang der vorliegenden Beschreibung abzuweichen, und dass der Herstellungsartikel ein geeignetes Informationsträgermedium umfassen kann, das in der Fachwelt bekannt ist. Natürlich wird der Fachmann anerkennen, dass viele Modifikationen an dieser Konfiguration vorgenommen werden können, ohne vom Schutzumfang der vorliegenden Beschreibung abzuweichen, und dass der Herstellungsartikel ein beliebiges materielles Informationsträgermedium umfassen kann, das in der Fachwelt bekannt ist.
-
In bestimmten Anwendungen kann eine Vorrichtung gemäß der vorliegenden Beschreibung in einem Computersystem verkörpert sein, das einen Videocontroller zur Darstellung von Informationen auf einem Monitor oder einem anderen mit dem Computersystem gekoppelten Display, einen Gerätetreiber und einen Netzwerkcontroller aufweist, wie z. B. ein Computersystem, das einen Desktop, eine Workstation, einen Server, Mainframe, Laptop, Handheld-Computer usw. umfasst. Alternativ können die Ausführungsformen der Vorrichtung in einem Computergerät verkörpert sein, das beispielsweise keinen Videocontroller enthält, wie einen Switch, Router usw., oder beispielsweise keinen Netzwerkcontroller enthält.
-
Die dargestellte Logik der Figuren kann bestimmte Ereignisse zeigen, die in einer bestimmten Reihenfolge auftreten. In alternativen Ausführungsformen können bestimmte Vorgänge in einer anderen Reihenfolge durchgeführt sowie modifiziert oder entfernt werden. Außerdem können Vorgänge zur oben beschriebenen Logik hinzugefügt werden und trotzdem den beschriebenen Ausführungsformen entsprechen. Darüber hinaus können die hier beschriebenen Vorgänge sequentiell ablaufen oder bestimmte Vorgänge können parallel verarbeitet werden. Darüber hinaus können Vorgänge von einer einzelnen Verarbeitungseinheit oder von verteilten Verarbeitungseinheiten ausgeführt werden.
-
Die vorstehende Beschreibung verschiedener Ausführungsformen wurde zur Veranschaulichung und Beschreibung dargelegt. Sie erhebt keinen Anspruch auf Vollständigkeit und ist nicht dazu bestimmt, die offenbarte konkrete Form zu beschränken. Angesichts der obigen Lehren sind viele Modifikationen und Variationen möglich.