-
HINTERGRUND
-
Die Offenbarung hierin betrifft im Allgemeinen eine Übersetzung von logischem in virtuellen und virtuellem in physischen Arbeitsspeicher für einen Storage Class Memory (SCM).
-
Ein Storage Class Memory (SCM) ist ein Typ eines permanenten Arbeitsspeichers, der die niedrige Latenz und Byte-Adressierbarkeit eines Speichers für dynamischen Lesezugriff (DRAM) mit der Nicht-Flüchtigkeit, Flächendichte und wirtschaftlichen Merkmalen von herkömmlichen Speichermedien kombiniert. Ferner können die zentralen Verarbeitungseinheiten (CPU) aufgrund der Byte-Adressierbarkeit und niedrigen Latenz von SCM-Technologien auf Daten zugreifen, die in einem SCM gespeichert sind, ohne die Daten in einem DRAM zu puffern. Infolgedessen verwischt die SCM-Technologie den Unterschied zwischen Computer-Arbeitsspeicher und herkömmlichen Speichermedien und ermöglicht einstufige Architekturen ohne DRAM. Im Gegensatz zu Konfigurationen von herkömmlichem Hauptarbeitsspeicher und Plattenspeicher stellt ein SCM eine einstufige Architektur bereit.
-
In der Regel wird ein SCM als Gruppen von Solid-State-Einheiten umgesetzt, die über mehrere Eingabe/Ausgabe- (E/A) Adapter mit einem Datenverarbeitungssystem verbunden sind, die zum Zuordnen einer Technologie einer E/A-Einheit zu dem Arbeitsspeicherbus der zentralen Verarbeitungseinheit(en) verwendet werden. Ein Schreiben von Daten in einen SCM erfordert jedoch, auf Besonderheiten in der SCM-Technologie zu achten: eine SCM-Medienkarte ist als eine Sammlung von Paketen organisiert, die jeweils eine Anzahl „N“ von Dies mit Millionen von Speicherelementen umfassen, die Byte-adressierbar sind. Ein allgemeines Merkmal von SCMs ist, dass diese Arbeitsspeichereinheiten eine finite Schreibbeständigkeit haben. Eine Arbeitsspeichereinheit mit finiter Schreibbeständigkeit bedeutet, dass sie nicht endlos beschrieben werden kann, bevor Teile des SCMs beginnen, fehlerhaft zu werden. Ein Identifizieren, welcher Arbeitsspeicher fehlerhaft oder fehleranfällig ist, hilft das Risiko eines Verlusts von gespeicherten Daten zu verringern. Zum Beispiel können Arbeitsspeicher-Bytes (oder Bit-Arrays), die als schlecht identifiziert werden, vollkommen vermieden werden, während Arbeitsspeicher-Bytes, die nicht als schlecht identifiziert werden, ohne Einschränkungen verwendet werden können. Ferner können schlechte Arbeitsspeicher-Bytes in Ausführungsformen durch Ersatz-Bytes ersetzt werden.
-
KURZDARSTELLUNG DER ERFINDUNG
-
Die Kurzdarstellung der Offenbarung wird zur Unterstützung des Verständnisses von einem Computersystem, einer Computer-Architekturstruktur, einem Prozessor, einem Storage Class Memory (SCM) und einem Verfahren zum Medienmanagement und ohne eine Absicht bereitgestellt, die Offenbarung oder die Erfindung einzuschränken. Die vorliegende Offenbarung richtet sich an einen Fachmann. Es sollte klar sein, dass verschiedene Aspekte und Merkmale der Offenbarung in einigen Fällen vorteilhaft unabhängig voneinander oder in Kombination mit anderen Aspekten und Merkmalen der Offenbarung in anderen Fällen verwendet werden können. Daher können an dem Computersystem, der Architekturstruktur, dem Prozessor, dem SCM und deren Betriebsverfahren Variationen und Modifizierungen vorgenommen werden, um verschiedene Effekte zu erzielen.
-
Ein Arbeitsspeichersystem zum Speichern von Daten in einem oder mehreren Speicherchips wird offenbart, wobei das Arbeitsspeichersystem in einer Ausführungsform umfasst: eine oder mehrere Speicherkarten, wobei jede Karte eine Mehrzahl von Speicherchips aufweist, und jeder Chip eine Mehrzahl von Dies mit einer Mehrzahl von Speicherzellen aufweist; einen Arbeitsspeicher-Controller, der ein Übersetzungsmodul aufweist, wobei das Übersetzungsmodul ferner aufweist: eine logisch-virtuelle Übersetzungstabelle (LVT) mit einer Mehrzahl von Einträgen, wobei jeder Eintrag in der LVT konfiguriert ist, um eine logische Adresse einer virtuellen Blockadresse (VBA) zuzuordnen, wobei die VBA einer Gruppe der Speicherzellen, z.B. einer logischen Blockadresse (LBA), auf der einen oder den mehreren Speicherkarten entspricht, wobei jeder Eintrag in der LVT ferner eine Schreibabnutzungsebenen-Zählung, um die Anzahl von Schreiboperationen in die VBA zu verfolgen, die diesem LVT-Eintrag zugeordnet sind, und eine Leseabnutzungsebenen-Zählung umfasst, um die Anzahl von Leseoperationen für die VBA zu verfolgen, die diesem LVT-Eintrag zugeordnet ist. In einer oder mehreren Ausführungsformen ist die Schreibabnutzungsebenen-Zählung in der LVT so programmierbar, dass sie einen Schreibebenen-Schwellenwert aufweist, der der maximalen Anzahl von Schreiboperationen in eine VBA entspricht, und in Reaktion auf eine Schreiboperation, die den Schreibebenen-Schwellenwert in einem LVT-Eintrag überschreitet (oder diesem entspricht), werden die Daten in der Speicherkarte, die dem LVT-Eintrag entsprechen, der den Schreibebenen-Schwellenwert überschreitet (oder diesem entspricht), in einen neuen Speicherplatz auf der Speicherkarte mit einer verschiedenen VBA verschoben.
-
Das Arbeitsspeichersystem in einer Ausführungsform umfasst eine VBA-Freispeicherliste, die die VBAs identifiziert, die verfügbar sind, um in sie Daten zu schreiben, und in Reaktion auf eine Schreiboperation wird eine neue VBA aus der VBA-Freispeicherliste erhalten. Das System in einer oder mehreren Ausführungsformen ist so konfiguriert, dass eine neue VBA aus der VBA-Freispeicherliste auf Grundlage der Abnutzungsebenen-Zählung erhalten wird. In einem Aspekt ist die Leseabnutzungsebenen-Zählung in der LVT so programmierbar, dass sie einen Leseebenen-Schwellenwert aufweist, der einer maximalen Anzahl von Leseoperationen einer VBA entspricht, und in Reaktion auf eine Leseoperation, die den Leseebenen-Schwellenwert in einem LVT-Eintrag überschreitet, werden die Daten in der Speicherkarte, die dem LVT-Eintrag entsprechen, der den Leseebenen-Schwellenwert überschreitet (oder diesem entspricht), in einen neuen Speicherplatz auf der Speicherkarte mit einer verschiedenen VBA geschrieben. Das System ist so konfiguriert, dass es in Reaktion auf eine Leseoperation, die den Leseebenen-Schwellenwert für einen LVT-Eintrag überschreitet (oder diesem entspricht), eine neue VBA aus der VBA-Freispeicherliste erhält, und die Daten in der Speicherkarte, die dem LVT-Eintrag entsprechen, der den Leseebenen-Schwellenwert überschreitet (oder diesem entspricht), in den neuen Speicherplatz auf der Speicherkarte mit der verschiedenen VBA geschrieben werden.
-
Das Arbeitsspeichersystem in einer oder mehreren Ausführungsformen umfasst einen Drift-Puffer mit einer Mehrzahl von Einträgen zum temporären Speichern von Daten und eine Drift-Tabelle mit einer Mehrzahl von Einträgen, wobei jeder Drift-Tabelleneintrag so konfiguriert ist, dass er eine der Mehrzahl von Einträgen in dem Drift-Puffer indexiert, wobei jeder Eintrag der Drift-Tabelle einer VBA einen Drift-Pufferindex zuordnet, wobei das System so konfiguriert ist, dass es in Reaktion auf ein Schreiben von Daten in die Speicherkarte die Daten auch in einen Eintrag in dem Drift-Puffer schreibt und ferner die VBA und die entsprechende logische Adresse, z.B. logische Blockadresse (LBA), in einen Eintrag in der Drift-Tabelle schreibt, die für den entsprechenden Eintrag in dem Drift-Puffer indexiert ist. Das Arbeitsspeichersystem ist in einer Ausführungsform so konfiguriert, dass es aus dem Drift-Puffer liest, wenn Daten in dem Drift-Puffer vorhanden sind, die der VBA entsprechen. Der Drift-Puffer ist in einem Aspekt ein FIFO-Ringpuffer, der auf der Speicherkarte enthalten ist. Jeder LVT-Eintrag umfasst ein Feld zum Angeben, ob der Drift-Puffer die Daten enthält, die diesem LVT-Eintrag entsprechen, wobei das System in Reaktion auf einen Treffer auf einem LVT-Eintrag konfiguriert wird, in dem das LVT-Feld angibt, dass sich Daten in dem Drift-Puffer befinden, wobei der LVT-Eintrag auf einen Eintrag in der Drift-Tabelle zeigt. Jeder LVT-Eintrag in einer Ausführungsform weist ein Feld „Drift-Pufferindex gültig“ auf, um anzugeben, ob der Drift-Puffer Daten enthält, die jedem jeweiligen LVT-Eintrag entsprechen, und wobei das System so konfiguriert ist, dass in Reaktion auf eine Anforderung, Daten aus der Speicherkarte zu lesen, das System konfiguriert wird, die logische Adresse in der LVT zu suchen, und in Reaktion darauf, dass ein LVT-Eintrag gefunden wird, der der logischen Adresse entspricht, das System das Feld „Drift-Pufferindex gültig“ prüft, und in Reaktion darauf, dass das Feld „Drift-Pufferindex gültig“ angibt, dass sich die angeforderten Daten nicht in dem Drift-Puffer befinden, das System die VBA aus dem LVT-Eintrag nutzt, und in Reaktion darauf, dass das Feld „Drift-Pufferindex gültig“ angibt, dass sich die angeforderten Daten in dem Drift-Puffer befinden, das System die angeforderten Daten aus dem Drift-Puffer liest. Das System ist in einem Aspekt so konfiguriert, dass in Reaktion auf das Feld „Drift-Puffer gültig“, das angibt, dass sich die angeforderten Daten in dem Drift-Puffer befinden, die LVT auf einen Eintrag in der Drift-Tabelle zeigt, und das System die Informationen in der Drift-Tabelle nutzt, um die erforderlichen Daten aus einem entsprechenden Eintrag in dem Drift-Puffer zu erhalten. Das System ist gemäß einer Ausführungsform so konfiguriert, dass es in Reaktion darauf, dass Daten aus einem Drift-Puffereintrag entfernt werden, wobei der LVT-Eintrag, der dem Drift-Puffereintrag entspricht, aus dem Daten entfernt werden, so aktualisiert wird, dass der LVT-Eintrag die VBA des Eintrags enthält, der aus dem Drift-Puffer entfernt wurde.
-
Offenbart wird ein Verfahren gemäß einer oder mehreren Ausführungsformen zum Lesen von Daten aus einer oder mehreren Speicherkarten, wobei jede Speicherkarte eine Mehrzahl von Speicherchips aufweist, und jeder Speicherchip eine Mehrzahl von Dies mit einer Mehrzahl von Speicherzellen aufweist. Das Verfahren umfasst in einem Aspekt: Ausgeben einer Anforderung von Daten, die sich auf der einen oder den mehreren Speicherkarten befinden; Suchen nach einer logischen Adresse für die angeforderten Daten in einer logisch-virtuellen Übersetzungstabelle (LVT) mit einer Mehrzahl von Einträgen, wobei jeder Eintrag in der LVT einer virtuellen Blockadresse (VBA) eine logische Adresse zuordnet, wobei die VBA einer Gruppe von Speicherzellen in der einen oder den mehreren Speicherkarten entspricht; in Reaktion auf ein Auffinden der logischen Adresse, z.B. logische Blockadresse (LBA), der angeforderten Daten in einem Eintrag in der LVT, Prüfen dieses LVT-Eintrags, um zu bestimmen, ob sich die Daten in einem Drift-Puffer befinden; in Reaktion auf ein Bestimmen, das sich die Daten in dem Drift-Puffer befinden, Auslesen der angeforderten Daten aus dem Drift-Puffer; und in Reaktion auf ein Bestimmen, dass sich die Daten nicht in dem Drift-Puffer befinden, Erhalten der VBA aus dem LVT-Eintrag, der der logischen Adresse, z.B. logische Blockadresse (LBA), der angeforderten Daten entspricht, und Lesen der angeforderten Daten in der Speicherkarte, die der VBA entspricht.
-
Das Verfahren in einer Ausführungsform umfasst ferner in Reaktion auf ein Lesen der angeforderten Daten aus der Speicherkarte ein Aktualisieren eines Leseebenen-Zählungsfelds in der LVT. Das Verfahren gemäß einem Aspekt umfasst ferner ein Vergleichen der Leseebenen-Zählung in dem LVT-Eintrag mit einem Leseebenen-Schwellenwertfeld in dem LVT-Eintrag, und in Reaktion darauf, dass die Leseebenen-Zählung gleich dem Leseebenen-Schwellenwert ist oder diesen überschreitet, ein Schreiben der zu lesenden Daten in einen neuen Speicherplatz auf der einen oder den mehreren Speicherkarten mit einer verschiedenen VBA. In Reaktion auf ein Schreiben der zu lesenden Daten in einen neuen Speicherplatz auf der einen oder den mehreren Speicherkarten mit einer verschiedenen VBA umfasst das Verfahren in einer Ausführungsform ein Aktualisieren der LVT mit der verschiedenen VBA. Das Verfahren umfasst ferner in einem Aspekt ein Aktualisieren der VBA in einem entsprechenden LVT-Eintrag in Reaktion darauf, dass Daten aus dem Drift-Puffer entfernt werden. Das Verfahren umfasst gemäß einem weiteren Aspekt ein Verschieben eines Eintrags in den Kopf des Drift-Puffers in Reaktion auf ein Lesen von Daten aus dem Drift-Puffer.
-
Offenbart wird ein weiteres Verfahren zum Schreiben von Daten in eine oder mehrere Speicherkarten, wobei jede Speicherkarte eine Mehrzahl von Speicherchips aufweist, und jeder Speicherchip eine Mehrzahl von Dies mit einer Mehrzahl von Speicherzellen aufweist. Das Verfahren in einer oder mehreren Ausführungsformen umfasst:
- Ausgeben einer Anforderung zum Schreiben der Daten in die eine oder die mehreren Speicherkarten; Erhalten einer verfügbaren VBA aus einer VBA-Freispeicherliste; Schreiben der Daten in den Speicherkarten-Speicherplatz, der der verfügbaren VBA entspricht, die aus der VBA-Freispeicherliste erhalten wurde; Schreiben der Daten in einen Eintrag in einem Drift-Puffer; und Schreiben der VBA der verfügbaren VBA und der dieser verfügbaren VBA entsprechenden logischen Adresse in einen Drift-Tabelleneintrag, der dem Eintrag in dem Drift-Puffer entspricht. Das Verfahren umfasst in einem Aspekt ferner ein Schreiben des entsprechenden LVT-Eintrags mit der verfügbaren VBA. In einer Ausführungsform umfasst das Verfahren ferner: Schreiben, in den LVT-Eintrag, der der VBA entspricht, die dem Speicherplatz auf der Speicherkarte entspricht, in die die Daten geschrieben werden, eines Drift-Tabellenindexes, der den Drift-Tabelleneintrag identifiziert, der dem Drift-Puffereintrag entspricht, in den die Daten geschrieben werden, und Setzen eines Bits zum Identifizieren, dass sich die Daten in dem Drift-Puffer befinden.
-
Die vorgenannten und andere Aufgaben, Merkmale und Vorteile der Erfindung werden aus den folgenden spezielleren Beschreibungen von beispielhaften Ausführungsformen der Erfindung offenkundig, die in den begleitenden Zeichnungen veranschaulicht sind, wobei ähnliche Bezugszeichen im Allgemeinen ähnliche Teile von veranschaulichten Ausführungsformen der Erfindung darstellen.
-
Figurenliste
-
Die verschiedenen Aspekte, Merkmale und Ausführungsformen eines Computersystems, einer Computer-Architekturstruktur, eines Prozessors, eines Arbeitsspeichersystems und deren Betriebsverfahren werden besser verstanden, wenn sie in Verbindung mit den bereitgestellten Figuren gelesen werden. Ausführungsformen werden in den Figuren zum Zweck einer Veranschaulichung von Aspekten, Merkmalen und/oder verschiedenen Ausführungsformen des Computersystems, der Computer-Architekturstruktur, der Prozessoren, des SCMs und deren Betriebsverfahren bereitgestellt, doch sollen die Ansprüche nicht auf die genaue Anordnung, die Strukturen, Merkmale, Aspekte, Baugruppen, Unterbaugruppen, Systeme, Schaltungen, Ausführungsformen, Verfahren, Prozesse, Techniken und/oder gezeigten Einheiten beschränkt werden, und die gezeigten Anordnungen, Strukturen, Systeme, Baugruppen, Unterbaugruppen, Merkmale, Aspekte, Verfahren, Prozesse, Techniken, Schaltungen, Ausführungsformen und Einheiten können einzeln oder in Kombination mit anderen Anordnungen, Strukturen, Baugruppen, Unterbaugruppen, Systemen, Merkmalen, Aspekten, Schaltungen, Ausführungsformen, Verfahren, Techniken, Prozessen und/oder Einheiten verwendet werden.
- 1 ist ein Funktionsblockschaubild, das ein Computersystem gemäß Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
- 2A ist ein Funktionsblockschaubild, das ein beispielhaftes Arbeitsspeichersystem und einen beispielhaften Arbeitsspeicher-Controller gemäß Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
- 28 stellt eine beispielhafte Struktur des Arbeitsspeichersystems von 2A dar.
- 3 veranschaulicht ein Blockschaubild einer Ausführungsform der Hardware und des Prozesses zum Übersetzen einer logischen Adresse in eine physische Adresse in einem Arbeitsspeichersystem.
- 4 ist ein Ablaufplan einer Ausführungsform eines Verfahrens zum Durchführen eines Host-Lesevorgangs, der eine Übersetzung einer logischen Adresse in einem Arbeitsspeichersystem umfasst, wie zum Beispiel das Arbeitsspeichersystem von 2A und 2B.
- 5 ist ein Ablaufplan einer Ausführungsform eines Verfahrens zum Durchführen eines Host-Schreibvorgangs, der eine Übersetzung einer logischen Adresse in einem Arbeitsspeichersystem umfasst, wie zum Beispiel das Arbeitsspeichersystem von 2A und 2B.
- 6A ist ein Blockschaubild einer Übersicht einer Ausführungsform eines Verfahrens und einer Hardware zum Übersetzen einer virtuellen Adresse in eine physische Adresse in einem Arbeitsspeichersystem, zum Beispiel das Arbeitsspeichersystem von 2A und 2B.
- 6B ist ein Ablaufplan, der ein beispielhaftes Verfahren zur Übersetzung einer virtuellen Blockadresse in eine physische Adresse des Arbeitsspeichersystems von 2A und 2B veranschaulicht.
- 6C veranschaulicht beispielhafte Übersetzungstabellen zum Verwenden für eine Übersetzung einer virtuellen Blockadresse in eine physische Adresse des Arbeitsspeichersystems von 2A und 2B.
- 7 ist ein Ablaufplan, der ein beispielhaftes Verfahren für einen Datenbereinigungsprozess des Arbeitsspeichersystems von 2A und 2B veranschaulicht.
- 8 ist ein Ablaufplan, der ein beispielhaftes Verfahren für eine Arbeitsspeicher-Reparaturaktion des Arbeitsspeichersystems von 2A und 2B veranschaulicht.
- 9A, 9B und 9C veranschaulichen beispielhafte Szenarios für verschiedene Typen von Arbeitsspeicher-Reparaturaktionen des Arbeitsspeichersystems von 2A und 2B.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die folgende Beschreibung wird zur Veranschaulichung der allgemeinen Grundgedanken der Erfindung angegeben und soll die hierin beanspruchten erfinderischen Konzepte keinesfalls einschränken. In der folgenden ausführlichen Beschreibung werden zahlreiche Details dargelegt, um ein Verständnis des Computersystems, der Computer-Architekturstruktur, des Prozessors, der Cachespeicher, der Arbeitsspeichersysteme und deren Betriebsverfahren bereitzustellen, dem Fachmann wird jedoch klar sein, dass verschiedene und zahlreiche Ausführungsformen des Computersystems, der Computer-Architekturstruktur, des Prozessors, der Cachespeicher, der Arbeitsspeichersysteme und deren Betriebsverfahren ohne diese speziellen Details ausgeübt werden können, und die Ansprüche und Offenbarung nicht auf die Anordnungen, Strukturen, Systeme, Baugruppen, Unterbaugruppen, Schaltungen, Merkmale, Aspekte, Prozesse, Verfahren, Techniken, Ausführungsformen und/oder hierin speziell beschriebene und gezeigte Details eingeschränkt werden sollen. Ferner können bestimmte Merkmale, Aspekte, Anordnungen, Systeme, Ausführungsformen, Techniken usw., die hierin beschrieben sind, in Kombination mit anderen beschriebenen Merkmalen, Aspekten, Anordnungen, Systemen, Ausführungsformen, Techniken usw. in jeder der verschiedenen möglichen Kombinationen und Permutationen verwendet werden.
-
Sofern nichts anderes hierin speziell definiert wird, sind alle Begriffe in ihrer größtmöglichen Interpretation zu verstehen, einschließlich aus der Patentschrift implizierte Bedeutungen sowie Bedeutungen, die vom Fachmann verstanden werden und/oder wie in Wörterbüchern, Verträgen usw. definiert. Es ist auch anzumerken, dass, wie in der Patentschrift und den Ansprüchen im Anhang verwendet, die Singularformen „ein“, „eine“ und „der/die/das“ Plural-Entsprechungen umfassen, sofern nichts anders angegeben ist, und dass die Begriffe „weist auf“ und/oder „aufweisend“, wenn sie in dieser Patentschrift in den Ansprüchen verwendet werden, das Vorhandensein von angegebenen Merkmalen, Ganzzahlen, Aspekten, Anordnungen, Ausführungsformen, Strukturen, Systemen, Baugruppen, Unterbraugruppen, Schritten, Operationen, Elementen und/oder Komponenten spezifizieren, das Vorhandensein oder Hinzufügen von einem oder mehreren anderen Merkmalen, Ganzzahlen, Aspekten, Anordnungen, Ausführungsformen, Strukturen, Systemen, Baugruppen, Unterbaugruppen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen davon nicht ausschließen.
-
Die folgende Erörterung lässt herkömmliche Merkmale von Informationsverarbeitungssystemen, einschließlich Prozessoren und Mikroprozessorsystemen und Architekturen sowie Adressübersetzungstechniken und -systemen aus, die für den Fachmann offensichtlich sind, oder beschreibt sie nur kurz. Es wird vorausgesetzt, dass ein Fachmann mit der allgemeinen Architektur von Prozessoren und insbesondere mit Adressübersetzungstechniken und -systemen und deren Betrieb vertraut ist. Es ist anzumerken, dass ein nummeriertes Element entsprechend der Figur nummeriert ist, in der das Element eingeführt wird, und in der Regel wird darauf durchgehend mit dieser Nummer in nachfolgenden Figuren verwiesen.
-
1 zeigt eine Darstellung eines Übersichtsblockschaubilds eines Computers 100-A, der mit einem anderen Computer 100-B über ein Netzwerk 130 gemäß einer Ausführungsform der vorliegenden Erfindung verbunden ist. Der Begriff „Computer“ wird hierin nur aus praktischen Gründen verwendet und ist in verschiedenen Ausführungsformen ein allgemeineres Datenbearbeitungssystem wie zum Beispiel ein Mobiltelefon, ein Tablet, ein Server-Computer usw. Die Mechanismen und Vorrichtungen von Ausführungsformen der vorliegenden Erfindung gelten gleichermaßen für jedes entsprechende Datenbearbeitungssystem.
-
Die Hauptkomponenten des Computers 100 können einen oder mehrere Prozessoren 101, ein Haupt-Arbeitsspeichersystem 102, eine Endgeräteschnittstelle 111, eine Speicherschnittstelle 112, eine E/A- (Eingabe/Ausgabe)-Einheitenschnittstelle 113 und einen Netzwerkadapter oder eine Netzwerkschnittstelle 114 aufweisen, die alle direkt oder indirekt für eine Datenübertragung zwischen Komponenten über einen Arbeitsspeicherbus 103, einen E/A-Bus 104 und eine E/A-Busschnittstelleneinheit 105 im Datenaustausch verbunden sind. Der Computer 100 enthält eine oder mehrere programmierbare Universal-Zentralverarbeitungseinheiten (CPUs) 101A, 101B, 101C und 101D, auf die hierin allgemein als der Prozessor 101 Bezug genommen wird. In einer Ausführungsform kann der Computer 100 mehrere Prozessoren enthalten, die für ein relativ großes System typisch sind; in einer anderen Ausführungsform kann der Computer 100 jedoch alternativ ein einzelnes CPU-System sein. Jeder Prozessor 101 führt Anweisungen aus, die in dem Haupt-Arbeitsspeichersystem 102 gespeichert sind, und kann eine oder mehrere Ebenen von integriertem Cache umfassen.
-
In einer Ausführungsform kann das Haupt-Arbeitsspeichersystem 102 einen Halbleiterspeicher mit Direktzugriff (z.B. ein DRAM, ein SCM oder beides), eine Speichereinheit oder ein Speichermedium zum Speichern oder Encodieren von Daten und Programmen aufweisen. In einer weiteren Ausführungsform stellt das Haupt-Arbeitsspeichersystem 102 den gesamten virtuellen Arbeitsspeicher des Computers 100 dar und kann auch den virtuellen Arbeitsspeicher von anderen Computersystemen umfassen, die mit dem Computer 100 verbunden oder über das Netzwerk 130 angeschlossen sind. Das Haupt-Arbeitsspeichersystem 102 ist vom Konzept her eine einzelne monolithische Entität, aber in anderen Ausführungsformen ist das Haupt-Arbeitsspeichersystem 102 eine komplexere Anordnung, wie zum Beispiel eine Hierarchie von Cachespeichern und anderen Arbeitsspeichereinheiten. Zum Beispiel kann ein Arbeitsspeicher in mehreren Ebenen von Cachespeichern vorhanden sein, und diese Cachespeicher können ferner nach Funktion aufgeteilt sein, sodass ein Cachespeicher Anweisungen enthält, während ein anderer Nicht-Anweisungsdaten enthält, die von dem Prozessor oder den Prozessoren verwendet werden. Ein Arbeitsspeicher kann ferner verteilt und verschiedenen CPUs oder Sätzen von CPUs zugehörig sein, wie aus jeder von verschiedenen sogenannten Computerarchitekturen mit nicht uniformem Speicherzugriff (NUMA) bekannt ist.
-
Das Haupt-Arbeitsspeichersystem 102 speichert oder encodiert ein Betriebssystem (BS) 150, eine Anwendung 160 und/oder andere Programmanweisungen. Obwohl das Betriebssystem (BS) 150, die Anwendung 160 usw. als in dem Haupt-Arbeitsspeichersystem 102 in dem Computer 100 enthalten veranschaulicht sind, können sich in anderen Ausführungsformen einige oder alle auf verschiedenen Computersystemen befinden und auf sie kann aus der Ferne, z.B. über das Netzwerk 130 zugegriffen werden. Der Computer 100 kann virtuelle Adressiermechanismen verwenden, die es den Programmen des Computers 100 ermöglichen, sich so zu verhalten, als hätten sie nur Zugriff auf eine große einzelne Speicherentität statt Zugriff auf mehrere kleinere Speicherentitäten. Somit sind diese Elemente, während das Betriebssystem 150, die Anwendung 160 oder andere Programmanweisungen als in dem Haupt-Arbeitsspeichersystem 102 enthalten veranschaulicht sind, nicht notwendigerweise alle vollständig zur selben Zeit in derselben Speichereinheit enthalten. Obwohl das Betriebssystem 150, die Anwendung160, andere Programmanweisungen usw. ferner als separate Entitäten veranschaulicht werden, können einige von ihnen, Abschnitte von ihnen oder alle von ihnen in anderen Ausführungsformen zusammengepackt werden.
-
In einer Ausführungsform weisen das Betriebssystem 150, die Anwendung 160 und/oder andere Programmanweisungen Anweisungen oder Befehle auf, die auf dem Prozessor 101 ausgeführt werden, oder Anweisungen oder Befehle, die durch Anweisungen oder Befehle interpretiert werden, die auf dem Prozessor 101 ausgeführt werden, um ferner die im Folgenden beschriebenen Funktionen auszuführen. Wenn derartige Programmanweisungen von dem Prozessor 101 ausgeführt werden können, wird ein derartiger Computer 100 zu einer speziellen Maschine, die zum Ausführen von derartigen Anweisungen konfiguriert ist. Zum Beispiel können Anweisungen für eine Anwendung zum Spiegeln eines Arbeitsspeichers 160A auf einen oder mehrere Computer 100A geladen werden, die den Computer 100A veranlassen, das Haupt-Arbeitsspeichersystem 102 in einen ersten Abschnitt und in einen redundanten zweiten Abschnitt zu spiegeln. In einem weiteren Beispiel kann das Haupt-Arbeitsspeichersystem 102 durch das Betriebssystem 150 gespiegelt werden. In einem weiteren Beispiel kann das Haupt-Arbeitsspeichersystem 102 durch eine Virtualisierer-Anwendung 170 gespiegelt werden, wie zum Beispiel ein Hypervisor.
-
Ein oder mehrere Prozessoren 101 können als eine programmierbare Universal-Grafikprozessoreinheit (GPU) arbeiten, die Abbilder (z.B. eine GUI) zur Ausgabe an eine Anzeige erstellt. Die GPU, die in Verbindung mit einer oder mehreren Anwendungen 160 arbeitet, bestimmt, wie Pixel zum Beispiel auf einer Anzeige, einem Berührungsbildschirm usw. bearbeitet werden, um ein Anzeigenbild oder eine Benutzeroberfläche zu erstellen. Schließlich wird das Abbild (z.B. GUI usw.) für einen Benutzer angezeigt. Der Prozessor 101 und die GPU können diskrete Komponenten sein oder können in eine einzelne Komponente integriert sein.
-
Der Arbeitsspeicherbus 103 stellt einen Datenübertragungspfad zum Transferieren von Daten zwischen dem Prozessor 101, dem Haupt-Arbeitsspeichersystem 102 und der E/A-Bus-Schnittstelleneinheit 105 bereit. Die E/A-Bus-Schnittstelleneinheit 105 ist ferner mit dem System-E/A-Bus 104 zum Transferieren von Daten zu und von den verschiedenen E/A-Einheiten verbunden. Die E/A-Bus-Schnittstelleneinheit 105 tauscht Daten über den System-E/A-Bus 104 mit mehreren E/A-Schnittstelleneinheiten 111, 112, 113 und 114 aus, die auch als E/A-Prozessoren (IOPs) oder E/A-Adapter (IOAs) bekannt sind. Die E/A-Schnittstelleneinheiten unterstützen eine Datenübertragung mit einer Vielfalt von Speicher- und E/A-Einheiten. Zum Beispiel unterstützt die Endgeräte-Schnittstelleneinheit 111 die Anbindung von einer oder mehreren E/A-Benutzereinheiten 121, die Benutzer-Ausgabeeinheiten (wie zum Beispiel eine Video-Abspieleinheit, einen Lautsprecher und/oder ein Fernsehgerät) und Benutzer-Eingabeeinheiten (wie zum Beispiel eine Tastatur, eine Maus, ein Tastenfeld, ein Touch-Pad, einen Trackball, Schaltflächen, einen Lichtgriffel oder eine andere Zeigeeinheit) aufweisen können. Ein Benutzer kann die Benutzer-Eingabeeinheiten durch Verwenden einer Benutzerschnittstelle bearbeiten, um Eingabedaten und Befehle für die E/A-Benutzereinheit 121 und den Computer 100 bereitzustellen, und kann Ausgabedaten über die Benutzer-Ausgabeeinheiten empfangen. Zum Beispiel kann eine Benutzerschnittstelle über die E/A-Benutzereinheit 121 dargestellt werden, wie beispielsweise auf einer Anzeigeeinheit angezeigt, über einen Lautsprecher abgespielt oder über einen Drucker ausgedruckt. Die Benutzerschnittstelle kann eine Benutzerschnittstelle sein, die einem Benutzer Inhalt visuell (z.B. über einen Bildschirm), hörbar (z.B. über einen Lautsprecher) und/oder über eine Berührung (z.B. Vibrationen usw.) bereitstellt. In einigen Ausführungsformen wirkt der Computer 100 selbst als die Benutzerschnittstelle, da der Benutzer den Computer 100 auf eine Weise bewegen kann, dass er mit Daten, Funktionen usw. der Computer-Anwendung 160 interagiert, diese eingibt oder bearbeitet.
-
Die Speicher-Schnittstelleneinheit 112 unterstützt die Anbindung von einem oder mehreren lokalen Plattenlaufwerken oder sekundären Speichereinheiten 125. In einer Ausführungsform sind die sekundären Speichereinheiten 125 rotierende Magnetplattenlaufwerk-Speichereinheiten, aber in anderen Ausführungsformen sind sie Anordnungen von Plattenlaufwerken, die so konfiguriert sind, dass sie für einen Host-Computer oder jeden anderen Typ von Speichereinheit eine einzelne große Speichereinheit zu sein scheinen. Die Inhalte des Haupt-Arbeitsspeichersystems 102 oder jedes Abschnitts davon können nach Bedarf in den sekundären Speichereinheiten 125 gespeichert oder aus diesen abgerufen werden. Die lokalen sekundären Speichereinheiten 125 haben in der Regel eine langsamere Zugriffszeit als das Haupt-Arbeitsspeichersystem 102, was bedeutet, dass die Zeit, die zum Lesen und/oder Schreiben von Daten aus dem/in das Haupt-Arbeitsspeichersystem 102 benötigt wird, kürzer als die Zeit ist, die von den lokalen sekundären Speichereinheiten zum Lesen und/oder Schreiben von Daten aus den/in die lokalen sekundären Speichereinheiten 125 benötigt wird.
-
Die E/A-Einheitenschnittstelle 113 stellt eine Schnittstelle zu jeder von verschiedenen anderen Eingabe/Ausgabe-Einheiten oder Einheiten von anderen Typen bereit, wie beispielweise Drucker oder Faxgeräte. Der Netzwerkadapter 114 stellt einen oder mehrere Datenübertragungspfade von dem Computer 100 zu anderen Datenbearbeitungseinheiten bereit, wie zum Beispiel zahlreichen anderen Computern; derartige Pfade können z.B. ein oder mehrere Netzwerke 130 aufweisen. Obwohl der Arbeitsspeicherbus 103, der in 2 als eine relativ einfache einzelne Busstruktur gezeigt wird, die einen direkten Datenübertragungspfad zwischen den Prozessoren 101, dem Haupt-Arbeitsspeichersystem 102 und der E/A-Busschnittstelle 105 bereitstellt, kann der Arbeitsspeicherbus 103 tatsächlich mehrere verschiedene Busse oder Datenübertragungspfade aufweisen, die in jeder beliebigen von verschiedenen Formen angeordnet sein können, wie zum Beispiel Punkt-zu-Punkt-Verbindungen in hierarchischen, sternförmigen oder Web-Konfigurationen, mehreren hierarchischen Bussen, parallelen und redundanten Pfaden oder jedem anderen geeigneten Konfigurationstyp. Zwar werden die E/A-Bus-Schnittstelle 105 und der E/A-Bus 104 jeweils als einzelne Einheiten gezeigt, doch kann der Computer 100 des Weiteren tatsächlich mehrere E/A-Busschnittstelleneinheiten 105 und/oder mehrere E/A-Busse 104 enthalten. Zwar werden mehrere E/A-Schnittstelleneinheiten gezeigt, die den E/A-Systembus 104 von verschiedenen Datenübertragungspfaden trennen, die zu den verschiedenen E/A-Einheiten führen, doch sind einige oder alle der E/A-Einheiten in anderen Ausführungsformen direkt mit einem oder mehreren E/A-Systembussen verbunden.
-
Die E/A-Schnittstelle 113 kann elektronische Komponenten und Logik enthalten, um Daten eines Protokolls auf dem E/A-Bus 104 einem anderen Protokoll auf einem anderen Bus anzupassen oder in dieses zu konvertieren. Daher kann die E/A-Schnittstelle 113 eine große Vielfalt von Einheiten mit einem Computer 100 und miteinander verbinden, wie zum Beispiel, aber nicht darauf beschränkt, Bandlaufwerke, optische Plattenlaufwerke, Drucker, Festplatten-Controller, andere Busadapter, PCI-Adapter, Workstations, die ein oder mehrere Protokolle verwenden, einschließlich Token Ring, Gigabyte Ethernet, Ethernet, Fibre Channel, SSA, Fiber Channel Arbitrated Loop (FCAL), Serial SCSI, Ultra3 SCSI, InfiniBand, FDDI, ATM, 1394, ESCON, drahtlose Relays, Twinax, LAN-Verbindungen, WAN-Verbindungen, Hochleistungsgrafik, usw., aber nicht darauf beschränkt. Obwohl sie als verschiedene Entitäten gezeigt werden, können die mehreren E/A-Schnittstelleneinheiten 111, 112, 113 und 114 oder die Funktionalität der E/A-Schnittstelleneinheiten 111, 112, 113 und 114 in eine ähnliche Einheit integriert werden.
-
In verschiedenen Ausführungsformen ist der Computer 100 ein Mehrbenutzer-Mainframe-Computersystem, ein Einzelplatzsystem, ein Server-Computer, ein Speichersystem oder eine ähnliche Einheit, die eine kleine oder gar keine direkte Benutzerschnittstelle hat, aber Anforderungen von anderen Computersystemen (Clients) empfängt. In anderen Ausführungsformen wird der Computer 100 als Desktop-Computer, tragbarer Computer, Laptop- oder Notebook-Computer, Tablet-Computer, Taschencomputer, Telefon, Smartphone, Pager, Automobil, Telekonferenzsystem, Haushaltsgerät oder jeder andere geeignete Typ einer elektronischen Einheit umgesetzt.
-
Das Netzwerk 130 kann jedes geeignete Netzwerk oder jede geeignete Kombination von Netzwerken sein und kann jedes entsprechende Protokoll unterstützen, das für eine Übertragung von Daten und/oder Code zu/von dem Computer 100A und mindestens dem Computer 1008 geeignet ist. In verschiedenen Ausführungsformen kann das Netzwerk 130 eine Datenbearbeitungseinheit oder eine Kombination von Datenbearbeitungseinheiten darstellen, die entweder direkt oder indirekt mit dem Computer 100 verbunden sind. In einer weiteren Ausführungsform kann das Netzwerk 130 drahtlose Datenübertragungen unterstützen. Alternativ und/oder zusätzlich kann das Netzwerk 130 drahtgebundene Datenübertragungen unterstützen, wie zum Beispiel eine Telefonleitung oder ein Kabel. In einer Ausführungsform kann das Netzwerk 130 das Internet sein und IP (Internetprotokoll) unterstützen. In einer Ausführungsform wird das Netzwerk 130 als ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN) umgesetzt. In einer Ausführungsform wird das Netzwerk 130 als ein Netzwerk eines Hotspot-Serviceanbieters umgesetzt. In einer weiteren Ausführungsform wird das Netzwerk 130 auf einem Intranet umgesetzt. In einer Ausführungsform wird das Netzwerk 130 als jedes geeignete zelluläre Datennetzwerk, jede geeignete Funknetzwerktechnologie auf Zellen-Grundlage oder als drahtloses Netzwerk umgesetzt. In einer Ausführungsform wird das Netzwerk 130 als jedes geeignete Netzwerk oder jede geeignete Kombination von Netzwerken umgesetzt. Obwohl ein Netzwerk 130 gezeigt ist, kann in anderen Ausführungsformen jede Anzahl von Netzwerken (desselben oder eines verschiedenen Typs) vorhanden sein.
-
1 soll die repräsentativen Hauptkomponenten des Computers 100 darstellen. Einzelne Komponenten können jedoch eine größere oder eine geringere Komplexität aufweisen als in 1 dargestellt, es können andere oder zusätzliche Komponenten zu denjenigen vorhanden sein, die in 1 gezeigt werden, und die Anzahl, der Typ und die Konfiguration solcher Komponenten kann unterschiedlich sein. Mehrere spezielle Beispiele einer derartigen zusätzlichen Komplexität oder von zusätzlichen Variationen werden hierin offenbart; diese dienen nur zu Beispielzwecken und sind nicht notwendigerweise die einzigen derartigen Variationen. Die verschiedenen Programmanweisungen, die zum Beispiel auf dem Computersystem 100 gemäß verschiedenen Ausführungsformen der Erfindung umgesetzt werden, können auf mehrere Weisen umgesetzt werden, einschließlich durch Verwenden von verschiedenen Computeranwendungen, Routinen, Komponenten, Programmen, Objekten, Modulen, Datenstrukturen usw.
-
Unter folgender Bezugnahme auf 2A wird ein schematisches Blockschaubild eines beispielhaften Haupt-Arbeitsspeichersystems 102 in Datenaustausch mit dem Prozessor 101 über einen Arbeitsspeicher-Controller 200 veranschaulicht. Wie in 2A gezeigt, wird ein Arbeitsspeichermodul oder eine Karte bzw. werden Arbeitsspeichermodule oder Karten 102 (z.B. eine SCM-Medienkarte) konfiguriert, um Daten in einer Mehrzahl „K“ von Paketen (d.h. Chips) 252a bis 252k (z.B. K = 24), zu speichern, und jedes Paket umfasst eine Mehrzahl „N“ von Dies 251a bis 251n (z.B. N = 16). Jedes Paket in einer Ausführungsform kann dieselbe Anzahl „N“ von Dies umfassen (z.B. N = 8, 16, usw.). Jedes der Dies 251a bis 251n umfasst eine Anzahl „M“ von Speicherzellen, insbesondere Speicherzellen 250a bis 251m. Eine Anzahl von Speicherzellen 250 in jedem Die kann in eine Anzahl „X“ von Medienersetzungseinheiten- (MRU) Gruppen 253a bis 253p gruppiert werden, wobei jedes Die in einer Ausführungsform eine feste Anzahl von MRU-Gruppen 253 umfassen kann. Zum Beispiel könnten in einem Die 25116 (X = 16) MRU-Gruppen vorhanden sein. Das Arbeitsspeichermodul/die Karte 102 in einer oder mehreren Ausführungsformen umfasst auch einen Drift-Puffer 260 zum Speichern von Daten, zum Beispiel zum temporären Speichern von Daten, wie im Folgenden beschrieben wird. Das Arbeitsspeichermodul/die Karte 102 umfasst in einem Aspekt auch eine Drift-Tabelle 230 zum Zuordnen von Einträgen zu dem Drift-Puffer 260, wie im Folgenden beschrieben wird.
-
Wie ferner in 28 gezeigt, kann jede MRU-Gruppe 253a bis 253p eine Mehrzahl von MRUs 254a bis 254n aufweisen, wobei jede MRU eine Mehrzahl „B“ von Bit-Arrays aufweist, und jedes Bit in einem Bit-Array eine Speicherzelle aufweist. Das heißt, wie in 28 gezeigt, dass eine MRU-Gruppe in einer Ausführungsform in 128 Spalten aufgeteilt wird, auf die als Bit-Array verwiesen wird. Die MRU-Gruppe wird horizontal in Zeilen aufgeteilt, die als MRUs bezeichnet werden. Jede MRU weist 128 Bit-Arrays auf. Jedes Feld in 28 kann ein Bit-Array mit 1 Million Bits sein. Ferner umfasst jede MRU eine Anzahl „P“ von Seiten, wobei eine Seite die Einheit von Daten ist, die in dem SCM geschrieben oder gelesen werden können (z.B. 16 Byte oder 128 Bit). In einer Ausführungsform kann eine MRU 1M Seiten enthalten. Eine Seite verwendet ein Bit aus den aktiven Bit-Arrays während einer Lese-/Schreiboperation. Die Anzahl von aktiven Bit-Arrays, aus denen jede Seite eine Speicherzelle verwendet, kann von der erforderlichen Redundanz von Speicherzellen in dem Arbeitsspeichermodul/der Karte 102 und/oder dem Datenbereinigungsprozess abhängen (wie im Folgenden beschrieben). Wenn zum Beispiel in jeder MRU vier Bit-Arrays als Ersatz für Austauschoperationen mit fehlerhaften/fehleranfälligen Bit-Arrays reserviert werden, umfasst jede Seite Bits aus den 124 aktiven Bit-Arrays der 128 Bit-Arrays während einer Lese-/Schreiboperation (128 Bit-Arrays in einer MRU abzüglich die 4 reservierten Bit-Arrays = 124 aktive Bit-Arrays). Das bedeutet, dass eine Seite 15,5 Byte von tatsächlichen Daten speichern kann. Wie im Folgenden beschrieben, können Ersatz-MRUs aus allen MRU-Gruppen und Dies in einem einzelnen Paket fehlerhafte MRUs in diesem Paket ersetzen.
-
Es ist anzumerken, dass ein Verwenden von 1 Million Bits (1024 * 1024) pro Bit-Array eine Auslegungsauswahl für die beispielhaften Ausführungsformen ist, die in dieser Offenbarung offenbart wurden. Diese Offenbarung ist jedoch nicht darauf begrenzt, und jede Anzahl von Bits pro Bit-Array (z.B. 500.000, 2 Millionen, 3 Millionen usw.) kann verwendet werden. Die Anzahl von Bits pro Bit-Array wird dann verwendet, um die Anzahl von MRUs und somit die Größe der Tabellen (z.B. die Chipauswahltabelle (CST), die Medienreparaturtabelle (MRT), die Bit-Array-Reparaturtabelle (BART) etc.) zu bestimmen.
-
Die Gesamtkapazität des Arbeitsspeichermoduls/der Karte 102 kann gemäß K * C (gemessen in Byte) bestimmt werden, wobei C die Kapazität jedes Pakets ist. Von den K Paketen des Arbeitsspeichermoduls/der Karte 102 können einige Pakete zum Speichern der Daten verwendet werden, und die anderen oder restlichen Pakete können für einen Fehlerkorrekturcode (ECC) und Metadaten verwendet werden, die zur Datenverwaltung verwendet werden. Der Fehlerkorrekturcode wird zum Korrigieren eines Fehlers verwendet, der in den Daten enthalten ist, die in dem Datenbereich gespeichert sind. Jedes Arbeitsspeichermodul/jede Karte 102 (z.B. SCM-Medienkarte) hat E/A-Daten mit einer z-Bit-Datenbreite und entsprechend dimensionierten Adress-Bits, abhängig von der Kapazität. Der SCM kann zum Beispiel ein Phasenwechselspeicher (PCM), ein resistiver Direktzugriffsspeicher (RRAM) oder jeder geeignete nicht flüchtige Speicher sein.
-
Zwar veranschaulicht 2A den Arbeitsspeicher-Controller 200 als außerhalb des Arbeitsspeichermoduls/der Karte 102 befindlich, doch ist die Offenbarung nicht darauf beschränkt, und der Controller 200 kann ein Teil des Arbeitsspeichermoduls/der Karte 102 sein. Wie in 2A veranschaulicht, kann der Controller 200 mindestens eines von einem Adressübersetzungsmodul 202, einem Datenbereinigungsmodul 204 und einem Medienreparaturmodul 206 umfassen. Die Module 202, 204 und 206 können in Software, Firmware, Hardware oder einer Kombination von zwei oder mehr Elementen von Software, Firmware und Hardware umgesetzt werden. In anderen Beispielen kann der Controller 200 zusätzliche Module oder Hardware-Einheiten umfassen, oder kann weniger Module oder Hardware-Einheiten umfassen. Der Controller 200 kann einen Mikroprozessor, einen Digitalsignalprozessor (DSP), eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA) oder eine andere digitale logische Schaltung umfassen.
-
Das Adressübersetzungsmodul 202 kann eine logische Blockadresse (LBA) und/oder eine virtuelle Blockadresse (VBA), die von dem bzw. den Prozessoren 101 verwendet wird bzw. werden, einer physischen Blockadresse (PBA) eines Arbeitsspeichermoduls/einer Karte 102 (wie oben erörtert) zuordnen. Zum Beispiel kann in Reaktion darauf, dass das Adressübersetzungsmodul 202 eine LBA von einem Prozessor als Teil eines Lese- oder Schreibbefehls empfängt, das Adressübersetzungsmodul 202 die VBA über eine logisch-virtuelle Tabelle (LVT) 210 suchen, das Adressübersetzungsmodul 202 kann dann die VBA zum Bestimmen einer PBA des Arbeitsspeichermoduls/der Karte 102 verwenden, die der empfangenen LBA entspricht. In einigen Beispielen kann das Adressübersetzungsmodul 202 eine gestufte virtuell-physische Tabellenstruktur (V2P) verwenden, um die Übersetzung von der VBA in die PBA (wie im Folgenden beschrieben) durchzuführen. Zum Beispiel kann das Adressübersetzungsmodul 202 eine Chipauswahltabelle (CST) 220, eine Medienreparaturtabelle (MRT) 222 und eine Bit-Array-Reparaturtabelle (BART) 224 umfassen.
-
Das Datenbereinigungsmodul 204 kann konfiguriert werden, um Ausfälle oder Fehler in dem Arbeitsspeichermodul/der Karte 102 zu erfassen und zu korrigieren. Ein Fehler im Arbeitsspeicher kann durch ein Alpha- oder ein anderes Teilchen oder durch einen physischen Defekt in einer Speicherzelle verursacht werden. Wie hierin verwendet, verweist der Begriff „Bereinigung“ allgemein auf einen Prozess einer Erfassung von Fehlern und einer Korrektur von korrigierbaren Fehlern in einem Arbeitsspeichersystem. Die Fehler können behebbare (oder vorübergehende) Fehler sowie unter bestimmten Umständen schwerwiegende Fehler umfassen. In verschiedenen Ausführungsformen kann eine Arbeitsspeicher-Datenbereinigung einen Prozess zum Erfassen und Korrigieren von Bit-Fehlern im Arbeitsspeicher verwenden, wie im Folgenden beschrieben. Um reguläre Arbeitsspeicheranforderungen von der CPU nicht zu stören und damit eine sich verschlechternde Leistung zu verhindern, kann eine Datenbereinigung erfolgen, indem bestimmte Teile des Arbeitsspeichermoduls/der Karte 102 für den Datenbereinigungsprozess (im Folgenden beschrieben) außer Betrieb genommen werden. Da die Datenbereinigung aus normalen Lese- und/oder Schreiboperationen bestehen kann, kann sie den Energieverbrauch durch den Arbeitsspeicher im Vergleich zu einer Operation ohne Datenbereinigung erhöhen. Daher wird eine Datenbereinigung gemäß verschiedenen Ausführungsformen nicht kontinuierlich, sondern periodisch durchgeführt. Für viele Server kann die Zeitplanung oder der Zeitraum für die Datenbereinigung in dem BIOS-Einrichtungsprogramm konfiguriert werden.
-
In bestimmten Ausführungsformen kann das Datenbereinigungsmodul 204 eine Fehlerratentabelle (ERT) 240 umfassen. Die Fehlerratentabelle kann so konfiguriert werden, dass sie Informationen in Bezug auf Arbeitsspeicherdefekte oder Fehler in dem Arbeitsspeichermodul/der Karte 102 speichert. In bestimmten Ausführungsformen kann eine ERT für jedes der Pakete zugewiesen werden, die in dem Arbeitsspeichermodul/der Karte 102 enthalten sind (z.B. 24 ERTs für 24 Pakete einer Medienkarte).
-
Das Medienreparaturmodul 206 kann zum Reparieren von Fehlern oder Defekten in dem Arbeitsspeichermodul/der Karte 102 durch Analysieren der in der bzw. in den ERTs gespeicherten Informationen konfiguriert werden. Zum Beispiel kann das Medienreparaturmodul 206 ERT-Übersichtstabellen erstellen und den Arbeitsspeicher-Controller veranlassen, geeignete Korrekturmaßnahmen durchzuführen, wie zum Beispiel, ohne darauf beschränkt zu sein, eine Ersetzung von einem oder mehreren ausgefallenen Teilen des Arbeitsspeichermoduls/der Karte 102 durch einen ordnungsgemäß funktionierenden Ersatz (z.B. Ersetzen von fehlerhaften Bit-Arrays, MRUs, MRU-Gruppen, Dies oder Paketen mit einem geeigneten Ersatz); Modifizierung der verschiedenen Übersetzungstabellen; Suchen nach Ersatz-Arbeitsspeicherteilen/Speicherplätzen; Erstellung von Ersatz-Arbeitsspeicherteilen/Speicherplätzen; Neuausrichten von Ersatz-Arbeitsspeicherteilen/Speicherplätzen (zum Erhöhen der Wahrscheinlichkeit eines Auffindens von Ersatzelementen für zukünftige Ersetzungen). Das Medienreparaturmodul 206 kann in einer Ausführungsform konfiguriert werden, um eine funktionale Fehlerfreiheit zu berücksichtigen, wobei Ersetzungen vermieden werden, die sich negativ auf die Leistung des Arbeitsspeichermoduls/der Karte 102 auswirken könnten.
-
Im Folgenden wird auf 3 Bezug genommen, ein Übersichtsblockschaubild einer Ausführungsform der Hardware in einem Arbeitsspeichersystem und eines Prozessablaufs zum Übersetzen einer logischen Adresse in eine virtuelle Adresse (logisch-virtuelle Übersetzung (L2V)), wobei die virtuelle Adresse in eine reale oder physische Adresse (virtuell-physische Übersetzung (V2P)) auf der Medienkarte 390 übersetzt werden kann. Der Host adressiert die Arbeitsspeicher-/Medienkarte 390 über eine logische Einheitennummer (LUN) und ein Offset einer logischen Einheitennummer (LUN-Offset). Eine Konvertierungstabelle 360 übersetzt diese LUNs und LUN-Offsets in eine logische Blockadresse (LBA). Wie in der LBA-Tabelle 360 in 3 gezeigt, werden mehrere LUNs unterstützt. In einer Ausführungsform ist eine LBA für jeden 4-KB-Block vorhanden, auf den der Host zugreifen kann. Die LBA wird in eine logisch-virtuelle Übersetzungstabelle (LVT) 370 eingefügt, die jede LBA in einen virtuellen Eintrag oder eine virtuelle Adresse konvertiert oder übersetzt, zum Beispiel eine virtuelle Blockadresse oder VBA. Die VBA wird in Medientabellen 380 eingefügt, in denen die virtuelle Adresse, z.B. VBA, in eine physische oder reale Adresse auf der Medienkarte 390 übersetzt wird, wie ausführlich in späteren Abschnitten der Offenbarung erklärt wird. Die virtuell-physische Übersetzung in einer oder mehreren Ausführungsformen umfasst Chipauswahltabellen (CST), Medienreparaturtabellen (MRT) und Bit-Array-Reparaturtabellen (BART) zum Reparieren der Medien.
-
Die LVT 370 ist in einer oder mehreren Ausführungsformen als eine Tabellenstruktur angeordnet und hat mehrere Einträge 372. In einer Ausführungsform umfasst jeder Eintrag 372 in der LVT 370 die virtuelle Blockadresse (VBA) bzw. den Drift-Tabellenindex, Schreibabnutzungsebenen-Zählungsdaten und Leseabnutzungsebenen-Zählungsdaten. Für jede LBA ist eine Eins-zu-eins-Zuordnung zu einer VBA vorhanden (vorausgesetzt, die LBA ist nicht gekürzt). Andere Metadaten können in der LVT enthalten sein. Die LVT 370 ist in einer Ausführungsform in einem DRAM gespeichert, und in einem Aspekt ist die Feldgröße jedes Eintrags klein, zum Beispiel 8 Bytes pro Eintrag. Die LVT 370 befindet sich in einer Ausführungsform in dem Arbeitsspeicher-Controller 200 und kann in einem Aspekt in dem Adressübersetzungsmodul 202 enthalten sein, das in
2A (LVT 210 in
2A) gezeigt ist. Die folgende Tabelle 1 veranschaulicht ein Beispiel eines LVT-Eintrags 372. TABELLE 1 Felder für LVT-Eintrag
Byte-Offset | Bits | Beschreibung |
0x00 | 63:56 | Reserviert |
55 | Parität über Eintrag |
54 | Gekürztes Indikator-Bit |
53:40 | Lese-Zählung (14 Bit) zeichnet die Anzahl von Medien-Lesevorgängen auf, die für diese LBA ausgegeben werden, Die Hardware setzt diesen Wert auf Null, wenn die LBA geschrieben wird (aufgrund eines Host-Schreibvorgangs oder Kopiervorgangs auf Abnutzungsebene oder eines aktiven (virtuellen) Löschvorgangs [vremove]). Die Hardware erhöht die Lese-Zählung für jeden Lesevorgang, der an die Medien und nicht den Drift-Puffer geht. Wenn diese Zählung einen Schwellenwert überschreitet, z.B. 10.000 Lesevorgänge, führt die Hardware einen Kopiervorgang dieser Daten auf „Abnutzungsebene“ (W/L) aus. |
39:32 | Abnutzungsebenen-Zählung (8 Bit) In einer Ausführungsform beträgt der gültige Bereich 0 x 00 bis 0 x 7F. Der Abnutzungsebenen-Eintrag ist in einem Aspekt ungültig, wenn Bit 39:32 = 0 x FF. Die Abnutzungsebenen-Zählung (Bit 39:32) und der LVT-Eintrag (Bits 29:0) in einer Ausführungsform sind beide gültig oder beide ungültig. |
31 | Gültiges Bit für Drift-Pufferindex (DBI) |
30 | Medienauswahl-Bit: 0 wählt Medienkarte 0, 1 wählt Medienkarte 1 |
29:0 | Wenn Bit 31 auf 0 gesetzt ist, sind die Bits 29:0 eine VBA, die einen 5120B-Block auf den PCMs auswählt. In einer Ausführungsform ist dieser LVT-Eintrag ungültig oder gekürzt, wenn die Bits 29:0 = 0 x 3FFF_FFFF sind. Wenn Bit 31 auf 1 gesetzt ist, sind die Bits 29:21 = 0, und die Bits 20:0 sind ein Index in der Drift-Tabelle und einem 8-GB-Drift-Puffer. |
-
Der LVT-Eintrag in Tabelle 1 ist nur ein Beispiel, und andere Speichermedien, Felder und Feldgrößen werden für die LVT 370 und die LVT-Einträge 372 in Betracht gezogen. Die Medien auf der Medienkarte 390 nutzen einige Speicherplätze im Lauf der Zeit ab, daher sorgt in einer oder mehreren Ausführungsformen die Auslegung für eine Überbereitstellung. Es sollte eine kleine Menge an übermäßiger Bereitstellung geben, um eine Abnutzung der Medien zu berücksichtigen, und somit ist gemäß einem Aspekt die Anzahl von LBAs in der Regel geringfügig kleiner, zum Beispiel um 10 %, als die Anzahl von VBAs. Wenn daher zum Beispiel die Medienkarte 390 614M VBAs unterstützt, wird die LVT 370 knapp 614M Einträge aufweisen. In einer Ausführungsform wird der Host unterrichtet, dass die Gesamtgröße des Arbeitsspeichers kleiner als seine tatsächliche Größe ist.
-
Die Medienkarte 390 gestattet, dass eine Schreiboperation für dieselbe Adresse/denselben Speicherplatz durchgeführt wird, aber da Schreibvorgänge benachbarte Bereiche auf der Medienkarte 390 beeinträchtigen können, werden in einer Ausführungsform neue Daten in einen anderen Speicherplatz auf der Medienkarte 390 geschrieben. In einem Aspekt wird auf keinen Speicherplatz auf der Medienkarte 390 öfter als eine Schwellenwertanzahl geschrieben, z.B. 10.000 mal mehr als jeder andere Speicherplatz auf der Medienkarte 390. Zum Beispiel wird auf einen Speicherplatz auf der Medienkarte 390, z.B. ein Block von Speicherzellen, in einer Ausführungsform nicht „Y“ mal so oft wie auf einen anderen Speicherplatz auf der Medienkarte geschrieben. Das Schreibabnutzungsebenen-Feld in der LVT 370 (Bits 39:32 in Tabelle 1) wird verwendet, um diesen Aspekt der Operation zu steuern. Lesevorgänge können die Medien ebenfalls beeinträchtigen, daher sollte Daten nach „N“ Lesevorgängen eines Speicherplatzes neu in einen neuen Speicherplatz/eine neue Adresse geschrieben werden. Die LVT 370 weist eine Leseabnutzungsebenen-Zählung (Bits 53:40 in Tabelle 1) auf, um die Anzahl von Lesevorgängen zu verfolgen und aufzuzeichnen, die an diesem Block seit dem letzten Mal des Beschreibens vorgenommen wurden. In Reaktion darauf, dass die Lese-Zählung einen Wert überschreitet, z.B. einen Schwellenwert, wird dieser Block in einen neuen Speicherplatz auf der Medienkarte verschoben und/oder kopiert, der eine neue VBA hat. Zum Beispiel führt die Hardware nach 10.000 Lesevorgängen eine Abnutzungsebenen-Verschiebung durch, wobei die Daten in einen neuen Speicherplatz auf der Medienkarte kopiert/geschrieben werden, der eine entsprechende neue VBA hat.
-
Nach einem Beschreiben eines neuen Speicherplatzes auf der Medienkarte sollte dieser für eine Zeitdauer nicht gelesen werden, im Allgemeinen Millisekunden, zum Beispiel 10 Millisekunden. Zum Überwinden der potenziellen Latenz eines Wartens auf ein Lesen des neuen Speicherplatzes auf der Medienkarte wird in einer Ausführungsform ein Drift-Puffer bereitgestellt. Der Drift-Puffer 260 ist in einer Ausführungsform auf der Medienkarte 102 enthalten, die in
2A gezeigt ist. Der Drift-Puffer ist bevorzugt ein FIFO-Puffer, der verwendet wird, um eine Kopie der neu geschriebenen Daten aufzunehmen, sodass der Drift-Puffer anstelle der Medienkarte 390 während des Zeitrahmens gelesen werden kann, in dem die neu beschriebenen Medien nicht gelesen werden sollten. Der Drift-Puffer weist mehrere Einträge auf und hat in einer Ausführungsform eine Tabelle oder einen Index, z.B. Drift-Pufferindex oder eine Drift-Tabelle 330, um die VBA und den Eintrag in dem Drift-Puffer zu korrelieren. Wenn Daten frisch auf die Medien geschrieben werden, z.B. die Speicherkarte, werden die Daten auch in einen Drift-Puffereintrag geschrieben, und die VBA wird in dem Drift-Tabelleneintrag 332 gespeichert, der dem Drift-Puffereintrag entspricht. Die Drift-Tabelle 330 speichert die VBA und entsprechende LBA. Zum Beispiel wird ein Drift-Tabelleneintrag in einem Drift-Puffereintrag indexiert und ordnet die VBA einer entsprechenden LBA zu. Wenn Daten in den Drift-Puffer geschrieben werden, zeigt das VBA-Feld in der LVT 370 durch Verwenden eines Drift-Tabellenindex statt der VBA auf den Drift-Tabelleneintrag 372. Wenn eine Lese-Operation verarbeitet wird, und der Eintrag in die LVT, der der LBA entspricht, ein Bit „Drift-Pufferindex gültig“ aufweist, das so eingerichtet ist, dass es angibt, dass sich die Daten im Drift-Puffer befinden, verwendet das System die Drift-Tabelle zum Identifizieren des Drift-Puffereintrags und liest die Daten aus dem entsprechenden Drift-Puffer. Unter diesen Umständen, wenn das Bit „Drift-Pufferindex gültig“ eingerichtet ist, gibt die LVT in einer Ausführungsform die VBA nicht zurück. Die Drift-Tabelle 330 ist in einer Ausführungsform kleiner als die LVT 370 und kann ein DRAM auf dem Controller 200 und/oder der Medienkarte 102/390 sein. Ein beispielhafter Drift-Tabelleneintrag 332 wird in der folgenden Tabelle 2 gezeigt. TABELLE 2 Drift-Tabelleneintrag
Byte-Offset | Bits | Beschreibung |
0x00 | 63:56 | ECC |
55:40 | CRC von Benutzerdaten (2B) |
39:32 | Host LUN (1B) |
31:0 | Host LUN-Offset (4B) |
0x08 | 63:56 | ECC |
55:32 | Zeitstempel, dieser Wert erhöht sich für jeden Host-Schreibvorgang (7B-1b) |
0 | Logisch schlechter Indikator |
0x10 | 63:56 | ECC |
55:32 | Optionaler Index zu Drift-Puffer (3B). Wird nur verwendet, wenn der Drift-Puffer auch als ein Cache für Lesevorgänge verwendet wird. Dieser Index erlaubt, dass eine 4-KB-Leseseite zum Kopf des Drift-Puffers verschoben wird, indem nur zwei Drift-Tabelleneinträge modifiziert werden, ohne die Daten zu kopieren. |
31:0 | VBA (4B) |
0x18 | 63:56 | ECC |
| 55:32 | Reserviert (3B) |
| 31:0 | LBA (4B) |
-
Wenn die Daten in dem Drift-Puffer zu alt geworden sind, wird das VBA-Feld aus der Drift-Tabelle 330 in den entsprechenden Eintrag 372 in der LVT 370 kopiert. Die Tabellenstruktur der Drift-Tabelle 330 und der LVT 370 erleichtert es, den Drift-Puffer auch als Cachespeicher für Lesevorgänge zu verwenden. Wenn der Drift-Puffer als Cachespeicher für Lesevorgänge verwendet wird, würde er sowohl mit Schreibvorgängen als auch Lesevorgängen oder Vorauslesevorgängen aufgefüllt werden. Auch die Zeit, die häufig verwendete Daten in dem Drift-Puffer verbleiben, kann mit einer Aktualisierung einer Drift-Tabelle 330 verlängert werden, wobei verwendete Daten in dem Drift-Puffer verbleiben. Zum Beispiel könnten Lese-Trefferdaten in den Kopf des Drift-Puffers verschoben werden. Auf diese Weise kann die Zeit verlängert werden, die häufig gelesene Daten in dem Drift-Puffer verbleiben.
-
3 zeigt auch die VBA-Freispeicherliste 340. Die VBA-Freispeicherliste 340 weist eine Anzahl von Einträgen 342 auf. VBAs, die Daten für eine zugehörige LBA nicht aktiv speichern, werden in der VBA-Freispeicherliste 340 geführt und werden in einer Ausführungsform auf Grundlage der Abnutzungsebene organisiert und priorisiert. Wenn ein Schreibbefehl eine freie VBA zum Speichern von Daten erfordert, wird eine freie VBA aus der VBA-Freispeicherliste 340 erhalten. Wenn der Schreibbefehl für eine LBA ist, die vorher geschrieben worden ist, wird die vorher verwendete VBA (die der vorher verwendeten LBA entspricht) zu der VBA-Freispeicherliste 340 hinzugefügt. Die VBA-Freispeicherliste 340 kann sich auf dem Controller 200 und/oder der Medienkarte 102/390 befinden. Die Tabelle 3 zeigt einen Freispeicherlisteneintrag in der VBA-Freispeicherliste 340, wobei die Einträge durch die VBA indexiert werden. TABELLE 3 VBA-Freispeicherlisteneintrag
Byte-Offset | Bits | Beschreibung |
0x00 | 31:0 | VBAs von Blöcken auf der Freispeicherliste. Der Container wird beginnend mit Adresse 0x00 aufgefüllt und endet mit der Adresse 0xFF8. |
0x04 | 31:0 |
... | |
0xFF8 | 31:0 |
0xFFC | 31:0 | Weiter: Die Kennung des nächsten Containers in der Freispeicherliste |
-
Unter folgender Bezugnahme auf 4 wird ein Ablaufplan veranschaulicht, der ein beispielhaftes Verfahren 400 zum Verarbeiten eines Host-Lesebefehls, einschließlich eines Konvertierens und/oder Übersetzens einer logischen Adresse, z.B. eine LBA, in eine virtuelle Blockadresse oder VBA offenbart. Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die beispielhafte Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder den Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zum Umsetzen der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt auftreten. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufplandarstellungen sowie Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplandarstellung durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die angegebenen Funktionen oder Handlungen durchführen oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
-
In einem Schritt 405 wird durch den Host ein Host-Lesebefehl ausgegeben. Der Host adressiert die Medienkarte über eine logische Einheitennummer (LUN) und ein LUN-Offset wie vorher beschrieben. Die LUN und das LUN-Offset werden in einem Schritt 410 in eine logische Blockadresse oder LBA konvertiert. In einem Schritt 415 wird die Tabelle einer Konvertierung von logischer in virtuelle Adresse oder der LVT-Eintrag gelesen, der der LBA entspricht. Das heißt, dass in einer Ausführungsform die LVT durchsucht und ein Vergleich durch Verwenden der LBA durchgeführt wird, die aus der LUN und dem LUN-Offset konvertiert wurde, und der Eintrag in der LVT, der der LBA entspricht, wird gelesen. In einer oder mehreren Ausführungsformen wird in einem Schritt 420 bestimmt, ob der aus der LVT gelesene Eintrag gekürzt ist. Ein gekürzter Eintrag in der LVR liegt vor, wenn ein Eintrag auf dem Medium nicht verfügbar ist und/oder nicht gelesen werden soll. In einer Ausführungsform von Tabelle 1 gibt Bit 54 an, ob der Eintrag 372 in der LVT gekürzt ist. Wenn der im Schritt 420 gelesene Eintrag gekürzt ist (Schritt 420: Ja), werden in einem Schritt 425 Nullen zurückgegeben, und in einem Schritt 430 wird der Host über einen guten Abschluss benachrichtigt.
-
Wenn der im Schritt 420 gelesene LVT-Eintrag nicht gekürzt ist (Schritt 420: Nein), fährt der Prozess 400 mit einem Schritt 435 fort, in dem bestimmt wird, ob sich die LBA in dem Drift-Puffer (indexiert in der Drift-Tabelle) befindet. Daher wird zum Beispiel für einen LVT-Eintrag, wie beispielweise in dem Beispiel von Tabelle 1 das Bit 31, das Bit „Drift-Pufferindex gültig“, gelesen, und wenn das Bit 31 auf 1 gesetzt ist, befindet sich die LBA in dem Drift-Puffer. Wenn sich die LBA in dem Drift-Puffer befindet (Schritt 435: Ja), wird in einem Schritt 440 der Eintrag in der Drift-Tabelle 330 gelesen, der die entsprechende LBA aufweist. Aus der Drift-Tabelle wird der Eintrag in den Drift-Puffer erhalten, und in einem Schritt 445 wird der entsprechende Drift-Puffer gelesen. Wenn sich die LBA in dem Beispiel von Tabelle 1 in dem Drift-Puffer befindet, sind die Bits 20:0 in der LVT ein Index in die Drift-Tabelle 330, und der entsprechende Eintrag in der Drift-Tabelle gibt an, welcher Eintrag in dem Drift-Puffer gelesen werden soll. Nach einem Lesen des Drift-Puffers im Schritt 445 fährt der Prozess mit einem Schritt 450 fort, in dem in einer oder mehreren Ausführungsformen bestimmt wird, ob irgendwelche Lesefehler vorgelegen haben. Wenn Lesefehler vorhanden sind (Schritt 450: Ja), wird der Host in einem Schritt 460 über einen Lesefehler benachrichtigt. Wenn keine Lesefehler vorhanden sind (Schritt 450: Nein), wird der Host in einem Schritt 455 über einen guten Abschluss, z.B. einen guten Lesevorgangsabschluss benachrichtigt.
-
Wenn im Schritt 435 bestimmt wird, dass sich die LBA nicht in dem Drift-Puffer befindet (Schritt 435: Nein), wird die LVT-Leseebenen-Zählung in einem Schritt 470 aktualisiert. Wenn in dem beispielhaften LVT-Eintrag von Tabelle 1 das Bit 31 „Drift-Pufferindex gültig“ auf 0 gesetzt ist, verweisen die Bits 29:0 in der LVT auf eine VBA, die einen 5120-Byte-Block auf dem Storage Class Memory (SCM) auswählt. In diesem Beispiel befindet sich die LBA nicht in dem Drift-Puffer, daher fährt der Prozess 400 in einem Schritt 475 fort, wobei geprüft wird, ob die Lesevorgangsebenen-Zählung für diesen Eintrag (Medienadresse) einen bestimmten Schwellenwert überschreitet. Zum Beispiel kann bestimmt werden, ob die Lesevorgangsebenen-Zählung einen Schwellenwert überschreitet, zum Beispiel 10.000 Lesevorgänge. Die Schwellenwertebene kann auf verschiedene Werte eingerichtet werden, die vorprogrammiert werden können, oder die während Operationen auf Grundlage einer Anzahl von Faktoren geändert werden können. Wenn die Lesevorgangsebene die Lesevorgangsebenen-Zählung (Schritt 475): Ja) überschreitet, wird in einem Schritt 480 eine Abnutzungsebenen-Verschiebeoperation geplant, wobei die Daten in einen neuen Speicherplatz verschoben werden, wie zum Beispiel in dieser Offenbarung erörtert. Nach dem Abnutzungsebenen-Verschieben im Schritt 480 fährt der Prozess 400 mit einem Schritt 485 fort, in dem die VBA und Metadaten aus der LVT gelesen werden. Wenn andererseits im Schritt 475 bestimmt wird, dass der Schwellenwert der Lese-Zählung nicht überschritten worden ist (Schritt 475: Nein), fährt der Prozess mit dem Schritt 485 fort, in dem die VBA und Metadaten aus der LVT gelesen werden. Der Prozess fährt nach Schritt 485 fort, wie in 4 gezeigt, wobei im Schritt 450 bestimmt wird, ob irgendwelche Lesefehler vorliegen, und abhängig davon, ob irgendwelche Fehler vorhanden sind, wird der Host im Schritt 455 über einen guten Abschluss oder im Schritt 460 über einen Lesefehler benachrichtigt.
-
Unter folgender Bezugnahme auf 5 wird ein Ablaufplan veranschaulicht, der ein beispielhaftes Verfahren 500 zum Verarbeiten eines Host-Schreibbefehls, einschließlich eines Konvertierens und/oder Übersetzens einer logischen Adresse, z.B. eine LBA, in eine virtuelle Blockadresse oder VBA offenbart. In einem Schritt 505 wird durch den Host eine Host-Schreibbefehl-Bereitschaftsanzeige ausgegeben. Die Adresse für den Schreibbefehl wird als eine LUN und ein LUN-Offset ausgegeben. Die LUN und das LUN-Offset werden in einem Schritt 510 in eine logische Blockadresse oder LBA konvertiert. In einem Schritt 512 wird in einer oder mehreren Ausführungsformen bestimmt, ob alle Host-Schreibdaten Nullen sind. Wenn alle Host-Schreibdaten Nullen sind (Schritt 512: Ja), springt der Prozess weiter zu einem Schritt 540, und es wird kein Schreibvorgang von Daten auf die Medien (oder den Drift-Puffer) durchgeführt. Wenn nicht alle Host-Schreibdaten Nullen sind (Schritt 512: Nein), fährt der Prozess mit einem Schritt 515 fort, in dem an die VBA-Freispeicherliste eine Anforderung eines verfügbaren Eintrags erfolgt. In einer oder mehreren Ausführungsformen gilt die Anforderung einer VBA mit der niedrigsten Abnutzungsebene und/oder die VBA-Freispeicherliste ist konfiguriert, um eine VBA mit der niedrigsten Abnutzungsebene bereitzustellen.
-
In einem Schritt 520 werden die Daten in den Arbeitsspeicher geschrieben, z.B. in die Medienkarte. Zusätzlich werden in einem Schritt 525 die Daten auch in den Drift-Puffer geschrieben, und in einem Schritt 530 wird ein neuer Drift-Tabelleneintrag geschrieben. Das heißt, in Schritt 525 und 530 werden Daten in einen Eintrag in dem Drift-Puffer geschrieben, und der entsprechende Eintrag in die Drift-Tabelle, für die der Eintrag im Drift-Puffer indexiert ist, wird mit der VBA, der LBA und optional mit den Metadaten, die in Tabelle 2 gezeigt werden, oder anderen Daten geschrieben. In einem Aspekt werden CRC und andere Metadaten mit der Anforderung von dem Host bereitgestellt. In einem Schritt 535 wird bestimmt, ob der Schreibvorgang abgeschlossen ist. Der Prozess bleibt im Schritt 535, bis der Schreibvorgang abgeschlossen ist (Schritt 535: Ja).
-
Wenn der Schreibvorgang in die Medien, den Drift-Puffer und die Drift-Tabelle abgeschlossen ist, fährt der Prozess 500 mit einem Schritt 540 fort, in dem der alte LVT-Eintrag gelesen wird. Die der LBA entsprechende LVT wird im Schritt 540 gelesen. In einer oder mehreren Ausführungsformen wird der alte LVT-Eintrag durch einen neuen LVT-Eintrag ersetzt. In einem Schritt 545 wird bestimmt, ob der alte LVT-Eintrag gekürzt ist. Wenn der LVT-Eintrag gekürzt ist, gibt er an, dass die Medien nicht gelesen werden sollten oder nicht verfügbar sind. In einer oder mehreren Ausführungsformen wird ein Eintrag in die LVT als gekürzt markiert, wenn die LBA nie geschrieben worden ist oder zuletzt mit auf Null gesetzten Daten geschrieben worden ist. Wenn der alte LVT-Eintrag als gekürzt markiert ist (Schritt 545: Ja), fährt der Prozess mit einem Schritt 565 fort, in dem die neue LVT geschrieben wird. Wenn die alte LVT im Schritt 545 nicht gekürzt ist (Schritt 545: Nein), fährt der Prozess mit einem Schritt 550 fort, in dem bestimmt wird, ob die LBA, die der VBA entspricht, die geschrieben wird, sich in dem Drift-Puffer befindet. Wenn im Schritt 550 bestimmt wird, dass sich die LBA in dem Drift-Puffer befindet (Schritt 550: Ja), wird der alte Drift-Tabelleneintrag in einem Schritt 555 gelesen, um die VBA zu erhalten. Zu beachten ist, dass der Eintrag in der Drift-Tabelle, der in Schritt 555 erhalten wurde, ein anderer Eintrag als der Eintrag ist, der im Schritt 530 in die Drift-Tabelle geschrieben wurde, da der Schreibprozess alte Einträge in der Drift-Tabelle überschreibt und der Leseeintrag nicht aktualisiert wird. Bei Fortsetzung mit einem Schritt 560 wird die VBA an die VBA-Freispeicherliste zurückgegeben, wobei die Abnutzungsebene angegeben wird. Wenn im Schritt 550 bestimmt wird, dass die LBA sich nicht in dem Drift-Puffer befindet (Schritt 550: Nein), fährt eine Ausführungsform direkt mit Schritt 560 fort, in dem die VBA mit ihren angegebenen Abnutzungsebenen-Daten an die Freispeicherliste zurückgegeben wird, sodass die verfügbare VBA in der VBA-Freispeicherliste priorisiert werden kann. Nach dem Schritt 560 fährt der Prozess mit einem Schritt 565 fort, in dem die neue LVT geschrieben wird.
-
Nach dem Schritt 560 fährt der Prozess in einer Ausführungsform mit dem Schritt 565 fort, in dem die neue LVT geschrieben wird. Die geschriebenen Inhalte der LVT hängen von vorheriger Verarbeitung ab. Wenn der neue LVT-Eintrag als gekürzt markiert wird, weil alle Host-Schreibdaten Nullen sind (Schritt 512: Ja), enthält der neue LVT-Eintrag einen Indikator „Gekürzt“, eine ungültige VBA und ein Feld „Drift-Pufferindex gültig“, das bereinigt (auf Null gesetzt) ist. Wenn der neue LVT-Eintrag nicht als gekürzt markiert ist, weil nicht alle Host-Schreibdaten Nullen sind (Schritt 512: Nein), enthält der neue LVT-Eintrag ein Feld „Drift-Pufferindex gültig“, das so eingerichtet ist, dass es angibt, dass der Drift-Pufferindex zusammen mit einem gültigen Drift-Pufferindex gültig ist. Wenn der neue LVT-Eintrag geschrieben wird, ist das Feld für Lese-Zählung in dem LVT-Eintrag immer bereinigt (auf Null gesetzt). In einem oder mehreren Aspekten werden im Schritt 565 andere Metadaten in den LVT-Eintrag geschrieben, die die Abnutzungsebenen-Daten umfassen. Die Schreibabnutzungsebene stammt in einem Aspekt aus der VBA-Freispeicherliste 340. Nach dem Schritt 565 fährt der Prozess mit einem Schritt 570 fort, in dem der Host über den Abschluss des Schreibvorgangs benachrichtigt wird.
-
Es sollte klar sein, dass eine Schreiboperation in einer oder mehreren Ausführungsformen einen Drift-Tabellen-Ausstoßvorgang 575 auslösen kann. Zu Beginn hat der Drift-Puffer Platz für die nächste Schreiboperation. Wenn der Drift-Puffer jedoch voll ist, sollte die Zuweisung des ältesten Eintrags jedoch aufgehoben werden, um Platz für die nächste Schreiboperation zu schaffen. In einer oder mehreren Ausführungsformen muss der Drift-Puffer einen oder mehrere Einträge in dem Drift-Puffer eventuell ausstoßen oder deren Zuweisung rückgängig machen und kann mehrere Einträge vor dem Schreibzeiger ausstoßen, sodass Platz für den nächsten Schreibvorgang in dem Drift-Puffer vorhanden ist. In einer Ausführungsform eines Ausstoßvorgangs eines Drift-Puffereintrags wird die Drift-Tabelle gelesen, um die Ausstoßinformationen zu erhalten, einschließlich der LBA des einen oder der mehreren Drift-Tabelleneinträge, die aus dem Drift-Puffer entfernt werden sollen. Als Nächstes wird der LVT-Eintrag für die eine oder die mehreren LBAs gelesen, die aus dem Drift-Puffer entfernt werden sollen, und es wird bestimmt, ob der LVT-Eintrag, der der einen oder den mehreren LBAs entspricht, die aus dem Drift-Puffer ausgestoßen werden sollen, auf die Drift-Tabelle zeigen Wenn der LVT-Eintrag auf die Drift-Tabelle zeigt (z.B. das Bit „Drift-Pufferindex gültig“ ist gesetzt), wird der LVT-Eintrag geschrieben, um das Bit „Drift-Pufferindex gültig“ zu bereinigen und den Drift-Pufferindex DBI in dem LVT-Eintrag in die VBA zu ändern. Wenn der LVT-Eintrag nicht auf die Drift-Tabelle zeigt, z.B. ist das Bit „Drift-Pufferindex gültig“ nicht gesetzt, wurde die LVT bereits aktualisiert und ein Aktualisieren des LVT-Eintrags ist nicht notwendig.
-
Unter folgender Bezugnahme auf 6A werden ein Übersichtsblockschaubild der Hardware und des Prozesses, die an einer Übersetzung einer virtuellen Blockadresse (VBA) in eine physische Adresse auf der Medienkarte beteiligt sind, und unter Bezugnahme auf 6B ein Ablaufplan veranschaulicht, der eine beispielhafte Übersetzung einer virtuellen Blockadresse (VBA) in eine physische Adresse veranschaulicht, die die entsprechenden Bits zum Durchführen einer (Byte-adressierbaren) Lese-/Schreiboperation in dem Arbeitsspeichermodul/der Karte 102 von 1, 2A und 2B angibt. Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die beispielhafte Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder den Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zum Umsetzen der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt auftreten. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufplandarstellungen sowie Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplandarstellung durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die angegebenen Funktionen oder Handlungen durchführen oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
-
Für den Fachmann wird ferner klar sein, dass die VBA von einer logischen Blockadresse (LBA) abgeleitet werden kann, die von dem Host durch Verwenden des Verfahrens und der oben beschriebenen Strukturen und in einer oder mehreren Ausführungsformen von derzeit oder zukünftig bekannten Verfahren empfangen wurde. Der Ablaufplan von 6B beruht auf der Annahme, dass die niedrigste adressierbare Granularität des Arbeitsspeichermoduls/der Karte 102 von 1 16 Byte beträgt, und das Arbeitsspeichermodul/die Karte 102 24 Pakete, 8 oder 16 Dies pro Paket, 16 MRU-Gruppen pro Die, 64 MRUs pro MRU-Gruppe, 128 Bit-Arrays pro MRU (wovon 4 Ersatz sind), 1 Million Bits in jedem Bit-Array und 1 Million Seiten pro MRU umfasst (wobei jede Seite 128 Bits, d.h. 16 Bytes umfasst). Es sollte klar sein, dass der Prozess von 6B für andere Arbeitsspeichersystem-Konfigurationen verwendet werden kann.
-
Der Ablaufplan geht ferner davon aus, dass die Lese-/Schreiboperation für Daten durchgeführt wird, die Datenblöcke einer Größe von 4 KByte umfassen. Daher wird jede Lese-/Schreiboperation für eine Gesamtheit von 5120 Bytes von Daten durchgeführt, die die 4 KByte von Daten umfassen, die von dem Host, ECC-Bytes und einigen Metadaten empfangen wurden. In Anbetracht der Tatsache, dass die niedrigste adressierbare Granularität des Arbeitsspeichermoduls/der Karte 102 16 Bytes beträgt, können die 5120 Bytes von Daten in 320 diskreten Seiten (mit jeweils 16 Bytes, wobei 15,5 Bytes zum Aufnehmen tatsächlicher Daten verwendet werden) über das Arbeitsspeichermodul/die Karte 102 übergreifend gespeichert werden. Es sollte klar sein, dass die 320 diskreten Seiten aus Gründen eines Abnutzungsausgleichs gleichmäßig über das Arbeitsspeichermodul/die Karte 102 verteilt werden sollten. Daher übersetzt der Übersetzungsprozess die VBA in 320 diskrete Seiten der physischen Adresse in dem Arbeitsspeichermodul/der Karte 102, und die VBA ist für derartige 320 diskrete Seiten repräsentativ. Die VBA ist eine 30-Bit-Adresse und die unteren 20 Bits (d.h. die niedrigstwertigen Bits) der VBA werden während der Übersetzung ignoriert, da sie eine Sammlung von 1 Million Blöcken mit einer Größe von 4 KByte darstellen, die alle dieselben oberen 10 Bits (die höchstwertigen Bits) der VBA haben (insgesamt wird auf die 1 Million Blöcke von 4 KByte als virtuelle Reparatureinheit (VRU) verwiesen, die durch die VBA dargestellt wird). Es ist anzumerken, dass die hierin offenbarte beispielhafte Ausführungsform eine 30-Bit-VBA zum Adressieren einer 4-TB-Medienkarte verwendet. Die Offenbarung ist jedoch nicht derart eingeschränkt, und Adressen mit anderen Größen können auf ähnliche Art und Weise für verschiedene Medienkarten verwendet werden. Die oberen 10 Bits können zum Identifizieren einer VRU durch Verwenden der Chipauswahltabelle verwendet werden, wie im Folgenden erörtert. Die Anzahl von VRUs wird auf Grundlage der tatsächlichen Medienkarte konfiguriert (wenn die tatsächliche Speicherkapazität einer 4-TB-Medienkarte z.B. ungefähr 2,5 TB beträgt, beträgt die Anzahl von VRUs 614). Für verschiedene Medienkarten können verschiedene obere Bits verwendet werden, um eine VRU durch Verwenden der Chipauswahltabelle (CST) zu identifizieren.
-
Wie in 6C gezeigt, ist die Übersetzung einer VBA in eine physische Adresse ein mehrschichtiges Lookup, das mindestens drei Lookup-Tabellen umfasst - eine Chipauswahltabelle (CST) (z.B. dieselbe für alle 24 Pakete), 24 Medienreparaturtabellen (MRT) (z.B. eine für jedes Paket) und 24 Bit-Array-Reparaturtabellen (BART) (z.B. eine für jedes Paket). In einem Schritt 602 wird die VBA in der CST indexiert. Wie oben erörtert, werden die unteren 20 Bits der VBA, die eine VRU darstellen, in einer oder mehreren Ausführungsformen während der Übersetzung ignoriert, und nur die oberen 10 Bits der VBA werden im Schritt 602 in der CST indexiert.
-
Wie in 6C gezeigt, umfasst eine CST 610 Spalten, die nach der Paketanzahl indexiert sind, z.B. Pkg 0 bis 23, und Zeilen, die nach VRU-Anzahl indexiert sind. Die VRU-Anzahl wird durch Verwenden der oberen (höchstwertigen) 10 Bits der VBA identifiziert. Jeder Eintrag 611 in der CST 610 umfasst eine Gesamtanzahl von 16 Bits: die niedrigstwertigen 9 Bits zum Bestimmen der Zwischenreparatureinheiten- (IRU) Anzahl (d.h. 9 IRU-Bits), die nächsten 3 Bits sind für zukünftige Verwendung reserviert, das nächste 1 Bit gibt an, ob die VRU bereinigt werden muss (d.h. ein Bereinigungs-Bit), das nächste Bit ist ein Kennzeichen-Bit, das angibt, ob das Paket in der VRU enthalten ist (d.h. ein Kennzeichen-Bit „Enthalten“), um eine VBA-Lese-/Schreiboperation durchzuführen, das nächste Bit gibt an, ob das Paket eine IRU enthält, bei der einige oder alle MRUs fehlgeschlagen sind (d.h. ein teilweise fehlgeschlagenes Bit), und das abschließende höchstwertige Bit (insgesamt 16 Bits) gibt an, ob das Paket eine vollständige Ersatz-IRU (d.h. ein Ersatz-Bit) umfasst. Desgleichen dürfen IRUs, die in einer Ausführungsform teilweise als fehlgeschlagen und/oder Ersatz markiert wurden, nicht für eine Lese-/Schreiboperation verwendet werden.
-
Wie oben beschrieben, ist das Kennzeichen-Bit „Enthalten“ des CST-Eintrags 611 dafür indikativ, ob ein Paket Daten für die VBA enthält (d.h. Lese-/Schreiboperation). Wenn zum Beispiel der Wert des Kennzeichen-Bits „Enthalten“ für ein Paket „0“ ist, enthält es keine Daten für die VBA-Lese-Schreiboperation, und wenn der Wert des Kennzeichen-Bits „Enthalten“ für ein Paket „1“ ist, enthält es Daten für die VBA-Lese/Schreiboperation (oder umgekehrt). Von den 24 Paketen auf einer Medienkarte werden in einer Ausführungsform nur 20 Pakete verwendet, um die Lese-/Schreiboperationen durchzuführen, und 4 Pakete sind Ersatz-Pakete zur Verwendung zur Ersetzung für fehlerhafte Pakete durch das Medienreparaturmodul 206. Da die 320 Seiten zum Speichern eines Datenblocks einer Größe von 5120 Bytes gleichmäßig über das Arbeitsspeichermodul/die Karte 102 verteilt sind, gibt das Kennzeichen-Bit „Enthalten“ von 20 Paketen an, dass das entsprechende Paket Daten für die VBA-Lese-/Schreiboperation enthält. Ferner umfasst jedes der 20 Pakete 16 diskrete Seiten (oder Beats), die Daten zum Erzielen einer gleichmäßigen Verteilung von Daten enthalten. Wie hierin verwendet, wird der Begriff „Beat“ zum Beschreiben einer Seite in einem Paket verwendet, die Daten zum Durchführen einer Lese-/Schreiboperation enthält, die der empfangenen VBA entspricht. Diese 16 Beats für jedes Paket können durch Verwenden der MRT und der BART identifiziert werden, wie im Folgenden erörtert. Daher wird die VBA während der Übersetzung in der CST im Schritt 602 indexiert, und die oberen 10 Bits der VBA werden zum Identifizieren einer VRU-Anzahl und durch Verwenden der CST zum Identifizieren eines entsprechenden Kennzeichen-Bits „Enthalten“ und von IRU-Bits für jedes Paket verwendet.
-
Unter erneuter Bezugnahme auf 6B können in einem Schritt 604 für jedes Paket die 9 IRU-Bits, die aus dem entsprechenden CST-Eintrag abgerufen wurden, zum Indexieren in der MRT für dieses Paket verwendet werden. Insbesondere werden die 9 IRU-Bits aus der CST 610 für jedes der 20 gültigen Pakete zum Identifizieren einer IRU-Nummer (0 bis 511) verwendet, die wiederum zum Indexieren in der MRT 620 verwendet wird.
-
Wie in 6C gezeigt, umfasst die MRT 620 Zeilen, die durch eine IRU-Nummer indexiert werden, und Spalten, die durch eine Beat-Nummer indexiert werden. Jeder Eintrag 621 in der MRT 620 umfasst eine Gesamtanzahl von 16 Bits und bestimmt die physische Adresse jedes Beats auf dem Paket (insgesamt 16), das Daten zum Durchführen der VBA-Lese-/Schreiboperation enthält. Die physische Adresse wird als eine Kombination von Die-Index (niedrigstwertige 4 Bits des Eintrags 621) in dem Paket, dem MRU-Gruppen-Index (nächste 4 Bits des Eintrags 621) in dem Die und dem MRU-Index (nächste 6 Bits des Eintrags 621) in der MRU-Gruppe dargestellt, die den Beat (D/MG/M) umfasst. Der Eintrag 621 umfasst auch ein fehlgeschlagenes Bit (Bit neben dem höchstwertigen Bit), das angibt, ob die durch den D/MG/M dargestellte Seite vorher als fehlgeschlagen deklariert wurde, und ein Ersatz-Bit, das angibt, ob die durch den D/MG/M dargestellte Seite vorher als einzelner Ersatz deklariert wurde (wenn die gesamte IRU ein Ersatz ist, werden die MRUs im Eintrag 621 nicht als Ersatz markiert). Fehlgeschlagene und/oder Ersatz-Seiten dürfen nicht für eine Lese-/Schreiboperation verwendet werden. Die MRT 620 gibt daher für jedes Paket 16 physische Adressen für Beats in jedem Paket zurück, das Daten zum Durchführen der Lese-/Schreiboperation für die VBA enthalten kann.
-
Wie oben erörtert, umfasst eine MRU 128 Bit-Arrays, von denen vier als Ersatz-Bit-Arrays reserviert sind, und jede der 1 Million Seiten in der MRU übernimmt 1 Bit von jedem der 124 verbleibenden Bit-Arrays. Daher kann in einem Schritt 606 die BART 630 zum Bestimmen der Indexe verwendet werden, die den 124 Bit-Arrays in jeder MRU der oben genannten physischen Adresse entsprechen, aus der der entsprechende Beat Bits zum Durchführen der VBA-Lese-/Schreiboperation übernimmt. Wie in 6C gezeigt, kann jede Zeile der BART 630 durch Verwenden der D/MG/M-Identifizierung aus der MRT 620 indexiert werden, und jede Spalte der BART 630 wird von 0 bis 3 indexiert, da die MRU 4 nicht verwendete Bit-Arrays umfasst. Jeder Eintrag 631 der BART 630 umfasst 8 Bits -7 niedrigstwertige Bits, die eines der vier nicht verwendeten Bit-Arrays (von 128 Bit-Arrays) für die MRU dieser Zeile und das höchstwertige Bit angeben, das für zukünftige Verwendung reserviert ist. Die 124 Bit-Arrays, aus denen Bits durch einen Beat übernommen werden, können durch Ausschließen der nicht verwendeten Bit-Arrays aus einer MRU bestimmt werden.
-
In einem Schritt 608 kann das System die 20 niedrigstwertigen Bits der VBA in Verbindung mit der physischen Adresse (D/MG/M) und die nicht verwendeten Bit-Array-Indexe verwenden, um die Lese-/Schreiboperation an den entsprechenden Speicherzellen durchzuführen, wobei die tatsächliche Lese-/Schreiboperation gemäß den Schnittstellen-Spezifikationen jeder speziellen SCM-Arbeitsspeichertechnologie durchgeführt werden können.
-
Es ist anzumerken, dass die nicht verwendeten Bit-Array-Indexe der BART 330 durch Verwenden einer Fehlerratentabelle (ERT) 640 bestimmt werden können, die während eines Arbeitsspeicher-Bereinigungsprozesses erstellt wurde (im Folgenden unter Bezugnahme auf 7 beschrieben). Wie in 6C gezeigt, umfasst eine ERT 640 eines Pakets Zeilen, die 128 Bit-Arrays entsprechen, und Spalten, die MRUs in dem Paket entsprechen. Da eine VRU zu einem Zeitpunkt während des Bereinigungsprozesses bereinigt wird, entsprechen die MRUs der ERT 640 der VRU, die bereinigt wird (im Folgenden erörtert). Ferner ist der Bereinigungsprozess, der im Folgenden beschrieben wird, auf 16 Beats (d.h. MRUs) pro Paket ausgerichtet und aktualisiert eine ERT für jedes Paket, sodass 16 MRUs in einer ERT vorhanden sind. Jeder Eintrag 641 in einer ERT umfasst die Gesamtanzahl von Hängenbleib-Bits, die während eines Bereinigungsprozesses einer VRU beobachtet wurden. Da eine VRU 1 Million aufeinanderfolgende VBAs umfasst, kann die Gesamtanzahl von Hängenbleib-Bits 2 Millionen betragen (1 Million, die bei 0 hängengeblieben ist, und eine Million, die bei 1 hängengeblieben ist, obwohl im Allgemeinen nicht beides zutrifft).
-
Unter Bezugnahme auf 7 wird ein Ablaufplan beschrieben, der einen beispielhaften Bereinigungsprozess des Arbeitsspeichermoduls/der Karte 102 veranschaulicht. Der Bereinigungsprozess kann für ein periodisches Neuschreiben von Daten innerhalb eines Schwellenwert-Zeitraums zum Sicherstellen von Lesbarkeit und Genauigkeit der Daten, für ein periodisches Invertieren von Bits des Arbeitsspeichersystems zum Vorbereiten jeder Speicherzelle für eine zukünftige Programmierbarkeit und/oder zum Testen des Arbeitsspeichersystems und Sammeln von Statistiken durchgeführt werden, die Hängenbleib-Fehlerstörungen entsprechen (die wiederum zum Initiieren von Medienreparaturaktionen verwendet werden können). In bestimmten Ausführungsformen kann der Bereinigungsprozess zu einem Zeitpunkt an einer VRU durchgeführt werden (in einer Round-Robin-Form und/oder bei Auftreten eines Auslöse-Ereignisses), indem die 1 Million von aufeinanderfolgender VBAs übernommen wird, die der VRU entsprechen, die bereinigt wird, um sie außer Funktion zu setzen, indem alle weiteren Lese-/Schreiboperation von der VRU deaktiviert werden.
-
Während eines Bereinigungsprozesses identifiziert das System in einem Schritt 702 eine VRU, die bereinigt werden muss. In einer oder mehreren Ausführungsformen kann der Bereinigungsprozess für jede VRU periodisch und in einer Round-Robin-Form (z.B. alle 24 Stunden) und/oder bei Auftreten eines Auslöse-Ereignisses durchgeführt werden (z.B. Erfassung eines Arbeitsspeicherfehlers wie beispielsweise ein Synchronisierungsspeicherfehler, eine Erfassung, dass eine Speicheroperation höhere ECC-Korrekturebenen erfordert und dergleichen). Der Bereinigungsprozess für die VRUs kann geplant werden, sodass das komplette Arbeitsspeichermodul/die komplette Karte 102 während eines Schwellenwert-Zeitraums (z.B. 24 Stunden, 48 Stunden oder dergleichen) bereinigt werden kann.
-
In einem Schritt 704 bestimmt das System in einer oder mehreren Ausführungsformen, ob sich die identifizierte VRU für ein Durchführen von Lese-/Schreiboperationen in Betrieb befindet. Wenn die identifizierte VRU für ein Durchführen von Lese-/Schreiboperationen (Schritt 704: JA) in Betrieb ist, kann das System die VRU aus der Verwendung entfernen (Schritt 706). Das Entfernen einer VRU (z.B. Außerbetriebnahme von 1 Million von aufeinanderfolgenden VBAs) kann ohne Einschränkung ein Entfernen der gesamten 1 Million VBAs der identifizierten VRU aus den Freispeicherlisten (die die freien Arbeitsspeicherbereiche von benötigter spezifischer Größe identifizieren) des Arbeitsspeichersystems umfassen. Insbesondere kann das System nicht zulassen, dass irgendeine VBA der VRU auf eine Freispeicherliste gesetzt wird, nachdem sie durch eine Schreiboperation freigegeben wurde. Zusätzlich und/oder alternativ kann das System auch alle vorhandenen Daten aus allen VBAs der VRU entfernen, die derzeit verwendet werden, um Daten zu speichern, indem die Daten in einen anderen Speicherplatz migriert werden, um die VBAs aus der logisch-virtuellen Tabelle (LVT) zu entfernen, die aktuelle Werte der VBA verfolgt und/oder um die VBAs aus dem Drift-Puffer zu entfernen.
-
Bei Außerbetriebnahme der identifizierten VRU und/oder wenn für die identifizierte VRU bestimmt wird, dass sie nicht in Betrieb ist, um Lese-/Schreiboperationen durchzuführen (Schritt 704: NEIN), kann das System in einem Schritt 708 Zähler für alle ERTs initialisieren (z.B. Nullwerte zuweisen), die der identifizierten VRU entsprechen. In einem Schritt 710 kann das System Schreiboperationen für jede VBA der identifizierten VRU mit einem Muster A ausgeben. Beispiele für das Muster A können eine Zeichenfolge aller Einsen (zum Erfassen aller bei 0 hängengebliebenen Bits), eine Zeichenfolge aller Nullen (zum Erfassen aller bei 1 hängengebliebenen Bits), aller Fünfen (zum Erfassen von zwei nebeneinander liegenden Bits, die aneinander kleben) und/oder dergleichen sein. Wenn die Schreiboperation des Musters A für alle VBAs in der VRU ausgeführt worden ist, kann das System für jede VBA der identifizierten VRU Lese-Operationen ausgeben, um die Anzahl von bei Störung hängengebliebenen Bits in der VRU in einem Schritt 712 zu bestimmen. Wenn zum Beispiel das Muster A eine Zeichenfolge aller Einsen umfasst, kann die Lese-Operation verwendet werden, um die bei 0 hängengebliebenen Bits in der VRU zu bestimmen, und wenn das Muster A eine Zeichenfolge aller Nullen umfasst, kann die Lese-Operation verwendet werden, um die bei 1 hängengebliebenen Bits in der VRU zu bestimmen. Andere Muster können zum Identifizieren der Anzahl von anderen Hängenbleib-Fehlern in der VRU verwendet werden (z.B. hängengeblieben bei X, 2 oder mehreren Bits, die aneinander kleben usw.).
-
In einem Schritt 714 kann das System Schreiboperationen für jede VBA der identifizierten VRU mit einem Muster B ausgeben, wobei sich das Muster B von dem Muster A unterscheidet. Beispiele für das Muster B können eine Zeichenfolge aller Einsen (zum Erfassen aller bei 0 hängengebliebenen Bits), eine Zeichenfolge aller Nullen (zum Erfassen aller bei 1 hängengebliebenen Bits), aller Fünfen (zum Erfassen von zwei nebeneinander liegenden Bits, die aneinander kleben) und/oder dergleichen sein. Wenn die Schreiboperation des Musters B für alle VBAs in der VRU ausgeführt worden ist, kann das System für jede VBA der identifizierten VRU Lese-Operationen ausgeben, um die Anzahl von bei Störung hängengebliebenen Bits in der VRU in einem Schritt 716 zu bestimmen. Wenn zum Beispiel das Muster A eine Zeichenfolge aller Einsen umfasst und verwendet wird, um die bei 0 hängengebliebenen Bits in der VRU zu identifizieren, kann das Muster Beine Zeichenfolge aller Nullen umfassen, um die bei 1 hängengebliebenen Bits in der VRU zu bestimmen.
-
Es ist anzumerken, dass während des Bereinigungsprozesses einer VRU alle 128 Bit-Arrays jeder MRU (nicht nur 124 Bit-Arrays) der VRU geschrieben/gelesen werden, indem die BART während des Übersetzungsprozesses ignoriert wird, sodass Hängenbleib-Störungen auf jedem Bit-Array erfasst werden können. Insbesondere werden die Übersetzungen von jeder der 1 Million VBAs einer VRU in physische Seitenadressen durch Verwenden nur der CST und der MRT durchgeführt. Ferner umfassen Übersetzungen während des Bereinigungsprozesses auch die fehlgeschlagenen IRUs und/oder Ersatz-IRUs. Jeder Bereinigungsprozess führt in der Regel zur Erstellung von 20 bis 24 ERTs (für jedes Paket).
-
In einem Schritt 718 kann das System die ERT-Zähler von Schritt 708 auf Grundlage der Werte der bestimmten bei 0 hängengebliebenen Bits und der bei 1 hängengebliebenen Bits für jedes Bit-Array jeder MRU der VRU aktualisieren, die bereinigt wird (d.h. den Zähler aktualisieren, um die Gesamtanzahl von Hängenbleib-Fehlern anzugeben). In einem Schritt 720 kann das System eine Medienreparaturaktion durchführen (die im Folgenden unter Bezugnahme auf 8 erörtert wird).
-
In einem Schritt 722 kann das System die VRU wieder in Betrieb zurückversetzen, indem zum Beispiel die 1 Million VBAs der VRU in die Freispeicherliste eingefügt wird. Wie im Folgenden erörtert, kann eine VRU nicht wieder in Betrieb zurückversetzt werden, wenn sie während der Medienreparaturaktion in Ersatz-IRUs konvertiert wurde.
-
Unter Bezugnahme auf 8 wird ein Ablaufplan beschrieben, der eine beispielhafte Medienreparaturaktion veranschaulicht, die während jedes Bereinigungsprozesses des Arbeitsspeichersystems durchgeführt wird. Wie oben erörtert, wird während des Bereinigungsprozesses eine ERT pro Paket erstellt, die die Anzahl von Hängenbleib-Fehlern (z.B. hängengeblieben bei 1, hängengeblieben bei 0 usw.) für jedes der Bit-Array-Index/MRUs der VRU angibt, die bereinigt wird. Das System kann die Zähler in der ERT analysieren, um eine oder mehrere Medienreparaturaktionen wie in dieser 8 beschrieben durchzuführen. Die Medienreparaturaktion kann eine Bit-Array-Reparatur (wird fast immer durchgeführt), MRU-Ersetzung und/oder IRU-Ersetzung umfassen.
-
In einem Schritt 802 kann das System bestimmen, ob eine Bit-Array-Reparatur, eine MRU-Ersetzung und/oder eine IRU-Ersetzung für die bereinigte VRU durchgeführt werden muss. In bestimmten Ausführungsformen kann das System bestimmen, ob eine MRU-Ersetzung und/oder eine IRU-Ersetzung für die VRU durchgeführt werden muss, indem die Anzahl von schlechten Beats in der ERT identifiziert und analysiert wird.
-
Ein Beat kann als schlechter Beat identifiziert werden, indem die Hängenbleib-Bit-Zählungen für jedes der Bit-Arrays in dem Beat analysiert werden. Insbesondere bestimmt das System für jedes der Bit-Arrays eines Beats, ob die Anzahl von Hängenbleib-Bit-Zählungen größer als ein erster Schwellenwert (TH), größer als ein zweiter Schwellenwert (TL) aber kleiner als der erste Schwellenwert TH oder eine akzeptierbare Anzahl von Hängenbleib-Bits ist. Die Schwellenwerte TL und TH werden durch die Stärke des ECCs bestimmt. Ein beispielhafter TH kann ungefähr 2000 bis ungefähr 7000 Bits pro Million Bits sein, ein beispielhafter TL kann ungefähr 200 bis ungefähr 700 Bits pro Million Bits sein, und eine beispielhafte akzeptierbare Anzahl von Hängenbleib-Bits kann jeder Wert sein, der kleiner als TL ist (z.B. kleiner als 100 Bits pro Million Bits).
-
Wenn nicht mehr als 4 Beats eine Anzahl von Hängenbleib-Bits haben, die größer als TL ist (wenn z.B. ein Beat ein 1-Bit-Array mit der Anzahl von Hängenbleib-Bit-Zählungen, die größer als TH ist, und 3 Bit-Arrays mit der Anzahl von Hängenbleib-Bit-Zählungen umfasst, die größer als TL ist), kann das System nur eine Bit-Array-Reparatur durchführen, wie im Folgenden erörtert. 9A veranschaulicht eine beispielhafte ERT, die nach einer VRU-Bereinigung erstellt wurde, die angibt, dass eine Bit-Array-Reparatur erforderlich ist.
-
Wenn zusätzlich und/oder alternativ einige Beats (aber nicht alle und/oder weniger als eine Schwellenwert-Anzahl) mehr als 4 Bit-Arrays mit der Anzahl von Hängenbleib-Bit-Zählungen haben, die größer als TH ist, und/oder mehr als 11 Bit-Arrays die Anzahl von Hängenbleib-Bit-Zählungen haben, die größer als TL ist, kann das System bestimmen, dass der Beat eine fehlgeschlagene MRU ist. Das System kann für derartige fehlgeschlagene MRUs zusätzlich zu einer Bit-Array-Reparatur MRU-Ersetzungen durchführen. 9B veranschaulicht eine beispielhafte ERT, die nach einer VRU-Bereinigung erstellt wurde, die angibt, dass eine MRU-Ersetzung erforderlich ist.
-
Wenn alle oder eine bestimmte Schwellenwert-Anzahl von Beats in einer ERT für ein Paket schlecht sind (d.h. mehr als 4 Bit-Arrays die Anzahl von Hängenbleib-Bit-Zählungen haben, die größer als TH ist, und/oder mehr als 11 Bit-Arrays die Anzahl von Hängenbleib-Bit-Zählungen haben, die größer als TL ist), kann das System bestimmen, dass die IRU fehlgeschlagen ist, die die schlechten Beats umfasst. Das System kann in einer oder mehreren Ausführungsformen anschließend für derartige fehlgeschlagene IRUs zusätzlich zu einer Bit-Array-Reparatur IRU-Ersetzungen durchführen. Eine IRU-Ersetzung kann auch durchgeführt werden, wenn keine Ersatz-MRUs in dem Paket vorhanden sind, das die fehlgeschlagene MRU umfasst, die eine Ersetzung erfordert. 9C veranschaulicht eine beispielhafte, nach einer VRU-Bereinigung erstellte ERT, die angibt, dass eine IRU-Ersetzung erforderlich ist.
-
Die Anzahlen von Bit-Arrays werden nur zu Beispielzwecken bereitgestellt, und andere Anzahlen liegen innerhalb des Schutzbereichs dieser Offenbarung für ein Bestimmen, ob eine Bit-Array-Reparatur, eine MRU-Ersetzung und/oder eine IRU-Ersetzung für die VRU durchgeführt werden muss,
-
Wenn eine Bit-Array-Reparatur erforderlich ist, führt das System in einem Schritt 804 gemäß einem Aspekt eine Bit-Array-Reparaturaktion durch, indem ausgeschlossen wird, dass die schlimmsten Bit-Arrays während einer Lese-/Schreiboperation verwendet werden. Das System kann zunächst für jede MRU in der ERT (d.h. Spalte) die schlimmsten 4 Bit-Arrays und deren entsprechende Indexe identifizieren, indem die Gesamtanzahl von Hängenbleib-Fehlern analysiert wird, die für jedes Bit-Array beobachtet wurde. Die schlimmsten 4 Bit-Arrays sind Bit-Arrays mit der höchsten Anzahl von Hängenbleib-Fehlern, die während des Bereinigungsprozesses beobachtet wurden. Das System kann anschließend die BART aktualisieren und speichern, die der ERT entspricht, um die schlimmsten 4 Bit-Arrays-Indexe als die nicht verwendeten Bit-Array-Indexe für diese MRU aufzunehmen. Wenn mehr als 4 Bit-Arrays schlecht sind, kann das System einen ECC aufrufen, um Medienreparaturen durchzuführen.
-
Wenn in einem Schritt 806 eine MRU/IRU-Ersetzung für eine fehlgeschlagene MRU erforderlich ist, bestimmt das System gemäß einem Aspekt, ob die fehlgeschlagene MRU eine Ersatz-MRU ist und/oder in einer Ersatz-IRU enthalten ist. Wenn die fehlgeschlagene MRU eine Ersatz-MRU ist und/oder in einer Ersatz-IRU enthalten ist (Schritt 806: JA), kann das System die MRU als fehlgeschlagene MRU (und nicht als Ersatz) ohne Ersetzung (Schritt 808) markieren. Wenn die fehlgeschlagene MRU jedoch keine Ersatz-MRU ist und nicht in einer Ersatz-IRU enthalten ist (Schritt 806: NEIN), führt das System anschließend gemäß einer Ausführungsform eine MRU-Ersetzung durch (Schritt 810) und aktualisiert die MRT entsprechend (Schritt 812). Es ist anzumerken, dass eine Ersatz-MRU als Kandidat für eine Ersetzung einer fehlgeschlagenen MRU nur dann in Betracht gezogen werden kann, wenn die Leistung der MRU nicht verschlechtert wird, da eine Leistungsverschlechterung die Folge der unsachgemäßen Sortierung von D/MG/M-Werten in den Beats einer IRU sein kann.
-
Das System führt in einem Aspekt eine MRU-Ersetzung (Schritt 810) durch, indem zuerst nach Ersatz-MRUs in demselben Paket wie die fehlgeschlagene MRU gesucht wird, die ersetzt werden muss. Wenn keine Ersatz-MRUs gefunden werden, sucht das System in einer Ausführungsform auch nach Ersatz-IRUs in demselben Paket und teilt die Ersatz-IRU in Ersatz-MRUs auf. Die Ersatz-MRU und/oder IRU in demselben Paket können anschließend verwendet werden, um die fehlgeschlagene MRU und/oder die IRU zu ersetzen, die die fehlgeschlagene MRU enthält. Das System konvertiert in einer Ausführungsform die guten MRUs (d.h. MRUs, die keine Ersetzung benötigen) der IRU, die ersetzt wird, in Ersatz-MRUs. Nach der Ersetzung aktualisiert das System in einer oder mehreren Ausführungsformen die MRT für dieses Paket, um die physischen Adressen von Seiten in der fehlgeschlagenen MRU oder IRU (d.h. der D/MG/G) gegen diejenigen der Ersatz-MRU oder -IRU auszutauschen.
-
Wenn das Paket mit der fehlgeschlagenen MRU jedoch keine Ersatz-MRUs oder -IRUs umfasst, ersetzt das System anschließend in einer oder mehreren Ausführungsformen die gesamte IRU mit einer Ersatz-IRU in einem anderen Paket (Schritt 814). Das System konvertiert gemäß einem Aspekt die guten MRUs (d.h. MRUs, die keine Ersetzung benötigen) der IRU, die ersetzt wird, in Ersatz-MRUs. Nach der Ersetzung aktualisiert das System in einer Ausführungsform die CST, um die verwendete IRU gegen die Ersatz-IRU sowie die Angaben der Ersatz-/fehlgeschlagenen IRU in der CST auszutauschen. Es ist anzumerken, dass in einer Ausführungsform eine Ersatz-IRU aus demselben Paket wie die fehlgeschlagene MRU/IRU bei einer Ersetzung gegenüber einer Ersatz-IRU aus einem anderen Paket bevorzugt wird.
-
Wenn das System keine Ersatz-MRUs oder -IRUs in irgendeinem der Pakete finden kann, erstellt es in einer oder mehreren Ausführungsformen (Schritt 816) Ersatz-IRUs aus der VRU, die bereinigt wird (und nicht in Betrieb zurückversetzt wird), und markiert die fehlgeschlagene MRU als fehlgeschlagen. Das System aktualisiert die CST und die MRT in einem Aspekt, um anzugeben, dass die VRU verwendet worden ist, um Ersatz-IRUs zu erstellen, und nicht für Lese-/Schreiboperationen verwendet werden kann.
-
In einer oder mehreren Ausführungsformen müssen die Medien möglicherweise aktualisiert werden, beispielsweise einmal täglich. Während einer Aktualisierungsoperation werden die Daten in einer VBA in eine neue VBA kopiert, und anschließend wird die alte VBA ein erstes Mal auf alle „Einsen“ geschrieben und danach ein zweites Mal auf alle „Nullen“ geschrieben, bevor die alte VBA wieder in Betrieb zurückversetzt wird.
-
Während die veranschaulichenden Ausführungsformen, die oben beschrieben wurden, bevorzugt in Hardware umgesetzt werden, wie beispielsweise in Einheiten und Schaltungen eines Prozessors, können verschiedene Aspekte der veranschaulichenden Ausführungsformen und/oder Techniken auch in Software umgesetzt werden. Es sollte zum Beispiel klar sein, dass jeder Block der Ablaufplanveranschaulichungen in 4 bis 8 und Kombinationen von Blöcken in der Ablaufplanveranschaulichung durch Computerprogrammanweisungen umgesetzt werden können. Diese Computerprogrammanweisungen können für einen Prozessor oder eine andere programmierbare Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die auf dem Prozessor oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne spezifizierten Funktionen erstellen. Diese Computerprogrammanweisungen können auch in einem durch einen Computer lesbaren Arbeitsspeicher oder Speichermedium gespeichert werden, die einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung so steuern können, dass die Anweisungen, die in dem durch einen Computer lesbaren Arbeitsspeicher oder dem Speichermedium gespeichert sind, ein Herstellungsprodukt erzeugen, das Anweisungsmittel enthält, die die in dem Block bzw. den Blöcken des Ablaufplans spezifizierten Funktionen umsetzen.
-
Dementsprechend unterstützen Blöcke der Ablaufplanveranschaulichung Kombinationen von Mitteln zum Ausführen der spezifizierten Funktionen, Kombinationen von Schritten zum Ausführen der spezifizierten Funktionen und Programmanweisungsmittel zum Ausführen der spezifizierten Funktionen. Es ist sollte auch klar sein, dass jeder Block der Ablaufplanveranschaulichung und Kombinationen von Blöcken in der Ablaufplanveranschaulichung durch spezielle, auf Hardware beruhende Computersysteme, welche die spezifizierten Funktionen oder Schritte ausführen, oder durch Kombinationen aus Sonderzweck-Hardware und Computeranweisungen umgesetzt werden können.
-
Eine oder mehrere Ausführungsformen der vorliegenden Offenbarung können ein System, ein Verfahren und/oder ein Computerprogrammprodukt sein. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) enthalten, auf dem durch einen Computer lesbare Programmanweisungen gespeichert sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Offenbarung auszuführen.
-
Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zum Ausführen von Anweisungen beibehalten und speichern kann. Das durch einen Computer lesbare Speichermedium kann zum Beispiel eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu einer nicht erschöpfenden Liste von spezifischeren Beispielen des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer CD-ROM, eine DVD, ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination des Vorgenannten. Ein durch einen Computer lesbares Speichermedium soll, wie hierin verwendet, nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder andere Übertragungsmedien ausbreiten (z.B. durch ein Lichtwellenleiterkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
-
Hierin beschriebene durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
-
Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben sind, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch jeden Typ von Netzwerk verbunden werden, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, feldprogrammierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die computerlesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der computerlesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
-
Aspekte der vorliegenden Offenbarung werden hierin unter Bezugnahme auf Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Offenbarung beschrieben. Es sollte klar sein, dass jeder Block der Ablaufplanveranschaulichungen und/oder der Blockschaubilder und Kombinationen von Blöcken in den Ablaufplanveranschaulichungen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programmanweisungen umgesetzt werden können.
-
Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. eine andere programmierbare Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, die Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaubilder angegebenen Funktion/Schritts umsetzen.
-
Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Arbeitsschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte umsetzen.
-
Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder den Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zum Umsetzen der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt auftreten. Zum Beispiel können zwei nacheinander gezeigte Blöcke im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufplandarstellungen sowie Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplandarstellung durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die angegebenen Funktionen oder Handlungen durchführen oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
-
Des Weiteren kann ein System gemäß verschiedenen Ausführungsformen einen Prozessor und Logik enthalten, die in den Prozessor integriert und/oder von diesem ausführbar ist, wobei die Logik so konfiguriert ist, dass sie einen oder mehrere der hierin genannten Prozessschritte durchführt. Mit „integriert“ ist gemeint, dass in den Prozessor Logik als Hardware-Logik eingebettet ist, wie beispielsweise eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA) usw. Mit „durch den Prozessor ausführbar“ ist gemeint, dass die Logik Hardware-Logik; Software-Logik wie zum Beispiel Firmware, Teil eines Betriebssystems, Teil eines Anwendungsprogramms usw.; oder eine Kombination aus Hardware- und Software-Logik ist, auf die durch den Prozessor zugegriffen werden kann und die konfiguriert ist, um den Prozessor zu veranlassen, eine Funktionalität bei Ausführung durch den Prozessor durchzuführen. Software-Logik kann auf einem lokalen und/oder entfernt angeordneten Arbeitsspeicher jedes Arbeitsspeichertyps gespeichert werden, wie im Stand der Technik bekannt. Jeder im Stand der Technik bekannte Prozessor kann verwendet werden, wie zum Beispiel ein Software-Prozessormodul und/oder ein Hardware-Prozessor wie eine ASIC, ein FPGA, eine Zentraleinheit (CPU), eine integrierte Schaltung (IC), eine Grafikverarbeitungseinheit (GPU) usw.
-
Die entsprechenden Strukturen, Materialien, und Entsprechungen aller Mittel oder Schritt-plus-Funktion-Elemente in den nachstehenden Ansprüchen sollen alle Strukturen, Materialien oder Handlungen zum Ausführen der Funktion in Kombination mit anderen beanspruchten Elementen enthalten, wie speziell beansprucht. Die Beschreibung der Ausführungsformen der vorliegenden Offenbarung wurde zum Zweck der Veranschaulichung und Beschreibung erstellt, sie soll aber keineswegs erschöpfend oder auf die Ausführungsformen in der offenbarten Form eingeschränkt sein. Für Fachleute sind viele Modifizierungen und Variationen offenkundig, die nicht von dem Schutzumfang und Erfindungsgedanken der Offenbarung abweichen. Die Ausführungsformen und Beispiele wurden ausgewählt und beschrieben, um die Grundgedanken der Offenbarung und die praktische Anwendung am besten zu erklären und es anderen Fachleuten zu ermöglichen, die Offenbarung für verschiedene Ausführungsformen mit verschiedenen Modifizierungen zu verstehen, die für die vorgesehene bestimmte Verwendung geeignet sind.
-
Die hierin beschriebenen Programme werden auf Grundlage der Anwendung identifiziert, für die sie in einer bestimmten Ausführungsform der Offenbarung umgesetzt werden. Es sollte jedoch klar sein, dass jede bestimmte Programm-Nomenklatur hierin aus rein praktischen Gründen verwendet wird, und die Offenbarung somit nicht allein auf die Verwendung in einer bestimmten identifizierten Anwendung und/oder durch eine derartige Nomenklatur umgesetzt eingeschränkt sein soll.
-
Es sollte klar sein, dass die verschiedenen Merkmale der vorstehend aufgeführten Systeme und/oder Methodiken auf jede Weise kombiniert werden können, wodurch eine Mehrzahl von Kombinationen aus den oben angegebenen Beschreibungen geschaffen wird.
-
Es sollte ferner klar sein, dass Ausführungsformen der vorliegenden Offenbarung in der Form eines Service bereitgestellt werden können, der für einen Kunden zum Bereitstellen von bedarfsgesteuertem Service eingerichtet wird.
-
Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Offenbarung wurden zum Zweck der Veranschaulichung erstellt, sie sollen aber keineswegs erschöpfend oder auf die offenbarten Ausführungsformen eingeschränkt sein. Für Fachleute sind viele Modifizierungen und Variationen offenkundig, die nicht von dem Schutzumfang und Erfindungsgedanken der beschriebenen Ausführungsformen abweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber auf dem Markt gefundenen Technologien bestmöglich zu erklären oder anderen Fachleuten zu ermöglichen, die hierin offenbarten Ausführungsformen zu verstehen.