DE112011106078T5 - Mehrstufiger Arbeitsspeicher mit Direktzugriff - Google Patents

Mehrstufiger Arbeitsspeicher mit Direktzugriff Download PDF

Info

Publication number
DE112011106078T5
DE112011106078T5 DE112011106078.5T DE112011106078T DE112011106078T5 DE 112011106078 T5 DE112011106078 T5 DE 112011106078T5 DE 112011106078 T DE112011106078 T DE 112011106078T DE 112011106078 T5 DE112011106078 T5 DE 112011106078T5
Authority
DE
Germany
Prior art keywords
nvram
memory
physical
page
free
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112011106078.5T
Other languages
English (en)
Other versions
DE112011106078B4 (de
Inventor
Blaise Fanning
Shekoufeh Qawami
Raymond S. Tetrick
Frank T. Hady
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112011106078T5 publication Critical patent/DE112011106078T5/de
Application granted granted Critical
Publication of DE112011106078B4 publication Critical patent/DE112011106078B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2024Rewritable memory not requiring erasing, e.g. resistive or ferroelectric RAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Es sind Ausführungsformen eines Verfahrens, einer Vorrichtung und eines Systems zur Implementierung mehrstufiger Arbeitsspeicher mit Direktzugriff offenbart. In einer Ausführungsform enthält das Verfahren das Zuordnen einer Menge eines nicht flüchtigen Direktzugriffsspeichers (NVRAM) in einem Computersystem, die als Arbeitsspeicher alternativ zu einem dynamischen Direktzugriffsspeicher (DRAM) verwendet wird. Das Verfahren setzt mit dem Zuordnen einer zweiten NVRAM-Menge fort, die als Datenspeicher alternativ zu einer Massendatenspeichervorrichtung verwendet wird. Dann ordnet das Verfahren während des Betriebs des Computersystems wieder mindestens einen ersten Abschnitt der ersten NVRAM-Menge aus der alternativen Arbeitsspeicherzuordnung zur alternativen Datenspeicherzuordnung zu. Schließlich ordnet das Verfahren während des Betriebs des Computersystems wieder mindestens einen ersten Abschnitt der zweiten NVRAM-Menge aus alternativer Datenspeicherzuordnung zur alternativen Arbeitsspeicherzuordnung zu.

Description

  • 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.

Claims (39)

  1. Verfahren, umfassend: Zuordnen einer ersten Menge eines nicht flüchtigen Direktzugriffsspeichers (NVRAM) in einem Computersystem, der als Arbeitsspeicher alternativ zu einem dynamischen Direktzugriffsspeicher (DRAM) verwendet wird; Zuordnen einer zweiten Menge des NVRAM, der als Datenspeicher alternativ zu einer Massendatenspeichervorrichtung verwendet wird; während des Betriebs des Computersystems, erneutes Zuordnen mindestens eines ersten Abschnitts der ersten NVRAM-Menge aus der alternativen Arbeitsspeicherzuordnung zur alternativen Datenspeicherzuordnung; und während des Betriebs des Computersystems, erneutes Zuordnen mindestens eines ersten Abschnitts der zweiten NVRAM-Menge aus der alternativen Datenspeicherzuordnung zur alternativen Arbeitsspeicherzuordnung.
  2. Verfahren nach Anspruch 1, des Weiteren umfassend: zyklisches Durchlaufen der gesamten ersten NVRAM-Menge in einer ersten Zeitspanne, die aus der alternativen Arbeitsspeicherzuordnung der alternativen Datenspeicherzuordnung zugeordnet wird, wobei das zyklische Durchlaufen ein erneutes Zuordnen jedes von mehreren Abschnitten, die die gesamte erste NVRAM-Menge bilden, bei jedem von mehreren Zeitsegmenten umfasst, wobei die Summe der mehreren Segmente die erste Zeitspanne umfasst.
  3. Verfahren nach Anspruch 1, des Weiteren umfassend: Bereitstellen eines Zugriffs auf mindestens eine physische Stelle im NVRAM für eine Software-Anwendung, die auf dem Computersystem läuft, durch eine Neuabbildungstabelle.
  4. Verfahren nach Anspruch 3, wobei die Neuabbildungstabelle des Weiteren eine Arbeitsspeicherneuabbildungstabelle umfasst, wobei die Arbeitsspeicherneuabbildungstabelle mindestens eine physische Plattformadresse in eine physische NVRAM-Adresse übersetzt.
  5. Verfahren nach Anspruch 3, wobei die Neuabbildungstabelle des Weiteren eine Datenspeicherneuabbildungstabelle umfasst, wobei die Datenspeicherneuabbildungstabelle mindestens eine logische Blockadresse in eine physische NVRAM-Adresse übersetzt.
  6. Verfahren nach Anspruch 3, wobei die Neuabbildungstabelle des Weiteren eine Arbeitsspeicher- und Datenspeicherneuabbildungstabelle umfasst, wobei die Arbeitsspeicher- und Datenspeicherneuabbildungstabelle mindestens ein Bit aufweist, das mit jedem Tabelleneintrag verknüpft ist, und bestimmt, ob der Tabelleneintrag dem Arbeitsspeicher- oder Datenspeicherraum zugeordnet ist.
  7. Verfahren nach Anspruch 1, des Weiteren umfassend: Bestimmen, für jede Seite von mehreren physischen NVRAM-Seiten, ob eine physische NVRAM-Seite zum Beschreiben frei ist, wobei eine bestimmte physische NVRAM-Seite zum Beschreiben frei ist, wenn die bestimmte physische NVRAM-Seite gegenwärtig keine gültigen Daten enthält.
  8. Verfahren nach Anspruch 7, des Weiteren umfassend: Bestimmen, für jede freie physische NVRAM-Seite der mehreren physischen NVRAM-Seiten, ob jede freie physische NVRAM-Seite rein ist, wobei eine bestimmte freie physische NVRAM-Seite rein ist, wenn alle gespeicherten Bits in einer bestimmten freien physischen NVRAM-Seite auf eins gesetzt sind.
  9. Verfahren nach Anspruch 8, des Weiteren umfassend: Reinigen mindestens einer freien physischen NVRAM-Seite von den mehreren physischen NVRAM-Seiten, wobei mindestens eine zu reinigende freie physische NVRAM-Seite eine Seite des physischen NVRAM mit mindestens einem gespeicherten Bit, das auf null gesetzt ist, umfasst.
  10. Verfahren nach Anspruch 7, des Weiteren umfassend: Bereitstellen eines Anfragestellers, wobei der Anfragesteller anfragt, an eine Seite des NVRAM eine von mehreren freien physischen NVRAM-Seiten, die nicht gereinigt wurde, zu schreiben, wenn eine Schnittstelle zum NVRAM im Wesentlichen im Leerlauf ist; und Bereitstellen des Anfragestellers mit einer von mehreren freien physischen NVRAM-Seiten, die gereinigt wurde, wenn die Schnittstelle zum NVRAM nicht im Wesentlichen im Leerlauf ist.
  11. Verfahren nach Anspruch 10, des Weiteren umfassend: Überwachen des Verkehrs zu und von der NVRAM-Schnittstelle um zu bestimmen, ob die Schnittstelle zu einem bestimmten Zeitpunkt im Wesentlichen ohne Verkehr ist.
  12. Verfahren nach Anspruch 1, des Weiteren umfassend: Ordnen eines Satzes von Transaktionen zum NVRAM auf Grundlage einer NVRAM-Ebenenstelle jeder Transaktionsstelle, wobei das Ordnen das Minimieren einer Anzahl von Ebenendurchquerungen zwischen jeder des Satzes von Transaktionen enthält.
  13. Verfahren nach Anspruch 1, wobei der NVRAM eine Phasenwechselspeicher- und Schalter (PCMS) Speichertechnologie umfasst.
  14. Vorrichtung, umfassend: eine Hardware-Steuerlogik zum Zuordnen einer ersten Menge eines nicht flüchtigen Direktzugriffsspeichers (NVRAM) in einem Computersystem, die als Arbeitsspeicher alternativ zu einem dynamischen Direktzugriffsspeicher (DRAM) verwendet wird; Zuordnen einer zweiten Menge des NVRAM, die als Datenspeicher alternativ zu einer Massendatenspeichervorrichtung verwendet wird; während des Betriebs des Computersystems, Neuzuordnen mindestens eines ersten Abschnitts der ersten NVRAM-Menge aus der alternativen Arbeitsspeicherzuordnung zur alternativen Datenspeicherzuordnung; und während des Betriebs des Computersystems, Neuzuordnen mindestens eines ersten Abschnitts der zweiten NVRAM-Menge aus der alternativen Datenspeicherzuordnung zur alternativen Arbeitsspeicherzuordnung.
  15. Vorrichtung nach Anspruch 14, wobei die Hardware-Steuerlogik des Weiteren betriebsbereit ist um: zyklisch durch die gesamte erste NVRAM-Menge in einer ersten Zeitspanne zu laufen, die von der alternativen Arbeitsspeicherzuordnung der alternativen Datenspeicherzuordnung neu zugeordnet wird, wobei das zyklische Durchlaufen ein Neuzuordnen jedes von mehreren Abschnitten, die die gesamte erste NVRAM-Menge bilden, bei jedem von mehreren Zeitsegmenten umfasst, wobei die Summe der mehreren Segmente die erste Zeitspanne umfasst.
  16. Vorrichtung nach Anspruch 14, wobei die Hardware-Steuerlogik des Weiteren betriebsbereit ist um: einen Zugriff auf mindestens eine physische Stelle im NVRAM für eine Software-Anwendung, die auf dem Computersystem läuft, durch eine Neuabbildungstabelle bereitzustellen.
  17. Vorrichtung nach Anspruch 16, wobei die Neuabbildungstabelle des Weiteren eine Arbeitsspeicherneuabbildungstabelle umfasst, wobei die Arbeitsspeicherneuabbildungstabelle mindestens eine physische Plattformadresse in eine physische NVRAM-Adresse übersetzt.
  18. Vorrichtung nach Anspruch 16, wobei die Neuabbildungstabelle des Weiteren eine Datenspeicherneuabbildungstabelle umfasst, wobei die Datenspeicherneuabbildungstabelle mindestens eine logische Blockadresse in eine physische NVRAM-Adresse übersetzt.
  19. Vorrichtung nach Anspruch 16, wobei die Neuabbildungstabelle des Weiteren eine Arbeitsspeicher- und Datenspeicherneuabbildungstabelle umfasst, wobei die Arbeitsspeicher- und Datenspeicherneuabbildungstabelle mindestens ein Bit aufweist, das mit jedem Tabelleneintrag verknüpft ist und bestimmt, ob der Tabelleneintrag einem Arbeitsspeicher- oder Datenspeicherraum zugeordnet ist.
  20. Vorrichtung nach Anspruch 14, des Weiteren umfassend: eine Schreib-Puffer-Management-Hardware-Logik zum Bestimmen für jede Seite von mehreren physischen NVRAM-Seiten, ob jede physische NVRAM-Seite zum Beschreiben frei ist, wobei eine bestimmte physische NVRAM-Seite zum Beschreiben frei ist, wenn die bestimmte physische NVRAM-Seite gegenwärtig keine gültigen Daten enthält.
  21. Vorrichtung nach Anspruch 20, wobei die Schreib-Puffer-Management-Hardware-Logik des Weiteren betriebsbereit ist um: für jede freie physische NVRAM-Seite der mehreren physischen NVRAM-Seiten zu bestimmen, ob jede freie physische NVRAM-Seite rein ist, wobei eine bestimmte freie physische NVRAM-Seite rein ist, wenn alle gespeicherten Bits in der bestimmten freien physischen NVRAM-Seite auf eins gesetzt sind.
  22. Vorrichtung nach Anspruch 21, wobei die Schreib-Puffer-Management-Hardware-Logik des Weiteren betriebsbereit ist um: mindestens eine freie physische NVRAM-Seite von den mehreren physischen NVRAM-Seiten zu reinigen, wobei mindestens eine zu reinigende freie physische NVRAM-Seite eine Seite des physischen NVRAM mit mindestens einem gespeicherten Bit umfasst, das auf null gesetzt ist.
  23. Vorrichtung nach Anspruch 20, wobei die Schreib-Puffer-Management-Hardware-Logik des Weiteren betriebsbereit ist um: einen Anfragesteller bereitzustellen, wobei der Anfragesteller anfragt, in eine Seite des NVRAM eine von mehreren freien physischen NVRAM-Seiten, die nicht gereinigt wurde, zu schreiben, wenn eine Schnittstelle zum NVRAM im Wesentlichen im Leerlauf ist; und dem Anfragesteller eine von mehreren freien physischen NVRAM-Seiten bereitzustellen, die gereinigt wurde, wenn die Schnittstelle zum NVRAM im Wesentlichen nicht im Leerlauf ist.
  24. Vorrichtung nach Anspruch 23, des Weiteren umfassend: eine Arbeitsspeicherverkehrsüberwachungs-Hardware-Logik zum Überwachen des Verkehrs zu und von der NVRAM-Schnittstelle um zu bestimmen, ob die Schnittstelle im Wesentlichen zu einem bestimmten Zeitpunkt ohne Verkehr ist.
  25. Vorrichtung nach Anspruch 14, des Weiteren umfassend: Ordnen eines Satzes von Transaktionen zum NVRAM auf Grundlage einer NVRAM Ebenenstelle jeder Transaktionsstelle, wobei das Ordnen das Minimieren einer Anzahl von Ebenendurchquerungen zwischen jeder des Satzes von Transaktionen umfasst.
  26. Vorrichtung nach Anspruch 14, wobei der NVRAM eine Phasenwechselspeicher- und Schalter-(PCMS)Speichertechnologie umfasst.
  27. System, umfassend: einen nicht flüchtigen Direktzugriffsspeicher (NVRAM); einen dynamischen Direktzugriffsspeicher (DRAM); und eine Hardware-Steuerlogik zum Zuordnen einer ersten Menge des NVRAM in einem Computersystem, die als Arbeitsspeicher alternativ zum DRAM verwendet wird; Zuordnen einer zweiten Menge des NVRAM, die als Datenspeicher alternativ zu einer Massendatenspeichervorrichtung verwendet wird; während des Betriebs des Computersystems, Neuzuordnen mindestens eines ersten Abschnitts der ersten NVRAM-Menge aus der alternativen Arbeitsspeicherzuordnung zur alternativen Datenspeicherzuordnung; und während des Betriebs des Computersystems, Neuzuordnen mindestens eines ersten Abschnitts der zweiten NVRAM-Menge aus der alternativen Datenspeicherzuordnung zur alternativen Arbeitsspeicherzuordnung.
  28. System nach Anspruch 27, wobei die Hardware-Steuerlogik des Weiteren betriebsbereit ist um: zyklisch durch die gesamte erste NVRAM-Menge in einer ersten Zeitspanne zu laufen, die von der alternativen Arbeitsspeicherzuordnung der alternativen Datenspeicherzuordnung neu zugeordnet wird, wobei das zyklische Durchlaufen ein Neuzuordnen jedes von mehreren Abschnitten, die die gesamte erste NVRAM-Menge bilden, bei jedem von mehreren Zeitsegmenten umfasst, wobei die Summe der mehreren Segmente die erste Zeitspanne umfasst.
  29. System nach Anspruch 27, wobei die Hardware-Steuerlogik des Weiteren betriebsbereit ist um: einen Zugriff auf mindestens eine physische Stelle im NVRAM für eine Software-Anwendung, die auf dem Computersystem läuft, durch eine Neuabbildungstabelle bereitzustellen.
  30. System nach Anspruch 29, wobei die Neuabbildungstabelle des Weiteren eine Arbeitsspeicherneuabbildungstabelle umfasst, wobei die Arbeitsspeicherneuabbildungstabelle mindestens eine physische Plattformadresse in eine physische NVRAM-Adresse übersetzt.
  31. System nach Anspruch 29, wobei die Neuabbildungstabelle des Weiteren eine Datenspeicherneuabbildungstabelle umfasst, wobei die Datenspeicherneuabbildungstabelle mindestens eine logische Blockadresse in eine physische NVRAM-Adresse übersetzt.
  32. System nach Anspruch 29, wobei die Neuabbildungstabelle des Weiteren eine Arbeitsspeicher- und Datenspeicherneuabbildungstabelle umfasst, wobei die Arbeitsspeicher- und Datenspeicherneuabbildungstabelle mindestens ein Bit aufweist, das mit jedem Tabelleneintrag verknüpft ist und bestimmt, ob der Tabelleneintrag einem Arbeitsspeicher- oder Datenspeicherraum zugeordnet ist.
  33. System nach Anspruch 27, des Weiteren umfassend: eine Schreib-Puffer-Management-Hardware-Logik zum Bestimmen für jede Seite von mehreren physischen NVRAM-Seiten, ob jede physische NVRAM-Seite zum Beschreiben frei ist, wobei eine bestimmte physische NVRAM-Seite zum Beschreiben frei ist, wenn die bestimmte physische NVRAM-Seite gegenwärtig keine gültigen Daten enthält.
  34. System nach Anspruch 33, wobei die Schreib-Puffer-Management-Hardware-Logik des Weiteren betriebsbereit ist um: für jede freie physische NVRAM-Seite der mehreren physischen NVRAM-Seiten zu bestimmen, ob jede freie physische NVRAM-Seite rein ist, wobei eine bestimmte freie physische NVRAM-Seite rein ist, wenn alle gespeicherten Bits in der bestimmten freien physischen NVRAM-Seite auf eins gesetzt sind.
  35. System nach Anspruch 34, wobei die Schreib-Puffer-Management-Hardware-Logik des Weiteren betriebsbereit ist um: mindestens eine freie physische NVRAM-Seite von den mehreren physischen NVRAM-Seiten zu reinigen, wobei mindestens eine zu reinigende freie physische NVRAM-Seite eine Seite des physischen NVRAM mit mindestens mit einem gespeicherten Bit umfasst, das auf null gesetzt ist.
  36. System nach Anspruch 33, wobei die Schreib-Puffer-Management-Hardware-Logik des Weiteren betriebsbereit ist um: einen Anfragesteller bereitzustellen, wobei der Anfragesteller anfragt, in eine Seite des NVRAM eine von mehreren freien physischen NVRAM-Seiten, die nicht gereinigt wurde, zu schreiben, wenn eine Schnittstelle zum NVRAM im Wesentlichen im Leerlauf ist; und dem Anfragesteller eine von mehreren freien physischen NVRAM-Seiten bereitzustellen, die gereinigt wurde, wenn die Schnittstelle zum NVRAM im Wesentlichen nicht im Leerlauf ist.
  37. System nach Anspruch 36, des Weiteren umfassend: eine Arbeitsspeicherverkehrsüberwachungs-Hardware-Logik zum Überwachen des Verkehrs zu und von der NVRAM-Schnittstelle um zu bestimmen, ob die Schnittstelle im Wesentlichen zu einem bestimmten Zeitpunkt ohne Verkehr ist.
  38. System nach Anspruch 27, des Weiteren umfassend: Ordnen eines Satzes von Transaktionen zum NVRAM auf Grundlage einer NVRAM Ebenenstelle jeder Transaktionsstelle, wobei das Ordnen das Minimieren einer Anzahl von Ebenendurchquerungen zwischen jeder des Satzes von Transaktionen umfasst.
  39. System nach Anspruch 27, wobei der NVRAM eine Phasenwechselspeicher- und Schalter (PCMS) Speichertechnologie umfasst.
DE112011106078.5T 2011-12-29 2011-12-29 Verfahren, Vorrichtung und System zur Implementierung eines mehrstufigen Arbeitsspeichers mit Direktzugriff Active DE112011106078B4 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067824 WO2013101050A1 (en) 2011-12-29 2011-12-29 Multi-level memory with direct access

Publications (2)

Publication Number Publication Date
DE112011106078T5 true DE112011106078T5 (de) 2014-12-04
DE112011106078B4 DE112011106078B4 (de) 2021-01-28

Family

ID=48698287

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112011106078.5T Active DE112011106078B4 (de) 2011-12-29 2011-12-29 Verfahren, Vorrichtung und System zur Implementierung eines mehrstufigen Arbeitsspeichers mit Direktzugriff

Country Status (7)

Country Link
US (5) US9190124B2 (de)
KR (3) KR101692417B1 (de)
CN (2) CN104011690B (de)
DE (1) DE112011106078B4 (de)
GB (1) GB2510763B (de)
TW (1) TWI585584B (de)
WO (1) WO2013101050A1 (de)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9703706B2 (en) 2011-02-28 2017-07-11 Oracle International Corporation Universal cache management system
CN104106057B (zh) * 2011-12-13 2018-03-30 英特尔公司 用非易失性随机存取存储器提供对休眠状态转变的即时响应的方法和系统
GB2510763B (en) 2011-12-29 2020-05-20 Intel Corp Multi-level memory with direct access
CN103514110B (zh) * 2012-06-20 2016-08-24 华为技术有限公司 非易失性存储设备的缓存管理方法及装置
US10303618B2 (en) * 2012-09-25 2019-05-28 International Business Machines Corporation Power savings via dynamic page type selection
WO2014092698A1 (en) * 2012-12-11 2014-06-19 Hewlett-Packard Development Company Application server to nvram path
US10514855B2 (en) * 2012-12-19 2019-12-24 Hewlett Packard Enterprise Development Lp NVRAM path selection
US9280497B2 (en) * 2012-12-21 2016-03-08 Dell Products Lp Systems and methods for support of non-volatile memory on a DDR memory channel
KR20140123203A (ko) * 2013-04-11 2014-10-22 삼성전자주식회사 메모리 시스템
US9678689B2 (en) * 2013-05-29 2017-06-13 Microsoft Technology Licensing, Llc Storage systems and aliased memory
US9552370B1 (en) * 2013-06-27 2017-01-24 EMC IP Holding Company LLC Signaling impending out of storage condition from a virtual tape drive
US9250999B1 (en) * 2013-11-19 2016-02-02 Google Inc. Non-volatile random access memory in computer primary memory
US9292380B2 (en) * 2014-04-06 2016-03-22 Freescale Semiconductor,Inc. Memory access scheme for system on chip
JP6265041B2 (ja) * 2014-05-15 2018-01-24 富士通株式会社 コンパイルプログラム、コンパイル方法およびコンパイル装置
US9892079B2 (en) * 2014-07-25 2018-02-13 Rajiv Ganth Unified converged network, storage and compute system
WO2016013024A1 (en) * 2014-07-25 2016-01-28 StorNetware Systems Pvt. Ltd. Unified converged network, storage and computer system
US20160224252A1 (en) * 2015-01-30 2016-08-04 Intel Corporation Hybrid memory architecture
US9652157B2 (en) 2015-03-19 2017-05-16 International Business Machines Corporation Accelerated non-volatile memory recirculation processing
US9582430B2 (en) * 2015-03-27 2017-02-28 Intel Corporation Asymmetric set combined cache
US10157008B2 (en) * 2015-04-29 2018-12-18 Qualcomm Incorporated Systems and methods for optimizing memory power consumption in a heterogeneous system memory
US10025747B2 (en) * 2015-05-07 2018-07-17 Samsung Electronics Co., Ltd. I/O channel scrambling/ECC disassociated communication protocol
US11829349B2 (en) 2015-05-11 2023-11-28 Oracle International Corporation Direct-connect functionality in a distributed database grid
US10459847B1 (en) 2015-07-01 2019-10-29 Google Llc Non-volatile memory device application programming interface
US9971550B2 (en) 2015-11-12 2018-05-15 International Business Machines Corporation Zero copy support by the virtual memory manager
US9928168B2 (en) * 2016-01-11 2018-03-27 Qualcomm Incorporated Non-volatile random access system memory with DRAM program caching
US10146704B2 (en) * 2016-02-16 2018-12-04 Dell Products L.P. Volatile/non-volatile memory device access provisioning system
US20170255565A1 (en) * 2016-03-02 2017-09-07 Intel Corporation Method and apparatus for providing a contiguously addressable memory region by remapping an address space
US10175903B2 (en) 2016-03-31 2019-01-08 Intel Corporation N plane to 2N plane interface in a solid state drive (SSD) architecture
US9965017B2 (en) 2016-04-12 2018-05-08 International Business Machines Corporation System and method for conserving energy in non-volatile dual inline memory modules
US20170371785A1 (en) * 2016-06-28 2017-12-28 Intel Corporation Techniques for Write Commands to a Storage Device
US10025714B2 (en) * 2016-09-30 2018-07-17 Super Micro Computer, Inc. Memory type range register with write-back cache strategy for NVDIMM memory locations
US10162522B1 (en) * 2016-09-30 2018-12-25 Cadence Design Systems, Inc. Architecture of single channel memory controller to support high bandwidth memory of pseudo channel mode or legacy mode
KR20180055297A (ko) 2016-11-16 2018-05-25 삼성전자주식회사 언맵 리드를 수행하는 메모리 장치 및 메모리 시스템
TWI596541B (zh) * 2016-11-30 2017-08-21 財團法人工業技術研究院 資料存取系統、資料存取裝置及資料存取方法
TWI643067B (zh) * 2017-04-14 2018-12-01 國立臺灣科技大學 三維非及閘快閃記憶體及其記憶體管理方法
US10963780B2 (en) 2017-08-24 2021-03-30 Google Llc Yield improvements for three-dimensionally stacked neural network accelerators
US10719446B2 (en) * 2017-08-31 2020-07-21 Oracle International Corporation Directly mapped buffer cache on non-volatile memory
US11029863B2 (en) * 2017-08-31 2021-06-08 Vmware, Inc. Using non-volatile random access memory as volatile random access memory
US11327887B2 (en) 2017-09-14 2022-05-10 Oracle International Corporation Server-side extension of client-side caches
US10552077B2 (en) * 2017-09-29 2020-02-04 Apple Inc. Techniques for managing partitions on a storage device
US10802766B2 (en) 2017-09-29 2020-10-13 Oracle International Corporation Database with NVDIMM as persistent storage
KR102631380B1 (ko) 2018-05-17 2024-02-01 에스케이하이닉스 주식회사 데이터 연산을 수행할 수 있는 다양한 메모리 장치를 포함하는 반도체 시스템
US10725690B2 (en) * 2018-05-18 2020-07-28 Intel Corporation Non-volatile memory cloning with hardware copy-on-write support
US10698637B2 (en) 2018-07-03 2020-06-30 Oracle International Corporation Stale block resynchronization in NVM based systems
US10831666B2 (en) 2018-10-05 2020-11-10 Oracle International Corporation Secondary storage server caching
US11334445B2 (en) 2018-10-19 2022-05-17 Oracle International Corporation Using non-volatile memory to improve the availability of an in-memory database
TWI705372B (zh) * 2018-12-26 2020-09-21 旺宏電子股份有限公司 快閃記憶體裝置及其控制方法
CN111913647B (zh) * 2019-05-08 2022-10-11 华为技术有限公司 一种存储设备的磨损均衡方法、装置及相关设备
US11281578B2 (en) 2019-08-20 2022-03-22 Micron Technology, Inc. Garbage collection in a memory sub-system during a low battery state
US11726869B2 (en) 2019-08-20 2023-08-15 Micron Technology, Inc. Performing error control operation on memory component for garbage collection
US11281392B2 (en) 2019-08-28 2022-03-22 Micron Technology, Inc. Garbage collection in a memory component using an adjusted parameter
US11036412B2 (en) 2019-09-27 2021-06-15 Intel Corporation Dynamically changing between latency-focused read operation and bandwidth-focused read operation
JP2022551627A (ja) * 2019-10-09 2022-12-12 マイクロン テクノロジー,インク. 自己適応型ウェアレベリングの方法及びアルゴリズム
CN111104062B (zh) * 2019-11-22 2023-05-02 中科寒武纪科技股份有限公司 存储管理方法、装置和存储介质
US11474941B2 (en) 2020-03-09 2022-10-18 International Business Machines Corporation Using multi-tiered cache to satisfy input/output requests
CN112380150B (zh) * 2020-11-12 2022-09-27 上海壁仞智能科技有限公司 计算装置以及用于加载或更新数据的方法
US11922055B2 (en) 2021-04-28 2024-03-05 Seagate Technology Llc Stack register having different ferroelectric memory element constructions
US11556259B1 (en) * 2021-09-02 2023-01-17 Micron Technology, Inc. Emulating memory sub-systems that have different performance characteristics
KR20230050012A (ko) * 2021-10-07 2023-04-14 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
KR102579320B1 (ko) * 2023-04-19 2023-09-18 메티스엑스 주식회사 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3197815B2 (ja) * 1996-04-15 2001-08-13 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 半導体メモリ装置及びその制御方法
GB9826044D0 (en) 1998-11-28 1999-01-20 Koninkl Philips Electronics Nv Receiver for DS-CDMA signals
DE19928057B4 (de) * 1999-06-15 2005-11-10 Francotyp-Postalia Ag & Co. Kg Sicherheitsmodul und Verfahren zur Sicherung der Postregister vor Manipulation
KR100582357B1 (ko) * 2003-12-29 2006-05-22 주식회사 하이닉스반도체 로우디코딩을 효율적으로 할 수 있는 태그블럭을 구비하는반도체 메모리 장치
CN101065807A (zh) * 2004-07-28 2007-10-31 柰米闪芯积体电路有限公司 整合传统式静态随机存储器与闪存单元的新式非易失性静态随机存储器内存单元结构
US7279380B2 (en) 2004-11-10 2007-10-09 Macronix International Co., Ltd. Method of forming a chalcogenide memory cell having an ultrasmall cross-sectional area and a chalcogenide memory cell produced by the method
US8135936B2 (en) * 2009-12-23 2012-03-13 Intel Corporation Adaptive address mapping with dynamic runtime memory mapping selection
KR20080018704A (ko) * 2006-08-25 2008-02-28 삼성전자주식회사 교반장치, 이 교반장치를 구비하는 현상장치 및화상형성장치
US7870363B2 (en) 2007-12-28 2011-01-11 Intel Corporation Methods and arrangements to remap non-volatile storage
KR20100013824A (ko) * 2008-08-01 2010-02-10 주식회사 하이닉스반도체 고속 동작하는 반도체 스토리지 시스템
CN101458613B (zh) * 2008-12-31 2011-04-20 成都市华为赛门铁克科技有限公司 一种混合分级阵列的实现方法、混合分级阵列和存储系统
US8195891B2 (en) * 2009-03-30 2012-06-05 Intel Corporation Techniques to perform power fail-safe caching without atomic metadata
US7898859B2 (en) * 2009-06-15 2011-03-01 Micron Technology, Inc. Use of emerging non-volatile memory elements with flash memory
US8688894B2 (en) * 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
CN102135891B (zh) * 2010-01-21 2013-06-26 杭州华三通信技术有限公司 可实现引导启动的系统及引导启动控制装置和方法
US9015268B2 (en) 2010-04-02 2015-04-21 Intel Corporation Remote direct storage access
US20130024602A1 (en) * 2011-07-18 2013-01-24 Dell Products L.P. Universal Storage for Information Handling Systems
GB2510763B (en) 2011-12-29 2020-05-20 Intel Corp Multi-level memory with direct access
US8743820B2 (en) 2012-05-30 2014-06-03 Intel Corporation PUCCH resource allocation with enhanced PDCCH

Also Published As

Publication number Publication date
KR20140091605A (ko) 2014-07-21
KR20170003730A (ko) 2017-01-09
TW201342053A (zh) 2013-10-16
KR101767359B1 (ko) 2017-08-10
KR101692417B1 (ko) 2017-01-05
CN104011690B (zh) 2016-11-09
US20170075616A1 (en) 2017-03-16
KR20160068989A (ko) 2016-06-15
DE112011106078B4 (de) 2021-01-28
US10241710B2 (en) 2019-03-26
GB2510763A (en) 2014-08-13
KR101628929B1 (ko) 2016-06-21
CN107092561B (zh) 2021-03-12
US20160110106A1 (en) 2016-04-21
US20170337009A1 (en) 2017-11-23
GB201408844D0 (en) 2014-07-02
CN104011690A (zh) 2014-08-27
US9703502B2 (en) 2017-07-11
CN107092561A (zh) 2017-08-25
US20190286356A1 (en) 2019-09-19
US9430151B2 (en) 2016-08-30
US9190124B2 (en) 2015-11-17
WO2013101050A1 (en) 2013-07-04
GB2510763B (en) 2020-05-20
TWI585584B (zh) 2017-06-01
US20130339572A1 (en) 2013-12-19
US10817201B2 (en) 2020-10-27

Similar Documents

Publication Publication Date Title
DE112011106078B4 (de) Verfahren, Vorrichtung und System zur Implementierung eines mehrstufigen Arbeitsspeichers mit Direktzugriff
US9852069B2 (en) RAM disk using non-volatile random access memory
DE102011076894B4 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE112011106060T5 (de) Verfahren und Vorrichtung zum Verteilen von Code- und Datenspeicherungen zwischen flüchtigem und nichtflüchtigem Speicher
DE112020005060T5 (de) Ratengrenze für den übergang von zonen zum öffnen
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE112011106032T5 (de) Energieeinsparung durch Speicherkanal-Abschaltung
DE112011106013T5 (de) System und Verfahren für den intelligenten Datentransfer von einem Prozessor in ein Speicheruntersystem
DE112011105984T5 (de) Dynamische teilweise Abschaltung eines arbeitsspeicherseitigen Zwischenspeichers in einer Arbeitsspeicherhierarchie auf zwei Ebenen
DE102015012566A1 (de) Mehrlagenkonzept für logische speicherungsverwaltung
DE102021115626A1 (de) Datenaggregation in zns-laufwerk
DE112020000183T5 (de) Speicherungsklassenspeicherzugriff
DE102019112291A1 (de) Verbessertes speicherungsmodell für ein computersystem mit persistentem systemspeicher
DE102022129936A1 (de) Techniken zur Erweiterung des Systemspeichers durch Nutzung des verfügbaren Gerätespeichers
DE102021117355A1 (de) SSD-verwaltete Host-Schreib-Atomizität mit beliebiger Übertragungslänge
DE102023124272A1 (de) Speichererweiterung mit persistentem prädiktivem Prefetching
DE112022002601T5 (de) In-kernel-caching für verteilten cache
DE102023201085A1 (de) Arbeitsspeicheradresszuweisung und cache-abbildung, um daten im cache zu halten
DE102023134057A1 (de) Adressabbildungen für direktzugriffsoperationen
DE102020130530A1 (de) Nvram-systemspeicher mit speicherseitigem cache, der beschriebene posten favorisiert und/oder regionen mit angepassten temperaturinduzierten geschwindigkeitseinstellungen enthält
DE102024100579A1 (de) Lesepufferzuteilungsabgleichung zwischen mehreren speicherchips

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final