-
HINTERGRUND
-
Speicher-Teilsysteme können ein wesentlicher Leistungsengpass beim Erreichen des Leistungspotenzials eines Datenverarbeitungssystems sein. Während eine Lösung für diesen Engpass darin bestehen würde, primär nur sehr schnellen Speicher in einem Computersystem zu verwenden, wie beispielsweise statischen Direktzugriffsspeicher, machen die Kosten derartigen Speichers diese potenzielle Lösung äußerst kostspielig. Um einen Ausgleich von Kosten und Systemleistung zu erreichen, ist Speicher-Teilsystem-Architektur üblicherweise in einer hierarchischen Struktur organisiert, bei der schnellerer kostspieliger Speicher in der Nähe des Prozessors an der Spitze arbeitet, langsamerer, weniger kostspieliger Speicher als „Storage-Speicher“ unten arbeitet, und Speicher, dessen Geschwindigkeit und Kosten dazwischen liegen, in der Mitte als Systemspeicher arbeitet.
-
Durch neuere Entwicklungen in der Technologie persistenter Speicher wurde begonnen, den Leistungsunterschied zwischen der Systemspeicher-Zwischenschicht und der unteren Storage-Speicher-Schicht abzubauen. Allerdings bleibt aufgrund herkömmlicher Speicher-Teilsystem-Architektur der Hierarchieunterschied zwischen Systemspeicher und Storage-Speicher bestehen.
-
Figurenliste
-
- 1A veranschaulicht ein Blockschaltbild eines herkömmlichen Speicher-Teilsystems;
- 1B veranschaulicht ein Blockschaltbild eines herkömmlichen Speicher-Teilsystems;
- 2 veranschaulicht ein Blockschaltbild eines Speicher-Teilsystems gemäß einer beispielhaften Ausführungsform;
- 3 veranschaulicht eine Datenstruktur für einen NVM-Blockadresseneintrag (nonvolatile memory block address entry) eines Domänenverzeichnisses gemäß einer beispielhaften Ausführungsform;
- 4 veranschaulicht ein Blockschaltbild eines Datenverarbeitungssystems gemäß einer beispielhaften Ausführungsform;
- 5 veranschaulicht einen Verfahrensablauf zum Übertragen von Daten aus einer Memory-Domäne in eine Storage-Domäne gemäß einer beispielhaften Ausführungsform;
- 6 veranschaulicht einen Verfahrensablauf zum Übertragen von Daten aus einer Storage-Domäne in eine Memory-Domäne gemäß einer beispielhaften Ausführungsform; und
- 7 veranschaulicht ein Blockschaltbild eines Datenverarbeitungssystems gemäß einer beispielhaften Ausführungsform.
-
BESCHREIBUNG VON AUSFÜHRUNGSFORMEN
-
Obwohl die folgende ausführliche Beschreibung zu Veranschaulichungszwecken zahlreiche Einzelheiten enthält, werden Fachleute verstehen, dass zahlreiche Abwandlungen und Änderungen an den folgenden Details vorgenommen werden können und als hierin einbezogen betrachtet werden. Demzufolge werden die folgenden Ausführungsformen ohne einen Verlust an Allgemeinheit jeglicher dargelegter Ansprüche dargelegt, und ohne diesen Einschränkungen aufzuerlegen. Es versteht sich außerdem, dass die hierin verwendete Terminologie ausschließlich dem Zweck der Beschreibung bestimmter Ausführungsformen dient und nicht einschränkend sein soll. Sofern nicht anders definiert, haben alle hier verwendeten technischen und wissenschaftlichen Begriffe dieselbe Bedeutung, die sie üblicherweise für Fachleute des Fachgebiets haben würden, zu dem diese Offenbarung zählt. Außerdem stellen dieselben Bezugszeichen, die in unterschiedlichen Zeichnungen erscheinen, dasselbe Element dar. Zahlen, die in Ablaufplänen und Prozessen bereitgestellt werden, werden zur klaren Veranschaulichung von Schritten und Operationen bereitgestellt, und weisen nicht notwendigerweise auf eine bestimmte Ordnung oder Reihenfolge hin.
-
Darüber hinaus können die beschriebenen Merkmale, Strukturen oder Eigenschaften auf jede geeignete Weise in einer oder mehreren Ausführungsformen kombiniert werden. In der folgenden Beschreibung werden zahlreiche spezifische Details geboten, wie zum Beispiel Beispiele für Layouts, Entfernungen, Netzwerkbeispiele usw., um ein umfassendes Verständnis verschiedener Ausführungsformen zu ermöglichen. Fachleute des relevanten Fachgebiets werden jedoch erkennen, dass derartige detaillierte Ausführungsformen die hierin ausgedrückten Gesamtkonzepte nicht einschränken, sondern lediglich repräsentativ dafür sind. Fachleute des relevanten Fachgebiets werden außerdem erkennen, dass die Technologie ohne eines oder mehrere der speziellen Details oder mit anderen Verfahren, Komponenten, Layouts usw. praktisch angewendet werden kann. In anderen Fällen werden gut bekannte Strukturen, Materialien oder Operationen möglicherweise nicht im Detail gezeigt oder beschrieben, um Unklarheiten in Bezug auf Aspekte der Offenbarung zu vermeiden.
-
Bei dieser Anmeldung können „umfasst“, „umfassend“, „enthaltend“ und „aufweisend“ und dergleichen die ihnen im US-Patenrecht zugeschriebene Bedeutung haben und können „beinhaltet“, „beinhaltend“ und dergleichen bedeuten und werden allgemein als ergebnisoffene Begriffe verstanden. Die Begriffe „bestehend aus“ oder „besteht aus“ sind geschlossene Begriffe und beinhalten nur die Komponenten, Strukturen, Schritte oder dergleichen, die in Verbindung mit derartigen Begriffen speziell aufgeführt sind, sowie das, was mit dem US-Patenrecht übereinstimmt. „Im Wesentlichen bestehend aus“ oder „besteht im Wesentlichen aus“ haben die Bedeutung, die ihnen im Allgemeinen vom US-Patentrecht zugeschrieben wird. Insbesondere sind derartige Begriffe im Allgemeinen geschlossene Begriffe, mit der Ausnahme, dass sie eine Einbeziehung zusätzlicher Gegenstände, Materialien, Komponenten, Schritte oder Elemente erlauben, die sich nicht wesentlich auf die grundlegenden und neuartigen Eigenschaften oder Funktionen des Gegenstands/der Gegenstände auswirken, die in Verbindung damit verwendet werden. Zum Beispiel wären Spurenelemente zulässig, die in einer Zusammensetzung vorhanden sind, sich aber nicht auf das Wesen oder die Eigenschaften der Zusammensetzung auswirken, wenn sie gemäß der Formulierung „im Wesentlichen bestehend aus“ vorhanden wären, selbst wenn sie nicht ausdrücklich in einer Liste von Gegenständen aufgeführt sind, die auf eine derartige Terminologie folgt. Wird in dieser schriftlichen Beschreibung ein ergebnisoffener Begriff wie „umfassend“ oder „beinhaltend“ verwendet, versteht es sich, dass eine direkte Unterstützung auch für die Formulierung „im Wesentlichen bestehend aus“ wie auch die Formulierung „bestehend aus“ ermöglicht werden sollte, als ob dies ausdrücklich angegeben wäre, und umgekehrt.
-
So wie er hierin verwendet wird, bezieht sich der Begriff „im Wesentlichen“ auf das vollständige oder nahezu vollständige Ausmaß oder den vollständigen oder nahezu vollständigen Grad einer Aktion, Eigenschaft, Beschaffenheit, eines Zustands, einer Struktur, eines Gegenstands oder eines Ergebnisses. Zum Beispiel würde, dass ein Objekt „im Wesentlichen“ umschlossen ist, bedeuten, dass das Objekt entweder vollständig umschlossen oder nahezu vollständig umschlossen ist. Der genaue erlaubte Grad an Abweichung von absoluter Vollständigkeit kann in einigen Fällen von dem spezifischen Zusammenhang abhängen. Allerdings wird, allgemein ausgedrückt, die Nähe zur Vollständigkeit derart sein, dass sie dasselbe Gesamtergebnis ergibt, als ob absolute und völlige Vollständigkeit erreicht wären. Der Gebrauch von „im Wesentlichen“ ist gleichermaßen angebracht, wenn es mit einem negativen Begriffsinhalt verwendet wird, um auf das vollständige oder nahezu vollständige Fehlen einer Aktion, Eigenschaft, Beschaffenheit, eines Zustands, einer Struktur, eines Gegenstands oder eines Ergebnisses zu verweisen. Zum Beispiel würden in einer Zusammensetzung, die „im Wesentlichen“ frei von Partikeln ist, Partikel entweder vollständig oder so nahezu vollständig fehlen, dass die Wirkung dieselbe wäre, als ob Partikel in ihr vollständig fehlen würden. Anders ausgedrückt: Eine Zusammensetzung, die „im Wesentlichen“ frei von einem Bestandteil oder Element ist, kann dennoch tatsächlich einen derartigen Gegenstand enthalten, sofern keine messbare Wirkung davon vorliegt.
-
So wie er hierin gebraucht wird, wird der Begriff „etwa“ verwendet, um Flexibilität für einen Endpunkt eines numerischen Bereichs zu ermöglichen, indem ermöglicht wird, dass ein gegebener Wert „ein wenig über“ oder „ein wenig unter“ dem Endpunkt liegen kann. Es versteht sich jedoch, dass, selbst wenn der Begriff „etwa“ in der vorliegenden Beschreibung in Verbindung mit einem spezifischen numerischen Wert gebraucht wird, diese Unterstützung für den genauen numerischen Wert, der abgesehen von der Terminologie „etwa“ angeführt wird, ebenfalls ermöglicht wird.
-
So wie hierin verwendet, kann eine Mehrzahl von Gegenständen, strukturellen Elementen, kompositionellen Elementen und/oder Materialien der Einfachheit halber in einer gemeinsamen Liste präsentiert werden. Allerdings sollten diese Listen so aufgefasst werden, als ob jedes Element der Liste einzeln als ein separates und einzigartiges Element bezeichnet würde. Daher sollte kein einzelnes Element einer derartige Liste allein auf Grundlage ihrer Darbietung in einer gemeinsamen Gruppe als ein tatsächliches Äquivalent eines anderen Elements derselben Liste aufgefasst werden, sofern nichts Gegenteiliges angegeben ist.
-
Konzentrationen, Mengen sowie andere numerische Daten können hierin in einem Bereichsformat ausgedrückt oder dargeboten werden. Es versteht sich, dass ein derartiges Bereichsformat lediglich der Einfachheit und Kürze halber verwendet wird und daher flexibel derart aufgefasst werden sollte, dass es nicht nur die als die Grenzen des Bereichs ausdrücklich aufgeführten numerischen Werte beinhaltet, sondern auch alle die einzelnen numerischen Werte oder Teilbereiche, die in diesem Bereich umfasst sind, als ob jeder numerische Wert und Teilbereich ausdrücklich aufgeführt wäre. Zur Veranschaulichung: ein numerischer Bereich von „etwa 1 bis etwa 5“ sollte derart aufgefasst werden, dass er nicht nur die ausdrücklich aufgeführten Werte von etwa 1 bis etwa 5, sondern auch einzelne Werte und Teilbereiche innerhalb des angegebenen Bereichs beinhaltet. Daher sind in diesem numerischen Bereich einzelne Werte wie beispielsweise 2, 3 und 4 sowie Teilbereiche wie beispielsweise von 1 bis 3, von 2 bis 4 und von 3 bis 5 usw., wie auch 1, 1,5, 2, 2, 3, 3, 3,8, 4, 4,6, 5 und 5,1 einzeln enthalten.
-
Dasselbe Prinzip trifft auf Bereiche zu, bei denen nur ein einzige Wert als ein Minimum oder Maximum angeführt wird. Darüber hinaus sollte eine solche Auslegung unabhängig von dem Umfang des beschriebenen Bereichs oder der beschriebenen Eigenschaften zutreffen.
-
Wird in dieser Beschreibung auf „ein Beispiel“ Bezug genommen, so heißt das, dass ein bestimmtes in Verbindung mit dem Beispiel beschriebenes Merkmal, eine bestimmte derartige Struktur oder eine bestimmte derartige Eigenschaft in mindestens einer Ausführungsform enthalten ist. Daher bezieht sich ein Vorkommen von Formulierungen, die „ein Beispiel“ oder „eine Ausführungsform“ enthalten, an verschiedenen Stellen in dieser gesamten Beschreibung nicht notwendigerweise jedes Mal auf dasselbe Beispiel oder dieselbe Ausführungsform.
-
Die Begriffe „erster/erste/erstes“, „zweiter/zweite/zweites“, „dritter/dritte/drittes“, „vierter/vierte/viertes“ und dergleichen in der Beschreibung und in den Ansprüchen werden, wenn vorhanden, zum Unterscheiden zwischen ähnlichen Elementen und nicht notwendigerweise zum Beschreiben einer bestimmten sequenziellen oder chronologischen Reihenfolge verwendet. Es versteht sich, dass die derart verwendeten Begriffe unter geeigneten Umständen untereinander austauschbar sind, sodass die hierin beschriebenen Ausführungsformen zum Beispiel in anderen Abfolgen funktionieren können als den hierin veranschaulichten oder auf andere Weise beschriebenen. In ähnlicher Weise ist, wenn ein Verfahren hierin als eine Reihe von Schritten umfassend beschrieben wird, die hierin dargebotene Reihenfolge derartiger Schritte nicht notwendigerweise die einzige Reihenfolge, in der derartige Schritte durchgeführt werden können, und bestimmte der angegebenen Schritte können möglicherweise entfallen und/oder bestimmte andere hierin nicht beschriebene Schritte können möglicherweise dem Verfahren hinzugefügt werden.
-
Die Begriffe „links“, „rechts“, „vorderer/vordere/vorderes“, „hinterer/hintere/hinteres“, „über“, „unter“ und dergleichen in der Beschreibung und in den Ansprüchen werden, wenn vorhanden, zu Beschreibungszwecken und nicht notwendigerweise zum Beschreiben ständiger relativer Positionen verwendet. Es versteht sich, dass die derart verwendeten Begriffe unter geeigneten Umständen untereinander austauschbar sind, sodass die hierin beschriebenen Ausführungsformen zum Beispiel mit anderen Ausrichtungen funktionieren können als den hierin veranschaulichten oder auf andere Weise beschriebenen.
-
So wie sie hierin gebraucht werden, beziehen sich vergleichende Begriffe wie beispielsweise „erhöht“, „verringert“, „besser“, „schlechter“, „höher“, „niedriger“ „verbessert“ und dergleichen auf eine Beschaffenheit einer Vorrichtung, Komponente oder Aktivität, die sich messbar von anderen Vorrichtungen, Komponenten oder Aktivitäten in einem umgebenden oder benachbarten Bereich, bei einer einzelnen Vorrichtung oder bei mehreren vergleichbaren Vorrichtungen, in einer Gruppe oder Klasse, in mehreren Gruppen oder Klassen oder im Vergleich zu dem bekannten Stand der Technik unterscheidet. Zum Beispiel kann sich ein Datenbereich, der ein „erhöhtes“ Korruptionsrisiko aufweist, auf einen Bereich einer Speichervorrichtung beziehen, bei dem es wahrscheinlicher ist, dass er Schreibfehler aufweist, als bei anderen Bereichen auf derselben Speichervorrichtung. Eine Anzahl von Faktoren kann ein derartiges erhöhtes Risiko bewirken, darunter Standort, Herstellungsprozess, Anzahl der auf den Bereich angewendeten Programmimpulse usw.
-
Ein anfänglicher Überblick über Ausführungsformen wird nachstehend gegeben, und spezifische Ausführungsformen werden anschließend ausführlicher beschrieben. Diese anfängliche Kurzdarstellung ist dazu bestimmt, Leser dabei zu unterstützen, die Offenbarung schneller zu verstehen, soll aber keine technologischen Hauptmerkmale oder wesentlichen technologischen Merkmale bezeichnen, und soll auch den Schutzbereich des beanspruchten Gegenstands nicht einschränken.
-
Die Leistungsanforderungen an Rechenvorrichtungen und -systeme nehmen kontinuierlich zu, und Speichergestaltung und Nutzung können Schlüsselfaktoren beim Erreichen einer erhöhten Leistung sein. Bei einem üblichen Datenverarbeitungssystem bearbeitet ein Prozessor Daten, die im Allgemeinen entlang einer Speicherhierarchie von Prozessor-Cachespeicher zu Systemspeicher zu Storage-Speicher gespeichert sind. Aufgrund der kleineren Kapazität von Systemspeicher im Vergleich zu Storage-Speicher, werden Daten auf Grundlage von Priorität im Systemspeicher unterhalten, was dazu führt, dass mit sich ändernder Datenpriorität Datenblöcke in Storage-Speicher und aus Storage-Speicher übertragen werden. Systemspeicher und Storage-Speicher erfordern herkömmlicherweise unterschiedliche Arten von Speichermedien, und daher werden Datenblöcke von einer den Systemspeicher enthaltenden Speichervorrichtung zu einer den Storage-Speicher enthaltenden Speichervorrichtung gesendet und umgekehrt. Ein vereinfachtes Beispiel für ein derartiges herkömmliches System wird in 1A, gezeigt, die einen Prozessor 102 wie beispielsweise eine Zentraleinheit (central processing unit, CPU), Adressenübersetzungslogik 104, eine Systemspeichervorrichtung 106 und eine Storage-Speichervorrichtung 108 aufweist. Eine Systemspeicher-Steuereinheit 110 ist zwischen die Adressenübersetzungslogik 104 und die Systemspeichervorrichtung 106 gekoppelt, die eine Datenverschiebung zwischen ihnen steuert. Eine Storage-Speicher-Steuereinheit 112 ist zwischen die Adressenübersetzungslogik 104 und die Storage-Speichervorrichtung 108 gekoppelt, die eine Datenverschiebung zwischen ihnen steuert. Daher werden, wenn eine Anforderung, Daten von der Systemspeichervorrichtung 106 zu der Storage-Speichervorrichtung 108 zu verschieben, von dem Prozessor 102 durch die Adressenübersetzungslogik 104 gesendet wird, die Daten durch die Systemspeicher-Steuereinheit 110 aus der Systemspeichervorrichtung 106 gelesen und an die Storage-Speicher-Steuereinheit 112 gesendet, welche die Daten an den geeigneten Ort in der Storage-Speichervorrichtung 108 schreibt. In ähnlicher Weise werden, wenn eine Anforderung, Daten von der Storage-Speichervorrichtung 108 zu der Systemspeichervorrichtung 106 zu verschieben, von dem Prozessor 102 durch die Adressenübersetzungslogik 104 gesendet wird, die Daten durch die Storage-Speicher-Steuereinheit 112 aus der Storage-Speichervorrichtung 108 gelesen und an die Systemspeicher-Steuereinheit 110 gesendet, welche die Daten an den geeigneten Ort in der Systemspeichervorrichtung 106 schreibt.
-
Herkömmlicherweise wurde flüchtiger Speicher als Systemspeicher verwendet, und nicht flüchtiger Speicher (nonvolatile memory, NVM) wurde herkömmlicherweise als Storage-Speicher verwendet. NVM ist ein persistentes Speichermedium oder, anders ausgedrückt, ein Speichermedium, das keinen Strom benötigt, um den Zustand von darauf gespeicherten Daten aufrechtzuerhalten, während in flüchtigem Speicher gespeicherte Daten verlorengehen, wenn die Stromzufuhr unterbrochen wird. Neue und in der Entwicklung befindliche Speichertechnologien ermöglichen jedoch, dass NVM in Rollen verwendet wird, die über herkömmlichen Storage-Speicher hinausgehen und sich auf Rollen wie beispielsweise Systemspeicher erstrecken. Nicht flüchtiger Systemspeicher (NVMsys) hat zahlreiche Vorteile gegenüber herkömmlichem flüchtigen Speicher, wie beispielsweise hohe Dichte, sehr große Kapazität, niedrigerer Stromverbrauch und eine geringere Herstellungskomplexität, um nur einige zu nennen. Byteadressierbarer Write-in-Place-NVM wie beispielsweise dreidimensionaler (3D-) Crosspoint-Speicher, kann als byteadressierbarer Speicher ähnlich dynamischem Direktzugriffsspeicher (dynamic random-access memory, DRAM) oder als blockadressierbarer Speicher ähnlich wie NAND-Speicher arbeiten. Anders ausgedrückt, kann solcher NVM als Systemspeicher oder als nicht flüchtiger Storage-Speicher (NVMstor) arbeiten. In einigen Situationen, in denen NVM als NVMsys fungiert, können gespeicherte Daten verworfen oder auf andere Weise unleserlich gemacht werden, wenn eine Stromzufuhr zu dem NVMsys unterbrochen wird, und daher würde er aus technischer Sicht in solchen Fällen nicht als „peristent“ angesehen werden.
-
Wenn NVM in einem System sowohl als Systemspeicher als auch als Storage-Speicher verwendet wird, können sich Systemspeicherdaten und Storage-Speicher-Daten auf demselben Medium befinden. Ein Beispiel einer derartigen Konfiguration wird in 1B gezeigt, wo der Systemspeicher und Storage-Speicher auf NVM 114 gespeichert sind. Allerdings ist aufgrund herkömmlicher Datenverarbeitungssystem-Architektur der NVM 114 in eine Memory-Domäne 116 und eine Storage-Domäne 118 partitioniert oder auf andere Weise unterteilt, wodurch die Systemspeicherdaten physisch von den Storage-Speicher-Daten getrennt werden. Aufgrund dieser Trennung wird bei derartigen herkömmlichen Systemen das Verschieben von Daten aus einer Domäne in die andere noch durch physisches Verschieben der Daten von einem Ort zu einem anderen erreicht, wie es für 1A beschrieben wird. Ein derartiges Verschieben von Daten von einem physischen Ort zu einem anderen physischen Ort auf demselben Medium verbraucht Energie, verringert eine Speichersystemleistung und erhöht unnötigerweise einen Verschleiß des Mediums, um nur einiges zu nennen.
-
Herkömmliche Memory- und Storage-Domänen werden zumindest zum Teil durch die physische Teilung zwischen den separaten Vorrichtungen erstellt, auf denen jede Domäne gespeichert ist. Um sie von einer Domäne in die andere zu verschieben, werden Daten physisch zwischen Vorrichtungen oder Partitionen übertragen, und die Adressenabbildung für diese Daten wird zum Beispiel in der Adressenübersetzungslogik 104 aktualisiert. Anders ausgedrückt: Der physische Ort der Daten definierte die Domäne der Daten, entweder Memory oder Storage.
-
Durch die vorliegende Offenbarung wird eine neuartige Technologie zum Verwalten von NVMsys-Daten und NVMstor-Daten bereitgestellt, durch die Daten zwischen der Memory-Domäne und der Storage-Domäne übertragen werden, ohne den physischen Ort der Daten zu ändern, oder, anders ausgedrückt, ohne die Daten physisch zu verschieben. Dies wird bei einem Beispiel durch Unterhalten eines Verzeichnisses der NVM-Blockadressen erreicht, die sich sowohl in der Memory- als auch in der Storage-Domäne befinden (d.h. ein Domänenverzeichnis, domain map), und daher befinden sich an einer gegebenen NVM-Blockadresse befindliche Daten in der Domäne, auf die diese Adresse abgebildet ist. Jede NVM-Blockadresse enthält ein zugeordnetes Domänenattribut, das aktualisiert wird, um dem „Verschieben“ von Daten an dieser Adresse zwischen Domänen Rechnung zu tragen. Anders ausgedrückt: Jede NVM-Blockadresse verfügt über ein zugeordnetes Domänenattribut, das kennzeichnet, ob die NVM-Blockadresse Daten enthält, die in der Memory-Domäne oder in der Storage-Domäne gültig sind. Die Daten werden aus einer Domäne in die andere durch durch Umändern des Domänenattributs in die richtige Domäne übertragen, wodurch das Domänenverzeichnis derart aktualisiert wird, dass es die Datenübertragung zeigt, während die Daten gleichzeitig an demselben physischen NVM-Ort belassen werden. Daher wird für eine Anforderung zum Übertragen von Daten, zum Beispiel aus Memory in Storage, das der NVMsys-Blockadresse der Daten zugeordnete Domänenattribut von „Memory-Domäne“ in „Storage-Domäne“ umgeändert, das Domänenverzeichnis wird derart aktualisiert, dass es die Übertragung zeigt, und die Daten sind jetzt in der Storage-Domäne NVMstor-gültig ohne physisch verschoben worden zu sein.
-
2 zeigt ein allgemeines Beispiel einer Speichervorrichtung oder eines Speicher-Teilsystems, das einen NVM 202 umfasst, der NVM-Blockadressen aufweist, die in einen Satz NVMsys 204-Blockadressen, die in der Memory-Domäne gültig sind, und einen Satz NVMstor 206-Blockadressen unterteilt sind, die in der Storage-Domäne gültig sind. Zu Zwecken der vorliegenden Offenbarung wird der Begriff „NVM-Blockadresse“ verwendet, um eine Adresse allgemein zu beschreiben, unabhängig von der Domäne, in der die Adresse gültig ist, während die Begriffe „NVMsys“ und „NVMstor“ verwendet werden, um die Adresse im Hinblick auf die Domäne zu beschreiben, in der diese Adresse gültig ist. Mindestens ein Teil des Satzes NVMsys 204-Blockadressen ist auf einen Systemadressraum abgebildet und ist daher sichtbar für das Betriebssystem (BS). Die Größe oder Granularität der NVM-Blockadressen kann gemäß der Architektur des Systems erstellt werden, in dem die Speichervorrichtung oder das Speicher-Teilsystem verwendet werden, und kann daher jede zweckmäßige Granularität sein, die mit dem System kompatibel ist. Bei einem Beispiel ist jede NVM-Blockadresse ein Seitenrahmen oder ein adressierbarer Abschnitt eines Seitenrahmens. Die Speichervorrichtung weist des Weiteren ein Domänenverzeichnis 208 auf, das eine Datenstruktur sein kann, um den Satz NVMsys 204-Blockadressen zu unterhalten, welche die Memory-Domäne bilden, und den Satz NVMstor 206-Blockadressen zu unterhalten, welche die Storage-Domäne bilden. Daher ist die Memory-Domäne die Abbildung von NVMsys 204-Blockadressen in dem NVM 202, und NVMsys 204-Blockadressen sind daher gültig in der Memory-Domäne. In ähnlicher Weise ist die Storage-Domäne die Abbildung von NVMstor 206-Blockadressen in dem NVM 202, und NVMstor 206-Blockadressen sind daher gültig in der Storage-Domäne.
-
Eine NVM-Domänenlogik 210 ist funktionell mit dem Domänenverzeichnis 208 gekoppelt, das die Abbildung der NVM-Blockadressen in den jeweiligen Domänen unterhält. Bei einem Beispiel ist, wie vorstehend beschrieben, jeder NVM-Blockadresse ein Domänenattribut zugeordnet, das die Adresse als entweder eine NVMsys 204-Blockadresse in der Memory-Domäne oder eine NVMstor 206-Blockadresse in der Storage-Domäne kennzeichnet. Wenn eine Speicheranforderung empfangen wird, Daten aus einer Domäne in die andere zu verschieben, ändert die NVM-Domänenlogik 210 das Domänenattribut der NVM-Blockadresse der Daten von seiner aktuellen Domäne in die andere um, und die NVM-Domänenlogik 210 aktualisiert das Domänenverzeichnis 208, um die Übertragung der Daten zwischen Domänen zu zeigen. Obwohl die Daten nicht physisch verschoben wurden, ändert ein Aktualisieren des Domänenverzeichnisses 208 derart, dass es das aktuelle Domänenattribut einer Adresse zeigt, die Sichtbarkeit dieser Adresse für das BS, wodurch die Daten wirksam in den Systemspeicher-Adressraum hinein und aus diesem heraus verschoben werden. Ein derartiges Verschieben von Daten zwischen der Memory- und der Storage-Domäne, indem lediglich das Domänenattribut der NVM-Blockadresse der Daten geändert wird, kann unter anderem eine Datenübertragungslatenz verbessern, Stromverbrauch verringern, Verschleiß der NVM-Medien verringern, die Datenübertragungslast für das System verringern. Da die Daten nicht physisch verschoben wurden, ist bei übertragenen Daten nicht erforderlich, eine Fehlerkorrektur als Teil der Datenübertragung durchzuführen. Des Weiteren kann Systemeffizienz zumindest für einige verschlüsselte Datensysteme verbessert werden, da die Daten nicht als Teil der Übertragung auf den Datenbus kommen, wodurch die Notwendigkeit eines Verschlüsselungs-/Entschlüsselungsprozesses zum Sichern der Daten während der Übertragung vermieden wird. Des Weiteren kann das System, wenn von der Memory-Domäne zu der Storage-Domäne zu übertragende Daten als modifiziert markiert wurden, oder anders ausgedrückt, wenn das Dirty-Bit der Daten gesetzt wurde, das Dirty-Bit als Teil der Domänenübertragung löschen, da das Memory-Domänen-„Exemplar“ der Daten die Modifikation bereits enthält und sich bereits an dem physischen NVM-Ort des Storage-Domänen-„Exemplars“ befindet.
-
Daher kann die NVM-Domänenlogik 210 Schaltungen zum Verwalten des Domänenverzeichnisses 208 des Satzes NVMsys 204-Blockadressen, die in der Memory-Domäne gültig sind, und des Satzes NVMstor 206-Blockadressen umfassen, die in der Storage-Domäne gültig sind. Als Reaktion auf ein Empfangen einer Anforderung, Daten zum Beispiel aus der Memory-Domäne in die Storage-Domäne zu verschieben, ändert die NVM-Domänenlogik 210 die den Daten zugeordnete NVMsys 204-Blockadresse von gültig in der Memory-Domäne in gültig in der Storage-Domäne um, ohne die Daten physisch zu verschieben. Als Reaktion auf ein Empfangen einer Anforderung, Daten aus der Storage-Domäne in die Memory-Domäne zu verschieben, ändert die NVM-Domänenlogik 210 das der NVMstor 206-Blockadresse zugeordnete Domänenattribut von gültig in der Storage-Domäne in gültig in der Memory-Domäne, ohne die Daten zu verschieben.
-
Die in 2 als Beispiel verwendete Speichervorrichtung bzw. das Speicher-Teilsystem weisen ferner eine Systemspeicher-Steuereinheit 212 und eine Storage-Speicher-Steuereinheit 214 auf, die jeweils mit dem NVM 202 gekoppelt sind. Jede Steuereinheit kann eine oder mehrere Steuereinheiten aufweisen, und es wird ferner erwogen, dass Funktionen sowohl der Systemspeicher-Steuereinheit als auch der Storage-Speicher-Steuereinheit in eine einzige Steuereinheit integriert werden können, wie zum Beispiel in 4 gezeigt. Es wird angemerkt, dass zumindest bei einigen Beispielen diese Speichersteuereinheiten nicht in das Verschieben von Daten zwischen der Memory- und Storage-Domäne einbezogen werden, sondern stattdessen in andere Lese-/Schreiboperationen einbezogen werden, die an Daten in jeder ihrer jeweiligen Domänen durchgeführt werden. Die Systemspeicher-Steuereinheit 212 steuert Systemspeicheroperationen an NVMsys 204-Daten, die in der Memory-Domäne gültig sind.
-
Die Systemspeicher-Steuereinheit 212 kann jede Art von Steuereinheit sein, die Speicheroperationen an Systemspeicher bzw. NVMsys durchführt. Zum Beispiel wird eine Leseoperation für einen Datenblock, um eine Speicherleseanforderung von einem Host zu erfüllen, an einer NVMsys 204-Blockadresse in der Memory-Domäne durch die Systemspeicher-Steuereinheit 212 durchgeführt. In ähnlicher Weise kann die Storage-Speicher-Steuereinheit 214 jede Art von Steuereinheit sein, die Speicheroperationen an Storage-Speicher bzw. NVMstor durchführt. Zum Beispiel wird eine Leseoperation für einen Datenblock, um eine Speicherleseanforderung von einem Host zu erfüllen, an einer NVMstor 206-Blockadresse in der Storage-Domäne durch die Storage-Speicher-Steuereinheit 214 durchgeführt. Die Systemspeicher- und die Storage-Speicher-Steuereinheit können zum Beispiel unabhängig in einem Chip oder einem Package mit einem Hostprozessor integriert werden, in einen Nichtkernabschnitt eines Prozessor-Package oder in eine von dem Prozessor-Package getrennte Struktur oder Komponente, wie beispielsweise ein feldprogrammierbares Gate-Array (field programmable gate array, FPGA), eine anwendungsspezifische integrierte Schaltung (application-specific integrated circuit, ASIC), einen Eingabe/Ausgabe- (E/A-) Hub, eine Northbridge oder dergleichen.
-
Die durchgehenden Linien in 2 zwischen der Systemspeicher-Steuereinheit 212 und jeder der NVMsys 204-Blockadressen stellen Memory-Domänen-gültige Verbindungen dar, und die Mehrzahl von NVMsys 204-Blockadressen stellt insgesamt die Memory-Domäne des NVM 202 dar. Die gestrichelten Linien zwischen der Systemspeicher-Steuereinheit 212 und jeder der NVMstor 206-Blockadressen stellen inaktive Verbindungen dar, die aktuell in der Memory-Domäne nicht gültig sind. In ähnlicher Weise stellen die durchgehenden Linien in 2 zwischen der Storage-Speicher-Steuereinheit 214 und jeder der NVMstor 206-Blockadressen Storage-Domänen-gültige Verbindungen dar, und die Mehrzahl von NVMstor 206-Blockadressen stellt insgesamt die Storage-Domäne des NVM 202 dar. Die gestrichelten Linien zwischen der Storage-Speicher-Steuereinheit 214 und jeder der NVMsys 204-Blockadressen stellen inaktive Verbindungen dar, die aktuell in der Storage-Domäne nicht gültig sind.
-
Zu NVM kann jede Art von Speicher zählen, mit der Systemspeicherdaten und Storage-Speicher-Daten zusammen auf demselben Speichermedium gespeichert werden können. Es wird angemerkt, dass „dasselbe Speichermedium“ ein einziges gemeinsames Speichermedium, einen als ein gemeinsames Speichermedium arbeitenden verteilten Satz Speichermedien, unabhängige Speichermedien mit dedizierten Systemspeicher- und/oder Storage-Speicher-Steuereinheiten und dergleichen beinhalten kann. Der vorliegende Schutzbereich beinhaltet daher jede Architekturanordnung, Verteilung oder Gestaltung von Speichermedien, jedes Adressierungsschema, jede Steuereinheitskonfiguration und/oder -anordnung und dergleichen, vorausgesetzt, das Speichersystem ist in der Lage, NVMsys- und NVMstor-Blockadressen über die Speichermedien hinweg auf eine Weise abzubilden, die ermöglicht, dass die Abbildung geändert wird, um das Verschieben von Daten zwischen der Memory- und Storage-Domäne ohne physisches Verschieben der Daten zu zeigen.
-
In Bezug auf die Arten von NVM, die genutzt werden können, können zu nicht einschränkenden Beispielen zählen: planarer oder dreidimensionaler (3D-) NAND-Flashspeicher, darunter Single- oder Multithreshold-Level-NAND-Flashspeicher, NOR-Flashspeicher, Single- oder Multi-Level-Phasenänderungsspeicher (phase change memory, PCM) wie beispielsweise Chalkogenidglas-PCM, planarer oder 3D-PCM, Crosspoint-Array-Speicher, darunter 3D-Crosspoint-Speicher, nicht flüchtiger Speicher auf Grundlage von Dual-inline-Speichermodulen (non-volatile dual in-line memory module = NVDIMM), wie beispielsweise flashbasierter (NVDIMM-F-) Speicher, Flash-/DRAM-basierter (NVDIMM-N-) Speicher, auf persistentem Speicher basierender (NVDIMM-P-) Speicher, 3D-Crosspoint-basierter NVDIMM-Speicher, resistiver RAM (ReRAM), darunter auf Metalloxid oder Sauerstoffleerstellen basierender ReRAM, wie beispielsweise HfO2-, Hf/HfOx-, Ti/HfO2-, TiOx- und TaOx-basierter ReRAM, „filament-based“ ReRAM, wie beispielsweise Ag/GeS2-, ZrTe/Al2O3- und Ag-basierter ReRAM, programmierbarer Metallisierungszellenspeicher (programmable metallization cell (PMC) memory), wie beispielsweise CBRAM (conductive-bridging RAM), SONOS-Speicher (silicon-oxide-nitride-oxide-silicon memory), ferroelektrischer RAM (FeRAM), ferroelektrischer Transistor-RAM (Fe-TRAM), antiferroelektrischer Speicher, Polymerspeicher (z.B. ferroelektrischer Polymerspeicher), magnetoresistiver RAM (MRAM), nicht flüchtiger Write-in-Place-MRAM (NVMRAM), Spin-Transfer-Torque- (STT-) Speicher, Spin-Orbit-Torque- (SOT-) Speicher, Nanodrahtspeicher, elektrisch löschbarer programmierbarer Nur-Lese-Speicher (electrically erasable programmable read-only memory, EEPROM), Nanoröhren-RAM (NRAM), anderer Speicher auf Memristor- und Thyristorbasis, Spintronic-magnetic-Junction-basierter Speicher, MTJ-basierter Speicher (MTJ = magnetic tunneling junction), Domain-Wall- (DW-) basierter Speicher und dergleichen, darunter Kombinationen davon. Der Begriff „Speichervorrichtung“ kann sich auf den Die selbst und/oder ein verpacktes Speicherprodukt beziehen. NVM kann byte- oder blockadressierbar sein. Bei einigen Beispielen kann NVM konform mit einem oder mehreren von dem Joint Electron Device Engineering Council (JEDEC) veröffentlichten Standards sein, wie beispielsweise JESD21-C, JESD218, JESD219, JESD220-1, JESD223B, JESD223-1 oder einem anderen geeigneten Standard (die hierin aufgeführten JEDEC-Standards stehen auf www.jedec.org zur Verfügung). Bei einem spezifischen Beispiel ist der NVM 3D-Crosspoint-Speicher. Bei einem anderen spezifischen Beispiel ist der NVM 3D-Crosspoint-basierter NVDIMM-Speicher.
-
3 zeigt ein nicht einschränkendes Beispiel für eine Datenstruktur für einen NVM-Blockadresseneintrag in dem Domänenverzeichnis. Die NVM-Blockadresseneinträge für die NVM-Blockadressen in dem NVM werden verwendet, um das Erstellen und Unterhalten des Memory-Domänenverzeichnisses der NVMsys-Blockadressen und des Storage-Domänenverzeichnisses der NVMstor-Blockadressen zu erleichtern. Zum Beispiel kann jeder NVM-Blockadresse in dem NVM ein Domänenverzeichniseintrag in dem Domänenverzeichnis zugeordnet werden, der eine NVM-Blockadresse enthält, wie beispielsweise eine logische NVM-Blockadresse (NVM logical block address, LBA), ein Offset eines logischen BLocks sowie ein Domänenattribut-Bit (DA-Bit in 3). Das NVM-LBA-Feld enthält die Adressse für den Rahmen, wo sich die NVM-Blockadresse befindet, und das Offset des logischen Blocks enthält das Offset von der Rahmenadresse zu den der NVM-Blockadresse zugeordneten Daten, wobei n die Eintragsbreite darstellt, und m die LBA-Größe darstellt. Das DA-Bit ist ein umänderbares Bit, das die dem Eintrag zugeordnete NVM-Blockadresse als entweder in der Memory-Domäne oder der Storage-Domäne befindlich kennzeichnet. Bei einem Beispiel ist die NVM-Blockadresse gültig in der Memory-Domäne, wenn das DA-Bit gesetzt ist, und ist gültig in der Storage-Domäne, wenn das DA-Bit gelöscht ist. Bei einem alternativen Beispiel ist die NVM-Blockadresse gültig in der Storage-Domäne, wenn das DA-Bit gesetzt ist, und ist gültig in der Memory-Domäne, wenn das DA-Bit gelöscht ist. Obwohl dieses Beispiel im Hinblick auf LBA-Adressierung beschrieben wird, versteht es sich, dass dies nicht einschränkend ist, und erwogen wird, andere Adresierungschemata in den vorliegenden Schutzbereich einzubeziehen.
-
4 zeigt ein allgemeines Beispiel eines Datenverarbeitungssystems, das einen NVM 402 umfasst, der NVM-Blockadressen aufweist, die in einen Satz NVMsys 404-Blockadressen, die in der Memory-Domäne gültig sind, und einen Satz NVMstor 406-Blockadressen unterteilt sind, die in der Storage-Domäne gültig sind. Der Satz NVMsys 404-Blockadressen wird auf einen Systemadressraum abgebildet und ist daher sichtbar für das BS. Das Datenverarbeitungssystem weist ferner eine mit dem NVM 402 gekoppelte kombinierte System- und Storage-Speichersteuereinheit 412 auf. Die kombinierte System- und Storage-Speichersteuereinheit 412 kann eine oder mehrere kombinierte Steuereinheiten aufweisen, und es wird ferner erwogen, dass die Funktionen sowohl der Systemspeicher-Steuereinheit als auch der Storage-Speicher-Steuereinheit in separaten Steuereinheiten verkörpert werden können, wie zum Beispiel in 2 gezeigt. Es wird angemerkt, dass zumindest bei einigen Beispielen die kombinierte System- und Storage-Speichersteuereinheit 412 nicht in das Verschieben von Daten zwischen der Memory- und Storage-Domäne einbezogen wird, sondern stattdessen in andere Lese-/Schreiboperationen einbezogen wird, die an Daten in jeder Domäne durchgeführt werden. Die durchgehenden Linien in 4 zwischen der kombinierten System- und Storage-Speichersteuereinheit 412 und jeder der NVMsys 404- und NVMstor 406-Blockadressen stellen gültige Verbindungen für jede jeweilige Domäne dar, und die gestrichelten Linien stellen inaktive Verbindungen für jede jeweilige Domäne dar.
-
Das Datenverarbeitungssystem weist ferner den kommunikativ mit der System- und Storage-Speichersteuereinheit 412 gekoppelten Prozessor 414 auf, bei dem es sich um einen einzigen Prozessor oder mehrere Prozessoren handeln kann, darunter Einzelkernprozessoren und Mehrkernprozessoren. Bei dem Prozessor 414 kann es sich außerdem um jeden Prozessortyp oder jede Konfiguration handeln, wobei zu nicht einschränkenden Beispielen dafür zählen können: Mikroprozessoren, eingebettete Prozessoren, Zentraleinheiten (central processing units, CPUs), digitale Signalprozessoren (DSPs), feldprogrammierbare Gate-Arrays (FPGAs), Netzwerkprozessoren, Hand-held oder mobile Prozessoren, anwendungsspezifische Prozessoren, Coprozessoren und dergleichen. Der Prozessor 414 kann in zahlreichen Konfigurationen verpackt sein, wobei zu nicht einschränkenden Beispielen dafür ein übliches Prozessor-Package, ein Mehrkernprozessor-Package, ein System-on-Chip (SoC), ein System-in-Package (SiP), ein System-on-Package (SOP) und dergleichen zählen können.
-
Das Datenverarbeitungssystem weist ferner eine Speicherverwaltungseinheit (memory management unit, MMU) 416 auf, die als Teil des Prozessors 414, als eine separate integrierte Schaltung oder dergleichen realisiert werden kann. Die MMU 416 weist eine NVM-Domänenlogik 410 auf, die ein Domänenverzeichnis 408 erzeugen kann, das eine Datenstruktur zum Unterhalten des Satzes NVMsys 404-Blockadressen, welche die Memory-Domäne bilden, und des Satzes NVMstor 406-Blockadressen ist, welche die Storage-Domäne bilden. Daher ist die Memory-Domäne die Abbildung von NVMsys 404-Blockadressen in dem NVM 402, und NVMsys 404-Blockadressen sind daher gültig in der Memory-Domäne. In ähnlicher Weise ist die Storage-Domäne die Abbildung von NVMstor 406-Blockadressen in dem NVM 402, und alle NVMstor 406-Blockadressen sind daher gültig in der Storage-Domäne. Die NVM-Domänenlogik 410 kann des Weiteren das Domänenverzeichnis 408 unterhalten. Bei einem Beispiel ist, wie vorstehend beschrieben, jeder NVM-Blockadresse ein Domänenattribut zugeordnet, das die Adresse als entweder eine NVMsys 204-Blockadresse in der Memory-Domäne oder eine NVMstor 206-Blockadresse in der Storage-Domäne kennzeichnet. Während die den Adressen zugeordneten Daten zwischen Systemspeicher und Storage-Speicher hin und zurück übertragen werden, wird das Domänenattribut für jede NVM-Blockadresse entsprechend geändert, und die NVM-Domänenlogik 410 kann das Domänenverzeichnis 408 derart aktualisieren, dass es diese Änderung von Domänenattributen zeigt. Das Domänenverzeichnis 408 kann sich an jedem zweckdienlichen Ort oder in jeder zweckdienlichen Struktur befinden, was nicht als einschränkend angesehen wird. Als ein Beispiel kann sich das Domänenverzeichnis 408 zumindest zum Teil in der MMU 416 befinden, beispielsweise in einem Speicherarray, Registern oder dergleichen. Bei einem anderen Beispiel kann sich das Domänenverzeichnis 408 in dem NVM 402 (z.B. in NVMsys) oder in anderem Systemspeicher des Datenverarbeitungssystems befinden.
-
Die MMU 416 weist ferner einen Übersetzungspuffer (translation lookaside buffer, TLB) 418 auf und ist kommunikativ mit einer Seitentabelle 420 gekoppelt. Die MMU 416 unterstützt virtuellen Speicher durch Übersetzen virtueller Adressen in physische Adressen. Bei Empfang einer Speicheranforderung wandelt die MMU 416 die der Speicheranforderung zugeordnete virtuelle Adresse in die physische Adresse der zugeordneten Daten um. Bei einigen Beispielen unterteilt die MMU 416 den virtuellen Adressraum, welcher der von dem Prozessor 414 verwendete Adressbereich ist, in virtuelle Seiten, wobei jede virtuelle Seite über eine virtuelle Adresse verfügt. Die Seitentabelle 420 enthält einen Seitentabelleneintrag (PTE) für jede virtuelle Seite, welcher die virtuelle Adresse enthält, die auf eine entsprechende physische Adresse in physischem Speicher abgebildet ist, einschließlich des relevanten Offset. Ein Durchsuchen der Seitentabelle 420 für jede Speicheranforderung kann eine wesentliche negative Auswirkung auf die Leistung eines Systems haben, und der TLB 418 wird verwendet, um Suchvorgänge in der Seitentabelle zu minimieren. Der TLB 418 ist eine Speicherstruktur, die eine Teilmenge von PTEs aus der Seitentabelle 420 in Cachespeicher speichert, um Adressenübersetzung und Berechtigungsprüfung zu beschleunigen. Anders ausgedrückt: Der TLB 418 ist ein assoziativer Cachespeicher einer Teilmenge von PTEs, um zu vermeiden, dass ein Suchvorgang in der Seitentabelle 420 für jede Speicheranforderung durchgeführt wird.
-
Beim Empfangen einer Speicheranforderung führt die MMU 416 einen Suchvorgang in dem TLB 418 nach der zugeordneten „virtuell-nach-physisch-“ Adressenübersetzungsinformation durch. Wenn sich die angeforderte Übersetzungsinformation in dem TLB 418 befindet, kann das System die virtuelle Adresse in die physische Adresse übersetzen, ohne dass eine Suche in der Seitentabelle 420 erforderlich wäre. Wenn die Übersetzungsinformation in dem TLB 418 nicht gefunden wird, oder wenn, anders ausgedrückt, der Suchvorgang einen TLB-Miss zurückgibt, durchsucht die MMU 416 die Seitentabelle 420 nach der zugeordneten Übersetzungsinformation. Bei einem erfolgreichen Seitentabellentreffer kann die Adressenübersetzungsinformation im TLB 418 zur zukünftigen Verwendung gespeichert werden. Bei einigen Beispielen kann sich die Seitentabelle 420 in dem NVM 402 (z.B. in NVMsys) oder in anderem Systemspeicher des Datenverarbeitungssystems befinden. Bei anderen Beispielen kann sich mindestens ein Abschnitt der Seitentabelle 420 in der MMU 416 befinden, beispielsweise in einem Speicherarray, Registern oder dergleichen.
-
Die NVM-Domänenlogik 410 stellt für die MMU 416 aus dem Domänenverzeichnis 408 das Memory-Domänenverzeichnis der Memory-Domänen-gültigen NVMsys 404-Blockadressen bereit, die zum Erstellen und Verwalten der Seitentabelle 420 und des TLB 418 verwendet werden. Wenn eine Änderung an dem Memory-Domänenverzeichnis vorgenommen wird, ändert die MMU 416 die Seitentabelle 420 und den TLB 418 dementsprechend. Daher hat, obwohl keine Daten von ihrem physischen Ort im NVM 402 fortbewegt wurden, aus der Perspektive der MMU 416 die Datenübertragung stattgefunden. Eine solche „virtuelle Übertragung“ bietet einen zusätzlichen Vorteil im Hinblick auf modifizierte Daten. In dem herkömmlichen Fall eines Systems, bei dem flüchtiger Systemspeicher verwendet wird, gehen, falls die Stromzufuhr zu einem System aufhört, entweder durch eine absichtliche oder eine unbeabsichtigte Unterbrechung der Stromzufuhr, modifizierte bzw. „dirty“ Daten verloren, sofern sie nicht in den Speicher (storage) zurückgeschrieben werden, bevor dem Datenbus der Strom ausgeht. Dies ist von besonderer Bedeutung bei unbeabsichtigtem Stromausfall, da das System mit einer sehr begrenzten Stromzufuhr auskommen muss, um die Daten in den Speicher (storage) zu schreiben. Dies ist sogar ein Anliegen bei Systemen, bei denen NVM als Systemspeicher verwendet wird, da derartige Systeme häufig die Daten im Systemspeicher bei einem System-Reset unleserlich machen. In dem vorliegenden Fall befinden sich jedoch modifizierte NVMsys 404-Daten bereits an ihrer NVMstor 406-Blockadresse, daher sind jegliche Modifikationen der Daten vorhanden, unabhängig von der Domäne, in der die zugeordnete Adresse gültig ist.
-
In einigen Fällen können das Domänenverzeichnis und die Seitentabelle in eine gemeinsame Tabelle einbezogen werden oder, anders ausgedrückt, die PTEs in der Seitentabelle können sowohl NVMsys- als auch NVMstor-Blockadressen enthalten, mit einem Domänenattribut-Bit oder einer anderen Domänenkennung, um anzuzeigen, welche Adressen sich aktuell in der Memory-Domäne befinden. Eine NVM-Blockadresse kann daher von einer Domäne zur anderen übertragen werden, indem das Domänenattribut-Bit in der entsprechenden PTE für diese Adresse umgekehrt wird.
-
5 zeigt ein beispielhaftes Verfahren zum Übertragen von Daten aus der Memory-Domäne in die Storage-Domäne. Das Verfahren kann bei 502 ein Empfangen, in einigen Fällen mithilfe der MMU, einer Anforderung zum Übertragen von Daten aus der Memory-Domäne in die Storage-Domäne beinhalten, bei 504 findet die NVM-Domänenlogik die den Daten zugeordnete NVMsys-Blockadresse in dem Domänenverzeichnis, und bei 506 setzt die NVM-Domänenlogik das Domänenattribut-Bit der NVMsys-Blockadresse auf gültig in der Storage-Domäne, wobei die Adresse nun eine NVMstor-Blockadresse ist. Bei 508 entfernt die MMU die PTE für die NVMsys-Blockadresse (die nun eine NVMstor-Blockadresse ist) aus dem TLB, wenn sie vorhanden ist, und aus der Seitentabelle, wodurch die Daten wirkungsvoll aus der Systemdomäne in die Storage-Domäne übertragen werden, ohne die Daten physisch zu verschieben. Als Reaktion auf die Übertragung sendet bei 510 die MMU eine Bestätigung der Übertragung der Daten in die Storage-Domäne.
-
6 zeigt ein beispielhaftes Verfahren zum Übertragen von Daten aus der Storage-Domäne in die Memory-Domäne. Das Verfahren kann bei 602 ein Empfangen, in einigen Fällen mithilfe der MMU, einer Anforderung zum Übertragen von Daten aus der Storage-Domäne in die Memory-Domäne beinhalten, bei 604 findet die NVM-Domänenlogik die den Daten zugeordnete NVMstor-Blockadresse in dem Domänenverzeichnis, und bei 606 setzt die NVM-Domänenlogik das Domänenattribut-Bit der NVMstor-Blockadresse auf gültig in der Memory-Domäne, wobei die Adresse nun eine NVMsys-Blockadresse ist. Bei 608 fügt die MMU eine PTE für die NVMstor-Blockadresse (die nun eine NVMsys-Blockadresse ist) der Seitentabelle und in einigen Fällen dem TLB hinzu, wodurch die Daten wirkungsvoll aus der Storage-Domäne in die Systemdomäne übertragen werden, ohne die Daten physisch zu verschieben. Als Reaktion auf die Übertragung sendet bei 610 die MMU eine Bestätigung der Übertragung der Daten in die Memory-Domäne.
-
Als ein anderes Beispiel veranschaulicht 7 ein verallgemeinertes Beispiel eines Datenverarbeitungssystems 700, in das die vorliegende Technologie einbezogen werden kann. Während in Betracht gezogen wird, dass jede Art oder Konfiguration von Vorrichtung oder Datenverarbeitungssystem in den vorliegenden Schutzbereich fällt, können zu nicht einschränkenden Beispielen Knoten-Datenverarbeitungssysteme, System-on-Chip-Systeme (SoC-Systeme), System-in-Package-Systeme (SiP-Systeme), System-on-Package-Systeme (SoP-Systeme), Serversysteme, Netzwerksysteme, Hochkapazitäts-Datenverarbeitungssysteme, Datenzentren, Laptop-Computer, Tablet-Computer, Desktop-Computer, Smartphones und dergleichen zählen.
-
Das Datenverarbeitungssystem 700 kann einen oder mehrere Prozessoren 702 aufweisen, die im Datenaustausch mit einem Speicher 704 stehen. Bei dem Speicher 704 kann es sich um jede Vorrichtung, Kombination von Vorrichtungen, Schaltungsanordnung oder dergleichen handeln, die in der Lage ist, Daten zu speichern, auf sie zuzugreifen, sie zu ordnen und/oder abzurufen. Des Weiteren bietet eine Datenübertragungs-Schnittstelle 706, beispielsweise eine lokale Datenübertragungs-Schnittstelle, Konnektivität zwischen den verschiedenen Komponenten des Systems. Die Datenübertragungs-Schnittstelle 706 kann in Abhängigkeit von der Prozessor-, Chipsatz- und Speicherarchitektur des Systems sehr unterschiedlich sein. Zum Beispiel kann die Datenübertragungs-Schnittstelle 706 ein lokaler Datenbus, ein Befehls-/Adressbus, eine Package-Schnittstelle, eine Fabric oder dergleichen sein.
-
Das Datenverarbeitungssystem kann außerdem eine E/A-Schnittstelle (Eingabe-/Ausgabe-Schnittstelle) 708 zum Steuern der E/A-Funktionen des Systems und auch für E/A-Konnektivität mit Vorrichtungen außerhalb des Datenverarbeitungssystems aufweisen. Für Netzwerkkonnektivität kann außerdem eine Netzwerkschnittstelle 710 einbezogen werden. Die Netzwerkschnittstelle 710 kann Netzwerkdatenübertragungen sowohl innerhalb des Systems als auch außerhalb des Systems steuern und kann eine kabelgebundene Schnittstelle, eine drahtlose Schnittstelle, eine Bluetooth-Schnittstelle, eine optische Schnittstelle, eine Datenübertragungs-Fabric und dergleichen aufweisen, einschließlich geeigneter Kombinationen davon. Überdies kann das Datenverarbeitungssystem des Weiteren eine Benutzerschnittstelle 712, eine Anzeigevorrichtung 714 wie auch verschiedene andere Komponenten aufweisen, die für ein derartiges System von Vorteil wären.
-
Der Prozessor 702 kann ein einzelner Prozessor oder mehrere Prozessoren sein, der/die einen einzelnen Kern oder mehrere Prozessorkerne aufweist/aufweisen, und der Speicher kann ein einzelner Speicher oder mehrere Speicher sein. Die lokale Datenübertragungsschnittstelle 706 kann als ein Weg verwendet werden, um einen Datenaustausch zwischen beliebigen aus einem einzelnen Prozessor oder Prozessorkernen, mehreren Prozessoren oder Prozessorkernen, einem einzelnen Speicher, mehreren Speichern, den verschiedenen Schnittstellen und dergleichen in jeder zweckdienlichen Kombination zu erleichtern. Bei einigen Beispielen kann die Datenübertragungsschnittstelle 706 eine separate Schnittstelle zwischen dem Prozessor 702 und einer oder mehreren anderen Komponenten des Systems sein, wie beispielsweise dem Speicher 704. Zu dem Speicher 704 können, wie hierin beschrieben, System- und Storage-Speicher zählen, wie auch zusätzlicher flüchtiger Speicher bzw. NVM.
-
Verschiedene Techniken oder bestimmte Aspekte oder Abschnitte davon können die Form von Programmcode (d.h. Anweisungen) annehmen, der in materiellen Medien verkörpert ist, wie beispielsweise, CD-ROMs, Festplattenlaufwerke, ein nicht flüchtiges computerlesbares Speichermedium oder jedes andere maschinenlesbare Speichermedium, wobei, wenn der Programmcode in eine Maschine wie beispielsweise einen Computer geladen und von dieser ausgeführt wird, die Maschine eine Einrichtung zur praktischen Anwendung der verschiedenen Techniken wird. Zu Schaltungen können Hardware, Firmware, Programmcode, ausführbarer Code, Computeranweisungen und/oder Software zählen. Ein nicht flüchtiges computerlesbares Speichermedium kann ein computerlesbares Speichermedium sein, dass kein Signal aufweist. In dem Fall einer Ausführung von Programmcode auf programmierbaren Computern kann die Datenverarbeitungsvorrichtung einen Prozessor, ein durch den Prozessor lesbares Speichermedium (darunter flüchtige und NVM- und/oder Storage-Speicherelemente), mindestens eine Eingabevorrichtung und mindestens eine Ausgabevorrichtung aufweisen. Die flüchtigen und nicht flüchtigen Memory-Speicher- und/oder Storage-Speicherelemente können ein RAM, EPROM, Flashlaufwerk, optisches Laufwerk, magnetisches Festplattenlaufwerk, Solid-State-Laufwerk oder ein anderes Medium zum Speichern elektronischer Daten sein.
-
Beispiele
-
Die folgenden Beispiele betreffen spezifische Ausführungsformen und zeigen spezifische Merkmale, Elemente oder Schritte auf, die beim Verwirklichen derartiger Ausführungsformen verwendet oder andernfalls kombiniert werden können.
-
Bei einem Beispiel wird eine Speicheradressierungsvorrichtung bereitgestellt, die umfasst: eine NVM-Domänenlogik (nonvolatile memory (NVM) domain logic), die kommunikativ mit einem NVM gekoppelt sein soll, um eine Mehrzahl von NVM-Blockadressen zu enthalten, die einen Satz Systemspeicher- (NVMsys-) Blockadressen umfassen, die in einer Memory-Domäne gültig und auf einen Systemspeicher-Adressraum abgebildet sind, und einen Satz Storage-Speicher- (NVMstor-) Blockadressen, die in einer Storage-Domäne gültig sind, wobei die NVM-Logik ein Domänenverzeichnis von Einträgen für jede der NVMsys-Blockadressen und jede der NVMstor-Blockadresssen verwalten soll und, als Reaktion auf eine Anforderung, Daten aus der Memory-Domäne in die Storage-Domäne zu verschieben, den zugeordneten NVMsys-Blockadresseneintrag von gültig in der Memory-Domäne in gültig in der Storage-Domäne ändern soll, ohne die Daten zu verschieben, oder als Reaktion auf eine Anforderung, Daten aus der Storage-Domäne in die Memory-Domäne zu verschieben, den zugeordneten NVMstor-Blockadresseneintrag von gültig in der Storage-Domäne in gültig in der Memory-Domäne ändern soll, ohne die Daten zu verschieben.
-
Bei einem Beispiel kann die Speicheradressierungsvorrichtung ferner eine mit dem NVM gekoppelte Systemspeicher-Steuereinheit, wobei die Systemspeicher-Steuereinheit Systemspeicheroperationen an in der Memory-Domäne gültigen NVMsys-Daten steuern soll, und eine mit dem NVM gekoppelte Storage-Speicher-Steuereinheit umfassen, wobei die Storage-Speicher-Steuereinheit Speicheroperationen an in der Storage-Domäne gültigen NVMstor-Daten steuern soll.
-
Bei einem Beispiel der Vorrichtung weist jeder NVM-Blockadresseneintrag in dem Domänenverzeichnis ein Domänenstatusbit auf, um einen Domänenstatus der zugeordneten NVM-Blockadresse, entweder einer in der Memory-Domäne gültigen NVMsys-Blockadresse oder einer in der Storage-Domäne gültigen NVMstor-Blockadresse anzugeben.
-
Bei einem Beispiel der Vorrichtung soll, um Daten aus der Memory-Domäne in die Storage-Domäne zu verschieben, die NVM-Logik ferner den den Daten zugeordneten NVMsys-Blockadresseneintrag von gültig in der Memory-Domäne in gültig in der Storage-Domäne durch Umkehren des Domänenstatusbits ändern, um den Domänenstatus der NVMsys-Blockadresse in eine NVMstor-Blockadresse zu ändern.
-
Bei einem Beispiel der Vorrichtung soll, nach einem Ändern des Domänenstatus der NVMsys-Blockadresse in die NVMstor-Blockadresse die NVM-Domänenlogik ferner eine Bestätigung an einen Absender der Anweisung zum Verschieben der Daten senden.
-
Bei einem Beispiel der Vorrichtung soll, um Daten aus der Storage-Domäne in die Memory-Domäne zu verschieben, die NVM-Domänenlogik ferner den den Daten zugeordneten NVMstor-Blockadresseneintrag von gültig in der Storage-Domäne in gültig in der Memory-Domäne durch Umkehren des Domänenstatusbits ändern, um den Domänenstatus der NVMstor-Blockadresse in eine NVMsys-Blockadresse zu ändern.
-
Bei einem Beispiel der Vorrichtung soll, nach einem Ändern des Domänenstatus der NVMstor-Blockadresse in die NVMsys-Blockadresse die NVM-Domänenlogik ferner eine Bestätigung an einen Absender der Anweisung zum Verschieben von Daten senden.
-
Bei einem Beispiel der Vorrichtung umfasst jeder Eintrag in dem Domänenverzeichnis eine logische Blockadresse (LBA), ein LBA-Offset und das Domänenstatusbit.
-
Bei einem Beispiel kann die Speicheradressierungsvorrichtung ferner eine Speicherverwaltungseinheit (MMU) umfassen, zu der die NVM-Domänenlogik und mindestens ein Abschnitt des Domänenverzeichnisses zählen.
-
Bei einem Beispiel der Vorrichtung umfasst die MMU ferner mindestens einen Abschnitt einer Seitentabelle, um einen Satz virtueller Speicheradressen auf den Satz NVMsys-Blockadressen abzubilden.
-
Bei einem Beispiel der Vorrichtung bilden die Seitentabelle und das Domänenverzeichnis eine gemeinsame Tabelle.
-
Bei einem Beispiel kann die Speicheradressierungsvorrichtung ferner den NVM umfassen.
-
Bei einem Beispiel der Vorrichtung umfasst der NVM eine Speicherart, die aus der Gruppe ausgewählt wird, die besteht aus: flashbasiertem Flashspeicher, Phasenänderungsspeicher (PCM), dreidimensionalem (3D-) Crosspoint-Speicher, nicht flüchtigem Speicher auf Grundlage von Dual-inline-Speichermodulen (NVDIMM), resistivem RAM (ReRAM), CBRAM (conductive-bridging RAM), SONOS-Speicher (silicon-oxide-nitride-oxide-silicon memory), ferroelektrischem RAM (FeRAM), ferroelektrischem Transistor-RAM (Fe-TRAM), antiferroelektrischem Speicher, ferroelektrischem Polymerspeicher, magnetoresistivem RAM (MRAM), nicht flüchtigem Write-in-Place-MRAM (NVMRAM), Spin-Transfer-Torque- (STT-) Speicher, Spin-Orbit-Torque- (SOT-) Speicher, Nanodrahtspeicher, Nanoröhren-RAM (NRAM), Spintronic-magnetic-Junction-basiertem Speicher, MTJ-basiertem Speicher (MTJ = magnetic tunneling junction) sowie Domain-Wall- (DW-) basiertem Speicher.
-
Bei einem Beispiel der Vorrichtung umfasst der NVM 3D-Crosspoint-Speicher.
-
Bei einem Beispiel der Vorrichtung umfasst der NVM 3D-Crosspoint-basierten NVDIMM-Speicher.
-
Bei einem Beispiel wird ein Datenverarbeitungssystem bereitgestellt, das umfasst: einen Prozessor, einen nicht flüchtigen Speicher (NVM), der mit dem Prozessor gekoppelt ist und eine Mehrzahl von NVM-Blockadressen enthalten soll, die einen Satz Systemspeicher-(NVMsys-) Adressen, die in einer Memory-Domäne gültig und auf einen Systemadressraum abgebildet sind, und einen Satz Storage-Speicher- (NVMstor-) Adressen umfassen, die in einer Storage-Domäne gültig sind, sowie eine mit dem Prozessor gekoppelte NVM-Domänenlogik. Die NVM-Domänenlogik soll ein Domänenverzeichnis von Einträgen für jede der NVMsys-Blockadressen und jede der NVMstor-Blockadressen verwalten und, als Reaktion auf eine Anforderung von einem Host, Daten aus der Memory-Domäne in die Storage-Domäne zu verschieben, den zugeordneten NVMsys-Blockadresseneintrag von gültig in der Memory-Domäne in gültig in der Storage-Domäne ändern, ohne die Daten zu verschieben, oder als Reaktion auf eine Anforderung von einem Host, Daten aus der Storage-Domäne in die Memory-Domäne zu verschieben, den zugeordneten NVMstor-Blockadresseneintrag von gültig in der Storage-Domäne in gültig in der Memory-Domäne ändern, ohne die Daten zu verschieben.
-
Bei einem Beispiel umfasst das System ferner eine mit dem Prozessor und dem NVM gekoppelte Systemspeicher-Steuereinheit, wobei die Systemspeicher-Steuereinheit Systemspeicheroperationen an in der Memory-Domäne gültigen NVMsys-Daten steuern soll, und eine mit dem Prozessor und dem NVM gekoppelte Storage-Speicher-Steuereinheit, wobei die Storage-Speicher-Steuereinheit Storage-Speicher-Operationen an in der Storage-Domäne gültigen NVMstor-Daten steuern soll.
-
Bei einem Beispiel des Systems weist jeder NVM-Blockadresseneintrag ein Domänenstatusbit auf, um einen Domänenstatus der zugeordnetenn NVM-Blockadresse, entweder einer in der Memory-Domäne gültigen NVMsys-Blockadresse oder einer in der Storage-Domäne gültigen NVMstor-Blockadresse anzugeben.
-
Bei einem Beispiel des Systems soll, um Daten aus der Memory-Domäne in die Storage-Domäne zu verschieben, die NVM-Domänenlogik ferner den den Daten zugeordneten NVMsys-Blockadresseneintrag von gültig in der Memory-Domäne in gültig in der Storage-Domäne durch Umkehren des Domänenstatusbits ändern, um den Domänenstatus der NVMsys-Blockadresse in eine NVMstor-Blockadresse zu ändern.
-
Bei einem Beispiel des Systems soll, nach einem Ändern des Domänenstatus der NVMsys-Blockadresse in die NVMstor-Blockadresse die NVM-Domänenlogik ferner eine Bestätigung an den Host senden.
-
Bei einem Beispiel des Systems soll, um Daten aus der Storage-Domäne in die Memory-Domäne zu verschieben, die NVM-Domänenlogik ferner den den Daten zugeordneten NVMstor-Blockadresseneintrag von gültig in der Storage-Domäne in gültig in der Memory-Domäne durch Umkehren des Domänenstatusbits ändern, um den Domänenstatus der NVMsstor-Blockadresse in eine NVMsys-Blockadresse zu ändern.
-
Bei einem Beispiel des Systems soll, nach einem Ändern des Domänenstatus der NVMstor-Blockadresse in die NVMsys-Blockadresse die NVM-Domänenlogik ferner eine Bestätigung an den Host senden.
-
Bei einem Beispiel des Systems umfasst jeder Eintrag in dem Domänenverzeichnis eine logische Blockadresse (LBA), einen LBA-Offset und das Domänenstatusbit.
-
Bei einem Beispiel umfasst das System ferner eine mit dem Prozessor gekoppelte Speicherverwaltungseinheit (MMU), zu der die NVM-Domänenlogik und mindestens ein Abschnitt des Domänenverzeichnisses zählen.
-
Bei einem Beispiel umfasst das System ferner eine mit dem Prozessor gekoppelte Speichereinheit zum Speichern von Anweisungen, die, wenn sie ausgeführt werden, den Prozessor veranlassen, virtuellen Speicher in dem Systemadressraum zuzuweisen, und eine funktionell mit der MMU gekoppelte Seitentabelle zum Speichern von Einträgen eines Satzes virtueller Speicheradressen, die auf die NVMsys-Blockadresen abgebildet sind.
-
Bei einem Beispiel des Systems soll, um Daten aus der Memory-Domäne in die Storage-Domäne zu verschieben, die NVM-Domänenlogik ferner den den Daten zugeordneten NVMsys-Blockadresseneintrag von gültig in der Memory-Domäne in gültig in der Storage-Domäne durch Umkehren des Domänenstatusbits in dem Domänenverzeichnis ändern, um den Domänenstatus der NVMsys-Blockadresse in eine NVMstor-Blockadresse zu ändern, und die Seitentabelle derart aktualisieren, dass ein Verweis auf die NVMsys-Blockadresse entfernt wird.
-
Bei einem Beispiel des Systems soll, um Daten aus der Storage-Domäne in die Memory-Domäne zu verschieben, die NVM-Domänenlogik ferner den den Daten zugeordneten NVMstor-Blockadresseneintrag von gültig in der Storage-Domäne in gültig in der Memory-Domäne durch Umkehren des Domänenstatusbits in dem Domänenverzeichnis ändern, um den Domänenstatus der NVMstor-Blockadresse in eine NVMsys-Blockadresse zu ändern und die Seitentabelle derart zu aktualisieren, dass ein Verweis auf die NVMsys-Blockadresse hinzugefügt wird.
-
Bei einem Beispiel des Systems bilden die Seitentabelle und die NVM-Verzeichnistabelle eine gemeinsame Tabelle.
-
Bei einem Beispiel des Systems umfasst der NVM eine Speicherart, die aus der Gruppe ausgewählt wird, die besteht aus: flashbasiertem Flashspeicher, Phasenänderungsspeicher (PCM), dreidimensionalem (3D-) Crosspoint-Speicher, nicht flüchtigem Speicher auf Grundlage von Dual-inline-Speichermodulen (NVDIMM), resistivem RAM (ReRAM), CBRAM (conductive-bridging RAM), SONOS-Speicher (silicon-oxide-nitride-oxide-silicon memory), ferroelektrischem RAM (FeRAM), ferroelektrischem Transistor-RAM (Fe-TRAM), antiferroelektrischem Speicher, ferroelektrischem Polymerspeicher, magnetoresistivem RAM (MRAM), nicht flüchtigem Write-in-Place-MRAM (NVMRAM), Spin-Transfer-Torque- (STT-) Speicher, Spin-Orbit-Torque- (SOT-) Speicher, Nanodrahtspeicher, Nanoröhren-RAM (NRAM), Spintronic-magnetic-Junction-basiertem Speicher, MTJbasiertem Speicher (MTJ = magnetic tunneling junction) sowie Domain-Wall- (DW-) basiertem Speicher.
-
Bei einem Beispiel des Systems umfasst der NVM 3D-Crosspoint-Speicher.
-
Bei einem Beispiel des Systems umfasst der NVM 3D-Crosspoint-basierten NVDIMM-Speicher.
-
Bei einem Beispiel des Systems ist der Host der Prozessor.
-
Bei einem Beispiel des Systems ist der Host eine DMA-Steuereinheit (direct memory access (DMA) controller).
-
Bei einem Beispiel wird ein Verfahren zum virtuellen Verschieben von Daten zwischen Memory- und Storage-Domäne bereitgestellt, das umfasst: Verwalten, mithilfe einer NVM-Domänenlogik (nonvolatile memory (NVM) domain logic), eines Domänenverzeichnisses, das eine Memory-Domäne einer Mehrzahl von Systemspeicher- (NVMsys-) Blockadressen, die in der Memory-Domäne gültig sind, und eine Storage-Domäne einer Mehrzahl von Storage-Speicher-(NVMstor-) Blockadressen enthält, die in der Storage-Domäne gültig sind, und Ändern, als Reaktion auf eine Anforderung, Daten aus der Memory-Domäne in die Storage-Domäne zu verschieben, des zugeordneten NVMsys-Blockadresseneintrags von gültig in der Memory-Domäne in gültig in der Storage-Domäne, ohne die Daten zu verschieben, oder Ändern, als Reaktion auf eine Anforderung von einem Host, Daten aus der Storage-Domäne in die Memory-Domäne zu verschieben, des zugeordneten NVMstor-Blockadresseneintrags von gültig in der Storage-Domäne in gültig in der Memory-Domäne, ohne die Daten zu verschieben.
-
Bei einem Beispiel umfasst das Verfahren ferner: Als Reaktion auf eine Anforderung, Daten aus der Memory-Domäne in die Storage-Domäne zu verschieben, Auffinden, mithilfe der NVM-Domänenlogik, des zugeordneten NVMsys-Blockadresseneintrags in dem Domänenverzeichnis und Umändern, mithilfe der NVM-Domänenlogik, des zugeordneten NVMsys-Blockadresseneintrags, der in der Memory-Domäne gültig ist, in eine NVMstor-Blockadresse, die in der Storage-Domäne gültig ist.
-
Bei einem Beispiel umfasst das Verfahren ferner: Auffinden, mithilfe einer Speicherverwaltungseinheit (MMU), der NVMstor-Blockadresse in einem Übersetzungspuffer (TLB), Entfernen, wenn sie in dem TLB gefunden wird, der NVMstor-Blockadresse aus dem TLB und Entfernen, mithilfe der MMU, der NVMstor-Blockadresse aus einer Seitentabelle.
-
Bei einem Beispiel umfasst das Verfahren ferner: Als Reaktion auf eine Anforderung, Daten aus der Storage-Domäne in die Memory-Domäne zu verschieben, Auffinden, mithilfe der NVM-Domänenlogik, des zugeordneten NVMstor-Blockadresseneintrags in dem Domänenverzeichnis und Umändern, mithilfe der NVM-Domänenlogik, des zugeordneten NVMstor-Blockadresseneintrags, der in der Storage-Domäne gültig ist, in eine NVMsys-Blockadresse, die in der Memory-Domäne gültig ist.
-
Bei einem Beispiel umfasst das Verfahren ferner: Hinzufügen, mithilfe einer Speicherverwaltungseinheit (MMU), der NVMsys-Blockadresse zu einer Seitentabelle.
-
Bei einem Beispiel umfasst das Verfahren ferner: Hinzufügen, mithilfe der MMU, der NVMsys-Blockadresse zu einem Übersetzungspuffer (TLB).