-
GEBIET DER ERFINDUNG
-
Die Erfindung betrifft die Implementierung eines mehrstufigen Arbeitsspeicherteilsystems mit direktem nicht flüchtigem Zugriff.
-
BESCHREIBUNG DES STANDES DER TECHNIK
-
Phasenwechselspeicher und -schalter (PCMS) ist eine in Entwicklung befindliche, nicht flüchtige Speichertechnologie als Nachfolger zum nicht flüchtigen NUND-Speicher, der in derzeitigen Festkörperspeichervorrichtungen (Solid-State-Speicher) allgegenwärtig ist. Der PCMS bietet eine viel höhere Leistung als der NUND-Flash und beginnt sich tatsächlich den Leistungspunkten des dynamischen Direktzugriffsspeichers (Dynamic Random Access Memory – DRAM) zu nähern, der derzeit als primärer dynamischer Speicher in den meisten Client-Rechnervorrichtungen verwendet wird. Während PCMS-Speicher anfänglich pro Bit teurer sein können als NUND-Speicher, wird angenommen, dass sich dieses Verhältnis im Laufe der Zeit ändert, bis schließlich der PCMS weniger kostet als der NUND.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die folgende Beschreibung und die beiliegenden Zeichnungen werden zur Darstellung von Ausführungsformen der Erfindung verwendet. In den Zeichnungen:
-
zeigt 1 eine Ausführungsform eines typischen Computersystems.
-
zeigt 2 eine Ausführungsform einer einfachen zweistufigen Arbeitsspeicherimplementierung in einem Computersystem.
-
zeigt 3 eine Ausführungsform eines mehrstufigen arbeitsspeicherbasierten Systems mit einem dynamischen Direktzugriffsspeicher, der als Cache-Speicher für einen nicht flüchtigen Direktzugriffsspeicher dient.
-
zeigt 4 eine Ausführungsform eines mehrstufigen arbeitsspeicherbasierten Systems, das eine spezialisierte Nutzung eines Teils des Cache-Speichers des dynamischen Direktzugriffsspeichers vorsieht.
-
zeigt 5 die niederen 4 GB eines physisch adressierbaren Arbeitsspeicherraums für einen Prozessor.
-
zeigt 6 eine Ausführungsform eines zweifach geteilten, nicht flüchtigen Direktzugriffsspeichers, der einen Teil für einen fernen Arbeitsspeicher und den anderen Teil für einen Datenspeicher verwendet.
-
zeigt 7 eine Ausführungsform von Adressenumleitungstabellen, die eine Funktionalität zur Abbildung von seitengranularen physischen Plattformadressen und logischer Blockadressen in ständig ändernde Seiten in physischen, nicht flüchtigen Direktzugriffsspeichervorrichtungen bereitstellen.
-
zeigt 8 eine Ausführungsform von Adressenumleitungstabellen zur Abbildung von physischen Plattformadressen und logischen Blockadressen in einen nicht flüchtigen Direktzugriffsspeicher ohne vorgegebenen physisch linearen Abschnitt eines nicht flüchtigen Direktzugriffsspeichers zur Datenspeicherverwendung/Arbeitsspeicherverwendung.
-
ist 9 ein Ablaufdiagramm einer Ausführungsform eines Prozesses, der ermöglicht, dass Seiten eines nicht flüchtigen Datenspeichers, die in einer bestimmten Art von Vorrichtung vorhanden sind, direkt in einen Adressenraum einer Software-Anwendung abgebildet werden.
-
zeigt 10 eine Ausführungsform eines PCMS-Seitenreinigungsprozesses, der eine Leerseiten-Schreibstrategie anwendet.
-
zeigt 11 eine Ausführungsform eines Prozessflusses für den Schreibmechanismus, der Daten in PCMS-Seiten schreibt, die im Phantomadressenraum vorhanden sind.
-
zeigt 12 eine Ausführungsform eines Mechanismus, der ermöglicht, dass PCMS-Seiten aus einer Energie/Leistungsperspektive effizient geschrieben werden.
-
zeigt 13 eine Ausführungsform eines Mechanismus, der die beständige Bewegung von Seiten eines nicht flüchtigen Direktzugriffsspeichers zwischen Arbeitsspeicher- und Datenspeicheridentifizierungen ermöglicht.
-
zeigt 14 eine Ausführungsform eines Prozesses und eines begleitenden Mechanismus (d. h. Hardware-Logik) zur Unterstützung des Prozesses zur Eliminierung unnötiger PCMS-Ebenenübergänge.
-
zeigt 15 eine Ausführungsform einer Rechnervorrichtung, die den mehrstufigen Arbeitsspeicher mit einem Arbeitsspeicherteilsystem auf Direktzugriffsbasis enthält.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die Kombination von Technologien wie nicht flüchtigem PCMS-Datenspeicher mit der Verkleinerung und Leistungserhöhung von Transistoren in integrierten Schaltungen kann ermöglichen, dass System-auf-Chip (SoC) Architekturen die Möglichkeit nutzen, interessante neue Systeme zu schaffen, während neue Kombinationen aus kostengünstigen, energiearmen und leistungsstarken Lösungen erreicht werden. Dieser Fortschritt beruht auf einer Überarbeitung der bestehenden Arbeitsspeicherhierarchie, die ein anderes Gleichgewicht zwischen der Menge an statischem Direktzugriffsspeicher (SRAM), dynamischem RAM (DRAM) und nicht flüchtigem Datenspeicher herstellt, die in einem kostengünstigen Smartphone, Tablet, Notebook oder einer anderen Form einer mobilen Rechnervorrichtung verwendet wird. Es gibt viele Arten von nicht flüchtigem Datenspeicher, obwohl gemäß vielen beschriebenen Ausführungsformen ein nicht flüchtiger Direktzugriffsspeicher-(NVRAM)Datenspeicher verwendet und in der Folge ausführlicher beschrieben wird.
-
1. Nicht flüchtiger Direktzugriffsspeicher – Überblick
-
Es gibt viele mögliche Technologiewahlen für einen NVRAM, einschließlich eines Phasenwechselspeichers (PCM), Phasenwechselspeicher- und Schalters (PCMS) (der letztgenannte ist spezifischer als der erstgenannte), eines Byte-adressierbaren persistenten Speichers (BPRAM), Datenspeicherklasse-Arbeitsspeichers (Storage Class Memory – SCM), Universalspeichers, Ge2Sb2Te5, der programmierbaren Metallisierungszelle (PMC), eines Widerstandsspeichers (RRAM), einer RESET-(amorphen)Zelle, einer SET (kristallinen) Zelle, eines PCME, eines Ovshinsky-Speichers, eines ferroelektrischen Speichers (auch bekannt als Polymerspeicher und Poly(N-vinylcarbazol)), eines ferromagnetischen Speichers (auch bekannt als Spintronics, SPRAM (Spin-Transfer Torque RAM)), STRAM (Spin Tunneling RAM), eines Magnetowiderstandsspeichers, eines Magnetspeichers, eines magnetischen Direktzugriffsspeichers (MRAM) und eines Halbleiter-Oxid-Nitrid-Oxid-Halbleiters (SONOS, auch bekannt als dielektrischer Speicher).
-
NVRAM hat die folgenden Eigenschaften:
- • Er behält seinen Inhalt, selbst wenn Energie fehlt, ähnlich dem FLASH-Speicher, der in Festplatten (SSD) verwendet wird, und anders als SRAM und DRAM, die flüchtig sind;
- • Er kann einen geringeren Gesamtenergieverbrauch als flüchtige Arbeitsspeicher wie SRAM und DRAM haben;
- • Er kann einen Direktzugriff ähnlich SRAM und DRAM (auch bekannt als direkt adressierbar) haben;
- • Er ist auf einer tieferen Granularitätsstufe wiederbeschreibbar und löschbar (z. B. Byte-Stufe) als ein FLASH, der in SSDs vorgefunden wird (der jeweils nur bei einem ”Block” wieder beschrieben und gelöscht werden kann – minimal 64 Kbyte groß für NODER FLASH und 16 Kbyte for NUND FLASH);
- • Er kann als Systemarbeitsspeicher verwendet werden und ihm kann der gesamte oder ein Teil des Systemarbeitsspeicher-Adressenraums zugeordnet werden;
- • Er kann über einen Bus (austauschbar auch als Zwischenverbindung oder Verbindung bezeichnet) mit Hilfe eines Transaktionsprotokolls (ein Protokoll, das Transaktionsidentifikatoren (IDs) zur Unterscheidung verschiedener Transaktionen unterstützt, so dass diese Transaktionen außerhalb der Reihenfolge fertiggestellt werden können) an die CPU gekoppelt werden und einen Zugriff bei einer Granularitätsstufe ermöglichen, die klein genug ist, um einen Betrieb des NVRAM als Systemarbeitsspeicher (z. B. Cache-Speicher-Zeilengröße wie 64 oder 128 Byte) zu unterstützen. Zum Beispiel kann der Bus/die Zwischenverbindung ein Arbeitsspeicherbus sein (z. B. ein Doppeldatenraten-(DDR)Bus wie DDR3, DDR4, usw.), über den ein Transaktionsprotokoll im Gegensatz zu dem Nicht-Transaktionsprotokoll läuft, das normalerweise verwendet wird. Als weiteres Beispiel kann der Bus über einen Bus laufen, der normalerweise ein Transaktionsprotokoll (ein natives Transaktionsprotokoll) laufen lässt, wie einen PCI-Express-(PCIE)Bus, einen Desktop Management Interface-(DMI)Bus oder eine andere Art von Bus, die ein Transaktionsprotokoll und eine ausreichend kleine Transaktionsnutzlastgröße (z. B. Cache-Speicher-Zeilengröße wie 64 oder 128 Byte) verwendet; und
- • Er kann auch eine oder mehrere der folgenden Eigenschaften haben:
– eine schnellere Schreibgeschwindigkeit als nicht flüchtige Arbeitsspeicher/Datenspeicher-Technologien wie FLASH;
– sehr hohe Leseraten (schneller als FLASH- und annähernd oder gleich den DRAM-Lesegeschwindigkeiten);
– er kann direkt beschreibbar sein (und nicht ein Löschen (Überschreiben mit 1) vor dem Schreiben von Daten wie beim FLASH-Speicher, der in SSDs verwendet wird, benötigen); und/oder
– eine größere Anzahl von Schreibvorgängen vor einem Versagen (mehr als Boot-ROM und FLASH, wie in SSDs verwendet).
-
Wie oben erwähnt, kann im Gegensatz zum FLASH-Speicher, der jedes Mal mit einem vollständigen ”Block” neu beschrieben und gelöscht werden muss, die Granularitätsstufe, bei der auf einen NVRAM in einer bestimmten Implementierung zugegriffen wird, von der besonderen Arbeitsspeichersteuerung und dem besonderen Arbeitsspeicherbus oder einer anderen Art von Bus abhängig sein, an die der NVRAM gekoppelt ist. Zum Beispiel kann in einigen Implementierungen, in welchen NVRAM als Systemarbeitsspeicher verwendet wird, auf den NVRAM bei der Granularität einer Cache-Speicherzeile (z. B. einer 64-Byte oder 128-Byte Cache-Speicherzeile) zugegriffen werden, ungeachtet einer inhärenten Fähigkeit für einen Zugriff bei der Granularität eines Bytes, da die Cache-Speicherzeile die Stufe ist, bei der das Arbeitsspeicherteilsystem auf einen Arbeitsspeicher zugreift. Daher kann in einigen Ausführungsformen, wenn ein NVRAM in einem Arbeitsspeicherteilsystem verwendet wird, auf diesen bei derselben Granularitätsstufe zugegriffen werden, wie beim DRAM, der in demselben Arbeitsspeicherteilsystem verwendet wird. Überhaupt ist in einigen Ausführungsformen die Granularitätsstufe des Zugriffs auf den NVRAM durch die Arbeitsspeichersteuerung und den Arbeitsspeicherbus oder eine andere Art von Bus kleiner als jene der Blockgröße, die vom Flash verwendet wird, und die Zugriffsgröße der I/O-Steuerung des Teilsystems und Busses.
-
Der NVRAM kann auch Wear-Leveling-Algorithmen (Algorithmen für eine gleichmäßige Abnutzung) enthalten, um die Tatsache zu berücksichtigen, dass die Datenspeicherzelle nach einer Anzahl von Schreibadressen beginnt, abgenutzt zu werden, insbesondere dort, wo eine signifikante Anzahl von Schreibvorgängen vorkommen kann, wie in einer Systemarbeitsspeicherimplementierung. Da Blöcke mit hohen Zykluszahlen höchstwahrscheinlich auf diese Weise abgenutzt werden, verteilt das Wear-Leveling Schreibvorgänge über die fernen Arbeitsspeicherzellen durch einen Austausch von Adressen von Blöcken mit hoher Zykluszahl durch Blöcke mit niederer Zykluszahl. Es ist zu beachten, dass der Großteil des Adressenaustausches typischerweise für Anwendungsprogramme transparent ist, da er von Hardware, nachrangiger Software (z. B. einem nachrangigen Treiber oder Betriebssystem) oder einer Kombination der zwei gehandhabt wird.
-
NVRAM ist von anderen Anweisungs- und Daten-Arbeitsspeicher/Datenspeichertechnologien im Sinne seiner Eigenschaften und/oder seiner Anwendung in der Arbeitsspeicher/Datenspeicherhierarchie unterscheidbar. Zum Beispiel unterscheidet sich NVRAM vom:
- • statischen Direktzugriffsspeicher (SRAM), der für Stufe 0 und Stufe 1 interne Prozessor-Cache-Speicher, die für jeden Kern in einem Prozessor bestimmt sind, und Cache-Speicher geringer Stufe (LLC), die Kerne in einem Prozessor teilen, verwendet werden kann;
- • dynamischen Direktzugriffsspeicher (DRAM), der als ein Cache-Speicher in einem Prozessor-Chip konfiguriert ist (z. B. auf demselben Chip wie der Prozessor), der als einer oder mehrere Cache-Speicher extern von einem Prozessor-Chip (z. B. in demselben oder einem anderen Paket wie der Prozessor-Chip) oder allgemeiner Systemarbeitsspeicher extern vom Prozessorpaket konfiguriert ist; und
- • einem FLASH-Speicher/einer Magnetplatte/einer optischen Platte, die als Massendatenspeicher verwendet wird; und
- • einem Arbeitsspeicher wie einem FLASH-Speicher oder anderem Nur-Lese-Speicher (ROM), die als Firmware-Speicher (die als Boot-ROM, Basisdatenaustauschsystem-(Basic Input/Output System – BIOS)Flash, und/oder Trusted Platform Module (TPM) Flash bezeichnet werden) angewendet werden.
-
Der NVRAM kann als Anweisungs- und Datenspeicher verwendet werden, der von einem Prozessor direkt adressierbar ist und imstande ist, ausreichend mit dem Prozessor Schritt zu halten, im Gegensatz zu FLASH/Magnetplatte/optische Platte, die als Massendatenspeicher verwendet werden. Eine direkte Zugriffsfähigkeit bezieht sich auf einen Prozessor, wie eine CPU oder GPU, der imstande ist, Arbeitsspeicheranfragen zum NVRAM zu senden, als ob er ein Standard-DRAM wäre (z. B. durch Standardspeicher- und Ladebefehle eines Arbeitsspeichers). Ferner, wie oben besprochen und in der Folge ausführlich beschrieben, kann ein NVRAM auf einen Arbeitsspeicherbus gesetzt werden und direkt mit einer Arbeitsspeichersteuerung kommunizieren, die ihrerseits direkt mit dem Prozessor kommuniziert.
-
Ein NVRAM kann mit anderen Anweisungs- und Datenspeichertechnologien (z. B. DRAM) zur Bildung hybrider Arbeitsspeicher kombiniert werden (auch bekannt als gemeinsam angeordneter PCM und DRAM; Arbeitsspeicher der ersten Stufe und Arbeitsspeicher der zweiten Stufe; FLAM (FLASH und DRAM)). Es ist zu beachten, dass mindestens einige der oben genannten Technologien, einschließlich PCM/PCMS für Massendatenspeicher, anstelle von oder zusätzlich zu Systemarbeitsspeichern verwendet werden können, und nicht direkt zugreifbar, Byte-adressierbar oder vom Prozessor direkt adressierbar sein müssen, wenn sie auf diese Weise angewendet werden.
-
Der einfachen Erklärung wegen bezieht sich der Großteil der restlichen Anmeldung auf ”NVRAM” oder insbesondere ”PCM” oder ”PCMS” als die Technologiewahl für den nicht flüchtigen Arbeitsspeicher. Als solches können die Begriffe NVRAM, PCM, und PCMS in der folgenden Besprechung untereinander austauschbar verwendet werden. Es sollte aber klar sein, dass, wie zuvor besprochen, die anderen Technologien ebenso verwendet werden können.
-
2. Mehrstufiger Arbeitsspeicher – Überblick
-
Ein mehrstufiger Arbeitsspeicher (Multi-Level Memory – MLM) ist eine revolutionäre Änderung einer PC-Plattformtopologie. 1 zeigt eine Ausführungsform eines typischen Computersystems, umfassend:
- • Einen oder mehrere zentrale(n)/allgemeine(n) Prozessor(en) (CPUs) (100).
- • Einen oder mehrere grafische(n) Prozessor(en) (102).
- • Eine oder mehrere IO-Steuerung(en) und ihre zugehörigen IO-Vorrichtungen (104), wie Platten- oder Solid-State-Drive (SSD; Halbleiterlaufwerk) (106) und eine andere Eingabe/Ausgabe-(I/O)Vorrichtung (108).
- • On-Die Cache-Speicher (110), die zum Isolieren des zentralen Prozessors und optional der Grafikprozessoren von dem relativ langsamen DRAM-Speicher bestimmt sind.
- • Eine Arbeitsspeichersteuerung (112), die zum optimalen Planen von DRAM-Befehlen für eine Bandbreite und/oder Latenz bestimmt ist, abhängig von den Systemanforderungen zu diesem Zeitpunkt.
- • Eine oder mehrere Gruppe(n) von DRAM Speichern (114), die typischerweise als 64-Bit Kanäle angeordnet sind. Rechnervorrichtungen am unteren Ende könnten einen einzigen Kanal haben, während Rechnervorrichtungen am oberen Ende zwei oder drei DRAM-Kanäle haben können.
-
Wenn eine typische Rechnervorrichtung mit Doppeldatenraten 3-(DDR3)Komponenten implementiert ist, würde die Latenz für eine Arbeitsspeicher-Lesetransaktion, die von einem Prozessor eingeleitet wird, die die On-Die Cache-Speicher verfehlt, in der Größenordnung von 30 Nanosekunden (ns) von der Zeit sein, zu der die Transaktion zur Arbeitsspeichersteuerung geleitet wurde, bis zu der Zeit, zu der die Daten zum On-Die Cache-Speicherblock zurückgeleitet werden (z. B. 15 ns für einen DRAM Seitenzugriff, 30 ns für eine DRAM Leerseite, 45 ns für eine DRAM Seitenverfehlung). Diese Latenz ist häufig ein signifikanter Treiber der Prozessoranwendungsleistung.
-
Die Spitzenbandbreite auf einem einzigen Kanal des DDR3-1600 Arbeitsspeichers ist 12,8 Gigabyte (GB) pro Sekunde. Die effektive Bandbreite eines solchen Kanals wäre typischerweise etwa 70% dieser Zahl. Die effektive Arbeitsspeicherbandbreite kann eine wesentliche Rolle in der Leistung von Allzweckprozessoren und Grafikprozessoren spielen.
-
In einer einfachen Form kann ein 2-Stufen-Arbeitsspeicher als ein Mechanismus angesehen werden, der einen Großteil des DDR DRAM-Datenspeichers durch einen NVRAM-Datenspeicher (z. B. durch PCMS-Datenspeicher) ersetzt, wie in 2 dargestellt ist (d. h., NVRAM-Vorrichtungen 200).
-
Die in 2 gezeigte Lösung könnte bei geringen Kosten implementiert werden. Die Leistungs-, Energieverbrauchs- und Zuverlässigkeitsattribute eines solchen Systems wären jedoch nicht ideal und könnten möglicherweise signifikante Probleme bei gewissen Anwendungen haben, die an sich ungünstige Energie-, Leistungs- oder Vorrichtungsabnutzungsbedingungen herbeiführen würden. Die Latenz (~50 ns) und Bandbreite (~6,4 GB/sec für Lesevorgänge) zum Beispiel einer Konfiguration in der Art von 2, die PCMS verwendet, sind weitaus höher bzw. geringer als jene des DRAM (von 1), den die PCMS-Vorrichtungen ersetzen.
-
Ein anderer Punkt, der für PCMS spezifisch ist, der beim Austausch eines DRAM Vorsicht gebietet, ist die starke Differenz zwischen den Lese- und Schreibbandbreitenfähigkeiten eines PCMS. Beim DRAM ist jede Arbeitsspeichervorrichtung imstande, Daten bei derselben Rate zu lesen und zu schreiben. PCMS-Kerne erfordern jedoch aufgrund ihrer physischen Eigenschaft eine viel längere Zeit zum Schreiben eines Datums als sie zum Lesen eines Datums benötigen. Das Lese/Schreibbandbreitenverhältnis für PCMS ist 4:1. Mit anderen Worten, Daten können aus einer PCMS-Vorrichtung viermal schneller gelesen werden als Daten in diese Vorrichtung geschrieben werden können.
-
Insgesamt schreibt eine Rechnervorrichtung Daten in einen flüchtigen Arbeitsspeicher (traditionellen DRAM) aus einem von drei Gründen:
- • Als vorübergehenden Raum, der in dem Prozess einer laufenden Anwendung oder eines Systemdienstes verwendet wird. Es gibt typischerweise zwei Arten von vorübergehendem Raum: einen Heap-Raum, der während der Laufdauer einer Anwendung bestehen bleibt, und einen Stack-Raum oder mehrere Stack-Räume, die in viel kürzeren Zeitspannen erscheinen und verschwinden.
- • Als längerfristiger Datenspeicherraum, der für die Dauer eine Anwendung oder die Laufzeit des Betriebssystems auf dem System bestehen bleibt.
- • Als ein DMA-Puffer, der zum Einstufen von Daten verwendet wird, bevor sie auf irgendeine Weise zwischen einem I/O Teilsystem und einem Allzweck- oder Grafikprozessor ausgetauscht werden. Dieser wird typischerweise für eine Kommunikation zwischen einer Informationsverarbeitungsvorrichtung (der CPU oder GPU) und einer externen Einheit, wie einem Endverbraucher im Fall von Grafikdaten oder dem Netz im Fall von HTML-Browsingdaten verwendet.
-
Mindestens der Heap-Raum, Stack-Raum und die DMA-Puffer sind laut Definition vorübergehend. Die Verwendung von vorübergehenden Datenspeichern wie dieser kann in einem kleineren DRAM-Fußabdruck mit einem effizienten Caching gehalten werden, das die traditionellen Austauschalgorithmen implementiert und den meisten Verkehr zum und vom PCMS eliminiert. Am Kern eines MLM-basierten Arbeitsspeichersystem befindet sich ein großer Zurückschreib-DRAM, der kürzlich verwendete Daten hält, Schreibtransaktionen aufnimmt und dem System wesentliche Read-Around-Write-Fähigkeiten verleiht. Der DRAM wird im Wesentlichen als Cache-Speicher für PCMS verwendet.
-
3 zeigt ein System auf MLM-Basis mit einem DRAM, der als Cache-Speicher für einen NVRAM-Speicher verwendet wird. In diesem Beispiel wird der DRAM als ”naher Arbeitsspeicher” 300 bezeichnet und der NVRAM (z. B. PCMS) wird als ”ferner Arbeitsspeicher” 302 bezeichnet. Diese Nomenklatur beruht auf einer relativen Leistung des Arbeitsspeichers (ein naher Arbeitsspeicher hat im Allgemeinen eine geringere Latenz und höhere Bandbreite als ein ferner Arbeitsspeicher). Obwohl es viele mögliche Verbindungen gibt (d. h., Busse, Zwischenverbindungen), die für einen Anschluss des DRAM und NVRAM verwendet werden können, ist zusätzlich in der Ausführungsform, die in 3 dargestellt ist, der ferne Arbeitsspeicher NVRAM durch eine 32-Bit breite Verbindung angeschlossen, die einen einzigen Arbeitsspeicherkanal für eine bestimmte NVRAM-Menge (z. B. 64 GB) verwendet, und der nahe Arbeitsspeicher DRAM ist durch eine 512-Bit breite Verbindung angeschlossen (möglicherweise eine Cache-Speicherzeile Datenbreite), die einen Siliziumdurchkontaktierungs-(Through-Silicon Via – TSV) Anschluss zwischen dem DRAM-Chip und dem SoC verwendet. Daher kann in verschiedenen Ausführungsformen, abhängig von Kosten-, Leistungs- und Energieüberlegungen in Verbindung mit der Rechnervorrichtung, der DRAM 64 MB bis 512 MB oder mehr sein. Die Wirksamkeit des MLM wird durch das Zeitmaß, in dem eine bestimmte Arbeitslast oder ein Satz von Arbeitslasten auf den Cache-Speicher des nahen Arbeitsspeichers ”trifft”, angesichts der Leistungseigenschaften eines nahen Arbeitsspeicherzugriffs und der Strafsumme (Penalty), die für eine Transaktion des fernen Arbeitsspeichers anfällt, bestimmt.
-
Ein Cache-Speicher, der für die Eigenschaften der Daten, die er enthält, unnötig blind ist, ist häufig am einfachsten zu implementieren, kann aber sub-optimal sein. Aus diesem Grund geht die MLM-Architektur davon aus, dass es besser ein könnte, bestimmte Region des nahen Arbeitsspeichers spezifischen Verwendungen zuzuordnen. 4 zeigt ein System auf MLM-Basis, das eine spezialisierte Nutzung eines Abschnitts des DRAM Cache-Speichers berücksichtigt. In 4 ist der 512 MB DRAM-Raum, anstatt als ein Achtwege-Cache-Speicher mit acht 64 MB-Wegen verwaltet zu werden, derart geteilt, dass er als ein 448 MB 7-Wege-Cache-Speicher (400) verwendet wird, wobei 64 MB für die direkte Verwendung durch Grafik-Hardware und Treiber (402) bestimmt sind.
-
5 zeigt den Fall, dass die niederen 4 GB des NVRAM als ferner Arbeitsspeicher abgebildet sind, der für einen Allzweck- oder Grafikprozessor direkt zugreifbar ist. In 4 würde der private GFX Arbeitsspeicherbereich 402 direkt in den physischen Adressenraum des Prozessors abgebildet werden, möglicherweise zwischen einem hohen DRAM-Raum 500 und einem niederen DRAM-Raum 502. In vielen Ausführungsformen würde ein Register oder ein Mechanismus auf BIOS-Basis zur Kommunikation der Stelle zum Grafiktreiber beim Systemstart verwendet werden. Danach läge es beim Grafiktreiber und der Steuerung, Zeichnungsflächen entweder in den normalen physischen Adressenraum oder in den privaten GFX Arbeitsspeicherbereich 402 derart zu ziehen, dass flüchtige und zeitempfindliche Oberflächen (z. B. Bildspeicher) im privaten Speicher enthalten sind. Andere nicht flüchtige, nicht zeitempfindliche Oberflächen, wie statische Texturen und andere nicht anzeigbare grafische Oberflächen können in jeden Raum gemäß den Leistungs- oder Energieimplikationen gestellt werden, die vom Treiber abgeleitet werden können.
-
3. Mehrstufiger Speicher mit Direktzugriff (MLMD)
-
Ein MLMD ist eine Lösung, die die Fähigkeit bewahrt, Produktivitäts-, Unterhaltungs- und Spielanwendungen unter serienmäßig produzierten Microsoft® Windows® und Linux Betriebssystemen laufen zu lassen, während er gleichzeitig einen externen DRAM zugunsten von neuen Formen eines nicht flüchtigen Speichers, kombiniert mit eingebetteten SRAM oder DRAM Vorrichtungen, aus dem System entfernt.
-
In einer tragbaren Vorrichtung oder einem Tablet ist ein nicht flüchtiger Speicher fast immer mit Festkörpervorrichtungen wie NUND oder NVRAM, wie PCMS, implementiert. Wenn eine Vorrichtung einen MLM mit NVRAM-Vorrichtungen implementiert, ist es natürlich, das gesamte Arbeitsspeichersystem mit NVRAM zu implementieren, und es ist natürlich wünschenswert, dass sich der ferner Arbeitsspeicher und das Datenspeichersystem die NVRAM-Vorrichtungen teilen. 6 zeigt einen zweifach geteilten NVRAM, der einen Abschnitt für den fernen Arbeitsspeicher 600 und den anderen Abschnitt für den Datenspeicher 602 verwendet. Der Arbeitsspeicherabschnitt ist mit einer ”physischen Plattformadresse” (PPA) indiziert und der Datenspeicher ist mit einer ”logischen Blockadresse” (LBA) indiziert. Wie in 6 dargestellt, bildet die Arbeitsspeichersteuerung/Logik 112 die PPA Raum-Seitenadressen in den Arbeitsspeicherabschnitt des NVRAM 600 ab und eine Datenspeichersteuerung/Logik 604 bildet LBA Raum-Blockadressen in den Datenspeicherabschnitt des NVRAM 602 ab. Es gibt bei dieser einfachen Abbildung Probleme. Einige Arten von NVRAM-Vorrichtungen, wie PCMS, haben gewisse Defekt- und Abnutzungseigenschaften, die gegen eine direkte Abbildung kontinuierlicher Adressen zwischen den PPA/LBA-Abstraktionen und den physischen Vorrichtungen sprechen.
-
Insbesondere für PCMS enthalten die offensichtlichsten Probleme:
- • Defektmanagement – PCMS-Komponenten werden von der Fabrik mit bekannten Defekten versandt und können im Laufe ihres Betriebslebens daher Defekte entwickeln.
- • Schreibabnutzungsmanagement – PCMS-Implementierungen haben eine Einschränkung bezüglich der Häufigkeit, mit der eine gegebene Zelle beschrieben werden soll.
- • Lesestörung – PCMS-Implementierungen haben eine Einschränkung bezüglich der Häufigkeit, mit der eine gegebene Zelle zwischen jedem Schreibvorgang in die Zelle gelesen werden sollte.
-
7 zeigt Adressenumleitungstabellen, die eine Funktionalität für eine Abbildung seitengranularer PPAs und LBAs in ständig ändernden Seiten in den physischen NVRAM-Vorrichtungen bereitstellen. In 7 ist eine ”Phantom”-Arbeitsspeicherneuabbildungstabelle 700 dargestellt, die eine bestimmte PPA-Seitenadresse auf eine direkte Adressenraum-(DSPACE)Adresse (eine Adresse, die sich auf eine spezifische physische Seite eines NVRAM bezieht) zwischen 0 GB und 4 GB-1 neu abbildet. Die Arbeitsspeicherneuabbildungstabelle 700 wird in vielen Ausführungsformen als ein einzelner Block eines Arbeitsspeichers entweder in einem SRAM, der in der Arbeitsspeichersteuerung (112 in 6) integriert ist, oder im nahen Arbeitsspeicher (DRAM) gespeichert. Wie dargestellt, sind 1 Million Arbeitsspeicher DSPACE Einträge in der Arbeitsspeicherneuabbildungstabelle 700 vorhanden, da sich jeder Eintrag auf eine einzigartige 4 KB Seite des PPA-Adressenraums bezieht. Die Arbeitsspeicherneuabbildungstabelle 700 wird aus Gruppen von Neuabbildungsdeskriptoren (z. B. stellt Arbeitsspeicher DSPACE 1 einen in der Arbeitsspeicherneuabbildungstabelle 700 gespeicherten Deskriptor dar) gebildet. In vielen Ausführungsformen gibt es einen Deskriptor für jede Cache-Speicherzeile (z. B. 4K Cache-Speicherzeile) des PPA-Raums. Der Inhalt eines Deskriptors kann aufgrund verschiedener Informationen variiert werden, die verfolgt werden müssen. Zumindest die NVRAM-Vorrichtungsadresse wäre jeder Deskriptorausführungsform gemein, die einen gewissen Satz von Adressenbits im NVRAM-Vorrichtungsraum entsprechend dem PPA-Arbeitsspeichereintrag umfassen würde. Diese Adresse müsste in jedem Deskriptor vorhanden sein, damit die tatsächliche Neuabbildungsprozedur stattfinden kann.
-
Ähnlich wie die Arbeitsspeicherdeskriptoren gibt es auch Datenspeicherdeskriptoren in der Arbeitsspeicherneuabbildungstabelle. In der in 7 dargestellten Ausführungsform gibt es 15 Millionen Datenspeicher DSPACE Einträge in der Datenspeicherneuabbildungstabelle 702, da sich jeder Eintrag auf eine einzigartige 4 KB Seite des LBA-Adressenraums bezieht. Gemäß einigen Ausführungsformen befinden sich die Neuabbildungstabellen 700 und 702 in einem SRAM oder einer anderen Hochgeschwindigkeits-Arbeitsspeicher-Datenspeicherstruktur, die in der Hardware-Steuerlogik 704 integriert ist. Obwohl 7 eine spezifische Implementierung der Datenspeicher- und Arbeitsspeicherneuabbildungstabellen mit einer bestimmten Größe und bestimmten Art von Organisation zeigt, sind in vielen anderen Ausführungsformen, die Datenspeicher und Arbeitsspeicherneuabbildungstabellen von unterschiedlicher Größe, unterschiedlichen Granularitätsstufen und/oder auf unterschiedliche Weise implementiert (z. B. können die Datenspeicherdeskriptoren grober auf NVRAM zugreifen, wobei sich ein Deskriptor unter anderen alternativen Beispielen auf einen 32 KB Block anstelle einer 4 KB Seitengranularität bezieht). Die Hardware-Steuerlogik 704 kann eine Arbeitsspeichersteuerung 112 oder Datenspeichersteuerung 604 darstellen, die beide in 6 dargestellt sind, oder sie kann eine neue und andere Form von Steuerlogik umfassen, die auch zur vorteilhaften Nutzung der Neuabbildungstabellen 700 und 702 bestimmt ist. In einigen Ausführungsformen sind die Datenspeichersteuerung und die Arbeitsspeichersteuerung als unterschiedliche Steuerlogikblöcke dargestellt, die im Prozessor integriert oder von diesem getrennt sind. In anderen Ausführungsformen sind diese unterschiedlichen Formen einer Steuerlogik zu einem einzigen Steuerlogikblock integriert, der die gesamte Hardware-Steuerlogik beinhaltet, die zum Verwalten der NVRAM-Vorrichtung(en) notwendig ist.
-
Unter erneuter Bezugnahme auf die Neuabbildungstabellen 700 und 702 werden diese Tabellen in anderen Ausführungsformen in einem reservierten Abschnitt des DRAM gespeichert, der MLMD und andere Steuerdatenstrukturen speichert.
-
Im Wesentlichen zeigt 7 ein virtuelles Arbeitsspeichersystem, das aus den folgenden Komponenten besteht:
- • Einer Arbeitsspeicherneuabbildungstabelle 700, die einen virtuellen oder ”Phantom”-Raum kreiert, der den traditionellen DRAM durch eine Kombination aus einer winzigen Menge DRAM und einer Gruppe von Hinweisadressen zu einem physischen Arbeitsspeicherabschnitt des NVRAM Raums 600 nachbildet.
- • Einer Datenspeicherneuabbildungstabelle 702, die eine Verschiebung aus einem LBA Adressenraum in einen physischen Datenspeicherabschnitt des NVRAM-Raums 602 bereitstellt.
- • Hardware-Steuerlogik 704, die einer Software-Treiberlogik 706 ermöglicht, Hinweisadressen in der Arbeitsspeicherneuabbildungstabelle 700 wie auch Hinweisadressen in der Datenspeicherneuabbildungstabelle zu manipulieren.
- • Einem Software-Treiber, der die obengenannte Hardware-Steuerlogik 704 zur Neuabbildung von Hinweisadressen zwischen Datenspeicher- und Arbeitsspeicherabschnitten des NVRAM anstelle von planenden Hardware-getriebenen Datenkopien durch Unterbrechungsanfragen und DMA-Transfers verwendet.
-
In einigen Ausführungsformen werden separate Software-Treiber zur Manipulation der Arbeitsspeicher- und Datenspeicherabschnitte des Neuabbildungssystems verwendet. In anderen Ausführungsformen gibt es einen Software-Treiber, der eine Logik, wie Software-Treiberlogik 706, enthält, die beide Neuabbildungstabellen behandelt. Gemäß einigen Ausführungsformen können Arbeitsspeicherdeskriptoren in Hardware gehandhabt werden, während Datenspeicherdeskriptoren von einem Software-Treiber gehandhabt werden.
-
Obwohl 7 eine Ausführungsform eines NVRAM-Arbeitsspeicher/Datenspeichersystems zeigt, das den NVRAM in einen Arbeitsspeicherabschnitt 600 und einen Datenspeicherabschnitt 602 trennt, gibt es keinen spezifischen Grund, die NVRAM-Vorrichtungen in Datenspeicher- und Arbeitsspeicherregionen zu trennen, solange das komplexe Mischen der zwei direkt verwaltet werden kann.
-
Sobald Datenspeicher und Arbeitsspeicher in derselben physischen Vorrichtung angeordnet sind und ihre Adressen vermischt sind, wird es unnötig, plattenbezogene DMA-Operationen auf herkömmliche Weise durchzuführen – insbesondere wird unklar, dass Daten von einem Teil des NVRAM in einen anderen Teil kopiert werden sollten. Stattdessen könnte auf die Daten einfach an Ort und Stelle durch Modifizieren von Hinweisadressen in den Neuabbildungstabellen 700 und 702 verwiesen werden. Auf diese Weise sehen Anwendungen, dass Daten in ihren Adressenräumen erscheinen, ohne zuerst dorthin kopiert zu werden. Diese Neuabbildungsfähigkeit wird als ”Direktzugriff” bezeichnet und bedeutet das ”D” in einem MLMD-System.
-
8 zeigt dieselben Adressenumleitungstabellen wie 7 zur Abbildung von PPAs und LBAs in den NVRAM, aber anstelle eines im Voraus zugeordneten physisch linearen Abschnitts des NVRAM für eine Datenspeicherverwendung und eines anderen Abschnitts für eine Arbeitsspeicherverwendung, kann jede physische Stelle im NVRAM in 8 sowohl für eine Datenspeicher- oder Arbeitsspeicherverwendung verwendet werden. Somit ist in 8 jede Stelle im gesamten physischen NVRAM-Raum 800 imstande, als Arbeitsspeicher oder Datenspeicher verwendet zu werden.
-
9 ist ein Ablaufdiagramm für einen Prozess, der ermöglicht, dass Seiten eines nicht flüchtigen Datenspeichers, die sich in einer bestimmten Art von Vorrichtung (z. B. PCMS-Arbeitsspeicher) befinden, direkt in den Adressenraum einer Software-Anwendung abgebildet werden. Dieser Prozess kann ohne Kopieren der Daten aus den Datenspeichermedien (wo die Daten langfristig gespeichert werden) in den Arbeitsspeicher, wo die Daten von der laufenden Software-Anwendung verwendet werden, vollendet werden. Durch Eliminieren dieser Kopie, die in einer Standardimplementierung sonst mindestens eine CPU-Unterbrechung und einen direkten Arbeitsspeicherzugriff-(DMA)Transfer beinhalten würde, wird signifikante Zeit gespart und weniger Energie ab dem Punkt verbraucht, zu dem die Software-Anwendung die Daten anfordert, bis zu dem Zeitpunkt, zu dem die Software-Anwendung Zugriff auf die Daten in ihrem Adressenraum hat. Der Prozess wird von Verarbeitungslogik durchgeführt, die aus Hardware-, Software-, oder Firmware-Logik bestehen oder eine Kombination mehrerer Arten von Logik sein kann. Zusätzlich ist der unten und in 9 beschriebene Prozess einfach ein veranschaulichendes Beispiel, das eine 3-Seiten Arbeitsspeicherzuordnung verwendet. In anderen Ausführungsformen können weniger oder mehr Seiten zugeordnet sein und die enthaltenen Schritte können auf eine oder mehrere unterschiedliche Weisen zur Vollendung des Prozesses variieren.
-
Der Prozess beginnt damit, dass eine Verarbeitungslogik in einem Anwenderprozess (z. B. eine Software-Anwendung, die auf einem OS läuft) einen 3-Seiten-Puffer aus dem OS einem 3-Block zuordnet, der aus dem nicht flüchtigen Datenspeicher (z. B. PCMS) gelesen wird (Verarbeitungsblock 900). In anderen Ausführungsformen kann es sich um eine kleinere oder größere Anzahl von Seiten im Seitenpuffer und eine kleinere oder größere Anzahl von Blöcken für den Lesevorgang handeln. Anschließend entnimmt die Verarbeitungslogik im OS 3 Seiten aus dem physischen DRAM und bildet Hinweisadressen aus dem Anwenderraum im OS auf physische Arbeitsspeicherseiten A, B, und C ab (Verarbeitungsblock 902). Die Seiten A, B, und C sind tatsächliche physische Adressenseiten der DRAM Vorrichtung.
-
Obwohl die Verarbeitungslogik bei Block 902 als im OS beschrieben ist, kann diese Verarbeitungslogik in anderen Ausführungsformen für eine schnellere Zuordnung in Hardware implementiert sein. Zusätzlich, obwohl sich der der Anwenderpuffer laut Beschreibung in einem DRAM befindet, kann der Anwenderpuffer in anderen Ausführungsformen in einem spezialisierten SRAM oder in einem zweckbestimmten Abschnitt des Cache-Speichers des Prozessors vorhanden sein, und nicht einfach im DRAM vorhanden sein.
-
Dann fordert die Verarbeitungslogik im Anwenderprozess das OS auf, Daten aus den nicht flüchtigen Datenspeicheradressen X, Y, und Z (die die 3 Blöcke im nicht flüchtigen Datenspeicher darstellen) zum Anwenderpuffer zu bewegen. Zusätzlich wird zu diesem Zeitpunkt der Anwenderprozess vom OS in einen Ruhezustand gestellt (Verarbeitungsblock 904). Anschließend läuft die Verarbeitungslogik im OS durch alle Arbeitsspeicherverschiebungen, um zu den physischen Arbeitsspeicherseitenadressen zu gelangen, und fordert einen Datenspeichertreiber auf, der auf dem OS läuft, die Daten aus den Datenspeicheradressen X, Y, und Z zu physischen Arbeitsspeicherseiten A, B, und C zu bewegen (Verarbeitungsblock 906). Auch hier kann die Verarbeitungslogik in Blöcken 904 und 906 in anderen Ausführungsformen in Hardware und nicht im OS sein. Ferner kann Hardware-Logik in anderen Ausführungsformen anstelle des Datenspeichertreibers zum Bewegen von Daten aus der Datenspeicheradresse zu physischen Arbeitsspeicherseiten verwendet werden.
-
Dann fordert die Verarbeitungslogik im Datenspeichertreiber eine Datenspeicher/Vorrichtungsabbildung für LBA-Datenspeicheradressen X, Y, und Z an und ändert die Hinweisadressen auf Arbeitsspeicherseiten A, B, und C zu jenen für X, Y, und Z (Verarbeitungsblock 908). Der Datenspeichertreiber informiert dann das OS, dass der Transfer vollendet ist (Verarbeitungsblock 910), das OS markiert den Anwenderprozess wieder als aktiv (Verarbeitungsblock 912) und der Anwenderprozess empfängt dann die Daten (Verarbeitungsblock 914). In anderen Ausführungsformen, die nicht dargestellt sind, gibt es eine einzige Tabelle, die Arbeitsspeicher und Datenspeicher auf physische NVRAM-Seiten abbildet, wo ein Eintrag für jede Seite in einer einzigen Tabelle ein Bit-Feld hat, das angibt, ob die Seite für einen Datenspeicher oder einen Arbeitsspeicher verwendet wird. In dieser Ausführungsform beinhaltet eine Neuabbildung vom Datenspeicher zum Arbeitsspeicher oder umgekehrt ein Umdrehen des Bits, um die Seite im anderen Format anzuzeigen.
-
Zugriffe auf den Datenspeicherraum werden auf folgende Weise direkt in den Arbeitsspeicherraum abgebildet:
- • Alle Zugriffe werden durch die Arbeitsspeicherneuabbildungstabelle (700 in 8) verarbeitet. Zum Beispiel greift immer dann, wenn eine Anwendung einen Lesezugriff auf Adresse 1 MB erzeugt, der Neuabbildungsmechanismus auf den 256. Eintrag in seiner Tabelle zu (unter der Annahme von 4 KB Seiten) und lenkt den Lesevorgang zu einer Seite des Arbeitsspeichers im PCMS-Raum entsprechend der im 256. Eintrag der Tabelle enthaltenen Adresse.
- • Wenn das Betriebssystem den SATA oder einen anderen Vorrichtungstreiber auffordert, eine Seite zum Beispiel aus dem 100 GB Bereich auf der ”Platte” in den 1 MB Bereich im Phantomarbeitsspeicher zu kopieren, sendet der Vorrichtungstreiber diese Informationen zum Hardware-Schnittstellenmechanismus, um die Hinweisadressen neu abzubilden.
- • In diesem spezifischen Fall empfängt der Hardware-Mechanismus eine Nachricht, die Seite bei 100 GB im Datenspeicher in die Phantom-DRAM-Seite bei 1 GB zu kopieren. Anstatt die Daten physisch zu bewegen, wird die 256. Hinweisadresse in der Phantomneuabbildungstabelle mit 100 GB/4 KB überschrieben, was bewirkt, dass alle zukünftigen Lesezugriffe auf Phantom 1 MB von der 100 GB Stelle bedient werden, die zuvor als Datenspeicher abgebildet war.
-
Im Wesentlichen kann, was zuvor eine zugeordnete Datenspeicherstelle im physischen NVRAM-Raum (800 in 8) war, zu einer Arbeitsspeicherstelle geändert werden, oder umgekehrt. Und der Prozess dafür beinhaltet einfach einen Wechsel von Hinweisadressen in den Arbeitsspeicher- und Datenspeicherneuabbildungstabellen (700 bzw. 702, in 8).
-
Obwohl viele Formen von NVRAM für diese Implementierungen verwendet werden können, ist PCMS wegen der geringen Leselatenzen ein guter Kandidat. PCMS hat aber eine wesentliche Asymmetrie zwischen seinen Lese- und Schreiblatenzen. Wenn daher mit PCMS gearbeitet wird, gibt es gewisse Prozesse, die zur Minimierung der Nachteile von PCMS-Schreibvorgängen verwendet werden können. Infolge der viel langsameren Schreibzeiten kann es zu einer wesentlichen Verzögerung kommen, die den Leselatenzen hinzugefügt wird, wenn ein laufender Schreibvorgang das PCMS-Arbeitsspeichersystem besetzt.
-
Gemäß einigen Ausführungsformen werden Schreibvorgänge nur bei Seiten ausgeführt, die vorgereinigt (eigentlich voreingestellt) wurden, da ein Schreiben von Daten auf einer vorgereinigten Seite wesentlich schneller als ein Schreiben auf einer Seite ist, die nicht vorbereitet wurde. Leider ist eine Strategie, die nur auf vorgereinigten Seiten schreibt, nicht energieeffizient, da dies die Energie, die zum Schreiben jedes Bits benötigt wird, annähernd verdoppelt.
-
In vielen Ausführungsformen wird ein Mechanismus, zum Schreiben auf vorgereinigten Seiten, wenn das PCMS-Arbeitsspeichersystem relativ ausgelastet ist, und zum Schreiben auf nicht gereinigten Seiten, wenn das PCMS-Arbeitsspeichersystem relativ ruhig ist, verwendet. Der Nettoeffekt ist ein minimaler Energieverbrauch, während das System leicht belastet ist und der Kompromiss einer höheren Energie bei einer verbesserten Leistung, wenn das System ausgelastet wird.
-
10 zeigt eine Ausführungsform eines PCMS-Seitenreinigungsprozesses unter Verwendung einer Leerseiten-Schreibstrategie. Wie angegeben, kann es aufgrund der Eigenart des PCMS-Datenspeichers um ein mehrfaches länger dauern, Daten in den PCMS zu schreiben als Daten aus dem PCMS auszulesen. Diese Asymmetrie verkompliziert den Prozess zur Gestaltung einer Arbeitsspeicher- und/oder Datenspeichersteuerung, da Schreiboperationen den Zugriff zu einem Bereich des PCMS eine wesentliche Zeitperiode blockieren und verhindern können, dass ein leistungsempfindlicher Lesevorgang bedient wird.
-
Es gibt auch signifikante Schreibzeitenabweichungen zwischen der Einstellung eines PCMS-Datenspeicherelements (eines Bits) auf ”1”, die relativ lange dauert, gegenüber der Einstellung desselben Elements auf ”0”, die ungefähr so lange dauert wie das Lesen eines Elements. Daher ist es äußerst günstig, alle freie Seite eines PCMS-Arbeitsspeichers auf ”1” zu stellen und dann würden, während ein Schreibvorgang an der Seite mit Informationen ausgeführt wird, nur die Bits, die auf 0 gestellt werden müssen, geändert werden.
-
Daher wird in vielen Ausführungsformen ein Pool voreingestellter Seiten (Seiten, in welchen jedes Bit auf 1 gestellt ist) für Schreiboperationen verwendet. Die PCMS-Datenspeicher/Arbeitsspeichersteuerung ist für die Planung von Transfers von Schreib- und Lesedaten zwischen sämtlichen Steuerungs-Cache-Speichern oder Schreib-Puffern verantwortlich, die zum Speichern von Daten verwendet werden, die sich zu und von den PCMS-Vorrichtungen bewegen. Im optimalen Fall würden alle Daten, auf die für eine Weile nicht zugegriffen wird, in den PCMS bewegt werden, um in den Steuerungs-Cache-Speichern und Schreibpuffern Raum für andere Daten zu schaffen. Zusätzlich erhöht ein Bewegen von Daten, die demnächst in den Steuerungs-Cache-Speichern verwendet werden, die Systemleistung.
-
Gemäß vielen Ausführungsformen kann der in 10 dargestellte Prozess der PCMS-Datenspeicher/Arbeitsspeichersteuerung helfen, die Zeit zu verringern, in der die Cache-Speicher und Schreib-Puffer der Steuerung nicht für eine nützliche Arbeit zur Verfügung stehen, da sie PCMS-Vorrichtungen sind, die auf Daten warten, die zurückgestellt (d. h., geschrieben) werden. Unter Bezugnahme auf 10 befindet sich in vielen Ausführungsformen eine Schreib-Puffer/Cache-Speicher-Managementlogik 1000 in einer Steuerung (nicht dargestellt). Diese Steuerung kann in unterschiedlichen Ausführungsformen die Arbeitsspeichersteuerung, die Datenspeichersteuerung, eine kombinierte Arbeitsspeicher/Datenspeichersteuerung oder eine vollkommen andere Steuerung sein. Die Schreib-Puffer/Cache-Speicher-Managementlogik 1000 ist im Wesentlichen eine Managementlogik, die einen oder mehrere Schreib-Puffer und/oder einen oder mehrere Cache-Speicher verwaltet, die Ressourcen der Steuerung für PCMS-Operationen sind. Zum Beispiel kann ein Schreib-Puffer in diesem Sinn eine Datenspeicherstelle sein, wo ausstehende Schreibvorgänge in eine oder mehrere PCMS-Vorrichtungen in Warteschlange sind, während sie darauf warten, zurückgestellt (d. h., fertiggestellt) zu werden. Die ausstehenden Schreibvorgänge im Schreib-Puffer warten, dass eine freie Seite des PCMS-Arbeitsspeichers verfügbar wird, und dann koordiniert die Managementlogik den Schreibvorgang vom Puffer zur freien Seite.
-
Insbesondere ist ein Pool freier Seiten 1002 freier PCMS-Arbeitsspeicherseiten für die Schreib-Puffer/Cache-Speicher-Managementlogik 1000 zugänglich. Wenn die Managementlogik entscheidet fortzufahren und eine Schreibanforderung zurückzustellen, wird eine Seite aus dem Pool freier Seiten 1002 in den Phantomadressenraum 1004 abgebildet (Schritt 1 – mit 1 im Kreis in 10 bezeichnet). Dann führt die Schreib-Puffer/Cache-Speicher-Managementlogik 1000 die Schreibanfrage aus dem Schreib-Puffer 1006 aus, indem sie Daten in den Phantomadressenraum 1004 an der abgebildeten Seite schreibt (Schritt 2). Der Schreib-Puffer-Eintrag wird dann als verfügbar markiert und die Seite, die nicht mehr gebraucht wird, wird zu einem Pool schmutziger Seiten 1008 gesendet (Schritt 3). Der Pool schmutziger Seiten kann einfach eine Liste schmutziger PCMS-Seiten sein, die Daten haben, die nicht mehr gebraucht werden. In vielen Ausführungsformen ist der Pool schmutziger Seiten 1008 eine Liste von Seiten, auf die eine Hinweisadresse des Pools schmutziger Seiten verweist. Für jede Seite, die aus der Liste genommen wird, verweist die Hinweisadresse dann auf die nächste Seite in der Liste. Jede neue schmutzige Seite, wie die schmutzige Seite, die zum Pool schmutziger Seiten 1008 von Schritt 3 gesendet wurde, kann am Ende der Liste angehängt werden.
-
Die Seitenreinigungslogik 1010 zieht dann eine Seite aus dem schmutzigen Pool und reinigt sie (Schritt 4). In vielen Ausführungsformen stellt der Reinigungsprozess alle Bits in der Seite auf ”1”, um die Seite für schnelle Schreibvorgänge voreinzustellen. Dann wird eine Abfolge von Seiten (Schritt 5) von der Seitenreinigungslogik 1010 zum Pool freier Seiten 1002 gesendet. Wie der Pool schmutziger Seiten 1008 kann auf den Pool freier Seiten 1002 durch eine Hinweisadresse für den Pool freier Seiten verwiesen werden. Die Hinweisadresse für den Pool freier Seiten verweist auf die Seite am Anfang der Liste freier Seiten des PCMS-Arbeitsspeichers. Wenn eine Seite aus der Liste genommen und in den Phantomadressenraum für einen Schreibvorgang abgebildet wird, verweist die Hinweisadresse dann auf die nächste Seite in der Liste. Wenn eine reine Seite aus der Abfolge reiner Seiten eintrifft, wird diese Seite am Ende der Liste angehängt.
-
Die Seitenreinigungslogik 1010 arbeitet im Allgemeinen unabhängig von der Schreib-Puffer/Cache-Speicher-Managementlogik 1000. Der Seitenreinigungsprozess, pro Seite, wird bei einer Rate geregelt, die das System übersteuernde Überlegungen berücksichtigt, wie Energie- und Leistungsbetriebspunkte. In vielen Ausführungsformen nimmt die Seitenreinigungslogik 1010 eine Zählung von Seiten vor, die gereinigt werden müssen, indem sie einen Zähler für jede Seite höher stellt, die beim Pool schmutziger Seiten 1008 eintrifft, und denselben Zähler für jede Seite herabsetzt, die aus dem Pool schmutziger Seiten 1008 zur Reinigung herausgezogen wird. Dies erfolgt zusätzlich zur Verfolgung der Hinweisadresse für den Anfang der Liste von Seiten, die der Pool schmutziger Seiten 1008 umfasst. In anderen Ausführungsformen können der Pool schmutziger Seiten 1008 und der Pool reiner Seiten 1002 in Tabellen und nicht in Listen geführt werden.
-
Gemäß einigen Ausführungsformen kann die Schreib-Puffer/Cache-Speicher-Managementlogik 1000 eine Logik enthalten, die Lücken für teilweise im Cache gespeicherte Seiten enthält. Wenn zum Beispiel der Schreib-Puffer Teildaten von einer Seite hat, die auf eine reine Seite zu schreiben sind, die in den Phantomadressenraum abgebildet wird, kann die Logik einen Schreibvorgang aus der PCMS-Vorrichtung ausführen, um die verbleibenden Informationen für die Seite zu erhalten, um die Lücken von Schreibdaten zu füllen.
-
Zusätzlich enthält die Schreib-Puffer/Cache-Speicher-Managementlogik 1000 einen Mechanismus, der imstande ist, physisch Daten aus dem Schreib-Puffer 1006 auf eine physische PCMS-Seite des Arbeitsspeichers zu schreiben. Wenn die Seitenreinigungslogik 1010 in Betrieb ist, könnten immer einige voreingestellte Seiten für Schreibvorgänge verfügbar stehen. 11 zeigt eine Ausführungsform eines Prozessflusses für den Schreibmechanismus, der Daten auf PCMS-Seiten schreibt, die im Phantomadressenraum verfügbar sind. Der Prozess wird von der Verarbeitungslogik ausgeführt, die Hardware, Software, Firmware oder eine Kombination von zwei oder mehr dieser aufgezählten Formen einer Verarbeitungslogik umfassen kann.
-
Der Prozess beginnt mit einer Seite von Daten in einem Schreib-Puffer, die geleert werden soll (Verarbeitungsblock 1100). Die Seite wartet darauf, aus einer PCMS-Arbeitsspeichervorrichtung ausgeschrieben zu werden und der Entleerungsprozess des Puffers führt den Schreibvorgang aus. Der Prozess setzt mit der Verarbeitungslogik fort, die bestimmt, ob die gesamte Datenseite gültig ist (Verarbeitungsblock 1102). Wenn die gesamte 4 K Seite von Daten ungültig ist, ruft die Verarbeitungslogik Daten für die Abschnitte der Seite, die nicht gültig sind, von der alten PCMS-Seite ab, die die Daten hatte, die in den Schreib-Puffer gegangen sind (Verarbeitungsblock 1104). Unabhängig davon, oder der Verarbeitungsblock 1104 ausgeführt wird, ist dann der nächste Schritt für einen Logikablaufweg für die Verarbeitungslogik die Ermittlung der nächsten freien PCMS-Seite im Pool freier Seiten (Verarbeitungsblock 1106).
-
Sobald die freie Seite gefunden ist, schreibt die Verarbeitungslogik in einigen Ausführungsformen den Eintrag oder die Einträge aus dem Schreib-Puffer in die gefundene freie Seite im freien Pool (Verarbeitungsblock 1108). In einigen Ausführungsformen modifiziert die Verarbeitungslogik dann die Hinweisadresse in der Phantomadressentabelle (die auch als die Arbeitsspeicherneuabbildungstabelle 700 von 7 bezeichnet werden kann), um auf die Seite zu zeigen, die soeben geschrieben wurde (Verarbeitungsblock 1110). Dann markiert die Verarbeitungslogik den verfügbaren Schreib-Puffer-Eintrag (Verarbeitungsblock 1112), so dass eine andere Schreibanfrage in den Schreib-Puffer eingegeben werden kann.
-
12 zeigt eine Ausführungsform eines Mechanismus, um ein effizientes Beschreiben von PCMS-Seiten aus einer Energie/Leistungsperspektive zu ermöglichen. Gemäß vielen Ausführungsformen wird eine PCMS-Seitenstatustabelle 1200 im Computersystem gespeichert. Die Stelle der PCMS-Seitenstatustabelle 1200 ist in verschiedenen Ausführungsformen unterschiedlich. In vielen Ausführungsformen wird die PCMS-Seitenstatustabelle 1200 im PCMS selbst gespeichert, da die Tabelle sehr groß sein kann (z. B. 1 TB PCMS mit 4 KB Seitengranularität ist 1 TB/4 KB = 256 Millionen Einträge). In anderen Ausführungsformen kann diese Tabelle in einem reservierten Abschnitt des DRAM gespeichert werden, wenn ausreichend reservierter Raum verfügbar ist.
-
Die PCMS-Seitenstatustabelle 1200 enthält zwei Bits pro Seiteneintrag, die wie folgt codiert sind:
- • 00 Seite ist nicht in Verwendung und rein
- • 00 Seite ist nicht in Verwendung, muss aber gereinigt werden
- • 10 Seite ist als ferner Arbeitsspeicher in Verwendung
- • 11 Seite ist entweder einem Datenspeicher zugeordnet oder schlecht
-
Bei 2-Bits pro Eintrag mit 256 Millionen Einträgen für ein TB PCMS würde die Tabelle 64 MB Datenspeicher benötigen. Diese Seitenstatustabelle ermöglicht eine Unterscheidung zwischen Seiten, die vorgereinigt wurden (z. B. Seiten, bei welchen alle Bits ”1” sind) und Seiten, die nicht gereinigt wurden (z. B. Seiten, die alte Daten enthalten und auch als ”schmutzige” Seiten bekannt sind).
-
Für einen Zugriff auf freie Seiten sind zwei Hinweisadressen bereitgestellt. Eine erste Hinweisadresse 1202 zeigt auf eine Liste (d. h., einen Pool) gereinigter freier Seiten 1204. Eine zweite Hinweisadresse 1206 zeigt auf die Liste/den Pool schmutziger freier Seiten 1208. In vielen Ausführungsformen umfassen diese Pools eine Liste von Adressen zu den Stellen im physischen PCMS-Adressenraum. In einigen Ausführungsformen können diese zwei Pools in benachbarten Stellen zur PCMS-Seitenstatustabelle 1200 gehalten werden. In anderen Ausführungsformen können diese zwei Pools an anderer Stelle im System gehalten werden, wie im DRAM.
-
Die Seitenreinigungslogik 1010 (die möglicherweise in der Arbeitsspeicher/Datenspeichersteuerung in 7 und 8 liegt aber an einer anderen Stelle liegen könnte) reinigt Seiten des PCMS-Arbeitsspeichers und findet entweder oder erhält eine Liste freier Seiten, die schmutzig sind (auf diesen Seiten befinden sich alte Daten, was bedeutet, dass die Bits auf diesen Seiten nicht alle auf ”1” gestellt sind). Die PCMS-Seitenstatustabelle 1200 enthält den Status jeder Seite und die Seitenreinigungslogik 1010 kann den Status jeder Seite enthalten. Wenn zum Beispiel eine schmutzige freie Seite aus dem schmutzigen Pool freier Seiten 1208 herausgezogen und gereinigt wird, kann die Seitenreinigungslogik 1010 den Eintrag in der PCMS-Seitenstatustabelle 1200 für diese besondere Seite von 01 ”frei/nicht rein” auf 00 ”frei/rein” aktualisieren.
-
In anderen Ausführungsformen kann die Seitenreinigungslogik 1010 zusätzlich die PCMS-Seitenstatustabelle 1200 nach freien/nicht reinen Seiten (01) durchsuchen, die gereinigt werden sollen. Für gefundene Seiten, die nicht rein sind, kann die Seitenreinigungslogik 1010 die Seite zum schmutzigen Pool freier Seiten 1208 hinzufügen.
-
In Zeiten, wenn es nur wenig oder gar keinen PCMS-Verkehr gibt, kann die Seitenreinigungslogik 1010 entscheiden, eine oder mehrere Seiten zu reinigen, die sich im schmutzigen Pool freier Seiten 1208 befinden. Wenn dies bei einer Seite erfolgt, stellt die Seitenreinigungslogik dann die Statusbits für diese Seite in der PCMS-Seitenstatustabelle 1200 auf 00, was anzeigt, dass die Seite frei und rein ist. Dann kann die Seitenreinigungslogik 1010 diese Seite aus dem schmutzigen Pool freier Seiten 1208 zum gereinigten Pool freier Seiten 1204 bewegen. Wenn signifikanter PCMS-Verkehr vorhanden ist, kann die Seitenreinigungslogik nicht versuchen, eine der Seiten zu reinigen, um die PCMS-Arbeitsspeicherleistung nicht zu beeinträchtigen.
-
Zur Bestimmung, wann PCMS-Verkehr vorherrscht, wird ein Arbeitsspeicherverkehrsmonitor 1212 zur Verfolgung der verbrauchten PCMS-Bandbreite verwendet. Während des Betriebs zählt die Arbeitsspeicherverkehrsmonitor-Logik konstant die Anzahl von Arbeitsspeichertransaktionen in einer bestimmten Zeitperiode, wie 1 Mikrosekunde (μβ). Wenn die Anzahl von PCMS-Transaktionen in dieser bestimmten Zeitperiode größer als ein programmierbarer Wert ist (der programmierbare Wert kann durch BIOS oder anderswo programmiert werden), wird ein Bit in einem Schieberegister gesetzt, das sich im Arbeitsspeicherverkehrsmonitor 1212 befindet. Ein separater Teil einer Logik im Arbeitsspeicherverkehrsmonitor 1212 überwacht das Schieberegister um festzustellen, wie viele ”ausgelastete” Zeitperioden das System in den letzten ”n” Zeitperioden gehabt hat. Wenn die Anzahl ausgelasteter Perioden größer als eine programmierbare Anzahl ist, veranlasst die Logik, dass die nächste freie Hinweisadresse 1214 aus dem gereinigten Pool freier Seiten 1204 gewonnen wird. Wenn die Anzahl ausgelasteter Perioden kleiner oder gleich dem Wert ist, wird die nächste freie Hinweisadresse 1214 aus dem nicht-gereinigten Pool freier Seiten 1208 gewonnen.
-
Wie oben erwähnt, kann dieselbe Arbeitsspeicherverkehrsmonitor-Logik verwendet werden, um der Seitenreinigungslogik 1210 bei der Bestimmung zu helfen, wann Seiten zu reinigen sind, so dass der Arbeitsspeicherverkehrsmonitor 1212 zusätzlich in vielen Ausführungsformen kommunikativ an die Seitenreinigungslogik 1210 gekoppelt ist.
-
In einer anderen Ausführungsform könnte das System entscheiden, Seiten in allen Fällen vorzureinigen, in welchen die Vorrichtung an eine Wechselstrom-(AC)Energie angeschlossen war, da der Energieverbrauch nur ein Problem sein kann, wenn eine Vorrichtung mit Batterien läuft.
-
Unter erneuter Bezugnahme auf 7 ist allgemein der Fall, dass der ”Arbeitsspeicher” während des Standardbetriebs häufiger gelesen und beschrieben wird als der ”Datenspeicher”. Wenn daher der Abschnitt des NVRAM (z. B. PCMS), der als Arbeitsspeicherraum zugeordnet ist, unverändert bleibt, und der restliche Abschnitt von NVRAM als Datenspeicherraum zugeordnet wird, können sich aufgrund der allgemeinen Abnutzungseigenschaften für viele Arten von nicht flüchtigen Arbeitsspeichern, die Arbeitsspeicherraum- und Datenspeicherraumabschnitte im Laufe der Zeit ungleichmäßig abnutzen.
-
Zur Behebung dieses Problems zeigt 13 eine Ausführungsform eines Mechanismus, der die beständige Bewegung von NVRAM-Seiten zwischen Arbeitsspeicher- und Datenspeicherzuordnungen ermöglicht.
-
In 13 ist eine NVRAM-Arbeitsspeicher/Datenspeicherwechsel-Hardware-Logik 1300 vorhanden, die NVRAM-Seiten zwischen Arbeitsspeicherverwendung und Datenspeicherverwendung wechseln lässt. Die Arbeitsspeicher/Datenspeicherwechsel-Hardware-Logik 1300 verwendet:
- • Eine bit-abgebildete nicht flüchtige Tabelle, die den Status jeder NVRAM-Seite wiedergibt (d. h., ob die Seite dem Datenspeicher zugeordnet ist oder ob sie für den Arbeitsspeicher verfügbar ist). Diese Tabelle würde im Allgemeinen im NVRAM selbst gespeichert werden. Für ein PCMS-basiertes System zum Beispiel, könnte diese Tabelle eine NVRAM-Seitenstatustabelle 1302 (ähnlich oder gleich der PCMS-Seitenstatustabelle 1200 in 12) umfassen.
- • Die Speicherneuabbildungstabelle 702, die die Datenspeicher-Raum LBA-Adressen auf Adressen der NVRAM-Vorrichtung abbildet.
- • Einen Hardware-Mechanismus, der die NVRAM-Datenspeicherseiten veranlasst, sich zu einer verfügbaren Arbeitsspeicherraumseite zu bewegen, und der Datenspeicherraumseite, die die Daten zuvor enthalten hat, ermöglicht, einem neuen Zweck zur Arbeitsspeicherverwendung zugeleitet zu werden.
-
In vielen Ausführungsformen, wenn die in 13 dargestellte Logik arbeitet, werden die folgenden Attribute berücksichtigt:
Der Arbeitsspeicherpool-Schreibmechanismus schreibt immer Daten in eine leere, dem Arbeitsspeicher zugeordnete Seite.
-
Der Datenspeicherpool, der durch NVRAM-Adressen dargestellt ist, die in die Datenspeicherneuabbildungstabelle 702 abgebildet werden, interagiert mit dem Arbeitsspeicher-Schreibmechanismus, um auf dem Datenspeicher zugeordneten Seiten zu schreiben, die beschriebene Seite zum Datenspeicherpool zu bewegen, wenn der Schreibvorgang fertiggestellt ist.
-
Der Datenspeicherpool schiebt Seiten, die nicht mehr notwendig sind, in den Schreibpool, wenn er feststellt, dass sie nicht mehr benötigt werden. In einigen Ausführungsformen werden sie in den Pool freier Seiten 1304 geschoben, der ein ”reiner” Pool sein kann oder nicht (d. h. ein Pool freier Seiten, die für Schreibvorgänge voreingestellt sind, wie den oben in Bezug auf 12 besprochenen).
-
Wenn eine Seite in den Datenspeicher geschrieben wird, bewirken diese Attribute für diesen Prozess, dass die geschriebene Seite vom Arbeitsspeicherpool zum Datenspeicherpool wandert und die Seite, die zuvor der Datenspeicherstelle zugeordnet war, vom Datenspeicherpool zum Arbeitsspeicherpool wandert.
-
13 beschreibt den Hardware-Mechanismus, der in der dargestellten Ausführungsform als Arbeitsspeicher/Datenspeicherwechsel-Hardware-Logik 1300 dargestellt ist. Diese Logik kann sich in der Arbeitsspeicher/Datenspeicher-Steuerlogik oder anderswo im System befinden. Als veranschaulichendes Beispiel verfügt die Arbeitsspeicher/Datenspeicherwechsel-Hardware-Logik 1300 über einen Einflussbereich im Arbeitsspeicher/Datenspeicher-Teilsystem 1306. Der Einflussbereich 1306 zeigt einfach mindestens ein Minimalausmaß an Hardware- und Software-Logik, das die Arbeitsspeicher/Datenspeicherwechsel-Hardware-Logik 1300 zur Durchführung dieser Wechsel steuern kann.
-
Der Prozess wird von einem periodischen Zeitgeber oder Schreibvorgangszähler (Zeitgeber/Zähler: T/C 1308) gestartet, der in der Arbeitsspeicher/Datenspeicherwechsel-Hardware-Logik 1300 vorhanden sein kann. An einem gewissen Punkt startet der T/C 1308 (in Bezug auf eine bestimmte Zeitspanne, die für den Zähler vergangen ist, oder eine bestimmte Anzahl stattgefundener Schreibvorgänge) und bewirkt, dass die Daten in einer PCMS-Vorrichtungsseite, die einem Datenspeicher zugeordnet sind (eine aktuelle Datenspeicherseite, die in die Datenspeicherneuabbildungstabelle 702 abgebildet ist) in den Schreib-Puffer 1006 kopiert wird (Schritt 1). Sobald der Schreib-Puffer 1006 die Daten in eine leere Seite im NVRAM-Arbeitsspeicherraum geschrieben hat (eine Seite, die der Arbeitsspeicherneuabbildungstabelle 700 zugeordnet ist), wird eine freie Seite aus dem Pool freier Seiten 1304 der Arbeitsspeicherneuabbildungstabelle 700 zugeordnet und in diese abgebildet (Schritt 2A).
-
Sobald die Seite der Tabelle zugeordnet ist, wird der Schreib-Puffer geleert und die Daten, die ursprünglich von der aktuellen Datenspeicherseite erhalten wurden, werden in die neue abgebildete freie Seite in der Arbeitsspeicherneuabbildungstabelle 700 geschrieben (Schritt 2B). An diesem Punkt befinden sich die Daten, die der aktuellen Datenspeicherseite im Datenspeicherraum zugeordnet waren, nun in einer neuen abgebildeten freien Seite im Arbeitsspeicherraum. Nachdem dies stattgefunden hat und möglicherweise in Verbindung mit Schritten 2A und 2B, wird die NVRAM-Adresse zur aktuellen Datenspeicherseite (die nun alte Daten enthält) wieder dem Arbeitsspeicherraum als die neue verschobene Arbeitsspeicherseite zugeordnet (Schritt 3). Somit ändert sich die physische NVRAM-Seite, auf die diese Adresse verweist, aus einer Zuordnung zum Datenspeicherraum in der Datenspeicherneuabbildungstabelle 702 zu einer Zuordnung als Arbeitsspeicherraum in der Arbeitsspeicherneuabbildungstabelle 700. Gleichzeitig mit dieser Neuzuordnung oder zu einem späteren Zeitpunkt wird diese neue abgebildete freie Seite, in die nun die Datenspeicherdaten geschrieben wurden, die vom Schreib-Puffer 1006 in Schritt 2B eingetroffen sind, wieder als neue verschobene Datenspeicherseite zugeordnet (Schritt 4). Daher ändert sich bei der physischen NVRAM-Seite mit dieser Adresse eine Zuordnung als Arbeitsspeicherraum in der Arbeitsspeicherneuabbildungstabelle 700 zu einer Zuordnung als Datenspeicherraum in der Datenspeicherneuabbildungstabelle 702.
-
An diesem Punkt ist die Verschiebung beendet. Die Verschiebung kann methodisch Seite für Seite des physischen NVRAM-Arbeitsspeichers erfolgen. Sobald der T/C 1308 startet, wird eine weitere, dem Arbeitsspeicher zugeordnete Seite zum Datenspeicher verschoben und eine entsprechende, dem Datenspeicher zugeordnete Seite wird zum Arbeitsspeicher verschoben. Wenn dieser Prozess für alle physischen NVRAM-Seiten im Laufe der Zeit wiederholt wird, ist das Ergebnis eine gleichmäßig abgenutzte NVRAM-Vorrichtung von der Unterseite bis zur Oberseite der physischen Arbeitsspeicheradressen der Vorrichtung.
-
Zusätzliche Energie- und Leistungsbedenken können aus Effizienzgründen abhängig von der ”Ebenenkonfiguration” einer physischen NVRAM-Vorrichtung notwendig sein. Zum Beispiel gibt es bei PCMS in vielen Fällen mehrere ”Ebenen”, die sich auf Arbeitsspeicherregionen beziehen, die effizient sind, wenn sie mit aufeinanderfolgenden Zugriffen in einer bestimmten Ebene arbeiten, wobei aber die Vorrichtung an Transaktionseffizienz verliert (sowohl aus einer Energie- wie auch Leistungsperspektive), wenn aufeinanderfolgende Zugriffe auf verschiedene physische Arbeitsspeicherstellen Ebenen queren.
-
Ein PCMS hat im Allgemeinen ziemlich kurze Latenzen für die meisten Zugriffe, etwa 50 Nanosekunden (ns) für Vorrichtungen der derzeitigen Generation, erfordert aber längere Latenzen, etwa 100 ns wenn aufeinanderfolgende Zugriffe auf zwei verschiedene Ebenen in der Arbeitsspeichervorrichtung erfolgen, wo eine Ebene etwa ein Viertel des gesamten Arbeitsspeicherraums in der Vorrichtung darstellen kann. Zusätzlich kann es wesentliche Leistungs-/Energiestrafsummen für ein Queren von Ebenen zwischen Zugriffen geben.
-
Somit wird ein Mechanismus vorgeschlagen, der diese Strafsummen so weit wie möglich verringert, indem so viele unnötige Ebenenübergänge wie möglich verhindert werden. 14 zeigt eine Ausführungsform eines solchen Prozesses und einen begleitenden Mechanismus (d. h. eine Hardware-Logik) zur Unterstützung des Prozesses zur Eliminierung unnötiger PCMS-Ebenenübergänge.
-
In vielen Ausführungsformen gibt es einen Satz von PCMS-Vorrichtungsübergängen (A1 bis A5), die in Reihenfolge auf den tatsächlichen Ebenen in Ansicht 1400 dargestellt sind. Zugriff 1 erfolgt auf eine physische Stelle in Ebene 1, Zugriff 2 erfolgt auf eine physische Stelle in Ebene 2, Zugriff 3 erfolgt auf eine physische Stelle in Ebene 3, Zugriff 4 erfolgt auf eine physische Stelle in Ebene 4 und Zugriff 5 erfolgt auf eine physische Stelle in Ebene 1. In Ansicht 1402 sind die Übergänge (T1 bis T4) zwischen Ebenen dargestellt, wenn die Zugriffe in der Reihenfolge außer Kraft gesetzt werden. Insbesondere findet der Ebenenübergang 1 zwischen Zugriffen 1 und 2 statt, der Ebenenübergang findet 2 zwischen Zugriffen 2 und 3 statt, der Ebenenübergang 3 findet zwischen Zugriffen 3 und 4 statt und der Ebenenübergang 4 findet zwischen Zugriffen 4 und 5 statt. Daher sind bei einer Standardzugriffsreihenfolgen-Ansicht 1404 von Zugriffen in der empfangenen Reihenfolge 4 Ebenenübergänge vorhanden.
-
Mit einer Arbeitsspeichersteuerlogik mit Transaktionspuffern, die in einer Schlange gereiht sind (eingehende Lese- und Schreibanforderungen werden vor der Ausführung in eine Wartschlange gestellt), ist es möglich, und eigentlich wünschenswert, die Transaktionsreihenfolge neu zu ordnen, wenn die Logik die physischen Stellen der Zugriffe kennt. Somit hat die Arbeitsspeichersteuerlogik, die eine PCMS-Transaktionsneuordnungs-Logikeinheit enthalten kann, die Fähigkeit, die PCMS-Transaktionen in der Warteschlange mit einer Arbeitsspeicher/Datenspeicher-Neuabbildungs-Logik (wie oben besprochen) durchzusehen, um physische PCMS-Adressen für jede Transaktion zu erhalten. Anhand der Kenntnis der physischen Stelle jeder PCMS-Transaktion in einer Transaktionswarteschlange kann eine PCMS-Transaktionsneuordnungs-Logikeinheit eine Neuordnung von Transaktionen durchführen, um die Ebenenübergangseffizienz der Transaktionen zu erhöhen.
-
Für 14 bewegt ein angemessener Satz von Ebenenzugriffen außerhalb der Reihenfolge 1406 (modifiziert von den in Ansicht 1400 dargestellten Ebenenzugriffen innerhalb der Reihenfolge) den fünften Zugriff (A5) aus der fünften Position in der Transaktionswarteschlange zur zweiten Position. Somit wäre der neu geordnete Satz von Zugriffen A1 in Ebene 1, dann A5 in Ebene 1, dann A2 in Ebene 2, dann A3 in Ebene 3 und schließlich A4 in Ebene 4. Diese Reihenfolge würde die Anzahl von Ebenenübergängen von vier auf drei ändern, wie in Ansicht 1408 dargestellt, die zeigt, dass der Ebenenübergang 1 zwischen Zugriffen 5 und 2 erfolgt, der Ebenenübergang 2 zwischen Zugriffen 2 und 3 erfolgt und der Ebenenübergang 3 zwischen Zugriffen 3 und 4 erfolgt. Das Ergebnis ist eine optimierte Zugriffsreihenfolge 1410 mit einem Ebenenübergang weniger.
-
Diese Neuordnung würde den gesamten Energieverbrauch senken, wie auch den Arbeitsspeicherdurchsatz aufgrund der geringen Latenz-intensiven Ebenenübergänge erhöhen.
-
4. SoC-basierte Rechnervorrichtung – Überblick
-
15 zeigt eine Ausführungsform einer Rechnervorrichtung, die das MLMD-basierte Arbeitsspeicherteilsystem als eine System-auf-Chip-(SOC)Paketkonstruktion 1500 zeigt, die Prozessor, Grafik, Speicher und I/O Steuerlogik zu einem SoC-Paket integriert. Somit sind in 15, CPU-Kern(e) 1502, GPU Kern(e) 1504, ihre entsprechenden Cache-Speicher (1506 und 1508) alle im Paket gemeinsam mit dem Arbeitsspeicherteilsystem 1512 und I/O Teilsystem 1530 vorhanden.
-
Wenn auch nicht dargestellt, kann jeder CPU-Kern im Inneren einen oder mehrere Anweisungs-/Daten-Cache-Speicher, Ausführungseinheiten, Vorabruf-Puffer, Anweisungsschlangen, Nebenadressenberechnungseinheiten, Anweisungsdecodierer, Fließkommaeinheiten, Rücksetzeinheiten, usw. enthalten. Jeder vorhandene Kern befindet sich auf einem CPU-Halbleiterchip. Für jede dargestellte Logikeinheit außer dem (den) Kern(en) 1502 im SoC-Packet 1500 kann sich die Logikeinheit auf einem Halbleiterchip des (der) CPU-Kern(e) 1502 in einigen Ausführungsformen oder auf einem anderen Chip in anderen Ausführungsformen befinden. Wenn eine bestimmte Logikeinheit nicht auf demselben Chip wie der (die) CPU-Kern(e) 1502 ist, befände sich diese Logikeinheit auf einem anderen Halbleiterchip, aber in demselben SoC-Paket 1500, das mehrere Chips enthalten kann, die kommunikativ miteinander im Paket gekoppelt sind.
-
Das SoC 1500 enthält auch mindestens einen CPU Cache-Speicher tieferer Stufe, wie CPU Cache-Speicher 1506. Dieser kann ein Allzweck-Cache-Speicher sein, der imstande ist, eine signifikante Datenmenge zu speichern, die von Speicherstellen im flüchtigen Arbeitsspeicher 1518 und/oder NVRAM 1520 gewonnen wird. In anderen Ausführungsformen kann der CPU Cache-Speicher 1506 von allen Kernen gemeinsam benützt werden oder jeder Kern kann über seinen eigenen Cache-Speicher tieferer Stufe verfügen.
-
Einer oder mehrere GPU Kern(e) 1504 sind auch im SoC-Paket 1500 wie auch im GPU Cache-Speicher 1508 tieferer Stufe enthalten, die grafikbezogene Daten für den (die) GPU Kern(e) 1504 zu deren Bearbeitung speichern können. GPU Kern(e) 1504 können intern eine oder mehrere Ausführungseinheit(en) und einen oder mehrere Anweisungs- und Daten Cache-Speicher enthalten, die zum Versorgen der Ausführungseinheiten mit zu verarbeitenden Informationen verwendet werden. Zusätzlich können der (die) GPU Kern(e) 1504 andere Grafik-Logikeinheiten enthalten, die in 15 nicht dargestellt sind, wie, unter anderen, eine oder mehrere Vertex-Verarbeitungseinheiten, Rastereinheiten, Medienverarbeitungseinheiten und Codecs. Der Einfachheit wegen ist die spezifische Logik in dem (den) GPU Kern(en) 1504 nicht dargestellt.
-
Das SoC-Paket 1500 kann auch einen Home-Agent 150 enthalten, der Komponenten beinhaltet, die Kern(e) 1502 wie auch andere Elemente des SoC-Pakets 1500 koordinieren und betreiben. Die Home-Agent-Einheit 1510 kann zum Beispiel eine Energiesteuereinheit (Power Control Unit – PCU) enthalten. Die PCU kann Logik und Komponenten enthalten, die neben anderen Aufgaben zum Regulieren des Energiezustandes des Kerns (der Kerne) erforderlich sind.
-
In 15 enthält das SoC-Paket 1500 auch ein Arbeitsspeicherteilsystem 1512, in das eine flüchtige Arbeitsspeichersteuerung 1514 integriert ist, die für einen Zugriff auf den flüchtigen Arbeitsspeicher 1518 verwendet wird. Die flüchtige Arbeitsspeichersteuerung 1514 kann eine Arbeitsspeicherzugriffanfrage von einem CPU-Kern empfangen und diese Anfrage zum flüchtigen Arbeitsspeicher 1518 weiterleiten. Ebenso kann die NVRAM-Steuerung 1516 eine Arbeitsspeicherzugriffsanfrage von einem CPU-Kern empfangen und diese Anfrage zum NVRAM 1520 weiterleiten.
-
Der ”flüchtige Arbeitsspeicher” 1518 ist eine Zwischenstufe eines Arbeitsspeichers, die in Verbindung mit dem NVRAM 1520 konfiguriert ist, der eine geringere Lese/Schreibzugriffslatenz relativ zum NVRAM 1520 und/oder eine symmetrischere Lese/Schreibzugriffslatenz hat (d. h., Lesezeiten hat, die annähernd gleich den Schreibzeiten sind). Wie oben besprochen, hat der flüchtige Arbeitsspeicher 1518 in einigen Ausführungsformen eine signifikant geringere Schreiblatenz als der NVRAM 1520, aber eine ähnliche (z. B. etwas geringere oder gleiche) Leselatenz; zum Beispiel kann der flüchtige Arbeitsspeicher 1518 ein flüchtiger Arbeitsspeicher wie ein flüchtiger Direktzugriffsspeicher (VRAM) sein und kann einen DRAM oder anderen Hochgeschwindigkeits-Arbeitsspeicher auf Kondensatorbasis umfassen. Es ist jedoch zu beachten, dass die grundlegenden Prinzipien der Erfindung nicht auf diese spezifischen Arbeitsspeichertypen beschränkt sind. Zusätzlich kann der flüchtige Arbeitsspeicher 1518 eine relativ geringere Dichte haben und/oder kann in der Herstellung teurer sein als der NVRAM 1520.
-
In einigen Ausführungsformen ist der flüchtige Arbeitsspeicher 1518 zwischen dem NVRAM 1518 und dem CPU Cache-Speicher 1506 konfiguriert. In einigen der unten beschriebenen Ausführungsformen wird der flüchtige Arbeitsspeicher 1518 zum Maskieren der Leistungs- und/oder Benutzungseinschränkungen des NVRAM 1520 verwendet, einschließlich zum Beispiel, Lese/Schreiblatenzeinschränkungen und Speicherverschlechterungseinschränkungen. In diesen Implementierungen arbeitet die Kombination aus flüchtigem Arbeitsspeicher 1518 und NVRAM 1520 bei einer Leistungsstufe, die annähernd, gleich oder besser als ein System ist, das nur einen DRAM als Systemarbeitsspeicher verwendet.
-
Obwohl der Arbeitsspeicher 1518 in einer spezifischen Konfiguration in 15 dargestellt ist, kann er sich in anderen Ausführungsformen auf dem Prozessor-Chip befinden, extern zum Prozessor-Chip auf einem getrennten Chip auf dem SoC-Paket 1500 befinden, außerhalb des CPU-Pakets mit einer Verbindung hoher Bandbreite zum SoC-Paket 1500 befinden, zum Beispiel, auf einem Dual-In-line-Speichermodul (DIMM) des Arbeitsspeichers, einem Riser/Mezzanine oder einer Computergrundplatine. In 15 ist der flüchtige Arbeitsspeicher 1518 an einer Position extern zum SoC-Paket 1500 dargestellt. Der flüchtige Arbeitsspeicher 1518 kann kommunikativ mit dem SoC-Paket 1500 unter Verwendung einer einzigen oder mehrerer Verbindung(en) hoher Bandbreite gekoppelt sein, wie DDR oder anderer Transaktionsverbindungen hoher Bandbreite. Eine kommunikative Kopplung von Vorrichtungen bezieht sich auf eine Kopplung durch eine elektrische, optische, drahtlose oder andere Form von Verbindung oder Kombination von Verbindungen, so dass Informationen zwischen den aneinander gekoppelten Vorrichtungen hin und her geleitet werden können. In einigen Ausführungsformen ist die Kopplung direkt und ermöglicht ein direktes Weiterleiten von Informationen von der ersten Vorrichtung zur zweiten und möglicherweise umgekehrt. In anderen Ausführungsformen ist die Kopplung indirekt und verlangt, dass die Informationen durch eine oder mehrere zusätzliche Vorrichtungen gehen, die entlang der Route liegen, die die Informationen zurücklegen, während sie zwischen den zwei betroffenen, kommunikativ gekoppelten Vorrichtungen übertragen werden.
-
In vielen Ausführungsformen ist ein Eingabe/Ausgabe-(I/O)Teilsystem 1530 zur Kommunikation mit I/O Vorrichtungen, wie I/O Vorrichtung(en) 1534, im System in 15 vorhanden. Das I/O Teilsystem 1530 in 15 ist in das SoC-Paket 1500 integriert. Im I/O Teilsystem 1530 sind ein oder mehrere I/O Adapter 1532 zum Übersetzen eines Host-Kommunikationsprotokolls, das im (in) CPU-Kern(en) 1502 verwendet wird, in ein Protokoll, das mit bestimmten I/O-Vorrichtungen kompatibel ist, vorhanden. Einige der Protokolle, die Adapter zur Übersetzung verwenden können, enthalten, unter anderen, Peripheral Component Interconnect(PCI)-Express (PCI-E), 3.0; Universal Serial Bus (USB), 3.0; Serial Advanced Technology Attachment (SATA), 3.0; Small Computer System Interface (SCSI), Ultra-640; und Institute of Electrical and Electronics Engineers (IEEE) 1594 ”Firewire”.
-
Zusätzlich können eine oder mehrere Drahtlosprotokoll-I/O-Adapter vorhanden sein. Beispiele von Drahtlosprotokollen werden unter anderem in persönlichen Bereichsnetzen, wie IEEE 802.15 und Bluetooth, 4.0; drahtlosen lokalen Bereichsnetzen, wie IEEE 802.11-basierten drahtlosen Protokollen; und zellulären Protokollen verwendet.
-
Eine Basic Input/Output System (BIOS) Flash 1536 Vorrichtung kann zusätzlich im System vorhanden sein, um einen Satz von Startanweisungen bereitzustellen, wenn das System hochfährt oder neustartet. Für die BIOS Flash 1536 Vorrichtung enthalten einige der Protokolle, die I/O-Adapter 1534 übersetzen können, unter anderen, Serial Peripheral Interface (SPI), Microwire.
-
In der folgenden Beschreibung sind zahlreiche spezifische Einzelheiten wie Logikimplementierungen, Mittel zur Spezifizierung von Operanden, Ressourcenaufteilungs-/teilungs-/duplizierungsimplementierungen, Arten und wechselseitige Beziehungen von Systemkomponenten, und Logikteilungs-/integrationsauswahlen beschrieben, um ein besseres Verständnis der vorliegenden Erfindung zu bieten. Für einen Fachmann ist jedoch klar, dass die Erfindung ohne derartige spezifische Einzelheiten ausgeführt werden kann. In anderen Fällen wurden Steuerstrukturen. Gate-Stufenschaltungen und volle Software-Anweisungssequenzen nicht im Detail gezeigt, um die Erfindung nicht zu verschleiern. Ein Durchschnittsfachmann ist angesichts der vorliegenden Beschreibungen imstande, eine richtige Funktionalität ohne unnötige Experimente zu implementieren.
-
Bezugnahmen in der Beschreibung auf ”eine (1) Ausführungsform”, ”eine Ausführungsform”, ”eine beispielshafte Ausführungsform” usw., geben an, dass die beschriebene Ausführungsform ein besonderes Merkmal, eine Struktur oder Eigenschaft enthalten kann, aber nicht jede Ausführungsform unbedingt das besondere Merkmal, die Struktur oder Eigenschaft enthalten muss. Ferner beziehen sich solche Phrasen nicht unbedingt auf dieselbe Ausführungsform. Wenn ferner eine besonderes Merkmal, eine Struktur oder Eigenschaft in Verbindung mit einer Ausführungsform beschrieben ist, wird davon ausgegangen, dass ein Fachmann weiß, wie ein solches Merkmal, eine solche Struktur oder Eigenschaft in Verbindung mit anderen Ausführungsformen auszuführen ist, egal, ob dies ausdrücklich beschrieben ist oder nicht.
-
In der folgenden Beschreibung und den Ansprüchen können die Begriffe ”gekoppelt” und ”verbunden”, gemeinsam mit ihren Ableitungen, verwendet werden. Es sollte klar sein, dass diese Begriffe nicht als Synonyme füreinander gedacht sind. ”Gekoppelt” wird für die Angabe verwendet, dass zwei oder mehr Elemente, die in direktem physischem oder elektrischem Kontakt miteinander sein können, zusammenwirken oder miteinander interagieren. ”Verbunden” wird zur Angabe der Errichtung einer Kommunikation zwischen zwei oder mehr Elementen verwendet, die aneinander gekoppelt sind.
-
Ausführungsformen der Erfindung können auch als Computerprogrammprodukt bereitgestellt sein, das ein nicht transitorisches maschinenlesbares Medium enthält, auf dem Anweisungen gespeichert sind, die zum Programmieren eines Computers (oder einer anderen elektronischen Vorrichtung) zur Durchführung eines Prozesses verwendet werden können. Das nicht transitorische maschinenlesbare Medium enthält, ohne aber darauf beschränkt zu sein, Disketten, optische Platten, CD-ROMs, und magneto-optische Platten, ROMs, RAMs, EPROMs, EEPROMs, magnetische oder optische Karten, Übertragungsmedien oder anderen Arten von medium/maschinenlesbaren Medien, die zum Speichern elektronischer Anweisungen geeignet sind. Ausführungsformen der Erfindung können auch als Computerprogrammprodukt heruntergeladen werden, wobei ein Programm von einem fernen Computer (z. B. einem Server) zu einem anfragenden Computer (z. B. einem Client) durch Datensignale, die in einer Trägerwelle oder einem anderen Übertragungsmedium vorhanden sind, über eine Kommunikationsverbindung (z. B. ein Modem oder eine Netzverbindung) übertragen wird.
-
Die Erfindung wurde zwar anhand mehrerer Ausführungsformen beschrieben, aber ein Fachmann wird erkennen, dass die Erfindung nicht auf die beschriebenen Ausführungsformen begrenzt ist und mit Modifizierungen und Änderungen im Wesen und Umfang der beiliegenden Ansprüche ausgeführt werden kann. Die Beschreibung ist daher als veranschaulichend und nicht als einschränkend zu betrachten.