DE112011105984T5 - Dynamische teilweise Abschaltung eines arbeitsspeicherseitigen Zwischenspeichers in einer Arbeitsspeicherhierarchie auf zwei Ebenen - Google Patents

Dynamische teilweise Abschaltung eines arbeitsspeicherseitigen Zwischenspeichers in einer Arbeitsspeicherhierarchie auf zwei Ebenen Download PDF

Info

Publication number
DE112011105984T5
DE112011105984T5 DE112011105984.1T DE112011105984T DE112011105984T5 DE 112011105984 T5 DE112011105984 T5 DE 112011105984T5 DE 112011105984 T DE112011105984 T DE 112011105984T DE 112011105984 T5 DE112011105984 T5 DE 112011105984T5
Authority
DE
Germany
Prior art keywords
memory
msc
pcm
cache
address
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.)
Pending
Application number
DE112011105984.1T
Other languages
English (en)
Inventor
Raj K. Ramanujan
Glenn J. Hinton
David J. Zimmerman
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 DE112011105984T5 publication Critical patent/DE112011105984T5/de
Pending legal-status Critical Current

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/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/30Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3225Monitoring of peripheral devices of memory devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache 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/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • G06F2212/6082Way prediction in set-associative cache
    • 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

Abstract

Es werden ein System und ein Verfahren zum Entleeren eines vorgegebenen Bereichs eines arbeitsspeicherseitigen Zwischenspeichers (MSC) in einer Arbeitsspeicherhierarchie auf mehreren Ebenen beschrieben. Beispielsweise umfasst ein Computersystem nach einer Ausführungsform: ein Arbeitsspeicher-Teilsystem, das aus einem nicht flüchtigen Systemspeicher und einem flüchtigen arbeitsspeicherseitigen Zwischenspeicher (MSC) zum Zwischenspeichern von Teilen des nicht flüchtigen Systemspeichers besteht; und eine Entleerungs-Engine zum Entleeren eines vorgegebenen Bereichs des MSC in den nicht flüchtigen Systemspeicher als Reaktion auf einen Deaktivierungszustand, der mit dem vorgegebenen Bereich des MSC verknüpft ist.

Description

  • HINTERGRUND
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft im Allgemeinen das Gebiet der Computersysteme. Genauer gesagt betrifft die Erfindung ein Gerät und Verfahren zum Umsetzen einer Arbeitsspeicherhierarchie auf mehreren Ebenen.
  • Allgemeiner Stand der Technik
  • A. Derzeitige Arbeitsspeicher- und Speicherplatz-Konfigurationen
  • Einer der einschränkenden Faktoren der Computerinnovation ist heutzutage die Arbeitsspeicher- und Speicherplatz-Technologie. Bei herkömmlichen Computersystemen, wird der Systemspeicher (auch als Hauptspeicher, Primärspeicher, ausführbarer Speicher bezeichnet) typischerweise als dynamischer Arbeitsspeicher (DRAM) umgesetzt. Der Arbeitsspeicher auf DRAM-Basis verbraucht Strom, auch wenn keine Lese- oder Schreibvorgänge im Arbeitsspeicher erfolgen, weil er ständig interne Kondensatoren wiederaufladen muss. Der DRAM-basierte Arbeitsspeicher ist flüchtig, was bedeutet, dass im DRAM-Arbeitsspeicher gespeicherte Daten verloren gehen, sobald der Strom ausgeschaltet wird. Herkömmliche Computersysteme beruhen auch auf mehreren Ebenen der Zwischenspeicherung, um die Leistung zu verbessern. Ein Zwischenspeicher ist ein schneller Arbeitsspeicher, der zwischen dem Prozessor und dem Systemspeicher positioniert ist, um Arbeitsspeicher-Zugriffsanfragen schneller zu bedienen als sie von dem Systemspeicher bedient werden könnten. Derartige Zwischenspeicher werden typischerweise mit einem statischen Arbeitsspeicher (SRAM) umgesetzt. Es können Protokolle zur Handhabung von Zwischenspeichern verwendet werden, um sicherzustellen, dass die Daten und Anweisungen, auf die am häufigsten zugegriffen wird, innerhalb einer der Ebenen des Zwischenspeichers abgelegt werden, wodurch sich die Anzahl der Arbeitsspeicher-Zugriffstransaktionen reduziert und sich die Leistung verbessert.
  • Mit Bezug auf den Massenspeicherplatz (der auch als sekundärer Speicher oder Plattenspeicher bezeichnet wird), umfassen herkömmliche Massenspeicherplatzvorrichtungen typischerweise magnetische Medien (z. B. Festplattenlaufwerke), optische Medien (z. B. CD-(„Compact Disc”)Laufwerke, DVD-(„Digital Versatile Disc”)Laufwerke usw.), holografische Medien und/oder Massenspeicher-Flash-Arbeitsspeicher (z. B. Halbleiterlaufwerke (SSD), Flash-Wechsellaufwerke usw.). Im Allgemeinen werden diese Speicherplatzvorrichtungen als Ein-/Ausgangs-(I/O)Vorrichtungen angesehen, weil der Prozessor darauf über diverse I/O-Adapter zugreift, die diverse I/O-Protokolle umsetzen. Diese I/O-Adapter und I/O-Protokolle verbrauchen eine erhebliche Menge Strom und können eine erhebliche Auswirkung auf die Fläche und den Formfaktor der Plattform haben. Tragbare oder mobile Vorrichtungen (z. B. Laptop-Computer, Netbook-Computer, Tablet-Computer, persönliche digitale Assistenten (PDA), tragbare Medienabspielgeräte, tragbare Spielgeräte, Digitalkameras, Handys, Smartphones, Feature-Phones usw.), die eine begrenzte Batteriedauer aufweisen, wenn sie nicht an eine Dauerstromversorgung angeschlossen sind, können abnehmbare Massenspeichervorrichtungen (z. B. eine integrierte Multimediakarte (eMMC), eine sichere Digital-(SD)Karte) aufweisen, die typischerweise über Zusammenschaltungen mit geringem Stromverbrauch und I/O-Controller mit dem Prozessor gekoppelt sind, um aktiven und inaktiven Strombudgets gerecht zu werden.
  • Mit Bezug auf Firmware-Arbeitsspeicher (wie etwa Boot-Arbeitsspeicher (auch als BIOS-Flash bezeichnet)) verwendet ein herkömmliches Computersystem typischerweise Flash-Arbeitsspeichervorrichtungen, um persistente Systeminformationen abzulegen, die häufig gelesen, aber selten (oder gar nicht) überschrieben werden. Beispielsweise werden die Anfangsanweisungen, die von einem Prozessor ausgeführt werden, um Hauptsystemkomponenten während eines Boot-Prozesses (BIOS-(„Basic Input and Output System”)Bilder) zu initialisieren, typischerweise in einer Flash-Arbeitsspeichervorrichtung abgelegt. Die Flash-Arbeitsspeichervorrichtungen, die derzeit im Handel erhältlich sind, verfügen im Allgemeinen über eine begrenzte Geschwindigkeit (z. B. 50 MHz). Diese Geschwindigkeit wird durch den Aufwand für Leseprotokolle (z. B. 2,5 MHz) weiter reduziert. Um die BIOS-Ausführungsgeschwindigkeit zu erhöhen, speichern herkömmliche Prozessoren im Allgemeinen einen Teil des BIOS-Codes während der PEI-(„Pre-Extensible Firmware Interface”)Phase des Boot-Prozesses zwischen. Die Größe des Prozessorzwischenspeichers ist eine Einschränkung für die Größe des BIOS-Codes, der in der PEI-Phase verwendet wird (auch als „PEI-BIOS-Code” bezeichnet).
  • B. Phasenwechselspeicher (PCM) und verwandte Technologien
  • Ein Phasenwechselspeicher (PCM), der manchmal auch als wahlfreier Phasenwechsel-Zugriffsspeicher (PRAM oder PCRAM), PCME, Ovonik-Einheitsspeicher oder Chalkogenid-RAM (C-RAM) bezeichnet wird, ist eine Art von nicht flüchtigem Computerarbeitsspeicher, der das einzigartige Verhalten von Chalkogenidglas nutzt. Auf Grund von Wärme, die durch den Durchgang eines elektrischen Stroms erzeugt wird, kann Chalkogenidglas zwischen zwei Zuständen umgeschaltet werden: kristallin und amorph. Neuere Versionen des PCM können zwei zusätzliche unterschiedliche Zustände erreichen.
  • Ein PCM bietet eine bessere Leistung als Flash, weil das Speicherelement des PCM schneller umgeschaltet werden kann, das Schreiben (Ändern einzelner Bits auf 1 oder 0) erfolgen kann, ohne zuerst einen ganzen Zellenblock zu löschen, und die Verschlechterung der Schreibvorgänge langsamer erfolgt (eine PCM-Vorrichtung kann ungefähr 100 Millionen Schreibzyklen überstehen; die PCM-Verschlechterung ist auf die Wärmeausdehnung während des Programmierens, die Migration von Metall (und anderen Materialien) und andere Mechanismen zurückzuführen).
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die nachstehende Beschreibung und die beiliegenden Zeichnungen werden verwendet, um Ausführungsformen der Erfindung zu erläutern. Es zeigen:
  • 1 eine Zwischenspeicher- und Systemspeicher-Anordnung gemäß den Ausführungsformen der Erfindung;
  • 2 eine Arbeitsspeicher- und Speicherplatz-Hierarchie, die bei den Ausführungsformen der Erfindung verwendet wird;
  • 3 ein Computersystem, bei dem Ausführungsformen der Erfindung umgesetzt werden können;
  • 4A eine erste Systemarchitektur, die einen PCM umfasst, gemäß den Ausführungsformen der Erfindung;
  • 4B eine zweite Systemarchitektur, die einen PCM umfasst, gemäß den Ausführungsformen der Erfindung;
  • 4C eine dritte Systemarchitektur, die einen PCM umfasst, gemäß den Ausführungsformen der Erfindung;
  • 4D eine vierte Systemarchitektur, die einen PCM umfasst, gemäß den Ausführungsformen der Erfindung;
  • 4E eine fünfte Systemarchitektur, die einen PCM umfasst, gemäß den Ausführungsformen der Erfindung;
  • 4F eine sechste Systemarchitektur, die einen PCM umfasst, gemäß den Ausführungsformen der Erfindung;
  • 4G eine siebte Systemarchitektur, die einen PCM umfasst, gemäß den Ausführungsformen der Erfindung;
  • 4H eine achte Systemarchitektur, die einen PCM umfasst, gemäß den Ausführungsformen der Erfindung;
  • 4I eine neunte Systemarchitektur, die einen PCM umfasst, gemäß den Ausführungsformen der Erfindung;
  • 4J eine zehnte Systemarchitektur, die einen PCM umfasst, gemäß den Ausführungsformen der Erfindung;
  • 4K eine elfte Systemarchitektur, die einen PCM umfasst, gemäß den Ausführungsformen der Erfindung;
  • 4L eine zwölfte Systemarchitektur, die einen PCM umfasst, gemäß den Ausführungsformen der Erfindung; und
  • 4M eine dreizehnte Systemarchitektur, die einen PCM umfasst, gemäß den Ausführungsformen der Erfindung.
  • 7A und B Ausführungsformen der Erfindung zum Deaktivieren von Bereichen eines MSC.
  • 7A und B Ausführungsformen der Erfindung zum Deaktivieren von Bereichen eines MSC.
  • 8A und B Ausführungsformen der Erfindung zum Entleeren eines MSC als Reaktion auf einen Stromausfallzustand.
  • 9A und B Ausführungsformen der Erfindung zum Entleeren veränderter Zwischenspeicherzeilen aus einem MSC als Reaktion auf einen Ruhezustand.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der nachstehenden Beschreibung werden zahlreiche spezifische Einzelheiten dargelegt, wie etwa logische Umsetzungen, Maschinenbefehle, Mittel zum Vorgeben von Operanden, Umsetzungen zum Zerlegen/Teilen/Duplizieren von Ressourcen, Typen und Zusammenhänge von Systemkomponenten und logische Zerlegungs-/Integrierungsalternativen, um ein weitergehendes Verständnis der vorliegenden Erfindung bereitzustellen. Der Fachmann wird jedoch verstehen, dass die Erfindung ohne diese spezifischen Einzelheiten in die Praxis umgesetzt werden kann. In anderen Fällen wurden Steuerstrukturen, Schaltungen auf Gatterebene und vollständige Software-Anweisungssequenzen nicht ausführlich gezeigt, um die Erfindung nicht zu verschleiern. Der Fachmann auf diesem Gebiet wird mit den beiliegenden Beschreibungen in der Lage sein, die angemessene Funktion ohne unnötige Experimente umzusetzen.
  • Bezugnahmen in der Beschreibung auf „eine einzige Ausführungsform”, „eine Ausführungsform”, „ein Ausführungsbeispiel” usw. geben an, dass die beschriebene Ausführungsform ein bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes Kennzeichen umfassen kann, dass jedoch nicht jede Ausführungsform unbedingt dieses bestimmte Merkmal, diese bestimmte Struktur oder dieses bestimmte Kennzeichen umfassen muss. Des Weiteren beziehen sich derartige Redewendungen nicht unbedingt auf die gleiche Ausführungsform. Wenn ferner ein bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes Kennzeichen in Verbindung mit einer Ausführungsform beschrieben wird, geht man davon aus, dass es zum Wissen des Fachmanns gehört, ein derartiges Merkmal, eine derartige Struktur oder ein derartiges Kennzeichen in Verbindung mit anderen Ausführungsformen auszuführen, und zwar unabhängig davon, ob sie ausdrücklich beschrieben werden oder nicht.
  • In der nachstehenden Beschreibung und den Ansprüchen können die Begriffe „gekoppelt” und „angeschlossen” zusammen mit ihren Ableitungen verwendet werden. Es versteht sich, dass diese Begriffe nicht als Synonyme füreinander gedacht sind. „Gekoppelt” wird verwendet, um anzugeben, dass zwei oder mehrere Elemente, die in direktem physischen oder elektrischen Kontakt miteinander stehen können, miteinander zusammenwirken oder interagieren. „Angeschlossen” wird verwendet, um die Herstellung einer Kommunikation zwischen zwei oder mehreren Elementen, die miteinander gekoppelt sind, anzugeben.
  • Text in Klammern und Blöcke mit gestrichelter Umrandung (z. B. lange Striche, kurze Striche, Strichpunkte, Punkte) werden hier gelegentlich verwendet, um optionale Vorgänge/Komponenten zu erläutern, die zusätzliche Merkmale zu den Ausführungsformen der Erfindung hinzufügen. Eine derartige Notierung soll jedoch nicht bedeuten, dass es sich dabei um die einzigen Optionen oder optionalen Vorgänge/Komponenten handelt und/oder dass Blöcke mit durchgehenden Umrandungen bei gewissen Ausführungsformen der Erfindung nicht optional sind.
  • EINLEITUNG
  • Die Anforderungen an die Kapazität und Leistung von Arbeitsspeichern steigen mit der zunehmenden Anzahl von Prozessorkernen und neuen Nutzungsmodellen, wie etwa der Virtualisierung, weiter an. Zusätzlich sind Strom und Kosten für Arbeitsspeicher zu einer bedeutenden Komponente jeweils des Gesamtstroms und der Gesamtkosten von elektronischen Systemen geworden.
  • Einige Ausführungsformen der Erfindung lösen die obigen Herausforderungen, indem sie die Leistungsanforderung und die Kapazitätsanforderung zwischen Arbeitsspeichertechnologien intelligent aufteilen. Der Schwerpunkt dieses Lösungsansatzes besteht darin, Leistung mit einer relativ geringen Menge eines schnelleren Arbeitsspeichers, wie etwa eines DRAM, bereitzustellen und dabei den größten Teil des Systemspeichers unter Verwendung erheblich kostengünstigerer und dichterer nicht flüchtiger wahlfreier Zugriffsspeicher (NVRAM) umzusetzen. Die nachstehend beschriebenen Ausführungsformen der Erfindung definieren Plattformkonfigurationen, die hierarchische Organisationen von Arbeitsspeicher-Teilsystemen für die Verwendung von NVRAM ermöglichen. Die Verwendung von NVRAM in der Arbeitsspeicherhierarchie ermöglicht auch neue Nutzungen, wie etwa Umsetzungen von erweitertem Boot-Raum und Massenspeicherplatz, wie es nachstehend ausführlicher beschrieben wird.
  • 1 bildet eine Zwischenspeicher- und Systemspeicher-Anordnung gemäß den Ausführungsformen der Erfindung ab. Insbesondere zeigt 1 eine Arbeitsspeicherhierarchie, die einen Satz von internen Prozessorzwischenspeichern 120, einen „Naharbeitsspeicher”, der als Fernarbeitsspeicher-Zwischenspeicher 121 dient, der sowohl einen oder mehrere interne Zwischenspeicher 106 als auch externe Zwischenspeicher 107 bis 109 umfassen kann, und einen „Fernarbeitsspeicher” 122 umfasst. Eine bestimmte Art des Arbeitsspeichers, die bei einigen Ausführungsformen der Erfindung als „Fernarbeitsspeicher” verwendet werden kann, ist ein nicht flüchtiger wahlfreier Zugriffsspeicher („NVRAM”). Somit wird nachstehend ein Überblick des NVRAM bereitgestellt, gefolgt von einem Überblick über Fernarbeitsspeicher und Naharbeitsspeicher.
  • A. Nicht flüchtiger wahlfreier Zugriffsspeicher („NVRAM”)
  • Es gibt zahlreiche mögliche technische Alternativen für den NVRAM, wozu ein PCM, ein Phasenwechselspeicher und Schalter (PCMS) (wobei letzterer eine spezifischere Umsetzung des ersteren ist), ein byteadressierbarer persistenter Speicher (BPRAM), ein universeller Arbeitsspeicher, Ge2Sb2Te5, eine programmierbare Metallisierungszelle (PMC), ein resistiver Arbeitsspeicher (RRAM), eine RESET-(amorphe)Zelle, eine SET-(kristalline)Zelle, PCME, ein Ovshinsky-Arbeitsspeicher, ein ferroelektrischer Arbeitsspeicher (auch als Polymer- und Poly(N-Vinylkarbazol-)Arbeitsspeicher bezeichnet), ein ferromagnetischer Arbeitsspeicher (auch als Spintronics-, SPRAM („Spin Transfer Torque RAM”), STRAM („Spin Tunneling RAM”), magnetoresistiver Arbeitsspeicher, magnetischer Arbeitsspeicher, magnetischer wahlfreier Zugriffsspeicher (MRAM) bezeichnet) und ein Halbleiter-Oxid-Nitrid-Oxid-Halbleiter (SONOS, auch als dielektrischer Arbeitsspeicher bezeichnet) gehören.
  • Zur Verwendung in der Arbeitsspeicherhierarchie, die in der vorliegenden Beschreibung beschrieben wird, weist der NVRAM die folgenden Kennzeichen auf:
    • (1) Er bewahrt seinen Inhalt, auch wenn der Strom abgeschaltet wird, ähnlich wie ein FLASH-Arbeitsspeicher, der bei Halbleiterplatten (SSD) verwendet wird, und anders als SRAM und DRAM, die flüchtig sind;
    • (2) geringeren Stromverbrauch im Leerlauf als flüchtige Arbeitsspeicher, wie etwa SRAM und DRAM;
    • (3) wahlfreier Zugriff ähnlich wie SRAM und DRAM (auch als wahlfrei adressierbar bezeichnet);
    • (4) überschreibbar und löschbar auf einer niedrigeren Granularitätsebene (z. B. auf Byte-Ebene) als ein FLASH-Speicher, der bei SSD zu finden ist (die nur „blockweise” überschrieben und gelöscht werden können, mindestens 64 KB für NOR-FLASH-Speicher und 16 KB für NAND-FLASH-Speicher);
    • (5) als Systemspeicher verwendbar und mit Zuteilung des gesamten Systemspeicher-Adressenraums oder eines Teils davon;
    • (6) kann unter Verwendung eines Transaktionsprotokolls (eines Protokolls, das Transaktionskennungen (ID) unterstützt, um unterschiedliche Transaktionen zu unterscheiden, so dass diese Transaktionen durcheinander beendet werden können) mit dem Prozessor über einen Bus gekoppelt werden und den Zugriff auf einer Granularitätsebene ermöglichen, die niedrig genug ist, um den Betrieb des NVRAM als Systemspeicher (z. B. mit einer Zwischenspeicher-Zeilengröße von etwa 64 oder 128 Byte) zu unterstützen. Beispielsweise kann der Bus ein Arbeitsspeicherbus sein (z. B. ein DDR-Bus, wie etwa DDR3, DDR4 usw.), über den ein Transaktionsprotokoll ausgeführt wird, im Gegensatz zu dem nicht Nicht-Transaktionsprotokoll, das normalerweise verwendet wird. Als anderes Beispiel kann der Bus ein solcher sein, auf dem normalerweise ein Transaktionsprotokoll (ein natives Transaktionsprotokoll) abläuft, wie etwa ein PCI-Express-(PCIE)Bus, ein Desktop-Verwaltungsschnittstellen-(DMI)Bus oder ein andersartiger Bus, der ein Transaktionsprotokoll und eine ausreichend geringe Transaktionsnutzlastgröße verwendet (z. B. eine Zwischenspeicher-Zeilengröße von etwa 64 oder 128 Byte); und
    • (7) eines oder mehrere der folgenden: a) höhere Schreibgeschwindigkeit als nicht flüchtige Arbeitsspeicher-/Speicherplatz-Technologien, wie etwa FLASH; b) sehr hohe Lesegeschwindigkeit (schneller als FLASH und fast wie DRAM-Lesegeschwindigkeiten oder gleichwertig dazu); c) direkt beschreibbar (statt ein Löschen (Überschreiben mit Einsen) vor dem Schreiben von Daten zu erfordern, wie der FLASH-Arbeitsspeicher, der in SSD verwendet wird); und/oder d) viel größere Schreibhaltbarkeit (z. B. 2 oder 3mal so groß) vor dem Ausfall (besser als Boot-ROM und FLASH, die bei SSD verwendet werden).
  • Wie zuvor erwähnt, wird im Gegensatz zum FLASH-Arbeitsspeicher, der jeweils mit einem vollständigen „Block” überschrieben und gelöscht werden muss, kann die Granularitätsebene, auf der auf den NVRAM zugegriffen wird, bei einer bestimmten Umsetzung von dem bestimmten Arbeitsspeicher-Controller und dem bestimmten Arbeitsspeicherbus oder einem andersartigen Bus abhängen, mit dem der NVRAM gekoppelt ist. Bei einigen Umsetzungen, bei denen der NVRAM beispielsweise als Systemspeicher verwendet wird, kann man auf den NVRAM auf der Granularität einer Zwischenspeicherzeile (z. B. einer 64-Byte- oder 128-Byte-Zwischenspeicherzeile) zugreifen, und zwar unabhängig von einer inhärenten Fähigkeit des Zugriffs auf der Granularität eines Bytes, weil die Zwischenspeicherzeile die Ebene ist, auf der das Arbeitsspeicher-Teilsystem auf den Arbeitsspeicher zugreift. Wenn somit der NVRAM innerhalb eines Arbeitsspeicher-Teilsystems eingerichtet wird, kann man darauf auf derselben Granularitätsebene wie für den DRAM (z. B. den „Naharbeitsspeicher”) zugreifen, der bei dem gleichen Arbeitsspeicher-Teilsystem verwendet wird. Auch so ist die Granularitätsebene des Zugriffs auf den NVRAM durch den Arbeitsspeicher-Controller und den Arbeitsspeicherbus oder einen andersartigen Bus kleiner als die Blockgröße, die von einem Flash-Arbeitsspeicher verwendet wird, und als die Zugriffsgröße des Controllers und Busses des I/O-Teilsystems.
  • Der NVRAM kann auch Verschleiß ausgleichende Algorithmen umfassen, um die Tatsache zu berücksichtigen, dass die Speicherzellen auf der Fernarbeitsspeicherebene beginnen, nach einer gewissen Anzahl von Schreibzugriffen zu verschleißen, insbesondere wenn eine erhebliche Anzahl von Schreibzugriffen erfolgen kann, wie etwa bei einer Systemspeicher-Umsetzung. Da bei Blöcken mit hohen Lastwechseln die größte Wahrscheinlichkeit eines derartigen Verschleißes gegeben ist, verteilt der Verschleißausgleich die Schreibvorgänge über die Fernarbeitsspeicherzellen, indem er Adressen von Blöcken mit hohen Lastwechseln mit Blöcken mit niedrigen Lastwechseln austauscht. Es sei zu beachten, dass der Adressenaustausch typischerweise für Anwendungsprogramme meistens transparent ist, da er von Hardware, Hardware-nahe Software (z. B. einen Hardware-nahen Treiber oder ein Betriebssystem) oder von einer Kombination von beiden gehandhabt wird.
  • B. Fernarbeitsspeicher
  • Der Fernarbeitsspeicher 122 einiger Ausführungsformen der Erfindung wird mit NVRAM umgesetzt, ist jedoch nicht unbedingt auf eine bestimmte Arbeitsspeicher-Technologie eingeschränkt. Der Fernarbeitsspeicher 122 unterscheidet sich von anderen Anweisungs- und Daten-Arbeitsspeicher/Speicherplatz-Technologien im Hinblick auf seine Kennzeichen und/oder seine Anwendung in der Arbeitsspeicher/Speicherplatz-Hierarchie. Beispielsweise ist der Fernarbeitsspeicher 122 anders als:
    • 1) ein statischer wahlfreier Zugriffsspeicher (SRAM), der für interne Level-0- und Level-1-Prozessorzwischenspeicher 101a–b, 102a–b, 103a–b, 103a–b und 104a–b verwendet werden kann, die jeweils zu jedem der Prozessorkerne 101 bis 104 gehören, und ein untergeordneter Zwischenspeicher (LLC) 105, der von den Prozessorkernen gemeinsam genutzt wird;
    • 2) ein dynamischer wahlfreier Zugriffsspeicher (DRAM), der als Zwischenspeicher 106 konfiguriert ist, der intern zum Prozessor 100 ist (z. B. auf dem gleichen Chip wie der Prozessor 100), und/oder als ein oder mehrere Zwischenspeicher 107 bis 109 konfiguriert ist, die extern zum Prozessor sind (z. B. in dem gleichen oder einem anderen Gehäuse als der Prozessor 100); und
    • 3) ein FLASH-Arbeitsspeicher/eine Magnetplatte/eine optische Platte, der bzw. die als Massenspeicherplatz angewendet wird (nicht gezeigt); und
    • 4) ein Arbeitsspeicher, wie etwa ein FLASH-Arbeitsspeicher oder ein anderer Festspeicher (ROM), der als Firmware-Arbeitsspeicher angewendet wird (der sich auf den Boot-ROM, BIOS-Flash und/oder TPM-Flash beziehen kann), (nicht gezeigt).
  • Der Fernarbeitsspeicher 122 kann als Anweisungs- und Datenspeicherplatz verwendet werden, der von einem Prozessor 100 direkt adressierbar ist und in der Lage ist, mit dem Prozessor 100 im Gegensatz zu einem FLASH/einer Magnetplatte/einer optischen Platte, der bzw. die als Massenspeicherplatz angewendet wird, gut genug Schritt zu halten. Des Weiteren kann der Fernarbeitsspeicher 122, wie zuvor besprochen und nachstehend ausführlicher beschrieben, auf einen Arbeitsspeicherbus gesetzt werden und direkt mit einem Arbeitsspeicher-Controller kommunizieren, der wiederum direkt mit dem Prozessor 100 kommuniziert.
  • Der Fernarbeitsspeicher 122 kann mit anderen Anweisungs- und Daten-Speicherplatz-Technologien (z. B. DRAM) kombiniert werden, um hybride Speicher zu bilden (auch als Zusammenlegungs-PCM und DRAM; Level-1-Arbeitsspeicher und Level-2-Arbeitsspeicher; FLAM (FLASH und DRAM) bezeichnet). Es sei zu beachten, dass mindestens einige der obigen Technologien, einschließlich des PCM/PCMS, für Massenspeicherplatz anstelle von oder zusätzlich zu dem Systemspeicher verwendet werden können und für den Prozessor nicht wahlfrei zugreifbar, byteadressierbar oder direkt adressierbar sein müssen, wenn sie auf diese Art und Weise angewendet werden.
  • Aus praktischen Gründen der Erklärung bezieht sich der Rest der Anmeldung größtenteils auf einen „NVRAM” oder genauer gesagt auf einen „PCM” oder „PCMS” als Technologieauswahl für den Fernarbeitsspeicher 122. Somit können die Begriffe NVRAM, PCM, PCMS und Fernarbeitsspeicher in der nachstehenden Diskussion austauschbar verwendet werden. Es sei jedoch zu erkennen, dass wie zuvor besprochen, auch verschiedene Technologien für den Fernarbeitsspeicher verwendet werden können. Auch ist der NVRAM nicht auf die Verwendung als Fernarbeitsspeicher eingeschränkt.
  • C. Naharbeitsspeicher
  • Der „Naharbeitsspeicher” 121 ist ein Arbeitsspeicher auf Zwischenebene, der vor einem Fernarbeitsspeicher 122 konfiguriert ist und mit Bezug auf den Fernarbeitsspeicher eine geringere Lese-/Schreib-Zugriffslatenz und/oder eine bessere symmetrische Schreib-/Lese-Zugriffslatenz aufweist (d. h. der Lesezeiten aufweist, die ungefähr den Schreibzeiten entsprechen). Bei einigen Ausführungsformen verfügt der Naharbeitsspeicher 121 über eine erheblich geringere Schreiblatenz als der Fernarbeitsspeicher 122 doch über eine ähnliche (z. B. etwas geringere oder gleichwertige) Leselatenz; beispielsweise kann der Naharbeitsspeicher 121 ein flüchtiger Arbeitsspeicher sein, wie etwa ein flüchtiger wahlfreier Zugriffsspeicher (VRAM), und kann einen DRAM oder einen anderen schnellen Arbeitsspeicher auf Kondensatorbasis umfassen. Es sei jedoch zu beachten, dass die grundlegenden Prinzipien der Erfindung nicht auf diese spezifischen Arbeitsspeicherarten eingeschränkt sind. Zusätzlich kann der Naharbeitsspeicher 121 eine relativ niedrige Dichte aufweisen und/oder kann in der Herstellung kostspieliger sein als der Fernarbeitsspeicher 122.
  • Bei einer Ausführungsform ist der Naharbeitsspeicher 121 zwischen dem Fernarbeitsspeicher 122 und den internen Prozessorzwischenspeichern 120 konfiguriert. Bei einigen der nachstehend beschriebenen Ausführungsformen ist der Naharbeitsspeicher 121 als ein oder mehrere arbeitsspeicherseitige Zwischenspeicher (MSC) 107 bis 109 konfiguriert, um beispielsweise die Leistungs- und/oder Gebrauchseinschränkungen des Fernarbeitsspeichers zu maskieren, wozu beispielsweise Einschränkungen der Lese-/Schreiblatenz und Einschränkungen der Arbeitsspeicher-Verschlechterung gehören. Bei diesen Umsetzungen funktioniert die Kombination des MSC 107 bis 109 und des Fernarbeitsspeichers 122 auf einer Leistungsstufe, die ähnlich oder gleichwertig über besser als ein System ist, das nur DRAM als Systemspeicher verwendet. Obwohl der der Naharbeitsspeicher 121, wie nachstehend ausführlich besprochen, in 1 als „Zwischenspeicher” gezeigt wird, kann er Modi umfassen, in denen er andere Aufgaben erfüllt, entweder zusätzlich oder statt als Zwischenspeicher zu dienen.
  • Der Naharbeitsspeicher 121 kann sich auf dem Prozessor-Chip (als Zwischenspeicher 106) und/oder extern zum Prozessor-Chip (als Zwischenspeicher 107 bis 109) befinden (z. B. auf einem separaten Chip, der sich an dem CPU-Gehäuse befindet, der sich außerhalb des CPU-Gehäuses mit einer Verbindung hoher Bandbreite zu dem CPU-Gehäuse, beispielweise auf einem DIMM („Dual In-line Memory Module”), einem Riser/Mezzanine oder einer Computer-Hauptplatine, befindet). Der Naharbeitsspeicher 121 kann zur Kommunikation mit dem Prozessor 100 unter Verwendung von einer einzigen oder mehreren Verbindungen mit hoher Bandbreite gekoppelt sein, wie etwa DDR- oder anderen Transaktionsverbindungen mit hoher Bandbreite (wie es nachstehend ausführlicher beschrieben wird).
  • BEISPIELHAFTES SYSTEMSPEICHER-ZUTEILUNGSSCHEMA
  • 1 bildet ab, wie diverse Ebenen von Zwischenspeichern 101 bis 109 mit Bezug auf einen physikalischen Systemadressen-(SPA)Raum 116 bis 119 bei Ausführungsformen der Erfindung konfiguriert sind. Wie erwähnt, umfasst diese Ausführungsform einen Prozessor 100, der einen oder mehrere Kerne 101 bis 104 umfasst, wobei jeder Kern seinen eigenen dedizierten übergeordneten Zwischenspeicher (L0) 101a bis 104a und Zwischenspeicher auf mittlerer Ebene (MLC) (L1) 101b bis 104b aufweist. Der Prozessor 100 umfasst auch einen gemeinsam genutzten LLC 105. Der Betrieb dieser diversen Zwischenspeicherebenen ist wohlbekannt und wird hier nicht ausführlich beschrieben.
  • Die Zwischenspeicher 107 bis 109, die in 1 abgebildet sind, können zu einem bestimmten Systemspeicher-Adressenbereich oder einem Satz nicht zusammenhängender Adressenbereiche gehören. Beispielsweise dient der Zwischenspeicher 107 dazu, als MSC für den Systemspeicher-Adressenbereich Nr. 1 116 zu dienen, und die Zwischenspeicher 108 und 109 dienen dazu, als MSC für nicht überlappende Teile der Systemspeicher-Adressenbereiche Nr. 2 117 und Nr. 3 118 zu dienen. Die letztgenannte Umsetzung kann für Systeme verwendet werden, bei denen der SPA-Raum, der von dem Prozessor 100 verwendet wird, in einen Adressenraum verschachtelt ist, der von den Zwischenspeichern 107 bis 109 verwendet wird (z. B. wenn sie als MSC konfiguriert sind). Bei einigen Ausführungsformen wird dieser letztgenannte Adressenraum als Arbeitsspeicher-Kanaladressen-(MCA)Raum bezeichnet. Bei einer Ausführungsform führen die internen Zwischenspeicher 101a bis 106 Zwischenspeichervorgänge für den gesamten SPA-Raum aus.
  • Der Systemspeicher, wie er hier verwendet wird, ist ein Arbeitsspeicher, der für die Software, die von dem Prozessor 100 ausgeführt wird, sichtbar und/oder direkt adressierbar ist; während die Zwischenspeicher 101a bis 109 für die Software transparent funktionieren können, in dem Sinne, dass sie keinen direkt adressierbaren Teil des Systemadressenraums bilden, sondern die Kerne auch die Ausführung von Anweisungen unterstützen können, damit die Software eine gewisse Steuerung (Konfiguration, Konzepte, Hinweise usw.) für einige oder alle der Zwischenspeicher bereitstellen kann. Die Unterteilung des Systemspeichers in die Bereiche 116 bis 119 kann als Teil eines Systemkonfigurationsprozesses manuell (z. B. durch einen Systementwickler) erfolgen und/oder kann von der Software automatisch ausgeführt werden.
  • Bei einer Ausführungsform werden die Systemspeicherbereiche 116 bis 119 unter Verwendung eines Fernarbeitsspeichers (z. B. PCM) und bei einigen Ausführungsformen eines Naharbeitsspeichers, der als Systemspeicher konfiguriert ist, umgesetzt. Der Systemspeicher-Adressenbereich Nr. 4 stellt einen Adressenbereich dar, der unter Verwendung eines schnelleren Arbeitsspeichers umgesetzt wird, wie etwa eines DRAM, wobei es sich um einen Naharbeitsspeicher handeln kann, der in einem Systemspeichermodus (im Gegensatz zu einem Zwischenspeichermodus) konfiguriert ist.
  • 2 bildet eine Arbeitsspeicher/Speicherplatz-Hierarchie 140 und verschiedene konfigurierbare Betriebsmodi für den Naharbeitsspeicher 144 und den NVRAM gemäß den Ausführungsformen der Erfindung ab. Die Arbeitsspeicher/Speicherplatz-Hierarchie 140 verfügt über mehrere Ebenen, umfassend (1) eine Zwischenspeicherebene 150, die Prozessorzwischenspeicher 150A (z. B. Zwischenspeicher 101A bis 105 in 1) und wahlweise Naharbeitsspeicher als Zwischenspeicher für den Fernarbeitsspeicher 150B (in manchen Betriebsmodi, wie hier beschrieben) umfassen kann, (2) eine Systemarbeitsspeicherebene 151, die einen Fernarbeitsspeicher 151B (z. B. einen NVRAM, wie etwa PCM) umfassen kann, wenn ein Naharbeitsspeicher vorhanden ist (oder nur ein NVRAM als Systemspeicher 174, wenn kein Naharbeitsspeicher vorhanden ist), und wahlweise einen Naharbeitsspeicher, der als Systemspeicher 151A funktioniert (in bestimmten Betriebsmodi, wie hier beschrieben), (3) eine Massenspeicherplatzebene 152, die einen Flash-/magnetischen/optischen Massenspeicherplatz 152B und/oder einen NVRAM-Massenspeicherplatz 152A (z. B. einen Teil des NVRAM 142) umfassen kann; und (4) eine Firmware-Arbeitsspeicherebene 153, die einen BIOS-Flash 170 und/oder einen BIOS-NVRAM 172 und optional einen NVRAM 173 eines sicheren Plattformmoduls (TPM) umfassen kann.
  • Wie angegeben, kann der Naharbeitsspeicher 144 umgesetzt werden, um in vielen verschiedenen Modi zu funktionieren, wozu folgende gehören: ein erster Modus, bei dem er als Zwischenspeicher für einen Fernarbeitsspeicher (Naharbeitsspeicher als Zwischenspeicher für FM 150B) funktioniert; ein zweiter Modus, bei dem er als Systemspeicher 151A funktioniert und einen Teil des SPA-Raums einnimmt (manchmal als Naharbeitsspeicher-„Direktzugriffs-”Modus bezeichnet); und eine oder mehrere zusätzliche Betriebsmodi, wie etwa ein Notizblockspeicher 192 oder als Schreibpuffer 193. Bei einigen Ausführungsformen der Erfindung ist der Naharbeitsspeicher zerlegbar, wobei jede Zerlegung gleichzeitig in einem anderen der unterstützten Modi funktionieren kann; und verschiedene Ausführungsformen können die Konfiguration der Zerlegungen (z. B. Größen, Modi) durch Hardware (z. B. Sicherungen, Stifte), Firmware und/oder Software (z. B. durch einen Satz programmierbarer Bereichsregister innerhalb des MSC-Controllers 124, in denen beispielsweise verschiedene Binärcodes gespeichert sein können, um jeden Modus und jede Zerlegung zu identifizieren) unterstützen.
  • Der Systemadressenraum A 190 in 2 wird verwendet, um den Betrieb zu erläutern, wenn der Naharbeitsspeicher als MSC für den Fernarbeitsspeicher 150B konfiguriert ist. Bei dieser Konfiguration stellt der Systemadressenraum A 190 den gesamten Systemadressenraum dar (und es gibt keinen Systemadressenraum B 191). Alternativ wird der Systemadressenraum B 191 verwendet, um eine Umsetzung zu zeigen, wenn dem ganzen Naharbeitsspeicher oder einem Teil davon ein Teil des Systemadressenraums zugewiesen ist. Bei dieser Ausführungsform stellt der Systemadressenraum B 191 den Bereich des Systemadressenraums dar, der dem Naharbeitsspeicher 151A zugewiesen ist, und der Systemadressenraum A 190 stellt den Bereich des Systemadressenraums dar, der dem NVRAM 174 zugewiesen ist.
  • Wenn er als Zwischenspeicher für den Fernarbeitsspeicher 150B dient, kann der Naharbeitsspeicher 144 zusätzlich in diversen Teilmodi unter der Kontrolle des MSC-Controllers 124 funktionieren. In jedem dieser Modi ist der Naharbeitsspeicher-Adressenraum (NMA) für die Software in dem Sinne transparent, dass der Naharbeitsspeicher keinen direkt adressierbaren Teil des Systemadressenraums bildet. Diese Modi umfassen ohne Einschränkung die folgenden:
    • (1) Rückschreib-Zwischenspeicher-Modus: In diesem Modus wird der gesamte Naharbeitsspeicher, der als FM-Zwischenspeicher 150B dient, oder werden Teile davon als Zwischenspeicher für den NVRAM-Fernarbeitsspeicher (FM) 151B verwendet. Im Rückschreib-Modus wird jeder Schreibvorgang anfänglich an den Naharbeitsspeicher als Zwischenspeicher für den FM 150B gerichtet (unter der Annahme, dass die Zwischenspeicherzeile, an welche der Schreibvorgang gerichtet ist, in dem Zwischenspeicher vorliegt). Ein entsprechender Schreibvorgang wird ausgeführt, um den NVRAM-FM 151B nur zu aktualisieren, wenn die Zwischenspeicherzeile innerhalb des Naharbeitsspeichers als Zwischenspeicher für den FM 150B durch eine andere Zwischenspeicherzeile ersetzt werden soll (im Gegensatz zum nachstehend beschriebenen Durchschreib-Modus, bei dem jeder Schreibvorgang sofort auf den NVRAM-FM 151B verbreitet wird).
    • (2) Naharbeitsspeicher-Umgehungsmodus: In diesem Modus umgehen alle Lese- und Schreibvorgänge den NM, der als FM-Zwischenspeicher 150B dient, und gehen direkt zum NVRAM-FM 151B. Ein derartiger Modus kann beispielsweise verwendet werden, wenn eine Anwendung nicht zwischenspeicherfreundlich ist oder erfordert, dass die Daten auf der Granularität einer Zwischenspeicherzeile persistent eingesetzt werden. Bei einer Ausführungsform funktioniert das Zwischenspeichern, das von den Prozessorzwischenspeichern 150A und dem NM, der als FM-Zwischenspeicher 150B dient, ausgeführt wird, unabhängig voneinander. Demnach können in dem NM, der als FM-Zwischenspeicher 150B dient, Daten zwischengespeichert werden, die nicht in den Prozessorzwischenspeichern 150A zwischengespeichert sind (und der gegebenenfalls nicht in den Prozessorzwischenspeichern 150A zwischengespeichert werden dürfen), und umgekehrt. Somit können bestimmte Daten, die als in den Prozessorzwischenspeichern „nicht zwischenspeicherbar” bezeichnet werden können, in dem NM, der als FM-Zwischenspeicher 150B dient, zwischengespeichert werden.
    • (3) Naharbeitsspeicher-Lesezwischenspeicher-Schreibumgehungs-Modus: Dies ist eine Variante des obigen Modus, bei der das Lesezwischenspeichern der persistenten Daten aus dem NVRAM-FM 151B erlaubt ist (d. h. die persistenten Daten werden in dem Naharbeitsspeicher als Zwischenspeicher für den Fernarbeitsspeicher 150B für schreibgeschützte Vorgänge zwischengespeichert). Dies ist nützlich, wenn die meisten persistenten Daten „schreibgeschützt” sind und der Anwendungsgebrauch zwischenspeicherfreundlich ist.
    • (4) Naharbeitsspeicher-Lesezwischenspeicher-Durchschreib-Modus: Dies ist eine Variante des Naharbeitsspeicher-Lesezwischenspeicher-Schreibumgehungs-Modus, wobei zusätzlich zum Lesezwischenspeichern auch Schreibtreffer zwischengespeichert werden. Jeder Schreibvorgang in den Naharbeitsspeicher als Zwischenspeicher für den FM 150B verursacht einen Schreibvorgang in den FM 151B. Auf Grund der Durchschreib-Beschaffenheit des Zwischenspeichers ist die Persistenz der Zwischenspeicherzeilen somit weiter gewährleistet.
  • Beim Funktionieren in einem Naharbeitsspeicher-Direktzugriffmodus ist der gesamte Naharbeitsspeicher bzw. sind Teile davon als Systemspeicher 151A für die Software direkt sichtbar und Teil des SPA-Raums. Ein derartiger Arbeitsspeicher kann vollständig unter Software-Kontrolle stehen. Ein derartiges Schema kann eine nicht vereinheitlichte Arbeitsspeicheradressen-(NUMA)Arbeitsspeicherdomäne für Software erstellen, in der es eine höhere Leistung von dem Naharbeitsspeicher 144 mit Bezug auf den NVRAM-Systemspeicher 174 erzielt. Beispielhaft und nicht einschränkend kann ein derartiger Gebrauch für bestimmte Hochleistungs-Computer-(HPC) und Grafikanwendungen verwendet werden, die einen sehr schnellen Zugriff auf gewisse Datenstrukturen erfordern.
  • Bei einer alternativen Ausführungsform wird der Naharbeitsspeicher-Direktzugriffmodus dadurch umgesetzt, dass gewisse Zwischenspeicherzellen in den Naharbeitsspeicher „geheftet” werden (d. h. Zwischenspeicherzeilen, die Daten aufweisen, die ebenfalls derzeit in dem NVRAM 142 gespeichert sind). Ein derartiges Heften kann effektiv in einem größeren, mehrfach assoziierenden Zwischenspeicher erfolgen.
  • 2 bildet auch ab, dass ein Teil des NVRAM 142 als Firmware-Arbeitsspeicher verwendet werden kann. Beispielsweise kann der BIOS-NVRAM- 172 Teil verwendet werden, um BIOS-Bilder zu speichern (statt die BIOS-Informationen im BIOS-Flash 170 zu speichern, oder zusätzlich dazu). Der BIOS-NVRAM-Teil 172 kann ein Teil des SPA-Raums sein und ist durch eine Software, die auf den Prozessorkernen 101 bis 104 ausgeführt wird, direkt adressierbar, wohingegen der BIOS-Flash 170 über das I/O-Teilsystem 115 adressierbar ist. Als anderes Beispiel kann man einen Teil eines sicheren Plattformmodul-(TPM)NVRAM 173 verwenden, um sensible Systeminformationen (z. B. kryptografische Schlüssel) zu schützen.
  • Wie angegeben, kann somit der NVRAM 142 umgesetzt werden, um in vielen verschiedenen Modi zu funktionieren, einschließlich als Fernarbeitsspeicher 151B (z. B. wenn der Naharbeitsspeicher 144 vorliegt/funktioniert, ob der Naharbeitsspeicher als Zwischenspeicher für den FM über eine MSC-Steuerung 124 funktioniert oder nicht (Zugriff direkt nach dem oder den Zwischenspeichern 101A bis 105 und ohne MSC-Steuerung 124)); nur als NVRAM-Systemspeicher 174 (nicht als Fernarbeitsspeicher, weil kein Naharbeitsspeicher vorhanden ist/funktioniert; und Zugriff ohne MSC-Steuerung 124); als NVRAM-Massenspeicherplatz 152A; als BIOS-NVRAM 172; und als TPM-NVRAM 173. Obwohl unterschiedliche Ausführungsformen die NVRAM-Modi unterschiedlich vorgeben können, beschreibt 3 die Verwendung einer Decodierungstabelle 333.
  • 3 bildet ein beispielhaftes Computersystem 300 ab, bei dem die Ausführungsformen der Erfindung umgesetzt werden können. Das Computersystem 300 umfasst einen Prozessor 310 und ein Arbeitsspeicher/Speicherplatz-Teilsystem 380 mit einem NVRAM 142, der sowohl für den Systemspeicher, den Massenspeicherplatz und wahlweise den Firmware-Arbeitsspeicher verwendet wird. Bei einer Ausführungsform umfasst der NVRAM 142 die gesamte Systemspeicher- und Speicherplatz-Hierarchie, die von dem Computersystem 300 zum Speichern von Daten, Anweisungen, Zuständen und anderen persistenten und nicht persistenten Informationen verwendet wird. Wie zuvor besprochen, kann der NVRAM 142 konfiguriert sein, um die Aufgaben einer typischen Arbeitsspeicher- und Speicherplatz-Hierarchie von Systemspeicher, Massenspeicherplatz und Firmware-Arbeitsspeicher, TPM-Arbeitsspeicher und dergleichen umzusetzen. Bei der Ausführungsform aus 3 ist der NVRAM 142 in den FM 151B, den NVRAM-Massenspeicherplatz 152A, den BIOS-NVRAM 173 und den TMP-NVRAM 173 zerlegt. Es werden auch Speicherplatz-Hierarchien mit anderen Aufgaben in Betracht gezogen, und die Anwendung des NVRAM 142 ist nicht auf die zuvor beschriebenen Aufgaben eingeschränkt.
  • Beispielhaft wird der Betrieb beschrieben, bei dem sich der Naharbeitsspeicher als Zwischenspeicher für den FM 150B beim Rückschreib-Zwischenspeichern befindet. Während sich bei einer Ausführungsform der Naharbeitsspeicher als Zwischenspeicher für den FM 150B in dem zuvor erwähnten Rückschreib-Zwischenspeichermodus befindet, kommt ein Lesevorgang zuerst an dem MSC-Controller 124 an, der eine Suche ausführt, um zu bestimmen, ob die angefragten Daten in dem Naharbeitsspeicher, der als Zwischenspeicher für den FM 150B dient, vorhanden sind (z. B. unter Verwendung eines Markierungszwischenspeichers 342). Falls sie vorhanden sind, gibt er die Daten an die anfragende CPU, den Kern 101 bis 104 oder die I/O-Vorrichtung über das I/O-Teilsystem 115 zurück. Falls die Daten nicht vorhanden sind, sendet der MSC-Controller 124 die Anfrage zusammen mit der Systemspeicheradresse an einen NVRAM-Controller 332. Der NVRAM-Controller 332 verwendet die Decodierungstabelle 333, um die Systemspeicheradresse in eine physikalische Vorrichtungsadresse (PDA) des NVRAM zu übersetzen und den Lesevorgang an diesen Bereich des Fernarbeitsspeichers 151B zu richten. Bei einer Ausführungsform umfasst die Decodierungstabelle 333 eine Adressenindirektionstabellen-(AIT)Komponente, die der NVRAM-Controller 332 verwendet, um zwischen Systemspeicheradressen und NVRAM-PDA zu übersetzen. Bei einer Ausführungsform wird die AIT als Teil des Verschleiß ausgleichenden Algorithmus aktualisiert, der umgesetzt wird, um Arbeitsspeicher-Zugriffsvorgänge zu verteilen und dadurch den Verschleiß des NVRAM-FM 151B zu reduzieren. Alternativ kann die AIT eine getrennte Tabelle sein, die in dem NVRAM-Controller 332 gespeichert ist.
  • Beim Empfang der angefragten Daten aus dem NVRAM-FM 151B gibt der NVRAM-Controller 332 die angefragten Daten an den MSC-Controller 124 zurück, der die Daten in dem MSC-Naharbeitsspeicher, der als FM-Zwischenspeicher 150B dient, ablegt und die Daten auch an den anfragenden Prozessorkern 101 bis 104 oder eine I/O-Vorrichtung über das I/O-Teilsystem 115 sendet. Nachfolgende Anfragen für diese Daten können direkt aus dem Naharbeitsspeicher bedient werden, der als FM-Zwischenspeicher 150B dient, bis sie durch andere NVRAM-FM-Daten ersetzt werden.
  • Wie erwähnt geht bei einer Ausführungsform ein Arbeitsspeicher-Schreibvorgang auch zuerst zum MSC-Controller 124, der ihn in den MSC-Naharbeitsspeicher schreibt, der als FM-Zwischenspeicher 150B dient. Im Rückschreib-Zwischenspeichermodus können die Daten nicht direkt an den NVRAM-FM 151B gesendet werden, wenn ein Schreibvorgang empfangen wird. Beispielsweise können die Daten nur an den NVRAM-FM 151B gesendet werden, wenn die Stelle in dem MSC-Naharbeitsspeicher, der als FM-Zwischenspeicher 150B dient, in dem die Daten abgelegt sind, wiederverwendet werden muss, um Daten für eine andere Systemspeicheradresse abzulegen. In diesem Fall bemerkt der MSC-Controller 124, dass die Daten in dem NVRAM-FM 151B nicht aktuell sind, und ruft sie somit aus dem Naharbeitsspeicher ab, der als FM-Zwischenspeicher 150B dient, und sendet sie an den NVRAM-Controller 332. Der NVRAM-Controller 332 sucht die PDA nach der Systemspeicheradresse ab und schreibt dann die Daten in den NVRAM-FM 151B.
  • In 3 wird der NVRAM-Controller 332 gezeigt, wie er an den FM 151B, den NVRAM-Massenspeicherplatz 152A und den BIOS-NVRAM 172 unter Verwendung von drei getrennten Leitungen angeschlossen ist. Dies muss jedoch nicht unbedingt bedeuten, dass es drei getrennte physische Busse oder Kommunikationskanäle gibt, die den NVRAM-Controller 332 mit diesen Teilen des NVRAM 142 verbinden. Vielmehr wird bei einigen Ausführungsformen ein gemeinsamer Arbeitsspeicherbus oder ein andersartiger Bus (wie etwa diejenigen, die nachstehend mit Bezug auf 4A bis M beschrieben werden) verwendet, um den NVRAM-Controller 332 kommunikationsmäßig mit dem FM 151B, dem NVRAM-Massenspeicherplatz 152A und dem BIOS-NVRAM 172 zu koppeln. Beispielsweise stellen die drei Leitungen aus 3 bei einer Ausführungsform einen Bus dar, wie etwa einen Arbeitsspeicherbus (z. B. einen DDR3-, DDR4-Bus usw.), über den der NVRAM-Controller 332 ein Transaktionsprotokoll umsetzt, um mit dem NVRAM 142 zu kommunizieren. Der NVRAM-Controller 332 kann auch mit dem NVRAM 142 über einen Bus kommunizieren, der ein natives Transaktionsprotokoll unterstützt, wie etwa einen PCI-Expressbus, einen Desktop-Verwaltungsschnittstellen-(DMI)Bus oder einen beliebigen andersartigen Bus, der ein Transaktionsprotokoll und eine ausreichend kleine Transaktionsnutzlastgröße verwendet (z. B. eine Zwischenspeicher-Zeilengröße von etwa 64 oder 128 Byte).
  • Bei einer Ausführungsform umfasst das Computersystem 300 einen integrierten Arbeitsspeicher-Controller (IMC) 331, der die zentrale Arbeitsspeicher-Zugriffskontrolle für den Prozessor 310 ausführt, der gekoppelt ist mit: 1) einem arbeitsspeicherseitigen Zwischenspeicher-(MSC)Controller 124, um den Zugriff auf den Naharbeitsspeicher (NM) zu steuern, der als Fernarbeitsspeicher-Zwischenspeicher 150B dient; und 2) einem NVRAM-Controller 332, um den Zugriff auf den NVRAM 142 zu steuern. Obwohl sie in 3 als getrennte Einheiten abgebildet sind, können der MSC-Controller 124 und der NVRAM-Controller 332 logisch Teil des IMC 331 sein.
  • Bei der abgebildeten Ausführungsform umfasst der MSC-Controller 124 einen Satz von Bereichsregistern 336, die den Betriebsmodus im Gebrauch für den NM, der als Fernarbeitsspeicher-Zwischenspeicher 150B dient (z. B. Rückschreib-Zwischenspeichermodus, Naharbeitsspeicher-Umgehungsmodus usw., wie zuvor beschrieben), vorgeben. Bei der abgebildeten Ausführungsform wird der DRAM 144 als Arbeitsspeicher-Technologie für den NM verwendet, der als Zwischenspeicher für den Fernarbeitsspeicher 150B dient. Als Reaktion auf eine Arbeitsspeicher-Zugriffsanfrage kann der MSC-Controller 124 (je nach der Betriebsart, die von den Bereichsregistern 336 vorgegeben wird) bestimmen, ob die Anfrage von dem NM, der als Zwischenspeicher für den FM 150B dient, bedient werden kann, oder ob die Anfrage an den NVRAM-Controller 332 zu senden ist, der dann die Anfrage aus dem Fernarbeitsspeicher-(FM)Teil 151B des NVRAM 142 bedienen kann.
  • Bei einer Ausführungsform, bei welcher der NVRAM 142 mit einem PCMS umgesetzt wird, ist der NVRAM-Controller 332 ein PCMS-Controller, der den Zugriff mit Protokollen ausführt, die mit der PCMS-Technologie übereinstimmen. Wie zuvor besprochen, ist der PCMS-Arbeitsspeicher an sich zum Zugriff auf der Granularität eines Bytes fähig. Dennoch kann der NVRAM-Controller 332 auf einen PCMS-basierten Fernarbeitsspeicher 151B auf einer niedrigeren Granularitätsebene, wie etwa auf einer Zwischenspeicherzeile (z. B. einer 64-Bit- oder 128-Bit-Zwischenspeicherzeile) oder einer beliebigen anderen Granularitätsebene, die mit dem Arbeitsspeicher-Teilsystem übereinstimmt, zugreifen. Die zugrundeliegenden Prinzipien der Erfindung sind nicht auf eine bestimmte Granularitätsebene eingeschränkt, um auf einen PCMS-basierten Fernarbeitsspeicher 151B zuzugreifen. Wenn im Allgemeinen jedoch ein PCMS-basierter Fernarbeitsspeicher 151B verwendet wird, um Teil des Systemadressenraums zu sein, ist die Granularitätsebene höher als diejenige, die herkömmlicherweise für andere nicht flüchtige Speichertechnologien verwendet wird, wie etwa FLASH, die Überschreib- und Löschvorgänge nur auf der Ebene eines „Blocks” ausführen können (Größe mindestens 64 KB für einen NOR-FLASH und 16 KB für einen NAND-FLASH).
  • Bei der abgebildeten Ausführungsform kann der NVRAM-Controller 332 Konfigurationsdaten lesen, um die zuvor beschriebenen Modi, Größen usw. für den NVRAM 142 aus der Decodierungstabelle 333 festzustellen, oder kann alternativ auf den Decodierungsergebnissen beruhen, die von dem IMC 331 und dem I/O-Teilsystem 315 weitergegeben werden. Beispielsweise kann das Computersystem 300 die Decodierungstabelle 333 entweder zum Herstellungszeitpunkt oder vor Ort programmieren, um unterschiedliche Bereiche des NVRAM 142 unter anderem als Systemspeicher, Massenspeicherplatz, der über SATA-Schnittstellen freigelegt wird, Massenspeicherplatz, der über USB-BOT-(„Bulk Only Transport”)Schnittstellen freigelegt wird, verschlüsselten Speicherplatz, der TPM-Speicherplatz unterstützt, zu markieren. Das Mittel, über das der Zugriff zu verschiedenen Partitionierungen der NVRAM-Richtung 142 geleitet wird, verwendet eine Decodierungslogik. Beispielsweise wird bei einer Ausführungsform der Adressenbereich jeder Partitionierung in der Decodierungstabelle 333 definiert. Wenn der IMC 331 bei einer Ausführungsform eine Zugriffsanfrage empfängt, wird die Zieladresse der Anfrage decodiert, um zu offenbaren, ob sich die Anfrage an den Arbeitsspeicher, den NVRAM-Massenspeicherplatz oder das I/O richtet. Falls es sich um eine Arbeitsspeicheranfrage handelt, bestimmt bzw. bestimmen der IMC 331 und/oder der MSC-Controller 124 ferner aus der Zieladresse, ob die Anfrage an den NM als Zwischenspeicher für den FM 150B oder an den FM 151B gerichtet ist. Zum Zugriff auf den FM 151B wird die Anfrage an den NVRAM-Controller 332 weitergeleitet. Der IMC 331 gibt die Anfrage an das I/O-Teilsystem 115 weiter, falls diese Anfrage an das I/O gerichtet ist (z. B. an Nicht-Speicherplatz- und Speicherplatz-I/O-Vorrichtungen). Das I/O-Teilsystem 115 decodiert ferner die Adresse, um zu bestimmen, ob die Adresse auf den NVRAM-Massenspeicherplatz 152A, den BIOS-NVRAM 172 oder andere Nicht-Speicherplatz- oder Speicherplatz-I/O-Vorrichtungen zeigt. Falls diese Adresse auf den NVRAM Massenspeicherplatz 152A oder den BIOS-NVRAM 172 zeigt, leitet das I/O-Teilsystem 115 die Anfrage an den NVRAM-Controller 332 weiter. Falls diese Adresse auf den TMP-NVRAM 173 zeigt, gibt das I/O-Teilsystem 115 die Anfrage an den TPM 334, um einen gesicherten Zugriff auszuführen.
  • Bei einer Ausführungsform ist jede Anfrage, die an den NVRAM-Controller 332 weitergeleitet wird, mit einem Attribut verbunden (auch als „Transaktionsart” bezeichnet), um die Zugriffsart anzugeben. Bei einer Ausführungsform kann der NVRAM-Controller 332 das Zugriffsprotokoll für die angefragte Zugriffsart emulieren, so dass sich der Rest der Plattform der mehrfachen Aufgaben nicht bewusst ist, die von dem NVRAM 142 in der Arbeitsspeicher- und Speicherplatz-Hierarchie ausgeführt werden. Bei alternativen Ausführungsformen kann der NVRAM-Controller 332 einen Arbeitsspeicherzugriff auf den NVRAM 142 unabhängig von der betreffenden Transaktionsart ausführen. Es versteht sich, dass der Decodierungsweg anders als der zuvor beschriebene sein kann. Beispielsweise kann der IMC 331 die Zieladresse einer Zugriffsanfrage decodieren und bestimmen, ob sie an den NVRAM 142 gerichtet ist. Falls sie an den NVRAM 142 gerichtet ist, generiert der IMC 331 ein Attribut gemäß der Decodierungstabelle 333. Basierend auf dem Attribut leitet der IMC 331 dann die Anfrage an eine geeignete nachgeordnete Logik weiter (z. B. den NVRAM-Controller 332 und das I/O-Teilsystem 315), um den angefragten Datenzugriff auszuführen. Bei noch einer anderen Ausführungsform kann der NVRAM-Controller 332 die Zieladresse decodieren, falls das entsprechende Attribut nicht von der vorgeordneten Logik (z. B. dem IMC 331 und dem I/O-Teilsystem 315) weitergegeben wird. Es können auch andere Decodierungswege umgesetzt werden.
  • Das Vorliegen einer neuen Arbeitsspeicherarchitektur, wie sie hier beschrieben wird, sorgt für zahlreiche neue Möglichkeiten. Obwohl sie später noch viel ausführlicher besprochen werden, werden sofort nachstehend einige dieser Möglichkeiten kurz hervorgehoben.
  • Gemäß einer möglichen Umsetzung dient der NVRAM 142 als vollständiger Ersatz oder Ergänzung für die herkömmliche DRAM-Technologie im Systemspeicher. Bei einer Ausführungsform ist der NVRAM 142 die Einführung eines Level-2-Systemspeichers (z. B. kann man davon ausgehen, dass der Systemspeicher einen Level-1-Systemspeicher, der einen Naharbeitsspeicher als Zwischenspeicher 150B (Teil der DRAM-Vorrichtung 340) umfasst, und einen Level-2-Systemspeicher, der einen Fernarbeitsspeicher (FM) 151B (Teil des NVRAM 142) umfasst, aufweist.
  • Gemäß einigen Ausführungsformen dient der NVRAM 142 als vollständiger Ersatz oder als Ergänzung für den Flash-/magnetischen/optischen Massenspeicherplatz 152B. Wie zuvor beschrieben, kann der NVRAM-Controller 332 bei einigen Ausführungsformen, auch wenn der NVRAM 152A zur Adressierbarkeit auf Byte-Ebene fähig ist, je nach der Umsetzung weiter auf den NVRAM-Massenspeicherplatz 152A in Blöcken von mehreren Bytes (z. B. 64 KB, 128 KB usw.) zugreifen. Die spezifische Art, wie auf die Daten aus dem NVRAM-Massenspeicherplatz 152A durch den NVRAM-Controller 332 zugegriffen wird, kann für die Software, die von dem Prozessor 310 ausgeführt wird, transparent sein. Obwohl beispielsweise auf den NVRAM-Massenspeicherplatz 152A anders als auf den Flash-/magnetischen/optischen Massenspeicherplatz 152A zugegriffen wird, kann das Betriebssystem den NVRAM-Massenspeicherplatz 152A weiterhin als standardmäßige Massenspeicherplatzvorrichtung ansehen (z. B. eine serielle ATA-Festplatte oder eine andere Standardform einer Massenspeicherplatzvorrichtung).
  • Bei einer Ausführungsform, bei welcher der NVRAM-Massenspeicherplatz 152A als vollständiger Ersatz für den Flash-/magnetischen/optischen Massenspeicherplatz 152B dient, ist es nicht notwendig, Speicherplatztreiber zum blockadressierbaren Speicherplatzzugriff zu verwenden. Das Entfernen des Aufwands für den Speicherplatztreiber aus dem Speicherplatzzugriff kann die Zugriffsgeschwindigkeit erhöhen und Strom sparen. Bei alternativen Ausführungsformen, bei denen es erwünscht ist, dass der NVRAM-Massenspeicherplatz 152A für das OS und/oder die Anwendungen als blockzugänglich erscheint und von dem Flash-/magnetischen/optischen Massenspeicherplatz 152B nicht zu unterscheiden ist, können emulierte Speicherplatzvorrichtungen verwendet werden, um blockzugängliche Schnittstellen (z. B. USB („Universal Serial Bus”), BOT („Bulk Only Transfer”), 1.0; SATA („Serial Advanced Technology Attachment”), 3.0; und dergleichen) für die Software freizulegen, um auf den NVRAM-Massenspeicherplatz 152A zuzugreifen.
  • Bei einer Ausführungsform dient der NVRAM 142 als vollständiger Ersatz oder als Ergänzung für einen Firmware-Arbeitsspeicher, wie etwa ein BIOS-Flash 362 und ein TPM-Flash 372 (in 3 gestrichelt abgebildet, um anzugeben, dass sie optional sind). Beispielsweise kann der NVRAM 142 einen BIOS-NVRAM- 172 Teil umfassen, um den BIOS-Flash 362 zu ergänzen oder zu ersetzen, und kann einen TPM-NVRAM- 173 Teil umfassen, um den TPM-Flash 372 zu ergänzen oder zu ersetzen. Der Firmware-Arbeitsspeicher kann auch systempersistente Zustände speichern, die von einem TPM 334 verwendet werden, um sensible Systeminformationen (z. B. kryptografische Schlüssel) zu schützen. Bei einer Ausführungsform behebt die Verwendung des NVRAM 142 für den Firmware-Arbeitsspeicher die Notwendigkeit von Fremd-Flash-Teilen, um Code und Daten zu speichern, die für die Systemvorgänge kritisch sind.
  • Die Diskussion des Systems aus 3 nun fortführend kann die Architektur des Computersystems 100 bei einigen Ausführungsformen mehrere Prozessoren umfassen, obwohl in 3 der Einfachheit halber ein einziger Prozessor 310 abgebildet ist. Der Prozessor 310 kann eine beliebige Art von Datenprozessor sein, wozu eine universale oder spezifische Zentraleinheit (CPU), eine anwendungsspezifische integrierte Schaltung (ASIC) oder ein digitaler Signalprozessor (DSP) gehören. Beispielsweise kann der Prozessor 310 ein Universalprozessor sein, wie etwa ein Prozessor CoreTM i3, i5, i7, 2 Duo und Quad, XeonTM oder ItaniumTM, die alle bei Intel Corporation aus Santa Clara, Kalifornien, erhältlich sind. Alternativ kann der Prozessor 310 von einer anderen Firma stammen, wie etwa von ARM Holdings, Ltd., aus Sunnyvale, CA, MIPS Technologies aus Sunnyvale, CA, usw. Der Prozessor 310 kann ein spezifischer Prozessor sein, wie beispielsweise ein Netzwerk- oder Kommunikationsprozessor, eine Kompressions-Engine, ein Grafikprozessor, ein Co-Prozessor, ein integrierter Prozessor oder dergleichen. Der Prozessor 310 kann auf einem oder mehreren Chips umgesetzt werden, der bzw. die in einem oder mehreren Gehäusen enthalten ist bzw. sind. Der Prozessor 310 kann Teil eines oder mehrerer Substrate sein und/oder kann darauf unter Verwendung einer beliebigen von einer Reihe von Prozesstechnologien, wie beispielsweise BiCMOS, CMOS oder NMOS, umgesetzt werden. Bei der in 3 gezeigten Ausführungsform weist der Prozessor 310 eine System-auf-Chip-(SOC)Konfiguration auf.
  • Bei einer Ausführungsform umfasst der Prozessor 310 eine integrierte Grafikeinheit 311, die eine Logik zum Ausführen von grafischen Befehlen umfasst, wie etwa von 3D- oder 2D-grafischen Befehlen. Obwohl die Ausführungsformen der Erfindung nicht auf eine bestimmte integrierte grafische Einheit 311 eingeschränkt sind, ist die Grafikeinheit 311 bei einer Ausführungsform in der Lage, industriestandardmäßige Grafikbefehle auszuführen, wie etwa solche, die von Open GL und/oder Direct X Anwendungsprogrammierschnittstellen (API) vorgegeben werden (z. B. OpenGL 4.1 und Direct X 11).
  • Der Prozessor 310 kann auch einen oder mehrere Kerne 101 bis 104 umfassen, obwohl in 3 der Übersichtlichkeit halber wieder ein einziger Kern abgebildet ist. Bei einigen Ausführungsformen umfasst der Kern bzw. umfassen die Kerne 101 bis 104 interne Funktionsblöcke, wie etwa eine oder mehrere Ausführungseinheiten, Rückzugseinheiten, einen Satz von universalen und spezifischen Registern usw. Falls der Kern oder die Kerne Multi-Threading- oder Hyper-Threading-Kerne sind, dann kann man auch jeden Hardware-Thread als „logischen” Kern ansehen. Die Kerne 101 bis 104 können im Hinblick auf die Architektur und/oder den Befehlssatz vereinheitlicht oder nicht vereinheitlicht sein. Beispielsweise können einige der Kerne der Reihe nach vorliegen, während andere durcheinander vorliegen. Als anderes Beispiel können zwei oder mehrere der Kerne in der Lage sein, den gleichen Befehlssatz auszuführen, während andere in der Lage sein können, nur einen Teilsatz dieses Befehlssatzes oder einen anderen Befehlssatz auszuführen.
  • Der Prozessor 310 kann auch einen oder mehrere Zwischenspeicher umfassen, wie etwa den Zwischenspeicher 313, der als SRAM und/oder DRAM umgesetzt sein kann. Bei zahlreichen Ausführungsformen, die nicht gezeigt werden, werden zusätzliche andere Zwischenspeicher als der Zwischenspeicher 313 umgesetzt, so dass mehrere Ebenen von Zwischenspeichern zwischen den Ausführungseinheiten der Kerne 101 bis 104 und den Arbeitsspeichervorrichtungen 150B und 151B existieren. Beispielsweise kann der Satz gemeinsam genutzter Zwischenspeichereinheiten einen übergeordneten Zwischenspeicher, wie etwa einen Level-1-(L1)Zwischenspeicher, einen Zwischenspeicher einer mittleren Ebene, wie etwa Level-2 (L2), Level-3 (L3), Level-4 (L4) oder andere Ebenen von Zwischenspeichern, einen (LLC) und/oder verschiedene Kombinationen davon umfassen. Bei anderen Ausführungsformen kann der Zwischenspeicher 313 unterschiedlich aufgeteilt sein und kann bei verschiedenen Ausführungsformen eine von vielen verschiedenen Größen aufweisen. Beispielsweise kann der Zwischenspeicher 313 ein 8-Megabyte-(MB)Zwischenspeicher, ein 16 MB-Zwischenspeicher usw. sein. Zusätzlich kann der Zwischenspeicher bei verschiedenen Ausführungsformen ein direkt abgebildeter Zwischenspeicher, ein voll assoziierender Zwischenspeicher, ein mehrfach assoziierender Zwischenspeicher oder ein Zwischenspeicher mit einer anderen Abbildungsart sein. Bei anderen Ausführungsformen, die mehrere Kerne umfassen, kann der Zwischenspeicher 313 einen großen Teil umfassen, der von allen Kernen gemeinsam genutzt wird oder der in mehrere getrennt funktionierende Anteile unterteilt werden kann (z. B. ein Anteil für jeden Kern). Der Zwischenspeicher 313 kann auch einen Teil umfassen, der von allen Kernen und mehreren anderen Teilen, die getrennte Funktionsanteile pro Kern sind, gemeinsam genutzt wird.
  • Der Prozessor 310 kann auch einen Home-Agent 314 umfassen, der die Komponenten umfasst, die den oder die Kerne 101 bis 104 koordinieren und betätigen. Die Home-Agent-Einheit 314 kann beispielsweise eine Stromregeleinheit (PCU) und eine Anzeigeeinheit umfassen. Die PCU kann der Logik und den Komponenten entsprechen, bzw. diese umfassen, die zum Regulieren des Stromzustands der Kerne 101 bis 104 und der integrierten Grafikeinheit 311 benötigt werden. Die Anzeigeeinheit ist zum Ansteuern eines oder mehrerer extern angeschlossener Displays gedacht.
  • Wie erwähnt, umfasst der Prozessor 310 bei einigen Ausführungsformen einen integrierten Arbeitsspeicher-Controller (IMC) 331, einen Naharbeitsspeicher-Zwischenspeicher (MSC) Controller und einen NVRAM-Controller 332, die sich alle auf demselben Chip wie der Prozessor 310 oder auf einem getrennten Chip und/oder einem Gehäuse, das an den Prozessor 310 angeschlossen ist, befinden können. Die DRAM-Vorrichtung 144 kann sich auf dem gleichen Chip oder auf einem anderen Chip als der IMC 331 und der MSC-Controller 124 befinden; somit kann ein Chip einen Prozessor 310 und eine DRAM-Vorrichtung 144 aufweisen; ein Chip kann den Prozessor 310 aufweisen und ein anderer die DRAM-Vorrichtung 144 (und diese Chips können in dem gleichen oder unterschiedlichen Gehäusen vorliegen); ein Chip kann den oder die Kerne 101 bis 104 und ein anderer den IMC 331, den MSC-Controller 124 und den DRAM 144 aufweisen (diese Chips können sich in demselben oder in unterschiedlichen Gehäusen befinden); ein Chip kann den oder die Kerne 101 bis 104 umfassen, ein anderer den IMC 331 und den MSC-Controller 124 und ein anderer den DRAM 144 (diese Chips können sich in demselben oder in unterschiedlichen Gehäusen befinden); usw.
  • Bei einigen Ausführungsformen umfasst der Prozessor 310 ein I/O-Teilsystem 115, das mit dem IMC 331 gekoppelt ist. Das I/O-Teilsystem 115 ermöglicht die Kommunikation zwischen dem Prozessor 310 und den folgenden seriellen oder parallelen I/O-Vorrichtungen: ein oder mehrere Netzwerke 336 (wie etwa ein lokales Netzwerk, ein Großraumnetzwerk oder das Internet), eine Speicherplatz-I/O-Vorrichtung (wie etwa ein Flash-/magnetischer/optischer Massenspeicherplatz 152B, ein BIOS-Flash 362, ein TPM-Flash 372) und eine oder mehrere Nicht-Speicherplatz-I/O-Vorrichtungen 337 (wie etwa ein Display, eine Tastatur, ein Lautsprecher und dergleichen). Das I/O-Teilsystem 115 kann einen Plattform-Controller-Hub (PCH) umfassen (nicht gezeigt), der ferner mehrere I/O-Adapter 338 und andere I/O-Schaltungen umfasst, um Zugriff auf die Speicherplatz- und Nicht-Speicherplatz-I/O-Vorrichtungen und Netzwerke bereitzustellen. Dazu kann das I/O-Teilsystem 115 mindestens einen integrierten I/O-Adapter 338 für jedes verwendete I/O-Protokoll aufweisen. Das I/O-Teilsystem 115 kann sich auf demselben Chip wie der Prozessor 310 befinden, oder auf einem getrennten Chip und/oder einem Gehäuse, das an den Prozessor 310 angeschlossen ist.
  • Die I/O-Adapter 338 übersetzen ein Host-Kommunikationsprotokoll, das innerhalb des Prozessors 310 verwendet wird, in ein Protokoll, das mit bestimmten I/O-Vorrichtungen kompatibel ist. Für Flash-/magnetischen/optischen Massenspeicherplatz 152B können einige der Protokolle, welche die I/O-Adapter 338 übersetzen können, unter anderem PCI-(„Peripheral Component Interconnect”) Express (PCI-E), 3.0; USB, 3.0; SATA, 3.0; SCSI („Small Computer System Interface”), Ultra-640; und IEEE („Institute of Electrical and Electronics Engineers”) 1394 Firewire; umfassen. Für den BIOS-Flash 362 können einige der Protokolle, welche die I/O-Adapter 338 übersetzen können, unter anderem SPI („Serial Peripheral Interface”), Microwire, umfassen. Zusätzlich kann es einen oder mehrere drahtlose Protokoll-I/O-Adapter geben. Beispiele von drahtlosen Protokollen werden unter anderem in persönlichen Netzwerken, wie etwa IEEE 802.15 und Bluetooth, 4.0; in drahtlosen lokalen Netzwerken, wie etwa drahtlosen Protokollen, die auf IEEE 802.11 basieren; und in Mobilfunkprotokollen verwendet.
  • Bei einigen Ausführungsformen ist das I/O-Teilsystem 115 mit einer TPM-Steuerung 334 gekoppelt, um den Zugriff auf systempersistente Zustände zu steuern, wie etwa sichere Daten, kryptografische Schlüssel, Plattform-Konfigurationsinformationen und dergleichen. Bei einer Ausführungsform werden diese systempersistenten Zustände in einem TMP-NVRAM 173 gespeichert und über einen NVRAM-Controller 332 abgerufen.
  • Bei einer Ausführungsform ist der TPM 334 ein sicherer Mikrocontroller mit kryptografischen Funktionen. Der TPM 334 verfügt über eine Reihe von vertrauensbezogenen Fähigkeiten; z. B. eine SEAL-Fähigkeit, um sicherzustellen, dass die Daten, die durch einen TPM geschützt sind, nur für denselben TPM verfügbar sind. Der TPM 334 kann die Daten und Schlüssel (z. B. Geheimnisse) schützen, indem er seine Verschlüsselungsfähigkeiten verwendet. Bei einer Ausführungsform verfügt der TPM 334 über einen einzigartigen und geheimen RSA-Schlüssel, der es ihm ermöglicht, Hardware-Vorrichtungen und Plattformen zu authentifizieren. Beispielsweise kann der TPM 334 überprüfen, dass ein System, das Zugriff auf Daten sucht, die in dem Computersystem 300 gespeichert sind, das erwartete System ist. Der TPM 334 ist auch in der Lage, die Integrität der Plattform (z. B. des Computersystems 300) zu melden. Dies ermöglicht es einer externen Ressource (z. B. einem Server auf einem Netzwerk), die Vertrauenswürdigkeit der Plattform zu bestimmen, verhindert jedoch nicht den Zugriff auf die Plattform durch den Benutzer.
  • Bei einigen Ausführungsformen umfasst das I/O-Teilsystem 315 auch eine Verwaltungs-Engine (ME) 335, wobei es sich um einen Mikroprozessor handelt, der es einem Systemadministrator ermöglicht, das Computersystem 300 zu überwachen, zu warten, zu aktualisieren, aufzurüsten und zu reparieren. Bei einer Ausführungsform kann ein Systemadministrator das Computersystem 300 fernkonfigurieren, indem er den Inhalt der Decodierungstabelle 333 durch die ME 335 über die Netzwerke 336 bearbeitet.
  • Zur praktischen Erläuterung bezieht sich der Rest der Anwendung manchmal auf den NVRAM 142 als PCMS-Vorrichtung. Eine PCMS-Vorrichtung umfasst mehrschichtige (senkrecht gestapelte) PCM-Zellenanordnungen, die nicht flüchtig sind, einen geringen Stromverbrauch aufweisen und auf Bit-Ebene veränderbar sind. Somit können die Begriffe NVRAM-Vorrichtung und PCMS-Vorrichtung in der nachstehenden Diskussion austauschbar verwendet werden. Es versteht sich jedoch, wie zuvor besprochen, dass verschiedene Technologien neben PCMS ebenfalls für den NVRAM 142 verwendet werden können.
  • Es versteht sich, dass ein Computersystem den NVRAM 142 für den Systemspeicher, den Massenspeicherplatz, den Firmware-Arbeitsspeicher und/oder andere Arbeitsspeicher- und Speicherplatzzwecke verwenden kann, auch wenn der Prozessor dieses Computersystems nicht über alle der zuvor beschriebenen Komponenten des Prozessors 310 verfügt oder eine größere Anzahl von Komponenten als der Prozessor 310 verfügt.
  • Bei der bestimmten Ausführungsform, die in 3 gezeigt wird, befinden sich der MSC-Controller 124 und der NVRAM-Controller 332 auf dem gleichen Chip oder Gehäuse (als CPU-Gehäuse bezeichnet) wie der Prozessor 310. Bei anderen Ausführungsformen kann bzw. können sich der MSC-Controller 124 und/oder der NVRAM-Controller 332 außerhalb des Chips oder außerhalb des CPU-Gehäuses befinden und mit dem Prozessor 310 oder dem CPU-Gehäuse über einen Bus, wie etwa einen Arbeitsspeicherbus (wie einen DDR-Bus (z. B. DDR3, DDR4 usw.)), einen PCI-Expressbus, einen Desktop-Verwaltungs-Schnittstellen-(DMI)Bus oder einen beliebigen andersartigen Bus, gekoppelt sein.
  • BEISPIELHAFTE PCM-BUS UND GEHÄUSEKONFIGURATIONEN
  • 4A bis M bilden diverse verschiedene Aufstellungen ab, bei denen der Prozessor, der Naharbeitsspeicher und der Fernarbeitsspeicher unterschiedlich konfiguriert und untergebracht sind. Insbesondere ermöglicht die Reihe von Plattform-Arbeitsspeicher-Konfigurationen, die in 4A bis M abgebildet sind, die Verwendung eines neuen nicht-flüchtigen Systemspeichers, wie etwa von PCM-Technologien, oder genauer gesagt von PCMS-Technologien.
  • Während einige der gleichen nummerischen Bezeichnungen über mehrere Figuren in 4A bis N verwendet werden, bedeutet dies nicht unbedingt, dass die Strukturen, die durch diese nummerischen Bezeichnungen identifiziert werden, immer identisch sind. Während beispielsweise die gleichen Nummern verwendet werden, um einen integrierten Arbeitsspeicher-Controller (IMC) 331 und eine CPU 401 in mehreren Figuren zu identifizieren, können diese Komponenten in anderen Figuren anders umgesetzt werden. Einige dieser Unterschiede werden nicht hervorgehoben, weil sie zum Verständnis der grundlegenden Prinzipien der Erfindung nicht maßgeblich sind.
  • Obwohl mehrere verschiedene Lösungsansätze zur Systemplattformkonfiguration nachstehend beschrieben werden, fallen diese Lösungsansätze in zwei breite Kategorien: geteilte Architektur und vereinheitlichte Architektur. Kurz gesagt fängt in dem geteilten Architekturschema ein arbeitsspeicherseitiger Zwischenspeicher-(MSC)Controller (der sich z. B. auf dem Prozessor-Chip oder auf einem getrennten Chip in dem CPU-Gehäuse befindet) alle Systemspeicheranfragen ab. Es gibt zwei getrennte Schnittstellen, die von diesem Controller aus „herabfließen” und das CPU-Gehäuse verlassen, um mit dem Naharbeitsspeicher und dem Fernarbeitsspeicher gekoppelt zu werden. Jede Schnittstelle ist auf den spezifischen Typ des Arbeitsspeichers abgestimmt, und jeder Arbeitsspeicher kann im Hinblick auf Leistung und Kapazität unabhängig skaliert werden.
  • In dem vereinheitlichten Architekturschema verlässt eine einzige Arbeitsspeicher-Schnittstelle den Prozessor-Chip oder das CPU-Gehäuse, und alle Arbeitsspeicheranfragen werden an diese Schnittstelle gesendet. Der MSC-Controller zusammen mit den Nah- und Fernarbeitsspeicher-Teilsystemen werden an dieser einzigen Schnittstelle zusammengefasst. Diese Arbeitsspeicher-Schnittstelle muss abgestimmt sein, um den Anforderungen des Prozessors an die Arbeitsspeicherleistung gerecht zu werden, und muss ein ungeordnetes Transaktionsprotokoll unterstützen, mindestens weil die PCMS-Vorrichtungen die Leseanfragen vielleicht nicht der Reihe nach verarbeiten. Gemäß den obigen allgemeinen Kategorien, können die folgenden spezifischen Plattform-Konfigurationen verwendet werden.
  • Die nachstehend beschriebenen Ausführungsformen umfassen diverse Arten von Bussen/Kanälen. Die Begriffe „Bus” und „Kanal” werden hier als Synonyme verwendet. Die Anzahl von Arbeitsspeicherkanälen pro DIMM-Sockel ist von dem bestimmten CPU-Gehäuse abhängig, das in dem Computersystem verwendet wird (wobei einige CPU-Gehäuse beispielsweise drei Arbeitsspeicherkanäle pro Sockel unterstützen).
  • Zusätzlich kann bei den nachstehend beschriebenen Ausführungsformen, die einen DRAM verwenden, praktisch eine beliebige Art von DRAM-Arbeitsspeicherkanälen verwendet werden, wozu beispielhaft ohne Einschränkung DDR-Kanäle (z. B. DDR3, DDR4, DDR5 usw.) gehören. Während DDR somit auf Grund seiner breiten Akzeptanz in der Industrie, der sich ergebenden Kostenpunkte usw. vorteilhaft ist, sind die grundlegenden Prinzipien der Erfindung nicht auf einen bestimmten Typ von DRAM oder flüchtigen Arbeitsspeicher eingeschränkt.
  • 4A bildet eine Ausführungsform einer geteilten Architektur ab, die eine oder mehrere DRAM-Vorrichtungen 403 bis 406, die als Naharbeitsspeicher funktionieren, die als Zwischenspeicher für den FM (d. h. MSC) in dem CPU-Gehäuse 401 dienen (entweder auf dem Prozessor-Chip oder auf einem getrennten Chip), und eine oder mehrere NVRAM-Vorrichtungen, wie etwa einen PCM-Arbeitsspeicher, der auf den DIMM 450 bis 451 befindlich ist und als Fernarbeitsspeicher dient, umfasst. Verbindungen mit hoher Bandbreite 407 am CPU-Gehäuse 401 schalten eine einzige oder mehrere DRAM-Vorrichtungen 403 bis 406 mit dem Prozessor 310 zusammen, der den integrierten Arbeitsspeicher-Controller (IMC) 331 und den MSC-Controller 124 hostet. Obwohl er in 4A und anderen nachstehend beschriebenen Figuren als getrennte Einheiten abgebildet ist, kann der MSC-Controller 124 bei einer Ausführungsform in dem Arbeitsspeicher-Controller 331 integriert sein.
  • Die DIMM 450 bis 451 verwenden DDR-Steckplätze und elektrische Anschlüsse, die einen DDR-Kanal 440 mit DDR-Adresse, Daten- und Steuerleitungen und Spannungen definieren (z. B. den DDR3- oder DDR4-Standard, wie er vom JEDEC („Joint Electron Devices Engineering Council”) definiert wird. Die PCM-Vorrichtungen auf den DIMM 450 bis 451 stellen die Fernarbeitsspeicherkapazität dieser geteilten Architektur bereit, wobei die DDR-Kanäle 440 zum CPU-Gehäuse 401 in der Lage sind, sowohl die DDR- als auch die Transaktionsprotokolle zu befördern. Im Gegensatz zu DDR-Protokollen, bei denen der Prozessor 310 oder eine andere Logik innerhalb des CPU-Gehäuses (z. B. der IMC- 331 oder MSC-Controller 124) einen Befehl überträgt und eine sofortige Antwort empfängt, ermöglicht es das Transaktionsprotokoll, das verwendet wird, um mit PCM-Vorrichtungen zu kommunizieren, der CPU 401, eine Reihe von Transaktionen auszugeben, die jeweils durch eine einzigartige Transaktions-ID identifiziert sind. Die Befehle werden von einem PCM-Controller an der Empfänger-DIMM der PCM-DIMM bedient, das gegebenenfalls ungeordnete Antworten an das CPU-Gehäuse 401 zurücksendet. Der Prozessor 310 oder eine andere Logik innerhalb des CPU-Gehäuses 401 identifiziert jede Transaktionsantwort durch ihre Transaktions-ID, die mit der Antwort gesendet wird. Die obige Konfiguration ermöglicht es dem System, sowohl standardmäßige DDR-DRAM-basierte DIMM (unter Verwendung von DDR-Protokollen auf elektrischen DDR-Anschlüssen) als auch PCM-basierte DIMM-Konfigurationen (unter Verwendung von Transaktionsprotokollen auf den gleichen elektrischen DDR-Anschlüssen) zu unterstützen.
  • 4B bildet eine geteilte Architektur ab, die DDR-DRAM-basierte DIMM 452 verwendet, die über DDR-Kanäle 440 gekoppelt sind, um den Naharbeitsspeicher zu bilden, der als MSC dient. Der Prozessor 310 hostet den Arbeitsspeicher-Controller 331 und den MSC-Controller 124. NVRAM-Vorrichtungen, wie etwa PCM-Arbeitsspeichervorrichtungen, befinden sich auf PCM-basierten DIMM 453, die DDR-Steckplätze und elektrische Anschlüsse auf zusätzlichen DDR-Kanälen 442 außerhalb des CPU-Gehäuses 401 verwenden. Die PCM-basierten DIMM 453 stellen die Fernarbeitsspeicherkapazität dieser geteilten Architektur bereit, wobei die DDR-Kanäle 442 zum CPU-Gehäuse 401 auf elektrischen DDR-Anschlüssen basieren und in der Lage sind, sowohl DDR- als auch Transaktionsprotokolle zu befördern. Dies ermöglicht es dem System, mit unterschiedlichen Anzahlen von DDR-DRAM-DIMM 452 (z. B. DDR4-DIMM) und PCM-DIMM 453 konfiguriert zu werden, um die gewünschte Kapazität und/oder die Leistungspunkte zu erreichen.
  • 4C bildet eine geteilte Architektur ab, welche die Naharbeitsspeicher 403 bis 406 hostet, die als arbeitsspeicherseitiger Zwischenspeicher (MSC) am CPU-Gehäuse 401 dienen (entweder auf dem Prozessor-Chip oder auf einem getrennten Chip). Die Verbindungen mit hoher Bandbreite 407 am CPU-Gehäuse werden verwendet, um eine einzige oder mehrere DRAM-Vorrichtungen 403 bis 406 mit dem Prozessor 310 zusammenzuschalten, der den Arbeitsspeicher-Controller 331 und den MSC-Controller 124 hostet, wie sie durch die geteilte Architektur definiert werden. Der NVRAM, wie etwa PCM-Arbeitsspeichervorrichtungen, befinden sich auf PCI-Express-Karten oder Riser-Karten 455, die elektrische PCI-Express-Anschlüsse und ein PCI-Express-Protokoll oder ein anderes Transaktionsprotokoll über den PCI-Express-Bus 454 verwenden. Die PCM-Vorrichtungen auf den PCI-Express-Karten oder den Riser-Karten 455 stellen die Fernarbeitsspeicherkapazität dieser geteilten Architektur bereit.
  • 4D ist eine geteilte Architektur, die DDR-DRAM-basierte DIMM 452 und DDR-Kanäle 440 verwendet, um den Naharbeitsspeicher zu bilden, der als MSC dient. Der Prozessor 310 hostet den Arbeitsspeicher-Controller 331 und den MSC-Controller 124. NVRAM, wie etwa die PCM-Arbeitsspeichervorrichtungen 455, befindet sich auf PCI-Express-Karten oder Riser-Karten, die elektrische PCI-Express-Anschlüsse und ein PCI-Express-Protokoll oder ein anderes Transaktionsprotokoll über die PCI-Express-Verbindung 454 verwenden. Die PCM-Vorrichtungen auf den PCI-Express-Karten oder Riser-Karten 455 stellen die Fernarbeitsspeicherkapazität dieser geteilten Architektur bereit, wobei die Arbeitsspeicher-Kanalschnittstellen außerhalb des CPU-Gehäuses 401 mehrere DDR-Kanäle 440 für DDR-DRAM-DIMM 452 bereitstellen.
  • 4E bildet eine vereinheitlichte Architektur ab, die sowohl Naharbeitsspeicher, der als MSC dient, als auch Fernarbeitsspeicher-NVRAM, wie etwa PCM auf PCI-Express-Karten oder Riser-Karten 456, die elektrische PCI-Express-Anschlüsse und ein PCI-Express-Protokoll oder ein anderes Transaktionsprotokoll auf dem PCI-Express-Bus 454 verwenden, hostet. Der Prozessor 310 hostet den integrierten Arbeitsspeicher-Controller 331, doch bei dieser vereinheitlichten Architektur befindet sich der MSC-Controller 124 auf der Karte oder der Riser-Karte 456, zusammen mit dem DRAM-Naharbeitsspeicher und dem NVRAM-Fernarbeitsspeicher.
  • 4F bildet eine vereinheitlichte Architektur ab, die sowohl den Naharbeitsspeicher, der als MSC dient, als auch den Fernarbeitsspeicher-NVRAM, wie etwa einen PCM, auf DIMM 458 unter Verwendung von DDR-Kanälen 457 hostet. Der Naharbeitsspeicher bei dieser vereinheitlichten Architektur umfasst DRAM auf jedem DIMM 458, der als arbeitsspeicherseitiger Zwischenspeicher für die PCM-Vorrichtungen auf dem gleichen DIMM 458 dient, die den Fernarbeitsspeicher dieses bestimmten DIMM bilden. Der MSC-Controller 124 befindet sich auf jedem DIMM 458 zusammen mit dem Nah- und Fernarbeitsspeicher. Bei dieser Ausführungsform werden mehrere Arbeitsspeicherkanäle eines DDR-Busses 457 außerhalb des CPU-Gehäuses bereitgestellt. Der DDR-Bus 457 dieser Ausführungsform setzt ein Transaktionsprotokoll über elektrische DDR-Anschlüsse um.
  • 4G bildet eine hybride geteilte Architektur ab, durch die sich der MSC-Controller 124 auf dem Prozessor 310 befindet, und sowohl die Naharbeitsspeicher- als auch die Fernarbeitsspeicher-Schnittstellen den gleichen DDR-Bus 410 gemeinsam nutzen. Diese Konfiguration verwendet DRAM-basierte DDR-DIMM 411a als Naharbeitsspeicher, der als MSC dient, mit den PCM-basierten DIMM 411b (d. h. Fernarbeitsspeicher), die sich auf dem gleichen Arbeitsspeicherkanal des DDR-Busses 410 befinden, unter Verwendung von DDR-Steckplätzen und NVRAM (wie etwa PCM-Arbeitsspeichervorrichtungen). Die Arbeitsspeicherkanäle dieser Ausführungsform führen sowohl DDR- als auch Transaktionsprotokolle gleichzeitig, um die Naharbeitsspeicher- und Fernarbeitsspeicher-DIMM, 411a und 411b, jeweils gleichzeitig zu adressieren.
  • 4H bildet eine vereinheitlichte Architektur ab, bei der sich der Naharbeitsspeicher 461a, der als arbeitsspeicherseitiger Zwischenspeicher dient, auf einem Mezzanine oder einer Riser-Karte 461 in Form von DRAM-basierten DDR-DIMM befindet. Der arbeitsspeicherseitige Zwischenspeicher-(MSC)Controller 124 befindet sich in dem DDR- und PCM-Controller 460 der Riser-Karte, der zwei oder mehrere Arbeitsspeicherkanäle aufweisen kann, die an DDR-DIMM-Kanäle 470 auf dem Mezzanine/der Riser-Karte 461 angeschlossen sind und mit der CPU über eine oder mehrere Hochleistungsverbindungen 462, wie etwa eine Differenz-Arbeitsspeicherverbindung, zusammengeschaltet sind. Der dazugehörige Fernarbeitsspeicher 461b liegt auf demselben Mezzanine/derselben Riser-Karte 461 und besteht aus DIMM, die DDR-Kanäle 470 verwenden und mit NRVAM (wie etwa PCM-Vorrichtungen) besetzt sind.
  • 4I bildet eine vereinheitlichte Architektur ab, die als Arbeitsspeicher-Kapazitätserweiterung für ein DDR-Arbeitsspeicher-Teilsystem verwendet werden kann, und DIMM 464, die an das CPU-Gehäuse 401 an seinem DDR-Arbeitsspeicher-Teilsystem über einen DDR-Bus 471 angeschlossen sind. Für die zusätzliche NVM-basierte Kapazität bei dieser Konfiguration liegt der Naharbeitsspeicher, der als MSC dient, auf einem Mezzanine oder einer Riser-Karte 463, in Form von DRAM-basierten DDR-DIMM 463a. Der MSC-Controller 124 befindet sich in dem DDR- und PCM-Controller 460 der Riser-Karte, der zwei oder mehrere Arbeitsspeicherkanäle aufweisen kann, die an die DDR-DIMM-Kanäle 470 auf dem Mezzanine/der Riser-Karte angeschlossen sind und mit der CPU über eine oder mehrere Hochleistungsverbindungen 462, wie etwa eine Differenz-Arbeitsspeicherverbindung, zusammengeschaltet sind. Der dazugehörige Fernarbeitsspeicher 463b liegt auf demselben Mezzanine/derselben Riser-Karte 463 und wird durch DIMM 463b gebildet, die DDR-Kanäle 470 verwenden und mit NVRAM (wie etwa PCM-Vorrichtungen) besetzt sind.
  • 4J ist eine vereinheitlichte Architektur, bei der ein Naharbeitsspeicher, der als arbeitsspeicherseitiger Zwischenspeicher (MSC) dient, auf jedem einzelnen DIMM 465 in Form von DRAM vorliegt. Die DIMM 465 befinden sich auf einer Hochleistungs-Zusammenschaltung/Kanälen 462, wie etwa einer Differenz-Arbeitsspeicherverbindung, die das CPU-Gehäuse 401 mit dem MSC-Controller 124 koppelt, der sich auf den DIMM befindet. Der dazugehörige Fernarbeitsspeicher liegt auf den gleichen DIMM 465 und wird durch die NVRAM (wie etwa PCM-Vorrichtungen) gebildet.
  • 4K bildet eine vereinheitlichte Architektur ab, bei welcher der Naharbeitsspeicher, der als MSC dient, auf jedem DIMM 466 in Form von DRAM vorliegt. Die DIMM befinden sich auf einer oder mehreren Hochleistungs-Zusammenschaltungen 470, die an das CPU-Gehäuse 401 angeschlossen sind, wobei sich der MSC-Controller 124 auf den DIMM befindet. Der dazugehörige Fernarbeitsspeicher liegt auf dem gleichen DIMM 466 und wird durch NVRAM (wie etwa PCM-Vorrichtungen) gebildet.
  • 4L bildet eine geteilte Architektur ab, die DDR-DRAM-basierte DIMM 464 auf einem DDR-Bus 471 verwendet, um den notwendigen Naharbeitsspeicher zu bilden, der als MSC dient. Der Prozessor 310 hostet den integrierten Arbeitsspeicher-Controller 331 und den arbeitsspeicherseitigen Zwischenspeicher-Controller 124. Ein NVRAM, wie etwa ein PCM-Arbeitsspeicher, bildet den Fernarbeitsspeicher, der auf Karten oder Riser-Karten 467 vorliegt, welche die Hochleistungs-Zusammenschaltungen 468 verwenden, die unter Verwendung eines Transaktionsprotokolls mit dem CPU-Gehäuse 401 kommunizieren. Die Karten oder Riser-Karten 467, die den Fernarbeitsspeicher hosten, hosten einen einzigen Puffer/Controller, der mehrere PCM-basierte Speicher oder mehrere PCM-basierte DIMM, die an dieser Riser-Karte angeschlossen sind, steuern kann.
  • 4M bildet eine vereinheitlichte Architektur ab, die einen DRAM auf einer Karte oder einer Riser-Karte 469 verwenden kann, um den notwendigen Naharbeitsspeicher zu bilden, der als MSC dient. NVRAM, wie etwa PCM-Arbeitsspeicher-Vorrichtungen, bildet den Fernarbeitsspeicher, der ebenfalls auf den Karten oder Riser-Karten 469 liegt, die Hochleistungs-Zusammenschaltungen 468 zum CPU-Gehäuse 401 verwenden. Die Karten oder Riser-Karten 469, die den Fernarbeitsspeicher hosten, hosten einen einzigen Puffer/Controller, der mehrere PCM-basierte Vorrichtungen oder mehrere PCM-basierte DIMM auf dieser Riser-Karte 469 steuern kann und auch den arbeitsspeicherseitigen Zwischenspeicher-Controller 124 integriert.
  • Bei einigen der zuvor beschriebenen Ausführungsformen, wie etwa denjenigen, die in 4G abgebildet sind, liegen die DRAM-DIMM 411a und PCM-basierten DIMM 411b auf dem gleichen Arbeitsspeicherkanal. Folglich wird der gleiche Satz von Adressen-/Steuerungs- und Datenleitungen verwendet, um die CPU sowohl an den DRAM- als auch an die PCM-Speicher anzuschließen. Um die Datenverkehrsmenge durch die vermaschte CPU-Zusammenschaltung zu reduzieren, ist bei einer Ausführungsform ein DDR-DIMM auf einem gemeinsamen Arbeitsspeicherkanal mit einem PCM-basierten DIMM konfiguriert, um als einziger MSC für Daten zu dienen, die in dem PCM-basierten DIMM abgelegt sind. Bei einer derartigen Konfiguration werden die Fernarbeitsspeicherdaten, die in dem PCM-basierten DIMM abgelegt sind, in dem DDR-DIMM-Naharbeitsspeicher innerhalb desselben Arbeitsspeicherkanals nur zwischengespeichert, wodurch Arbeitsspeicher-Transaktionen zu diesem bestimmten Arbeitsspeicherkanal lokalisiert werden.
  • Um zusätzlich die obige Ausführungsform umzusetzen, kann der Systemadressenraum logisch auf die verschiedenen Arbeitsspeicherkanälen aufgeteilt werden. Falls es beispielsweise vier Arbeitsspeicherkanäle gibt, dann kann 1/4 des Systemadressenraums jedem Arbeitsspeicherkanal zugeteilt werden. Falls jeder Arbeitsspeicherkanal mit einem PCMS-basierten DIMM und einem DDR-DIMM versehen ist, kann das DDR-DIMM konfiguriert sein, um als MSC für diesen 1/4-Teil des Systemadressenraums zu dienen.
  • Die Wahl der Systemspeicher- und Massenspeicherplatz-Vorrichtungen kann von der Art der elektronischen Plattformen abhängen, auf denen Ausführungsformen der Erfindung verwendet werden. Beispielsweise bei einem PC, einem Tablet-Computer, einem Notebook-Computer, einem Smartphone, einem Handy, einem Feature-Phone, einem persönlichen digitalen Assistenten (PDA), einem tragbaren Medienabspielgerät, einem tragbaren Spielgerät, einer Spielkonsole, einer Digitalkamera, einem Schalter, einem Hub, einem Router, einer Set-Top-Box, einem digitalen Videorekorder oder anderen Vorrichtungen, die relativ geringe Anforderungen an Massenspeicherplatz haben, kann der Massenspeicherplatz unter Verwendung von NVRAM-Massenspeicherplatz 152A alleine oder unter Verwendung von NVRAM-Massenspeicherplatz 152A in Kombination mit einem Flash-/magnetischen/optischen Massenspeicherplatz 152B umgesetzt werden. Bei anderen elektronischen Plattformen, die relativ große Anforderungen an Massenspeicherplatz haben (z. B. großformatige Server), kann der Massenspeicherplatz unter Verwendung von magnetischem Speicherplatz (z. B. Festplatten) oder einer beliebigen Kombination von magnetischem Speicherplatz, optischem Speicherplatz, holografischem Speicherplatz, Massenspeicher-Flash-Arbeitsspeicher und NVRAM-Massenspeicherplatz 152A umgesetzt werden. In diesem Fall kann bzw. können die System-Hardware und/oder Software, die für den Speicherplatz verantwortlich ist bzw. sind, diverse intelligente persistente Speicherplatz-Zuteilungstechniken umsetzen, um Blöcke von persistentem Programmcode und Daten zwischen dem FM 151B/NVRAM-Speicherplatz 152A und einem Flash-/magnetischen/optischen Massenspeicherplatz 152B auf effiziente oder anderweitig nützliche Art und Weise zuzuteilen.
  • Beispielsweise ist bei einer Ausführungsform ein leistungsstarker Server mit einem Naharbeitsspeicher (z. B. DRAM), einer PCMS-Vorrichtung und einer magnetischen Massenspeicherplatz-Vorrichtung für große Mengen an persistentem Speicherplatz konfiguriert. Bei einer Ausführungsform ist ein Notebook-Computer mit einem Naharbeitsspeicher und einer PCMS-Vorrichtung konfiguriert, welche die Aufgabe sowohl eines Fernarbeitsspeichers als auch einer Massenspeicherplatz-Vorrichtung ausführt (d. h. die logisch aufgeteilt ist, um diese Aufgaben auszuführen, wie in 3 gezeigt). Eine Ausführungsform eines Heim- oder Büro-Desktop-Computers ist ähnlich wie ein Notebook-Computer konfiguriert, kann jedoch auch eine oder mehrere magnetische Speicherplatzvorrichtungen umfassen, um große Mengen von persistenten Speicherplatzkapazitäten bereitzustellen.
  • Eine Ausführungsform eines Tablet-Computers oder einer Mobiltelefonvorrichtung ist mit PCMS-Arbeitsspeicher, aber eventuell ohne Naharbeitsspeicher und ohne zusätzlichen Massenspeicherplatz konfiguriert (um Kosten/Strom zu sparen). Das Tablet/Telefon kann jedoch mit einer abnehmbaren Massenspeicherplatz-Vorrichtung, wie etwa einem Flash- oder PCMS-Arbeitsspeicher-Stick, konfiguriert sein.
  • Diverse andere Arten von Vorrichtungen können konfiguriert sein, wie zuvor beschrieben. Beispielsweise können tragbare Medienabspielgeräte und/oder persönliche digitale Assistenten (PDA) ähnlich wie die zuvor beschriebenen Tablets/Telefone konfiguriert sein, Spielkonsolen können ähnlich wie Desktop- oder Laptop-Computer konfiguriert sein. Andere Vorrichtungen, die ähnlich konfiguriert werden können, umfassen Digitalkameras, Router, Set-Top-Boxen, digitale Videorekorder, Fernsehgeräte und Autos.
  • AUSFÜHRUNGSFORMEN EINER MSC-ARCHITEKTUR
  • Bei einer Ausführungsform der Erfindung wird der größte Teil des DRAM im Systemspeicher durch PCM ersetzt. Wie zuvor besprochen, bietet der PCM erhebliche Verbesserungen der Arbeitsspeicherkapazität bei erheblich geringeren Kosten im Verhältnis zum DRAM und ist nicht flüchtig. Gewisse Kennzeichen des PCM, wie etwa eine asymmetrische Lese/Schreib-Leistung, Schreibzyklus-Dauerfestigkeit, so wie seine nicht flüchtige Beschaffenheit, machen den direkten Ersatz des DRAM, ohne größere Software-Änderungen in Kauf zu nehmen, jedoch zu einer Herausforderung. Die nachstehend beschriebenen Ausführungsformen der Erfindung stellen eine für Software transparente Möglichkeit bereit, den PCM zu integrieren und dabei auch neuartige Verwendungen durch Software-Verbesserungen zu ermöglichen. Diese Ausführungsformen fördern einen erfolgreichen Übergang der Arbeitsspeicher-Teilsystemarchitektur und stellen einen Weg bereit, um unter Verwendung eines einzigen PCM-Pools sowohl den Arbeitsspeicher als auch den Speicherplatz zusammenzulegen, was somit die Notwendigkeit einer getrennten, nicht flüchtigen Speicherplatzstufe in der Plattform mindert.
  • Die bestimmte Ausführungsform, die in 5A abgebildet ist, umfasst einen oder mehrere Prozessorkerne 501, jeweils mit einer internen Arbeitsspeicher-Verwaltungseinheit (MMU) 502 zum Generieren von Arbeitsspeicheranfragen und einem oder mehreren internen CPU-Zwischenspeichern 503 zum Speichern von Zeilen von Programmcode und Daten gemäß einem vorgegebenen Zwischenspeicher-Verwaltungskonzept. Wie zuvor erwähnt, kann das Zwischenspeicher-Verwaltungskonzept ein exklusives Zwischenspeicher-Verwaltungskonzept (bei dem eine Zeile, die auf einer bestimmten Zwischenspeicherebene in der Hierarchie vorliegt, auf keiner anderen Zwischenspeicherebene vorliegt) oder ein inklusives Zwischenspeicher-Verwaltungskonzept (bei dem duplizierte Zwischenspeicherzeilen auf verschiedenen Ebenen der Zwischenspeicherhierarchie gespeichert werden) umfassen. Die spezifischen Zwischenspeicher-Verwaltungskonzepte, die zum Verwalten der internen Zwischenspeicher 503 verwendet werden können, sind dem Fachmann wohlbekannt und werden daher hier nicht näher beschrieben. Die grundlegenden Prinzipien der Erfindung sind nicht auf ein bestimmtes Zwischenspeicher-Verwaltungskonzept eingeschränkt.
  • Ebenfalls in 5A abgebildet ist ein Home-Agent 505, der Zugriff auf den MSC 510 bereitstellt, indem er Arbeitsspeicher-Kanaladressen (MCA) für Arbeitsspeicheranfragen generiert. Der Home-Agent 505 ist für die Verwaltung eines vorgegebenen Arbeitsspeicher-Adressenraums verantwortlich und löst Arbeitsspeicher-Zugriffskonflikte, die sich an diesen Arbeitsspeicherraum richten. Falls somit ein Kern auf einen bestimmten Adressenraum zugreifen muss, sendet er Anfragen an diesen Home-Agent 505, der dann die Anfrage an diese bestimmte MMU 502 sendet. Bei einer Ausführungsform wird ein Home-Agent 505 pro MMU 502 zugeteilt; bei einigen Ausführungsformen kann jedoch ein einziger Home-Agent 505 mehr als eine Arbeitsspeicher-Verwaltungseinheit 502 bedienen.
  • Wie in 5A abgebildet, ist ein MSC 510 vor dem PCM-basierten Fernarbeitsspeicher 519 konfiguriert. Der MSC 510 verwaltet den Zugriff auf einen Naharbeitsspeicher 518 und leitet gegebenenfalls Arbeitsspeicher-Zugriffsanfragen (z. B. Lese- und Schreibvorgänge) an den Fernarbeitsspeicher-Controller 521 weiter (z. B. wenn die Anfragen nicht von dem Naharbeitsspeicher 518 bedient werden können). Der MSC 510 umfasst eine Zwischenspeicher-Steuereinheit 512, die als Reaktion auf einen Markierungszwischenspeicher 511 funktioniert, der Markierungen speichert, die Zwischenspeicherzeilen identifizieren, die in dem Naharbeitsspeicher 518 enthalten sind. Wenn im Betrieb die Zwischenspeicher-Steuereinheit 512 bestimmt, dass die Arbeitsspeicher-Zugriffsanfrage von dem Naharbeitsspeicher 518 bedient werden kann (z. B. als Reaktion auf einen Zwischenspeichertreffer), generiert sie eine Naharbeitsspeicheradresse (NMA), um Daten zu identifizieren, die in dem Naharbeitsspeicher 518 gespeichert werden. Eine Naharbeitsspeicher-Steuereinheit 515 interpretiert die NMA und generiert als Reaktion darauf elektrische Signale, um auf den Naharbeitsspeicher 518 zuzugreifen. Wie zuvor erwähnt ist der Naharbeitsspeicher bei einer Ausführungsform ein dynamischer wahlfreier Zugriffsspeicher (DRAM). In diesem Fall können die elektrischen Signale Reihenadressenimpuls-(RAS) und Spaltenadressenimpuls-(CAS)Signale umfassen. Es versteht sich jedoch, dass die grundlegenden Prinzipien der Erfindung nicht auf die Verwendung von DRAM für Naharbeitsspeicher eingeschränkt sind.
  • Eine andere Komponente, die eine für Software transparente Arbeitsspeicheranwendung sicherstellt, ist ein optimierter PCM-Fernarbeitsspeicher-Controller 521, der die PCM-Fernarbeitsspeicher- 530 Charakteristiken verwaltet und dabei weiterhin die notwendige Leistung bereitstellt. Bei einer Ausführungsform umfasst der PCM-Controller 521 eine Adressenindirektionstabelle 520, welche die MCA, die von der Zwischenspeicher-Steuereinheit 515 generiert wird, in eine PDA übersetzt, die verwendet wird, um den PCM-Fernarbeitsspeicher 530 direkt zu adressieren. Diese Übersetzungen können auf der Granularität eines „Blocks” erfolgen, der typischerweise 5 KB groß ist. Die Übersetzung ist notwendig, da bei einer Ausführungsform der Fernarbeitsspeicher-Controller 521 die PCM-Blocks ständig durch den PCM-Vorrichtungsadressenraum bewegt, um sicherzustellen, dass es keine Verschleißstellen auf Grund einer hohen Frequenz von Schreibvorgängen für einen beliebigen spezifischen Block gibt. Wie zuvor beschrieben, wird eine derartige Technik hier manchmal als „Verschleißausgleich” bezeichnet.
  • Somit wird der MSC 510 von der Zwischenspeicher-Steuereinheit 512 verwaltet, die es dem MSC 510 ermöglicht, Transaktionen (z. B. Lese- und Schreibvorgänge) für den PCM-Fernarbeitsspeicher 530 zu absorbieren, zusammenzufügen und zu filtern. Die Zwischenspeicher-Steuereinheit 512 verwaltet alle Anforderungen an Datenbewegung und Kohärenz zwischen dem Naharbeitsspeicher 518 und dem PCM-Fernarbeitsspeicher 530. Zusätzlich stellt der MSC-Zwischenspeicher-Controller 512 bei einer Ausführungsform Schnittstellen für die CPU bereit und stellt die standardmäßige synchrone Lade-/Speicher-Schnittstelle bereit, die bei herkömmlichen DRAM-basierten Arbeitsspeicher-Teilsystemen verwendet wird.
  • Es werden nun beispielhafte Lese- und Schreibvorgänge in Zusammenhang mit der in 5A gezeigten Architektur beschrieben. Bei einer Ausführungsform kommt ein Lesevorgang zuerst an dem MSC-Controller 512 an, der eine Suche ausführt, um zu bestimmen, ob die angefragten Daten vorhanden sind (z. B. unter Verwendung des Markierungszwischenspeichers 511). Soweit vorhanden, gibt er die Daten an die anfragende CPU, den Kern 501 oder die I/O-Vorrichtung (nicht gezeigt) zurück. Falls die Daten nicht vorhanden sind, sendet der MSC-Controller 512 die Anfrage zusammen mit der Systemspeicheradresse (hier auch als Arbeitsspeicher-Kanaladressen oder MCA bezeichnet) an den PCM-Fernarbeitsspeicher-Controller 521. Der PCM-Controller 521 verwendet die Adressenindirektionstabelle 520, um die Adresse in eine PDA zu übersetzen und den Lesevorgang auf diesen Bereich des PCM zu richten. Beim Empfang der angefragten Daten von dem PCM-Fernarbeitsspeicher 530 gibt der PCM-Controller 521 die angefragten Daten an den MSC-Controller 512 zurück, der die Daten in dem MSC-Naharbeitsspeicher 518 speichert und die Daten auch an den anfragenden CPU-Kern 501 oder die I/O-Vorrichtung sendet. Anschließende Anfragen für diese Daten können direkt von dem MSC-Naharbeitsspeicher 518 bedient werden, bis sie durch andere PCM-Daten ersetzt werden.
  • Bei einer Ausführungsform geht ein Arbeitsspeicher-Schreibvorgang auch zuerst zum MSC-Controller 512, der ihn in den MSC-Naharbeitsspeicher 518 schreibt. Bei dieser Ausführungsform werden die Daten vielleicht nicht direkt an den PCM-Fernarbeitsspeicher 530 gesendet, wenn ein Schreibvorgang empfangen wird. Beispielsweise können die Daten nur an den PCM-Fernarbeitsspeicher 530 gesendet werden, wenn die Position in dem MSC-Naharbeitsspeicher 518, in dem die Daten gespeichert sind, wiederverwendet werden muss, um Daten für eine andere Systemspeicheradresse zu speichern. Wenn dies vorkommt, bemerkt der MSC-Controller 512, dass die Daten in dem PCM-Fernarbeitsspeicher 530 nicht aktuell sind, und ruft sie somit aus dem Naharbeitsspeicher 518 ab und sendet sie an den PCM-Controller 521. Der PCM-Controller 521 sucht die PDA für die Systemspeicheradresse und schreibt dann die Daten in den PCM-Fernarbeitsspeicher 530.
  • Bei einer Ausführungsform ist die Größe des MSC-Naharbeitsspeichers 518 durch die Arbeitsspeicheranforderungen der Auslastung sowie durch die Leistung der Nah- und Fernarbeitsspeicher vorgeschrieben. Für einen DRAM-basierten MSC kann die Größe auf ein Zehntel der Größe des Platzbedarfs des Auslastungsarbeitsspeichers oder der Größe des PCM-Fernarbeitsspeichers 530 eingestellt werden. Ein derartiger MSC ist im Vergleich zu herkömmlichen Zwischenspeichern, die in derzeitigen Prozessor-/Systemarchitekturen zu finden sind, sehr groß. Beispielsweise und ohne Einschränkung kann für eine Größe des PCM-Fernarbeitsspeichers von 128 GB die Größe des MSC-Naharbeitsspeichers bis zu 16 GB reichen.
  • 5B bildet zusätzliche Einzelheiten ab, die mit einer Ausführungsform des MSC 510 verknüpft sind. Diese Ausführungsform umfasst einen Satz logischer Einheiten, die für Befehle und Adressierung verantwortlich sind, wozu eine Befehlspuffer-Verfolgungseinheit 542 zum Puffern von Befehlen/Adressen und eine Einheit zum Überprüfen des Zugriffsmodus des Zwischenspeichers 544, die einen MSC-Betriebsmodus als Reaktion auf ein Steuersignal von einer MSC-Bereichsregister-(RR)Einheit 545 auswählt, gehören. Mehrere beispielhafte Betriebsmodi werden nachstehend beschrieben. Kurz gesagt können diese Modi umfassen, bei denen der Naharbeitsspeicher in einer herkömmlichen Zwischenspeicheraufgabe verwendet wird, sowie Modi, bei denen der Naharbeitsspeicher 518 Teil des Systemspeichers ist. Ein Markierungsüberprüfungs-/Befehls-Steuerprogramm 550 verwendet Markierungen aus dem Markierungszwischenspeicher 511, um zu bestimmen, ob eine bestimmte Zwischenspeicherzeile in dem Naharbeitsspeicher 518 gespeichert ist, und ein Naharbeitsspeicher-Controller 515 generiert Kanaladressen-Signale (z. B. CAS- und RAS-Signale).
  • Diese Ausführungsform umfasst auch einen Satz logischer Einheiten, die für das Routen und Verarbeiten von Daten verantwortlich sind, und einen Satz Datenpuffer 546 umfasst, um Daten zu speichern, die aus dem Naharbeitsspeicher abgerufen oder in dem Naharbeitsspeicher abgelegt werden. Bei einer Ausführungsform ist auch ein Prefetch-Datenzwischenspeicher 547 enthalten, um Daten zu speichern, die im Voraus aus dem Naharbeitsspeicher und/oder dem Fernarbeitsspeicher abgerufen werden. Der Prefetch-Datenzwischenspeicher 547 ist jedoch optional und nicht notwendig, um die grundlegenden Prinzipien der Erfindung zu erfüllen.
  • Eine Einheit zum Generieren/Überprüfen von Fehlerkorrekturcode (ECC) 552 generiert und überprüft ECC, um sicherzustellen, dass Daten, die in den Naharbeitsspeicher geschrieben oder daraus gelesen werden, fehlerfrei sind. Wie nachstehend besprochen, wird bei einer Ausführungsform der Erfindung die ECC-Generierungs-/Überprüfungseinheit 552 geändert, um Zwischenspeichermarkierungen zu speichern. Spezifische ECC sind dem Fachmann wohlbekannt und werden daher hier nicht ausführlicher beschrieben. Die Kanal-Controller 553 koppeln den Datenbus des Naharbeitsspeichers 518 mit dem MSC 510 und generieren die notwendige elektrische Signalisierung, um auf den Naharbeitsspeicher 518 zuzugreifen (z. B. RAS- und CAS-Signalisierung für einen DRAM-Naharbeitsspeicher).
  • Ebenfalls in 5B abgebildet ist eine Fernarbeitsspeicher-Steuerschnittstelle 548 zum Koppeln des MSC 510 mit dem Fernarbeitsspeicher. Insbesondere generiert die Fernarbeitsspeicher-Schnittstelle 548 die MCA, die notwendig sind, um den Fernarbeitsspeicher zu adressieren, und teilt die Daten zwischen den Datenpuffern 546 und dem Fernarbeitsspeicher mit.
  • Wie erwähnt, ist der Naharbeitsspeicher 518, der bei einer Ausführungsform verwendet wird, im Vergleich au dem herkömmlichen Zwischenspeicher, der in derzeitigen Prozessor/Systemarchitekturen zu finden ist, sehr groß. Folglich kann auch der Markierungszwischenspeicher 511, der die Übersetzung der Systemspeicheradressen in Naharbeitsspeicheradressen pflegt, sehr groß sein. Die Kosten des Speicherns und Suchens der MSC-Markierungen können eine erhebliche Behinderung sein, um große Zwischenspeicher aufzubauen. Somit wird bei einer Ausführungsform der Erfindung dieses Problem dadurch gelöst, dass ein neuartiges Schema verwendet wird, dass die Zwischenspeichermarkierungen in dem Speicherplatz speichert, der in dem MSC dem ECC-Schutz zugeteilt ist, wodurch die Kosten des Speicherplatzes für die Markierungen im Wesentlichen aufgehoben werden.
  • Diese Ausführungsform ist im Allgemeinen in 5C abgebildet, die einen integrierten Markierungszwischenspeicher und die ECC-Einheit 554 zum Speichern/Verwalten von Zwischenspeichermarkierungen, zum Speichern von ECC-Daten und zum Ausführen von ECC-Vorgängen zeigt. Wie abgebildet, werden die gespeicherten Markierungen dem Markierungsüberprüfungs-/Befehlssteuerprogramm 550 auf Anfrage bereitgestellt, wenn Markierungsüberprüfungsvorgänge ausgeführt werden (z. B. um zu bestimmen, ob ein bestimmter Datenblock in dem Naharbeitsspeicher-Zwischenspeicher 518 gespeichert ist).
  • 5D bildet die Organisation eines beispielhaften Datensatzes 524 und eines entsprechenden ECC 523 und einer Markierung 522 ab. Wie abgebildet, ist die Markierung 522 mit dem ECC 523 in einem Arbeitsspeicher der Markierungszwischenspeicher-/ECC-Einheit 554 zusammengelegt (bei einer Ausführungsform z. B. mit dem DDR-DRAM). Bei diesem Beispiel wurden mehrere Datenblöcke von insgesamt 64 Bytes in die Markierungszwischenspeicher-/ECC-Einheit 554 eingelesen. Eine ECC-Überprüfungs-/Generatoreinheit 554a generiert einen ECC unter Verwendung der Daten 525 und vergleicht den generierten ECC mit dem vorhandenen ECC 523, der mit den Daten verknüpft ist. Bei diesem Beispiel wird ein 4-Byte-ECC für die 64 Bytes der Daten 525 generiert. Die grundlegenden Prinzipien der Erfindung sind jedoch nicht auf eine bestimmte Art oder Größe von ECC eingeschränkt. Zusätzlich ist zu beachten, dass der Begriff „Daten” hier im weitesten Sinn verwendet wird, um sich sowohl auf ausführbaren Programmcode als auch auf Daten zu beziehen, die beide in dem in 5D gezeigten Datenspeicherplatz 525 gespeichert werden können.
  • Bei einer Ausführungsform wird eine 3-Byte-(24-Bit-)Markierung 522 mit den Bitbelegungen verwendet, die in 5D abgebildet sind. Insbesondere sind die Bits 00 bis 16 Adressenbits, welche die oberen Adressenbits der Zwischenspeicherzeile bereitstellen. Für eine Systemadresse mit 56 Bits (z. B. SPA [55:00]), werden die Bits 00 bis 16 auf die Bits 55 bis 29 der Systemadresse abgebildet, was die kleinste Zwischenspeichergröße von 512 MB ermöglicht. Zurück zur 3-Byte-Markierung sind die Bits 17 bis 19 reserviert; die Bits 20 und 21 sind Verzeichnisbits, die Informationen über CPU-Fernzwischenspeichern der Zwischenspeicherzeile bereitstellen (z. B. eine Angabe über die anderen CPU bereitstellen, auf denen die Zeile zwischengespeichert ist); die Bits 21 und 22 geben den aktuellen Zustand der Zwischenspeicherzeile an (z. B. 00 = bereinigt; 01 = verändert; 10 und 11 = unbenutzt); und Bit 23 gibt an, ob die Zwischenspeicherzeile gültig ist (z. B. 1 = gültig; 0 = ungültig).
  • Die Verwendung einer direkt abgebildeten Zwischenspeicherarchitektur, wie zuvor beschrieben, die es ermöglicht, dass die Naharbeitsspeicheradresse direkt aus der Systemspeicheradresse entnommen wird, reduziert oder behebt die Latenzkosten der Suche im Markierungsspeicher, bevor der MSC 510 gelesen werden kann, wodurch sich die Leistung erheblich verbessert. Des Weiteren wird auch die Zeit zum Überprüfen der Zwischenspeichermarkierungen, um zu entscheiden, ob der MSC 510 die erforderlichen Daten aufweist, behoben, da dies parallel zur ECC-Überprüfung der Daten erfolgt, die aus dem MSC ausgelesen werden.
  • Unter bestimmten Bedingungen kann das Speichern der Markierungen mit den Daten zu einem Problem für Schreibvorgänge führen. Ein Schreibvorgang liest die Daten zuerst, um sicherzustellen, dass er keine Daten für eine andere Adresse überscheibt. Ein derartiger Lesevorgang vor jedem Schreibvorgang könnte kostspielig werden. Eine Ausführungsform der Erfindung verwendet einen Zwischenspeicher für Markierungen veränderter Zeilen, der die Markierungen kürzlich abgegriffener Naharbeitsspeicheradressen (NMA) pflegt. Da viele Schreibvorgänge auf kürzlich abgegriffene Adressen abzielen, kann ein recht kleiner Markierungszwischenspeicher eine effektive Trefferquote erzielen, um die meisten Lesevorgänge vor einem Schreibvorgang auszufiltern.
  • Zusätzliche Einzelheiten, die mit einer Ausführungsform eines PCM-DIMM 519 verknüpft sind, das einen PCM-Fernarbeitsspeicher-Controller 521 und einen Satz PCM-Fernarbeitsspeichermodule 530a–i umfasst, sind in 5E abgebildet. Bei einer Ausführungsform wird ein einziger Pool des PCM-Fernarbeitsspeichers 530a–i von Systemarbeitsspeicher- und Speicherplatzverwendungen dynamisch gemeinsam genutzt. Bei dieser Ausführungsform kann der gesamte PCM-Pool 530a–i in „Blöcke” einer Größe von 4 KB unterteilt werden. Eine PCM-Deskriptor-Tabelle (PDT) 565 identifiziert die Verwendung jedes PCM-Blocks entweder als Arbeitsspeicher oder als Speicherplatz. Beispielsweise kann jede Reihe der PDT einen bestimmten Block darstellen, wobei eine bestimmte Spalte die Verwendung jedes Blocks identifiziert (z. B. 1 = Arbeitsspeicher; 0 = Speicherplatz). Bei dieser Ausführungsform kann eine anfängliche Systemkonfiguration die PCM-Blöcke in dem PCM 530a–i zwischen der Verwendung als Speicherplatz und Arbeitsspeicher aufteilen (d. h. durch Programmieren der PDT 565). Bei einer Ausführungsform wird die gleiche Tabelle verwendet, um fehlerhafte Blöcke auszuschließen und Ersatzblöcke für Verschleißausgleichvorgänge bereitzustellen. Zusätzlich kann die PDT 565 auch das Abbilden jedes PCMS-Blocks auf eine „logische” Blockadresse, die von der Software verwendet wird, umfassen. Für den Fall des Systemspeichers ist die logische Blockadresse die gleiche wie die MCA oder SPA. Diese Verknüpfung wird benötigt, um die Adressenindirektionstabelle (AIT) 563 jedes Mal zu aktualisieren, wenn der PCMS-Block auf Grund des Verschleißausgleichs bewegt wird. Wenn dies erfolgt, muss die logische Blockadresse, die von der Software verwendet wird, auf eine andere PCMS-Vorrichtungsadresse (PDA) abgebildet werden. Bei einer Ausführungsform wird diese Abbildung in der AIT gespeichert und wird bei jeder Verschleißausgleichbewegung aktualisiert.
  • Wie abgebildet, umfasst der PCM-Controller 521 eine Vorrichtung 556 zum Abbilden von physikalischen Systemadressen (SPA) in dem PCM, die als Reaktion auf eine Verschleißverwaltungseinheit 555 funktioniert, und eine Adressenindirektionseinheit 563, um SPA in PCM-Blöcken abzubilden. Bei einer Ausführungsform setzt die Verschleißverwaltungslogik 555 einen Verschleißausgleichalgorithmus um, um die Tatsache zu berücksichtigen, dass die Speicherplatzzellen des PCM 530a bis 530i nach zu vielen Schreib- und/oder Löschzugriffen langsam verschleißen. Der Verschleißausgleich verteilt die Schreib- und Löschvorgänge auf die Arbeitsspeicherzellen der PCM-Vorrichtung, indem er beispielsweise Datenblöcke mit geringen Lastwechseln zwingt, sich gelegentlich zu bewegen, und es dadurch oft wechselnden Datenblöcken ermöglicht, in Arbeitsspeicherzellen verlegt zu werden, in denen wenig wechselnde Datenblöcke abgelegt waren. Typischerweise wechseln die meisten Blöcke nicht, doch neigen Blöcke mit hohen Lastwechseln am meisten dazu, zu versagen, und der Verschleißausgleich vertauscht die Adressen von häufig wechselnden Blöcken mit denen von wenig wechselnden Blöcken. Die Verschleißverwaltungslogik 555 kann die Lastwechsel verfolgen, indem sie einen oder mehrere Zähler und Register verwendet (z. B. können die Zähler jedes Mal um eins inkrementiert werden, wenn ein Wechsel erkannt wird, und das Ergebnis kann in dem Registersatz gespeichert werden.
  • Bei einer Ausführungsform umfasst die Adressenindirektionslogik 563 eine Adressenindirektionstabelle (AIT), die eine Angabe der PCM-Blöcke enthält, an welche die Schreibvorgänge zu richten sind. Die AIT kann verwendet werden, um automatisch Blöcke zwischen den Verwendungen als Arbeitsspeicher und Speicherplatz zu bewegen. Aus Sicht der Software verwenden die Zugriffe auf alle Blöcke eine herkömmliche Arbeitsspeicher-Lade/Speicher-Semantik (d. h. Verschleißausgleich- und Adressenindirektions-Vorgänge erfolgen für die Software transparent). Bei einer Ausführungsform wird die AIT verwendet, um die SPA, die von der Software generiert wird, in eine PDA zu übersetzen. Diese Übersetzung ist notwendig, da durch die Notwendigkeit, die PCMS-Vorrichtungen einheitlich abzunutzen, die Daten in dem PDA-Raum hin und her bewegt werden müssen, um eventuelle Spitzenlastpunkte zu vermeiden. Wenn eine derartige Bewegung erfolgt, ändert sich die Beziehung zwischen SPA und PDA, und die AIT wird aktualisiert, um diese neue Übersetzung wiederzugeben.
  • Nach der SPA/PCM-Abbildung plant eine Steuerprogrammeinheit 557 die zugrundeliegenden PCM-Vorgänge (z. B. Lesevorgänge und/oder Schreibvorgänge) für die PCM-Vorrichtungen 530a–I, und eine PCM-Protokoll-Engine 558 generiert die elektrische Signalisierung, die benötigt wird, um die Lese-/Schreibvorgänge auszuführen. Eine ECC-Einheit 562 führt Fehlererkennungs- und Korrekturvorgänge aus, und die Datenpuffer 561 puffern zeitweise Daten, die aus den PCM-Vorrichtungen 530a–I gelesen oder darin geschrieben werden. Ein persistenter Schreibpuffer 559 wird verwendet, um Daten zu enthalten, die mit Sicherheit in das PCMS zurückgeschrieben werden, auch im Fall eines Stromausfalls (z. B. wird er unter Verwendung eines nicht flüchtigen Speicherplatzes umgesetzt). Eine Entleerungsunterstützungslogik 560 ist enthalten, um die persistenten Schreibpuffer entweder regelmäßig und/oder gemäß einem vorgegebenen Datenentleerungsalgorithmus in den PCMS zu entleeren (z. B. nachdem die persistenten Schreibpuffer eine vorgegebene Schwelle erreicht haben).
  • Bei einer Ausführungsform routet der MSC 510 automatisch Speicherplatzzugriffe direkt zum PCM-Fernarbeitsspeicher-Controller 521 und Arbeitsspeicherzugriffe zur MSC-Zwischenspeicher-Steuereinheit 512. Speicherplatzzugriffe, die den PCM-Fernarbeitsspeicher-Controller 521 erreichen, werden wie normale Lesevorgänge und Schreibvorgänge behandelt, und die hier beschriebenen Adressenindirektions- und Verschleißausgleich-Mechanismen werden wie gewohnt angewendet. Eine zusätzliche Optimierung wird bei einer Ausführungsform der Erfindung verwendet, die umgesetzt werden kann, wenn sich die Daten zwischen Speicherplatz und Arbeitsspeicher bewegen müssen. Da ein gemeinsamer PCM-Pool 530a–I verwendet wird, kann eine Datenbewegung behoben oder verschoben werden, indem einfach die Zeiger in den Übersetzungstabellen (z. B. AIT) geändert werden. Wenn die Daten beispielsweise vom Speicherplatz zum Arbeitsspeicher übertragen werden, kann ein Zeiger, der die Daten in einer bestimmten physikalischen PCM-Speicherplatzposition identifiziert, aktualisiert werden, um anzugeben, dass die gleiche physikalische PCM-Speicherplatzposition nun eine Arbeitsspeicherposition im Systemspeicher ist. Bei einer Ausführungsform erfolgt dies durch Hardware auf für Software transparente Art und Weise, um sowohl Leistungs- als auch Stromvorteile bereitzustellen.
  • Zusätzlich zu dem für Software transparenten Betriebsmodus stellt eine Ausführungsform des MSC-Controllers 512 alternative Betriebsmodi bereit, wie von den MSC-Bereichsregistern (RR) 545 angegeben. Diese Betriebsmodi können ohne Einschränkung folgende umfassen:
    • 1) Direkter Zugriff auf den PCM-Arbeitsspeicher für Speicherplatz-Klassenanwendungen. Diese Verwendung erfordert auch, dass der MSC-Controller 512 sicherstellt, dass Schreibvorgänge, die dem PCM 519 unterbreitet werden, tatsächlich in einem persistenten Zustand festgelegt werden.
    • 2) Eine hybride Verwendung des Naharbeitsspeichers 518, die Teile davon der Software zur direkten Verwendung freilegt und dabei den Rest als MSC bewahrt. Wenn ein Teil des Naharbeitsspeichers 518 der Software zur direkten Verwendung freigelegt wird, ist dieser Teil innerhalb des Systemadressenraums direkt adressierbar. Dies ermöglicht es gewissen Anwendungen, ihre Arbeitsspeicherzuteilung ausdrücklich zwischen einem kleinen leistungsstarken Bereich (dem Naharbeitsspeicher 518) und einem relativ leistungsschwächeren Großbereich (dem Fernarbeitsspeicher 530) aufzuteilen. Im Gegensatz dazu gehört der Teil, der als Zwischenspeicher innerhalb des MSC zugeteilt wird, nicht zum Systemadressenraum (sondern dient stattdessen als Zwischenspeicher für Fernarbeitsspeicher 530, wie hier beschrieben).
  • Wie zuvor besprochen, wird die MSC-Architektur derart definiert, dass mehrere verschiedene Lösungsansätze zum Zerlegen des Systems möglich sind. Diese Lösungsansätze fallen in zwei breite Speicherbereiche:
    • (1) Geteilte Architektur: Bei diesem Schema befindet sich der MSC-Controller 512 in der CPU und fängt alle Systemspeicheranfragen ab. Es gibt zwei getrennte Schnittstellen vom MSC, welche die CPU verlassen, um an den Naharbeitsspeicher (z. B. DRAM) und den Fernarbeitsspeicher (z. B. PCM) angeschlossen zu werden. Jede Schnittstelle ist auf einen spezifischen Arbeitsspeichertyp abgestimmt, und jeder Arbeitsspeicher kann im Hinblick auf Leistung und Kapazität unabhängig skaliert werden.
    • (2) Vereinheitlichte Architektur: Bei diesem Schema verlässt eine einzige Arbeitsspeicher-Schnittstelle die CPU und alle Arbeitsspeicheranfragen werden an diese Schnittstelle gesendet. Der MSC-Controller 512 zusammen mit dem Naharbeitsspeicher-(z. B. DRAM) und dem Fernarbeitsspeicher-(z. B. PCM)Teilsystem werden außerhalb der CPU an dieser einzigen Schnittstelle zusammengelegt. Bei einer Ausführungsform ist diese Arbeitsspeicher-Schnittstelle abgestimmt, um den Anforderungen der CPU an die Arbeitsspeicherleistung gerecht zu werden, und unterstützt ein ungeordnetes Transaktionsprotokoll. Die Anforderungen der Nah- und Fernarbeitsspeicher werden „vereinheitlicht” an jeder dieser Schnittstellen erfüllt.
  • Im Rahmen der obigen Speicherbereiche sind mehrere verschiedene Zerlegungsmöglichkeiten machbar, von denen einige nachstehend beschrieben werden.
    • (1) Geteiltes Beispiel: Naharbeitsspeicher: DDR5 DIMM Naharbeitsspeicher-Schnittstelle: ein oder mehrere DDR5-Kanäle Fernarbeitsspeicher: PCM-Controller/Vorrichtung auf einer PCI-Express (PCIe) Karte Fernarbeitsspeicher-Schnittstelle: x16 PCIe, Gen 3
    • 2) Vereinheitlichtes Beispiel: CPU-Arbeitsspeicher-Schnittstelle: ein oder mehrere KTMI-(oder QPMI-)Kanäle Nah-/Fernarbeitsspeicher mit MSC/PCM-Controller auf einer Riser-Karte Naharbeitsspeicher-Schnittstelle außerhalb des MSC/PCM-Controllers: DDR5-Schnittstelle Fernarbeitsspeicher-Schnittstelle außerhalb des MSC/PCM-Controllers: PCM-Vorrichtungsschnittstelle
  • AUSFÜHRUNGSFORMEN MIT UNTERSCHIEDLICHEN BETRIEBSMODI DES NAHARBEITSSPEICHERS
  • Wie zuvor besprochen kann eine Arbeitsspeicherhierarchie auf zwei Ebenen verwendet werden, um schnelle nicht flüchtige Arbeitsspeicher, wie etwa PCM, als Systemspeicher einzuführen und dabei einen sehr großen DRAM-basierten Naharbeitsspeicher zu verwenden. Der Naharbeitsspeicher kann als Hardware-verwalteter Zwischenspeicher verwendet werden. Einige Anwendungen sind jedoch nicht Hardwarezwischenspeicherfreundlich und könnten somit alternative Möglichkeiten nutzen, um einen derartigen Arbeitsspeicher zu verwenden. Weil es mehrere verschiedene Anwendungen geben kann, die zu einer bestimmten Zeit auf einem Server laufen, ermöglicht eine Ausführungsform der Erfindung mehreren Verwendungsmodi, gleichzeitig aktiviert zu werden. Zusätzlich stellt eine Ausführungsform die Möglichkeit bereit, die Zuteilung von Naharbeitsspeicher für jeden dieser Verwendungsmodi zu steuern.
  • Bei einer Ausführungsform stellt der MSC-Controller 512 die folgenden Modi bereit, um den Naharbeitsspeicher zu verwenden. Wie zuvor erwähnt, kann bei einer Ausführungsform der aktuelle Betriebsmodus durch Operationscodes vorgegeben werden, die in den MSC-Bereichsregistern (RR) 545 gespeichert sind.
    • (1) Rückschreib-Zwischenspeichermodus: In diesem Modus wird der ganze Naharbeitsspeicher 518 oder werden Teile davon als Zwischenspeicher für den PCM-Arbeitsspeicher 530 verwendet. Während des Rückschreibmodus ist jeder Schreibvorgang anfangs an den Naharbeitsspeicher 518 gerichtet (wenn man davon ausgeht, dass die Zwischenspeicherzeile, an die der Schreibvorgang gerichtet ist, in dem Zwischenspeicher vorliegt). Ein entsprechender Schreibvorgang wird ausgeführt, um den PCM-Fernarbeitsspeicher 530 nur zu aktualisieren, wenn die Zwischenspeicherzeile innerhalb des Naharbeitsspeichers 518 durch eine andere Zwischenspeicherzeile zu ersetzen ist (im Gegensatz zu dem nachstehend beschriebenen Durchschreibmodus, bei dem sich jeder Schreibvorgang sofort zum Fernarbeitsspeicher 530 verbreitet).
  • Bei einer Ausführungsform kommt ein Lesevorgang erst an dem MSC-Zwischenspeicher-Controller 512 an, der eine Suche ausführt, um zu bestimmen, ob die angefragten Daten in dem PCM-Fernarbeitsspeicher 518 vorliegen (z. B. unter Verwendung eines Markierungszwischenspeichers 511). Falls sie vorhanden sind, gibt er die Daten an die anfragende CPU, den Kern 501 oder die I/O-Vorrichtung zurück (in 5A nicht gezeigt). Falls die Daten nicht vorliegen, sendet der MSC-Zwischenspeicher-Controller 512 die Anfrage zusammen mit der Systemspeicheradresse an den PCM-Fernarbeitsspeicher-Controller 521. Der PCM-Fernarbeitsspeicher-Controller 521 übersetzt die Systemspeicheradresse in eine physikalische PCM-Vorrichtungsadresse (PDA) und richtet den Lesevorgang auf diesen Bereich des Fernarbeitsspeichers 530. Wie zuvor erwähnt, kann diese Übersetzung eine Adressenindirektionstabelle (AIT) 563 verwenden, die der PCM-Controller 521 verwendet, um zwischen Systemspeicheradressen und PCM-PDA zu übersetzen. Bei einer Ausführungsform wird die AIT als Teil des Verschleißausgleichalgorithmus aktualisiert, der umgesetzt wird, um Arbeitsspeicher-Zugriffsvorgänge zu verteilen und dadurch den Verschleiß des PCM-FM 530 zu reduzieren.
  • Bei Empfang der angefragten Daten vom PCM-FM 530 gibt der PCM-FM Controller 521 die angefragten Daten an den MSC-Controller 512 zurück, der die Daten in dem MSC-Naharbeitsspeicher 518 speichert und die Daten auch an den anfragenden Prozessorkern 501 oder die I/O-Vorrichtung (in 5A nicht gezeigt) sendet. Nachfolgende Anfragen für diese Daten können direkt vom Naharbeitsspeicher 518 bedient werden, bis sie durch andere PCM-FM-Daten ersetzt werden.
  • Bei einer Ausführungsform geht ein Arbeitsspeicher-Schreibvorgang auch zuerst zum MSC-Controller 512, der ihn in den MSC-Naharbeitsspeicher schreibt, der als FM-Zwischenspeicher 518 dient. Bei dieser Ausführungsform können die Daten nicht direkt an den PCM-FM 530 gesendet werden, wenn ein Schreibvorgang empfangen wird. Beispielsweise können die Daten nur an den PCM-FM 530 gesendet werden, wenn die Position in dem MSC-Naharbeitsspeicher, der als FM-Zwischenspeicher 518 dient, in dem die Daten gespeichert sind, wiederverwendet werden muss, um Daten für eine andere Systemspeicheradresse zu speichern. Wenn dies geschieht, bemerkt der MSC-Controller 512, dass die Daten in dem PCM-FM 530 nicht aktuell sind, und ruft sie somit aus dem Naharbeitsspeicher ab, der als FM-Zwischenspeicher 518 dient, und sendet sie an den PCM-FM Controller 521. Der PCM-Controller 521 sucht die PDA für die Systemspeicheradresse und schreibt die Daten dann in den PCM-FM 530.
    • (2) Naharbeitsspeicher-Umgehungsmodus: Bei diesem Modus umgehen alle Lese- und Schreibvorgänge den NM, der als FM-Zwischenspeicher 518 dient, und gehen direkt zum PCM-Fernarbeitsspeicher 530. Ein derartiger Modus kann beispielsweise verwendet werden, wenn eine Anwendung nicht zwischenspeicherfreundlich ist oder erfordert, dass die Daten zur Persistenz auf der Granularität einer Zwischenspeicherzeile festgelegt werden. Bei einer Ausführungsform funktionieren die Zwischenspeicherung, die von dem Prozessorzwischenspeicher 503 ausgeführt wird, und der NM, der als FM-Zwischenspeicher 518 dient, unabhängig voneinander. Folglich können Daten in dem NM, der als FM-Zwischenspeicher 518 dient, zwischengespeichert werden, die nicht in den Prozessorzwischenspeichern 503 zwischengespeichert sind (und manchmal nicht in den Prozessorzwischenspeichern 503 zwischengespeichert werden dürfen), und umgekehrt. Somit können bestimmte Daten, die man als in den Prozessorzwischenspeichern 503 „nicht zwischenspeicherbar” bezeichnen kann, in dem NM zwischengespeichert werden, der als FM-Zwischenspeicher 518 dient.
    • (3) Naharbeitsspeicher-Lesezwischenspeicher-Schreibumgehungsmodus: Hier handelt es sich um eine Variante des obigen Modus, bei dem ein Lesezwischenspeichern der persistenten Daten aus dem PCM 519 erlaubt ist (d. h. die persistenten Daten werden in dem MSC 510 für schreibgeschützte Vorgänge zwischengespeichert). Dies ist nützlich, wenn die meisten der persistenten Daten „schreibgeschützt” sind und die Verwendung der Anwendung zwischenspeicherfreundlich ist.
    • (4) Naharbeitsspeicher-Lesezwischenspeicher-Durchschreibmodus: Dies ist eine Variante des vorhergehenden Modus, wobei zusätzlich zum Lesezwischenspeichern, auch Schreibtreffer zwischengespeichert werden. Jeder Schreibvorgang für den MSC-Naharbeitsspeicher 518 verursacht einen Schreibvorgang in den PCM-Fernarbeitsspeicher 530. Somit ist auf Grund der durchschreibenden Beschaffenheit des Zwischenspeichers die Persistenz der Zwischenspeicherzeilen weiter gewährleistet.
    • (5) Naharbeitsspeicher-Direktzugriffsmodus: In diesem Modus ist der ganze Naharbeitsspeicher oder sind Teile davon für die Software direkt sichtbar und gehören zum Systemspeicher-Adressenraum. Ein derartiger Arbeitsspeicher kann vollständig unter Software-Kontrolle stehen. Eine beliebige Datenbewegung vom PCM-Arbeitsspeicher 519 zu diesem Bereich des Naharbeitsspeichers erfordert ausdrückliche Software-Kopien. Ein derartiges Schema kann eine uneinheitliche Arbeitsspeicheradressen-(NUMA)Arbeitsspeicherdomäne für Software schaffen, wobei es eine viel höhere Leistung vom Naharbeitsspeicher 518 mit Bezug auf den PCM-Fernarbeitsspeicher 530 erzielt. Eine derartige Verwendung kann für bestimmte leistungsstarke Rechen-(HPC) und Grafikanwendungen verwendet werden, die einen sehr schnellen Zugriff auf gewisse Datenstrukturen erfordern. Dieser Naharbeitsspeicher-Direktzugriffmodus entspricht dem „Heften” gewisser Zwischenspeicherzeilen in den Naharbeitsspeicher. Ein derartiges Heften kann effektiv in größeren mehrfach assoziierenden Zwischenspeichern erfolgen.
  • Die nachstehende Tabelle A fasst jeden der zuvor beschriebenen Betriebsmodi zusammen. Tabelle A
    Modus Lesevorgänge Schreibvorgänge
    Rückschreib-Zwischenspeicher Zuteilen bei Verfehlen Zurückschreiben bei Verdrängen veränderter Daten Zuteilen bei Verfehlen Zurückschreiben bei Verdrängen veränderter Daten
    Zwischenspeicher-Umgehung Umgehung zum Fernarbeitsspeicher Umgehung zum Fernarbeitsspeicher
    Lesezwischenspeicher/Schreibumgehung Zuteilen bei Verfehlen Umgehung zum Fernarbeitsspeicher Zwischengespeicherte Zeile ungültig machen
    Lesezwischenspeicher/Durchschreiben Zuteilen bei Verfehlen Aktualisieren nur bei Treffer Durchschreiben in Fernarbeitsspeicher
    Direkter Zugriff Direktes Lesen aus Naharbeitsspeicher Kein Fernarbeitsspeicher-Zugriff Direktes Schreiben in Naharbeitsspeicher Kein Fernarbeitsspeicher-Zugriff
  • Der Prozessor und die Chipsatz-Komponenten, die verwendet werden, um die obigen Betriebsmodi umzusetzen, umfassen Folgendes:
    • (1) Einen arbeitsspeicherseitigen Zwischenspeicher-Controller 512, der den Naharbeitsspeicher in einer Arbeitsspeicher-Hierarchie auf zwei Ebenen (2LM) steuert.
    • (2) Einen Satz Bereichsregister 545 (siehe 5B) in dem arbeitsspeicherseitigen Zwischenspeicher 510, der die Systemadressenbereiche für jeden der zuvor beschriebenen Betriebsmodi bestimmt.
    • (3) Einen Mechanismus, um fertiggestellte Schreibvorgänge von dem PCM-Arbeitsspeicher-Teilsystem 519 in den MSC-Controller 515 zu quittieren.
    • (4) Einen Mechanismus zum Ungültigmachen von Zeilen in dem Naharbeitsspeicher 518.
    • (5) Eine Entleerungs-Engine, um veränderte Zeilen in den PCM zu verdrängen und in vorgegebenen Bereichen des Naharbeitsspeicher-Adressenraums ungültig zu machen.
  • Bei einer Ausführungsform sind die Arbeitsspeicherbereiche für jeden der Verwendungsmodi in dem Systemadressenraum zusammenhängend. Es können jedoch mehrere, unzusammenhängende Bereiche den gleichen Modus verwenden. Bei einer Ausführungsform stellt jedes Modusbereichsregister innerhalb des Satzes von MSC-RR 545 die folgenden Informationen bereit:
    • (1) den Betriebsmodus (z. B. Zurückschreiben, Naharbeitsspeicher-Umgehungsmodus usw.);
    • (2) die Bereichsbasis in dem Systemadressenraum (z. B. bei einer Granularität von 2 MB oder mehr); und
    • (3) ein Bereichsmaskenfeld, das die Größe des Bereichs identifiziert.
  • Bei einer Ausführungsform ist die Anzahl der unterstützten Modi umsetzungsspezifisch, doch man geht davon aus, dass nur ein zusammenhängender Systemadressenbereich für jeden Betriebsmodus zur Verfügung steht. Falls ein Naharbeitsspeicher-Direktzugriffs-Bereichsregister vorgegeben wird, dann geht man davon aus, dass es auf einen zusammenhängenden Bereich abgebildet wird, der unten am Naharbeitsspeicher-Adressenraum beginnt. Ein derartiger zusammenhängender Bereich muss kleiner als die Größe des Naharbeitsspeichers sein. Falls zusätzlich einer der Zwischenspeichermodi verwendet wird, muss die Größe des Direktzugriffsbereichs kleiner als die Größe des Naharbeitsspeichers sein, um eine angemessene Zwischenspeichergröße für die notwendige Leistung zu erlauben. Eine derartige Zuteilung von Naharbeitsspeicher für diverse Modi kann durch den Benutzer konfigurierbar sein.
  • Zusammenfassend wird eine Ausführungsform der Erfindung gemäß dem folgenden Satz von Vorgängen umgesetzt:
    • (1) Wenn ein Lese- oder Schreibzugriff den arbeitsspeicherseitigen Zwischenspeicher-Controller 512 erreicht, überprüft er die Bereichsregister 545 (5B), um den aktuellen Betriebsmodus zu bestimmen.
    • (2) Für einen Lesezwischenspeicher-/Schreibumgehungs-Zugriff überprüft der MSC-Controller 512, ob die Adresse gerade zwischengespeichert wird. Wenn ja, muss er die Zeile ungültig machen, bevor er den fertiggestellten Schreibvorgang an die Quelle zurücksendet.
    • (3) Für einen Schreibumgehungs-Direkt-PCM-Vorgang wartet der MSC-Controller 512 auf eine Fertigstellung, die von dem PCM-Controller 521 zurückkommt, um sicherzustellen, dass der Schreibvorgang in einen insgesamt sichtbaren Puffer festgelegt wird.
    • (4) Jeder Lese- oder Schreibvorgang für den Direktzugriffs-Modusraum in dem Naharbeitsspeicher wird auf den geeigneten Bereich des Naharbeitsspeichers gerichtet. Es werden keine Transaktionen an den PCM-Arbeitsspeicher gesendet.
    • (5) Eine Änderung der Bereichsregisterkonfiguration, um einen bestehenden Bereich zu vergrößern oder zu verkleinern oder einen neuen Bereich hinzuzufügen, erfordert das Entleeren der geeigneten zwischengespeicherten Bereiche in den PCM. Falls beispielsweise eine Software die Größe des Direktzugriffsmodus-Bereichs vergrößern möchte, indem sie den Rückschreib-Zwischenspeicherbereich reduziert, kann sie dies vornehmen, indem sie zuerst den geeigneten Teil des Naharbeitsspeicherbereichs verdrängt und ungültig macht und dann das Naharbeitsspeicher-Direktzugriffsmodus-Bereichsregister ändert. Der MSC-Controller 510 weiß dann, dass eine zukünftige Zwischenspeicherung in einen kleineren Naharbeitsspeicher-Adressenraum erfolgt.
  • Eine bestimmte Ausführungsform der Erfindung, bei welcher der physikalische Systemadressen-(SPA)Raum auf mehrere MSC aufgeteilt ist, ist in 6A abgebildet. Bei der abgebildeten Ausführungsform sind der MSC-Zwischenspeicher 654 und der Controller 656 mit einem SPA-Bereich 667a verknüpft; der MSC-Zwischenspeicher 655 und der Controller 657 sind mit dem SPA-Bereich 667b verknüpft; der MSC-Zwischenspeicher 661 und der Controller 663 sind mit dem SPA-Bereich 667c verknüpft; und der MSC-Zwischenspeicher 660 und der Controller 662 sind mit dem SPA-Bereich 667d verknüpft. Zwei CPU, 670 und 671, sind abgebildet, jeweils mit vier Kernen, 650 und 651, und jeweils einem Home-Agent, 652 und 653. Die beiden CPU, 670 und 671, sind mit einem gemeinsamen Fernarbeitsspeicher-Controller 666 jeweils über Fernarbeitsspeicher-Schnittstellen, 659 und 665, gekoppelt.
  • Somit ist in 6A der gesamte SPA-Arbeitsspeicherraum in Bereiche aufgeteilt, wobei jeder Bereich mit einem bestimmten MSC und Controller verknüpft ist. Bei dieser Ausführungsform kann ein bestimmter MSC eine nicht zusammenhängende SPA-Raumzuteilung aufweisen, doch gibt es zwischen zwei MSC keinen überlappenden SPA-Raum. Des Weiteren sind die MSC mit dem nicht überlappenden SPA-Raum verknüpft, und es sind keine Kohärenztechniken zwischen den MSC notwendig.
  • Alle zuvor beschriebenen Naharbeitsspeichermodi können bei der in 6A gezeigten Architektur verwendet werden. Beispielsweise kann jeder MSC-Controller 656 bis 657, 662 bis 663 konfiguriert sein, um im Rückschreib-Zwischenspeichermodus, im Naharbeitsspeicher-Umgehungsmodus, im Naharbeitsspeicher-Lesezwischenspeicher-Schreibumgehungsmodus, im Naharbeitsspeicher-Lesezwischenspeicher-Durchschreibmodus oder im Naharbeitsspeicher-Direktzugriffsmodus zu funktionieren. Wie zuvor besprochen, ist der bestimmte Modus innerhalb des Bereichsregisters (RR) 655 für jeden MSC 610 vorgegeben.
  • Bei einer Ausführungsform können verschiedene MSC verschiedene Betriebsmodi gleichzeitig umsetzen. Beispielsweise können die Bereichsregister des MSC-Controllers 656 den Naharbeitsspeicher-Direktzugriffsmodus vorgeben, die Bereichsregister des MSC-Controllers 657 können den Rückschreib-Zwischenspeichermodus vorgeben, die Bereichsregister des MSC-Controllers 662 können den Lesezwischenspeicher-/Schreibumgehungsmodus vorgeben, und der MSC-Controller 663 kann den Lesezwischenspeicher-/Durchschreibmodus vorgeben. Zusätzlich können bei einigen Ausführungsformen einzelne MSC gleichzeitig verschiedene Betriebsmodi umsetzen. Beispielsweise kann der MSC-Controller 656 konfiguriert sein, um den Naharbeitsspeicher-Direktzugriffsmodus für bestimmte Systemadressenbereiche und einen Naharbeitsspeicher-Umgehungsmodus für andere Systemadressenbereiche umzusetzen.
  • Die vorstehenden Kombinationen sind natürlich rein beispielhaft dafür, wie die MSC-Controller unabhängig programmiert werden können. Die grundlegenden Prinzipien der Erfindung sind nicht auf diese oder beliebige andere Kombinationen eingeschränkt.
  • Wie mit Bezug auf einige der zuvor beschriebenen Ausführungsformen beschrieben (wie z. B. mit Bezug auf 4G beschrieben), sind ein MSC und sein MSC-Controller konfiguriert, um auf dem gleichen Arbeitsspeicherkanal zu funktionieren (z. B. dem gleichen physikalischen DDR-Bus) wie das PCM-DIMM, das für diesen bestimmten SPA-Bereich verantwortlich ist. Folglich befinden sich bei dieser Ausführungsform Arbeitsspeichertransaktionen, die innerhalb des bezeichneten SPA-Bereichs vorkommen, in dem gleichen Arbeitsspeicherkanal, wodurch sich der Datenverkehr durch die CPU-Netzzusammenschaltung reduziert.
  • 6B stellt eine grafische Darstellung davon bereit, wie die Systemspeicher-Adressenabbildung 620, die Naharbeitsspeicher-Adressenabbildung 621 und die PCM-Adressenabbildung 622 gemäß den Ausführungsformen der Erfindung konfiguriert werden können. Wie zuvor besprochen, funktioniert der MSC-Controller 606 in einem Modus, der von den Bereichsregistern (RR) 605 identifiziert wird. Die Systemspeicherabbildung 620 verfügt über einen ersten Bereich 602, der für den Naharbeitsspeicher-Direktzugriffsmodus zugeteilt ist, einen zweiten Bereich 603, der dem Naharbeitsspeicher-Umgehungsmodus zugeteilt ist, und einen dritten Bereich 605, der dem Rückschreib-Zwischenspeichermodus zugeteilt ist. Der MSC-Controller 606 gibt Zugriff auf den Naharbeitsspeicher, wie durch die Naharbeitsspeicher-Adressenabbildung 621 angegeben, die einen ersten Bereich 608, der einem Rückschreib-Zwischenspeichermodus zugeteilt ist, und einen zweiten Bereich 609, der einem Naharbeitsspeicher-Direktzugriffsmodus zugeteilt ist, umfasst. Wie abgebildet, werden die Naharbeitsspeicher-Zwischenspeicher-Umgehungsvorgänge dem PCM-Controller 610 gemäß der PCM-Adressenabbildung 622, die einen Naharbeitsspeicher-Umgehungsbereich 611 (für den Naharbeitsspeicher-Umgehungsmodus) und einen Rückschreib-Zwischenspeicherbereich 612 (für den Rückschreib-Zwischenspeichermodus) umfasst, direkt bereitgestellt. Folglich kann die Systemspeicherabbildung 620, die Naharbeitsspeicher-Adressenabbildung 621 und die PCM-Adressenabbildung 622 basierend auf den spezifischen Modi, die von den MSC-Controllern umgesetzt werden, unterteilt werden.
  • 6C und 6D bilden Adressiertechniken ab, die von einer Ausführungsform der Erfindung verwendet werden (von denen einige bereits allgemein beschrieben wurden). Insbesondere zeigt 6C, wie eine physikalische Systemadresse (SPA) 675 auf eine Naharbeitsspeicheradresse (NMA) oder eine PCM-Vorrichtungsadresse (PDA) abgebildet wird. Insbesondere wird die SPA zuerst von der Decodierungslogik 676 innerhalb eines Prozessors decodiert, um einen Home-Agent 605 zu identifizieren (z. B. den Home-Agent, der für den decodierten Adressenraum verantwortlich ist). Die Decodierungslogik 677, die mit dem ausgewählten Home-Agent 605 verknüpft ist, decodiert ferner die SPA 675 (oder einen Teil davon), um eine Arbeitsspeicher-Kanaladresse (MCA) zu bilden, die einen geeigneten MSC-Zwischenspeicher-Controller 612 identifiziert, der diesem bestimmten SPA-Raum zugeordnet wird. Der ausgewählte Zwischenspeicher-Controller 612 bildet dann bei 678 entweder die Arbeitsspeicher-Zugriffsanfrage auf eine Naharbeitsspeicheradresse ab, worauf bei 680 optional ein Verschachtelungsvorgang folgt (nachstehend beschrieben), oder führt alternativ bei 679 einen optionalen Verschachtelungsvorgang aus, worauf eine Abbildung 681 durch den PCM-Fernarbeitsspeicher-Controller in eine PCM-Vorrichtungsadresse PDA folgt (z. B. unter Verwendung einer Adressenindirektions- und Verschleißverwaltung, wie zuvor beschrieben).
  • Eine Ausführungsform eines optionalen Verschachtelungsprozesses ist in 6D abgebildet, die zeigt, wie Software-Seiten über mehrere MSC- und PCM-Adressenräume unter Verwendung einer Verschachtelung aufgeteilt werden können. Bei dem in 6D gezeigten Beispiel, werden zwei Seiten 682 und 683 in dem SPA-Raum von der Zwischenspeicherzeilen-Verschachtelungslogik 685 verschachtelt, um zwei Sätze von verschachtelten Zeilen 685 und 686 in dem MCA-Raum zu generieren. Beispielsweise können alle ungeraden Zeilen der Arbeitsspeicherseiten 682 bis 683 (z. B. die Zeilen 1, 3, 5 usw.) an einen ersten MCA-Raum 685 gesendet werden, und all geraden Zeilen aus den Arbeitsspeicherseiten 682 und 683 (z. B. die Zeilen 2, 4, 6 usw.) können an einen zweiten MCA-Raum 686 gesendet werden. Bei einer Ausführungsform sind die Seiten 5 KB-Seiten, obwohl die grundlegenden Prinzipien der Erfindung nicht auf eine Seitengröße eingeschränkt sind. Die PCM-Controller 687 und 688, die gemäß den Adressenindirektionstabellen (AIT) funktionieren, und die Verschleißverwaltungslogik ordnen dann die Zwischenspeicherzeilen innerhalb des PCM-Vorrichtungsadressen-(PDA)Arbeitsspeicherraums um (wie zuvor besprochen). Ein derartiges Verschachteln kann verwendet werden, um die Auslastung auf die MSC 610 und/oder PCM-Vorrichtungen 619 zu verteilen (z. B. als Alternative zu einer nicht einheitlichen Arbeitsspeicheradresse (NUMA)).
  • AUSFÜHRUNGSFORMEN EINES SYSTEMS UND VERFAHRENS ZUM DYNAMISCHEN TEILWEISEN ABSCHALTEN EINES MSC IN EINER ARBEITSSPEICHERHIERARCHIE AUF MEHREREN EBENEN
  • Das Arbeitsspeicher-Teilsystem eines Computersystems verbraucht eine erhebliche Menge des gesamten Systemstroms, insbesondere bei Servern mit einer großen Arbeitsspeicherkapazität. Bei einem Arbeitsspeicher-Teilsystem auf mehreren Ebenen (wie etwa einem Teilsystem auf 2 Ebenen mit einem MSC, wie hier beschrieben), da der MSC dimensioniert ist, um die größte aller Auslastungen zu berücksichtigen, die auf dem Server ablaufen kann, ist ein Großteil des Stroms in dem flüchtigen (z. B. DRAM-basierten) MSC konzentriert, der sich vorne an einem großen, schnellen NVM-Speicherplatz, wie etwa einem PCM (oder genauer gesagt einem PCMS), befindet. Da die laufenden Auslastungen und die Zwischenspeicheranforderungen auch im Verlauf eines Tages erheblich variieren können, wird sich die Stromversorgung von solch großen Zwischenspeichern stark auf die Lastleitung auswirken. Einige der nachstehend beschriebenen Ausführungsformen gehen von einer Arbeitsspeicherhierarchie auf zwei Ebenen mit einem MSC aus, der eine Entleerungs-Engine umfasst, die (1) veränderte Zwischenspeicherzeilen verdrängt und sie auf vorgegebene Art und Weise ungültig macht (obwohl die grundlegenden Prinzipien der Erfindung in Zusammenhang mit einer beliebigen Arbeitsspeicherhierarchie auf mehreren Ebenen verwendet werden können); (2) die Zwischenspeicherverwendung dynamisch ändert; (3) es der Software ermöglicht, ein Stromverwaltungskonzept vorzugeben; und (4) vorgegebene Teile des auf einem flüchtigen Arbeitsspeicher basierenden MSC deaktiviert.
  • Der MSC in einer Arbeitsspeicherhierarchie auf mehreren Ebenen kann ein assoziierender Rückschreib-Zwischenspeicher sein. Obwohl die Anzahl der Möglichkeiten bei einem derartigen Zwischenspeicher variieren kann, werden hier zwei spezifische Ausführungsformen besprochen:
    • (1) ein mehrfach assoziierender Zwischenspeicher mit einer Anzahl von Wegen im Bereich von 8 bis 16; und
    • (2) ein einfach assoziierender Zwischenspeicher, der auch als direkt abgebildeter Zwischenspeicher bezeichnet wird.
  • 2. Entleerungs-Engine 701
  • Wie in 7A abgebildet, befindet sich eine Ausführungsform einer Entleerungs-Engine 701 in dem Arbeitsspeicher-Teilsystem auf mehreren Ebenen in dem MSC-Controller 512 und hat mehrere verschiedene Verwendungen, wovon eine die dynamische Zwischenspeicher-Stromverwaltung ist, wie hier beschrieben. Bei dieser Ausführungsform kann die Software 750 die Entleerungs-Engine 701 aktivieren, um ein spezifisches Stromverwaltungskonzept durchzusetzen. Diese Konzepte können (ohne Einschränkung) folgende umfassen:
    • (1) Die Software 750 identifiziert einen spezifischen Teil des zu deaktivierenden oder neu zu aktivierenden Zwischenspeichers 740. Bei einer Ausführungsform wird der Teil als eine spezifische Anzahl von Wegen identifiziert. Alternativ oder zusätzlich kann er als spezifischer Anteil des Zwischenspeichers (z. B. 50%) identifiziert werden.
    • (2) Die Software 750 gibt Nutzungsdaten vor, wie etwa eine durchschnittliche Verfehlungsquote oder Belegung, welche die Entleerungs-Engine 701 überwachen und dabei über die Menge des zu deaktivierenden oder neu zu aktivierenden Zwischenspeichers dynamisch entscheiden kann. Falls beispielsweise die durchschnittliche Verfehlungsquote für einen bestimmten Bereich über eine vorgegebene Schwelle hinausgeht, dann kann dieser Bereich deaktiviert werden.
  • Obwohl sich die nachstehende Diskussion auf die Deaktivierung von Teilen des Zwischenspeichers konzentriert, wird der Fachmann verstehen, dass eine dynamische Neuaktivierung unter Verwendung der gleichen grundlegenden Techniken ausgeführt werden kann.
  • Sobald bei einer Ausführungsform das Konzept an der Entleerungs-Engine 701 von der Software 750 eingestellt wurde, setzt die Entleerungs-Engine es um, indem sie zuerst entscheidet, welcher spezifische Bereich des Zwischenspeichers zu deaktivieren ist (z. B. unter Verwendung der Verfehlungsquote, wie zuvor erwähnt, oder durch Entleeren der Bereiche, die von der Software identifiziert werden). Die Entleerungs-Engine 701 liest dann der Reihe nach diesen Bereich (oder diese Bereiche), wobei sie jede Zwischenspeicherzeile abtastet, je nach Bedarf veränderte Zwischenspeicherzeilen in den PCM-Arbeitsspeicher verdrängt und jede Zwischenspeicherzeile ungültig macht, sobald sie bedient wurde. Bei einer Ausführungsform pflegt die Entleerungs-Engine einen Entleerungsadressenzähler 702, der die „Satzadresse” des Bereichs des MSC pflegt, der gerade deaktiviert wird. Wie nachstehend besprochen, wird bei einer Ausführungsform die Satzadresse von der Systemadresse abgeleitet, die von der Software generiert wird, um auf den Arbeitsspeicher zuzugreifen.
  • 3. Überwachung der Zwischenspeichernutzung
  • Bei einer Ausführungsform verfügt der MSC über Zähler 730, um die Nutzung des Zwischenspeichers dynamisch zu überwachen. Beispielsweise kann eine derartige Überwachung dadurch erfolgen, dass ein gleitendes Mittel gewisser Schlüsselkennzahlen gepflegt wird, wovon einige Beispiele die Zwischenspeicherbelegung und die gleitende mittlere Verfehlungsquote umfassen:
    • (1) Zwischenspeicherbelegung: Der Zwischenspeicher wird in eine Reihe von Bereichen unterteilt. Bei einem mehrfach assoziierenden Zwischenspeicher kann beispielsweise ein Bereich als Weg definiert sein. Jedes Mal, wenn eine neue Zeile in einem Bereich zugeteilt wird, wird ein Bereichsbelegungszähler inkrementiert. Wenn eine Zeile bewegt oder in einem Bereich ungültig gemacht wird, wird der Bereichsbelegungszähler dekrementiert.
    • (2) Gleitende mittlere Verfehlungsquote: Für ein vorgegebenes Zeitintervall wird die mittlere Verfehlungsquote eines Bereichs von der Entleerungs-Engine 701 berechnet. Bei dieser Ausführungsform kann die Software 750 eine Schwelle für die Verfehlungsquote bereitstellen, welche die Entleerungs-Engine 701 verwendet, um die Deaktivierung jedes Zwischenspeicherbereichs zu ermöglichen.
  • 4. Zwischenspeicher-Deaktivierungsmechanismus
  • Diverse umsetzungsspezifische Schemata sind möglich, um die Zwischenspeicher-Deaktivierung auszuführen. Dabei besteht der Hauptgedanke darin, den vorgegebenen Bereich des Zwischenspeichers in einen möglichst niedrigen Stromzustand zu versetzen und dabei noch eine angemessen schnelle Neuaktivierung zu ermöglichen. Typischerweise bedeutet dies, dass der Strom nicht abgeschaltet wird, doch bei einer Ausführungsform können die Taktgeber gesperrt (oder gedrosselt) werden und die Selbstauffrischung für den Zwischenspeicherbereich kann deaktiviert werden. Es sei zu beachten, dass in diesen Fällen die Reaktivierung länger dauern kann und im Hintergrund erfolgen kann, während andere Teile des Zwischenspeichers noch aktiv sind.
  • Die Granularität des Deaktivierungsbereichs ist von der spezifischen Umsetzung, und falls ein DRAM für den MSC verwendet wird, von der DRAM-Architektur abhängig. Der Fachmann wird verstehen, dass mehrere Schemata möglich sind, wozu das Einschränken der Granularität des Bereichs auf unabhängige „Ränge” gehört. Jeder einzelne „Rang” in einem Arbeitsspeichermodul bildet eine zu den anderen Rängen identische Anordnung von Arbeitsspeicherkomponenten. Üblicherweise verwendete Arbeitsspeichermodule haben entweder einen einzigen Arbeitsspeicherrang, einen doppelten Arbeitsspeicherrang oder vier Arbeitsspeicherränge (obwohl die grundlegenden Prinzipien der Erfindung nicht auf eine bestimmte Anzahl von Rängen eingeschränkt sind).
  • Die Betriebseinzelheiten einer bestimmten Ausführungsform der Erfindung werden nun beschrieben. Es sei jedoch zu beachten, dass die grundlegenden Prinzipien der Erfindung nicht auf diesen spezifischen Satz von Betriebsparametern eingeschränkt sind. Beispielsweise sind die grundlegenden Prinzipien der Erfindung nicht auf bestimmte Adressen- oder Datenformate eingeschränkt.
  • Bei einer Ausführungsform wird das Konzept für die Zwischenspeicher-Deaktivierung der Entleerungs-Engine 701 von der Software 750 vorgegeben. Der spezifische Fall eines direkt abgebildeten Zwischenspeichers wird hier beschrieben, weil es sich um einen komplexeren Fall handelt. Der Fachmann kann diese Beschreibung ohne Weiteres verwenden, um die Konfiguration für eine mehrfach assoziierende Zwischenspeicher-Umsetzung abzuleiten.
    • (A) Wie in 7A abgebildet, wird zuerst ein zu deaktivierender Zwischenspeicherbereich 740 (z. B. von der Software 750) identifiziert. Falls eine Hälfte des Zwischenspeichers vorgegeben ist, dann fällt die Satzadresse um 1 Bit ab. Beispielhaft und ohne Einschränkung ist bei dem Beispiel eines 1 GB-direkt abgebildeten Zwischenspeichers mit einer Zeilengröße von 64 B und mit einem Systemadressenraum von 1 TB oder 40b die Satzadresse 24b breit, und die Markierung (für 64 B-Zeilen) ist 10b breit. Falls die Hälfte des Zwischenspeichers deaktiviert wird und auf 512 MB abfällt, beträgt die Satzadresse nun 23b und die Markierungsgröße erhöht sich auf 11b.
    • (B) Zweitens werden eine Verfehlungsschwelle, das Mittelbildungsintervall und die Bereichsgranularität für die Deaktivierung vorgegeben. Beispielhaft und ohne Einschränkung könnte die Verfehlungsschwelle 0,01 für ein Mittelbildungsintervall von 100 ms betragen, und die Bereichsgranularität für die Deaktivierung könnte 1/4 des Zwischenspeichers sein. Auch hier ändern sich basierend auf der Bereichsgröße die Satzadresse und die Markierung entsprechend. Sobald das Konzept eingestellt ist und die Entleerungs-Engine 701 aktiviert ist, wartet sie auf den geeigneten Auslöser, um mit der Arbeit zu beginnen.
  • 7A bildet eine spezifische Umsetzung ab, bei der die obere Hälfte des Zwischenspeichers zur Deaktivierung identifiziert ist. Gemäß dieser Umsetzung kann die Entleerungs-Engine 701 die folgenden Vorgänge ausführen:
    • (1) Auswählen der oberen Hälfte 740 des zu entleerenden, direkt abgebildeten MSC 510.
    • (2) Setzen des Entleerungsadressenzählers 702 (Satzadresse) auf den oberen Teil des Zwischenspeichers, und Beginnen mit dem Verdrängen und Ungültigmachen jeder Zeile nacheinander. Während er durch jede Zeile vorrückt, wird der Entleerungsadressenzähler 702 dekrementiert. 7A stellt ein spezifisches Beispiel bereit, bei dem die Deaktivierung erfolgreich an dem Bereich ausgeführt wurde, der als entleerter Bereich 710 identifiziert wird, und es wird ein zur Entleerung anstehender Bereich 711 (ebenfalls in der oberen Hälfte des MSC) gezeigt, an dem die Deaktivierung noch auszuführen ist.
    • (3) Um bei einer Ausführungsform sicherzustellen, dass ein beliebiger Zwischenspeicherbereich 710 oberhalb des Entleerungsadressenzählers unverwendet bleibt, sind die folgenden Regeln einzuhalten: a. Jede CPU-Leseadresse, die oberhalb des Entleerungsadressenzählers 702 liegt, sucht automatisch unter Verwendung der reduzierten Satzadresse (bei unserem Beispiel wäre dies eine 23b-Satzadresse) nur in der unteren Hälfte des Zwischenspeichers. Dies ist in 7A durch rote Linien abgebildet. b. Die Markierung, die in der Markierungsüberprüfungseinheit 550 gespeichert ist, ist möglichst groß, um den kleinsten Zwischenspeicher unterzubringen. Bei dem spezifischen Beispiel, das in 7A gezeigt wird, überprüft der Leseadressenvorgang eine 11b-Markierung, um eine richtige Übereinstimmung sicherzustellen. c. Falls es zu einer Zwischenspeicherverfehlung als Reaktion auf Vorgang kommt, findet die Zuteilung nur in der unteren Hälfte des MSC 741 statt. d. Falls ein Lesevorgang unterhalb der Löschzähleradresse 702 aber oberhalb der unteren Hälfte des Zwischenspeichers (d. h. in dem zur Entleerung anstehenden Bereich 711) liegt, führt er bei einer Ausführungsform unter Verwendung der 12b Satzadresse die normale Suche und unter Verwendung der 10b-Markierung eine normale Übereinstimmung aus. e. Falls ein Treffer vorliegt, werden die Daten einfach verwendet. Falls eine Verfehlung vorliegt, gibt es zwei Möglichkeiten: (i) Zuteilen wie gewohnt (wie durch die kreisförmige punktierte Linie angegeben, die in 7A durch den Kreis Nr. 1 identifiziert ist), jedoch Erwarten, dass das Entleeren diese Zeile schließlich entfernt, oder (ii) Überprüfen der unteren Hälfte des Zwischenspeichers auf der Suche nach der Zeile, und falls sie dort fehlt, nur Zuteilen in der unteren Hälfte (wie durch die punktierte Linie angegeben, die in 7A durch den Kreis Nr. 2 identifiziert wird). f. Bei einer Ausführungsform befolgen die Zwischenspeicherzeilen-Schreibvorgänge die gleichen Regeln wie zuvor bei (a) bis (e) beschrieben.
    • (4) Sobald die Entleerungs-Engine 701 das Ende des ausgewählten Bereichs erreicht hat (in diesem Fall den unteren Teil der oberen Hälfte 740), wird dieser gesamte Bereich nun ungültig gemacht und kann ausgeschaltet werden.
    • (5) Der Mechanismus zum Deaktivieren des Zwischenspeicherbereichs entfernt diesen Teil 740 des MSC 510 und schaltet ihn aus.
    • (6) Die Zwischenspeicher-Satzadresse ist nun 23b und zeigt nur auf die untere Hälfte 741 des MSC 510.
  • Wie es aus dem obigen Schema hervorgeht, erfolgt die Deaktivierung eines Teils des MSC für die Anwendung transparent und ohne wesentliche Auswirkung auf die Nutzung des Zwischenspeichers.
  • Eine Ausführungsform eines Verfahrens zum dynamischen teilweisen Abschalten eines MSC in einer Arbeitsspeicherhierarchie auf mehreren Ebenen ist in 7B abgebildet. Die Vorgänge, die in 7B abgebildet sind, können in Zusammenhang mit der Software 750, der Entleerungs-Engine 701 und dem MSC-Controller 512, die zuvor beschrieben wurden, umgesetzt werden, obwohl das Verfahren nicht unbedingt auf eine bestimmte Architektur eingeschränkt ist.
  • Bei 760 wird die Überwachung der Nutzung des Zwischenspeichers eingeleitet. Basierend auf der Überwachung wird bei 761 ein Teil des Zwischenspeichers zur Deaktivierung identifiziert. Wie beispielsweise zuvor besprochen, kann ein Bereichsbelegungszähler jedes Mal inkrementiert werden, wenn eine neue Zwischenspeicherzeile in einem Bereich zugeteilt wird, und kann dekrementiert werden, wenn eine Zwischenspeicherzeile bewegt oder in dem Bereich ungültig gemacht wird. Der Wert des Belegungszählers kann dann verwendet werden, um zu bestimmen, ob der Bereich zu deaktivieren ist (d. h. wobei Bereiche mit geringerer Belegung vor Bereichen mit größerer Belegung ungültig gemacht werden). Alternativ kann die durchschnittliche Verfehlungsquote eines Zwischenspeicherbereichs für ein vorgegebenes Zeitintervall berechnet werden. Bei dieser Ausführungsform kann eine Schwellenverfehlungsquote bereitgestellt werden, um die Deaktivierung jedes Zwischenspeicherbereichs zu ermöglichen.
  • Bei 762 wird der Entleerungsadressenzähler auf den identifizierten Teil des Zwischenspeichers eingestellt. Bei 763 wird jede Zwischenspeicherzeile verdrängt und ungültig gemacht, und der Zähler wird nach jedem Ungültigmachen dekrementiert. Bei 764 wird ein Lese- oder Schreibvorgang eingeleitet, und bei 765 erfolgt eine Bestimmung, ob der Vorgang an den entleerten Bereich (F), den zur Entleerung anstehenden Bereich (FP) oder den Teil des Zwischenspeichers, der nicht ungültig gemacht wird (NI) gerichtet ist. Falls der Vorgang an den entleerten Bereich gerichtet ist, dann wird er bei 768 zu dem Teil des Zwischenspeichers umgeleitet, der nicht deaktiviert ist. Insbesondere wird bei einer Ausführungsform die Zwischenspeicherzeile unter Verwendung der reduzierten Satzadresse zugeteilt (z. B. wie zuvor besprochen).
  • Falls der Vorgang an den zur Entleerung anstehenden Bereich (FP) gerichtet ist, dann kann die Zwischenspeicherzeile wie gewohnt zugeteilt werden, unter der Erwartung, dass die Zeile letztendlich entleert wird. Alternativ kann die Zwischenspeicherzeile unter Verwendung der reduzierten Satzadresse zugeteilt werden (z. B. wie zuvor besprochen).
  • Falls der Vorgang an den Teil des Zwischenspeichers gerichtet ist, der nicht ungültig gemacht wird, dann wird bei 766 der Lese-/Schreibvorgang wie gewohnt mit der reduzierten Satzadresse ausgeführt.
  • Die zuvor beschriebenen Ausführungsformen der Erfindung können bei Server und anderen Arten von Computersystemen verwendet werden, um den Energieverbrauch erheblich zu reduzieren. Zusätzlich zur Handhabung direkt abgebildeter Zwischenspeicher, wie zuvor beschrieben, ermöglichen die Ausführungsformen der Erfindung auch Wege, um die Zwischenspeichergröße basierend auf Nutzungsdaten, wie etwa Belegung und Verfehlungsquoten, dynamisch anzupassen.
  • STROMSPARENDRES ARBEITSSPEICHERSYSTEM UND VERFAHREN UNTER VERWENDUNG EINER ARBEITSSPEICHERHIERARCHIE AUF MEHREREN EBENEN
  • Datencenter-Server sind typischerweise unter Verwendung sehr kostspieliger unterbrechungsfreier Stromversorgungs-(„UPS”)Systeme vor Stromausfällen geschützt. Solche Systeme werden typischerweise verwendet, um die Server lange genug mit Strom zu versorgen, um den gesamten Inhalt des Arbeitsspeichers und andere flüchtige Systemzustände auf persistenten Medien zu sichern. Da die persistenten Medien typischerweise Festplatten sind, die sich in einem Netzwerk befinden können, wird eine erhebliche Menge an Zeit und Strom verbraucht, wenn ein Arbeitsspeicherauszug erfolgt.
  • Bei den nachstehend beschriebenen Ausführungsformen der Erfindung wird ein PCM oder anderer nicht flüchtiger Arbeitsspeicher verwendet, um diese Probleme zu lösen, wodurch die Notwendigkeit von UPS-Systemen verringert wird. Natürlich können hochwertige Datencentren weiterhin UPS-Systeme zur Verfügbarkeit (statt zum Sicherstellen eines Zustandsauszugs des Arbeitsspeichers) verwenden.
  • Wie in 8A abgebildet, verwenden die Ausführungsformen der Erfindung eine Arbeitsspeicher-Hierarchie auf mehreren Ebenen, die einen PCM 530 (z. B. einen PCMS) als Fernarbeitsspeicher und einen flüchtigen MSC-Naharbeitsspeicher 510 (z. B. DRAM) verwenden. Andere Komponenten umfassen eine oder mehrere der folgenden:
    • (1) Eine Entleerungs-Engine 701, die man verwenden kann, um veränderte Zeilen aus dem MSC in den PCM zurückzuschreiben. Die Entleerungs-Engine 701 pflegt auch einen Entleerungsadressenzähler 702, der für anschließende Lese- und Schreibzugriffe durch die CPU verwendet wird.
    • (2) Eine Einheit zur frühzeitigen Erkennung von Stromausfällen 830, welche die Aktion der Entleerungs-Engine 701 auslöst.
    • (3) Eine Reservestromeinheit 820, um die Stromversorgung aufrechtzuerhalten, während das Entleeren stattfindet. Da das Entleeren nicht lange dauert, muss diese Reservestromeinheit 820 kein sehr kostspieliges UPS-System verwenden. Stattdessen ist ein Batteriereservemodul auf Rahmen- oder Server-Ebene ausreichend.
    • (4) Die Fähigkeit des MSC 510 (unter der Kontrolle des MSC-Controllers 512), auf einen Durchschreib-Betriebsmodus umzuschalten, nachdem die Zwischenspeicherzeilen entleert wurden.
    • (5) Einen Mechanismus, damit die Software 850 zu verwerfende Seiten in dem MSC 510 identifiziert (z. B. durch Markieren der Seiten, wie nachstehend beschrieben). Derartige Seiten müssen nicht in den PCMS entleert werden. Das Markieren dieser Seiten muss derart erfolgen, dass die Hardware Zugriff auf diese Informationen hat, wenn der Zwischenspeicher entleert wird.
    • (6) Eine PCMS-Adressenindirektionstabelle (AIT) 563, bei der die Software zu verwerfende Seiten markieren kann (z. B. mit einer Null markieren kann).
    • (7) Ein Verfahren, um die Software 850 zu benachrichtigen, wenn das Entleeren beendet ist.
  • Bei einer Ausführungsform ist die maximale Dauer, die benötigt wird, um den MSC 510 in den PCM 530 zu entleeren, von der Größe des Zwischenspeichers und der Leistung des PCM-Teilsystems abhängig. Bei einer Ausführungsform ist das Stromausfall-Erkennungssystem 830 auf die tatsächliche Auslastungsnutzung abgestimmt, die verwendet werden kann, um die durchschnittliche Anzahl veränderter Zeilen vorherzusagen, die sich in dem MSC 510 ansammeln. Für die meisten Server-Auslastungen wird dadurch das Lese/Schreibverhältnis verfolgt und dies entspricht normalerweise ungefähr einem Drittel der MSC-Größe.
  • Zusätzlich kann die Software 850 der Entleerungs-Engine 701 befehlen, „nichtige” oder „verworfene” Seiten aus dem MSC 510 ungültig zu machen. Wenn diese Seiten später aus dem PCM 530 gelesen werden, setzt der PCM-Controller 521 die Seiten auf Null, bevor er sie an den MSC 510 zurückgibt. Bei einer Ausführungsform verwendet der PCM-Controller 521 die AIT 563, welche die Metadaten auf Seitenebene pflegt, die den Zustand jeder Seite angeben. Bei einer Ausführungsform wird auf diese Informationen bei jedem Lese- oder Schreibvorgang zugegriffen. Der Zustand der Seite (und der verknüpften Zwischenspeicherzeilen) kann von der Software 850 eingestellt werden.
  • Wenn bei einer Ausführungsform die Stromausfall-Erkennungseinheit 830 einen Stromausfallzustand erkennt und eine Warnung für die Entleerungs-Engine 701 generiert, läuft die folgende Sequenz ab:
    • (1) Die Entleerungs-Engine 701 wird ausgelöst, um damit zu beginnen, den MSC 510 der Reihe nach auf der Suche nach veränderten Zeilen durchzugehen.
    • (2) Diese veränderten Zeilen werden von dem PCM-Controller 521 in den PCM 530 entleert, und jede entleerte Zeile wird auf einen „bereinigten” Zustand eingestellt. Der Entleerungsadressenzähler 702 wird aktualisiert, wenn jede Zeile verarbeitet wird (z. B. wie zuvor beschrieben).
    • (3) Anschließende Lesevorgänge dürfen die entleerten Bereiche des Zwischenspeichers weiterhin treffen.
    • (4) Jeder Schreibvorgang in den entleerten Bereich des Zwischenspeichers führt jedoch zu einem Durchschreib- oder Schreibumgehungsvorgang. Eine Schreibumgehung erfolgt, falls sich die Daten derzeit nicht in dem MSC 510 befinden. Falls sich die Daten in dem MSC 510 befinden, werden sie aktualisiert.
    • (5) Nachdem der gesamte MSC 510 entleert wurde, sendet die Entleerungs-Engine 701 einen ausdrücklichen Entleerungsbefehl an den PCM-Controller 521. Der PCM-Controller 521 quittiert diesen Befehl, wenn er alle vorherigen Schreibvorgänge erfolgreich in den PCM 530 verschoben hat.
    • (6) Nun kann die Entleerungs-Engine 701 die Software 850 über die erfolgreiche Beendigung des Entleerungsereignisses benachrichtigen (z. B. einen Befehl „Entleerung beendet” generieren).
    • (7) Die Software 850 kann nun entweder ein ordentliches Abschalten des Systems beginnen oder einen Haltepunktzustand einstellen, von dem aus es wieder startet, wenn der Strom ausfällt.
    • (8) Wenn der Strom wiederhergestellt wird, kann die Software 850 wieder von dem Haltepunktzustand in dem PCM-Arbeitsspeicher 530 starten. Es ist kein Systemneustart notwendig.
  • Eine Ausführungsform eines stromsparenden Verfahrens zur Reaktion auf ein Stromausfallereignis in einem Arbeitsspeichersystem auf mehreren Ebenen mit einem MSC und einem PCM-Arbeitsspeicher ist in 8B abgebildet. Die in 8B abgebildeten Vorgänge können in Zusammenhang mit der in 8A gezeigten Architektur umgesetzt werden, obwohl das Verfahren nicht unbedingt auf eine bestimmte Architektur eingeschränkt ist.
  • Bei 801 wird eine Stromausfallwarnung erkannt. Beispielsweise kann eine Stromausfall-Erkennungsschaltung erkennen, dass die Spannung des Eingangsstroms unter eine vorgegebene Schwelle abfällt. Bei 802 wird die Entleerungs-Engine ausgelöst und beginnt damit, den MSC der Reihe nach auf der Suche nach veränderten Zeilen durchzugehen (z. B. unter Verwendung des Entleerungsadressenzählers 702, wie zuvor beschrieben).
  • Bei 803 dürfen Lesevorgänge die entleerten Bereiche des MSC treffen, und bei 804 generieren Schreibvorgänge, die an entleerte Bereiche gerichtet sind, Durchschreib- oder Schreibumgehungs-Vorgänge (z. B. Umgehen des MSC). Sobald der gesamte MSC entleert wurde, was bei 805 bestimmt wird, wird ein ausdrücklicher Entleerungsbefehl an den PCM-Controller gesendet. In dieser Phase kann auch ein Benachrichtigungsbefehl an die System-Software gesendet werden (d. h. um das System über den entleerten Zustand zu benachrichtigen).
  • Die zuvor beschriebenen Techniken können verwendet werden, um den TCO in Datencentren erheblich zu reduzieren, weil keine kostspieligen UPS-Systeme mehr benötigt werden.
  • SYSTEM UND VERFAHREN ZUM SCHNELLEN SCHALTEN IN DEN RUHEZUSTAND MIT EINER SPEICHERHIERARCHIE AUF MEHREREN EBENEN
  • Wie schnell der Eintritt in den Ruhezustand und die Rückkehr daraus bei Servern erfolgen, wird durch das Sichern und Abrufen des Arbeitsspeicherzustands aus der Speicherplatz-Vorrichtung, wie etwa einer Festplatte oder SSD, bestimmt. Ein schnellerer arbeitsspeicherbasierter Ruhezustand kann nicht die gleichen Stromersparnisse erreichen, da der DRAM-Arbeitsspeicher flüchtig ist und durch eine Batterie gesichert und während des Ruhezustands in einen Selbstauffrischungsmodus gesetzt werden muss.
  • Bei Arbeitsspeicher-Teilsystemen mit einer Hierarchie auf mehreren Ebenen, etwa wie sie hier beschrieben werden, kann ein sehr schneller arbeitsspeicherbasierter Ruhezustand erreicht werden, da der PCM-Arbeitsspeicher nicht flüchtig ist und der DRAM-basierte Zwischenspeicher keine Batteriesicherung benötigt. Mit diesem Lösungsansatz können die Server häufiger in den Ruhezustand eintreten, wodurch sie in dem Datencenter erhebliche Strom- und Energieersparnisse ermöglichen.
  • Wie in 9A abgebildet, nutzen die nachstehend beschriebenen Ausführungsformen der Erfindung die Arbeitsspeicherhierarchie auf mehreren Ebenen, die einen MSC- 510 und einen PCM-(z. B. PCMS)Hauptspeicher 530 umfasst und eine Hardware-basierte Entleerungs-Engine 701 verwendet. Wie zuvor besprochen, stellt bei der Architektur auf mehreren Ebenen der PCM-basierte nicht flüchtige Arbeitsspeicher den für Software sichtbaren Arbeitsspeicher-Adressenraum bereit. Auf Grund der Notwendigkeit, die PCM-Leistungscharakteristiken vor dem direkten Software-Zugriff zu verbergen, wird ein großer DRAM-basierter Rückschreib-MSC 510 verwendet, der von Hardware verwaltet wird (z. B. über den MSC-Controller 512) und für die Software transparent sein kann. Im normalen Systembetrieb ruft jeder Software-Arbeitsspeicherzugriff die Daten aus dem PCM in den MSC ab, wo sie gepflegt werden, soweit sie nicht durch einen anderen Zugriff verdrängt werden. Da bei einer Ausführungsform der MSC 510 zurückschreibt, wird im Verlauf der Zeit eine Reihe von Zwischenspeicherpositionen „verändert”, d. h. ein geänderter Zustand, der nicht mehr von der Kopie wiedergegeben wird, die in dem PCM 540 gespeichert ist.
  • Basierend auf diversen Konzepten, die sowohl Software- als auch Hardware-gesteuert sind, kann das System in einen Ruhezustand eintreten oder diesen verlassen. Die spezifische Art, wie das System konfiguriert sein kann, um in den Ruhezustand einzutreten, wird der Fachmann wohl verstehen und wird hier nicht weiter ausführlich beschrieben. Im Ruhezustand muss der Arbeitsspeicherzustand bewahrt werden, doch der größte Teil des Systems wird ausgeschaltet, um Strom zu sparen. Normalerweise erfolgt der Eintritt in den Zustand unter Software-Kontrolle basierend auf der Zeit, die im „Leerlauf-”Zustand verbracht wird. Der Austritt aus dem Zustand erfolgt unter Hardware-Kontrolle basierend auf diversen wohlbekannten Auslösebedingungen.
  • Bei einer Ausführungsform wird das Konzept zum Eintreten in den Ruhezustand durch die Geschwindigkeit des Eintritts in den und den Austritts aus dem Ruhezustand bestimmt. Die primären Kosten sind der Aufwand des Speicherns oder Abrufens des gesamten Arbeitsspeicherzustands aus einem nicht flüchtigen Speicherplatzmedium. Falls das Speicherplatzmedium eine Platte ist, dann muss der Arbeitsspeicherzustand unter Verwendung eines direkten Arbeitsspeicherzugriffs (DMA) gespeichert oder abgerufen werden.
  • Bei den hier beschriebenen Arbeitsspeicher-Architekturen auf mehreren Ebenen wird der größte Teil des Arbeitsspeicherzustands bereits in dem nicht flüchtigen PCM-Arbeitsspeicher 530 gepflegt. Der einzige zusätzliche Arbeitsspeicherzustand, der in den PCM 530 zu übertragen ist, wenn man in den Ruhezustand eintritt, sind die „veränderten” Zeilen in dem MSC 510. Dies ist der Fall, wenn eine Entleerungs-Engine 701 verwendet wird, um alle MSC auf der Suche nach „veränderten” Zeilen zu durchlaufen. Diese Zeilen werden sehr schnell abgerufen und in den PCM „entleert”, um die Originalpositionen mit den neuesten Daten zu aktualisieren. Die „bereinigten” Zeilen in dem Zwischenspeicher müssen nicht entleert werden (d. h. weil bereits bereinigte Kopien im PCM gespeichert sind). Die Entleerungs-Engine 701 einer Ausführungsform wird von der Software 910 (oder Firmware) programmiert, die das Ruhezustandskonzept für das System ausführt. Die Programmierung ist minimal, da man die Entleerungs-Engine 701 nur anweisen muss, alle veränderten Zeilen zu nehmen und sie an den PCM 530 zu senden. Die Adressen der Positionen von veränderten Zeilen werden bereits als Teil der Arbeitsspeicherhierarchie auf mehreren Ebenen gepflegt und müssen nicht ausdrücklich von der Software 910 vorgegeben werden.
  • Bei einer Ausführungsform, wenn die Entleerung beendet ist, informiert die Entleerungs-Engine 701 die Software 910, welche die übrigen Teile des Abschaltprozesses beenden kann. Bei der Rückkehr aus dem Ruhezustand muss keine ausdrückliche Kopie des Arbeitsspeicherzustands aus dem nicht flüchtigen PCM ausgeführt werden. Die normalen Techniken für Arbeitsspeicher auf mehreren Ebenen zum Abrufen einer Arbeitsspeicherposition aus dem PCM 530 und zum Speichern der abgerufenen Zwischenspeicherzeilen in dem MSC 510 übernehmen dies automatisch je nach Bedarf. Folglich ist die Wiederaufnahme nach dem Ruhezustand unter Verwendung der hier beschriebenen Arbeitsspeicher-Architekturen auf mehreren Ebenen extrem schnell.
  • Eine gewisse grundlegende Initialisierung wird für die mehrstufige Arbeitsspeicherhierarchie vorgenommen, um mit dem Betrieb bei der Wiederaufnahme aus dem Ruhezustand zu beginnen. Bei einer Ausführungsform wird dies durch das System-BIOS 170 verwaltet (z. B. in 2 gezeigt). Bei einer Ausführungsform umfasst die Initialisierung das Einrichten von Tabellen, die in dem SRAM oder DRAM vorliegen, um eine schnelle Adressenübersetzung zu ermöglichen. Dieser Prozess ist ebenfalls sehr schnell und trägt daher minimal zum Aufwand der Wiederaufnahme bei.
  • Die Vorzüge der hier beschriebenen Ruhezustandstechniken sind eine enorme Verbesserung gegenüber den derzeitigen Ruhezustandstechniken. Beispielsweise verwenden die Server derzeit keinen Arbeitsspeicher-basierten Ruhezustand, da die Kosten, den Arbeitsspeicher eingeschaltet zu lassen, zu hoch sind. Stattdessen erfordert der Ruhezustand das Speichern oder Abrufen des Arbeitsspeicherzustands aus einer Speicherplatz-Vorrichtung, wie etwa einer HDD oder SSD. Dies umfasst typischerweise einen Software-Treiber, der einen Adapter programmiert, um die DMA-Vorgänge zwischen dem Arbeitsspeicher und der Speicherplatz-Vorrichtung auszuführen. Solche Vorgänge bedingen einen sehr großen Aufwand und beschränken die Anwendbarkeit der Verwendung des Ruhezustands, um Strom zu sparen. Auch ist die Software stark daran beteiligt, ein Arbeitsspeicherbild für die Speicherplatz-Vorrichtung zu erstellen.
  • Im Gegensatz dazu verwenden die hier beschriebenen Ausführungsformen der Erfindung eine mehrstufige Arbeitsspeicherhierarchie mit nicht flüchtigem Arbeitsspeicher (z. B. PCM), um einen arbeitsspeicherresidenten Ruhezustand auszuführen. Eine Entleerungs-Engine 701 wird verwendet, um das Entleeren veränderter Zeilen von dem MSC in den PCMS zu beschleunigen, wodurch sich die Leistung erheblich verbessert.
  • Eine Ausführungsform eines Stromsparverfahrens zur Reaktion auf ein Stromausfallereignis in einem Arbeitsspeichersystem auf mehreren Ebenen mit einem MSC- und einem PCM-Arbeitsspeicher wird in 8B abgebildet. Die in 8B abgebildeten Vorgänge können in Zusammenhang mit der in 8A gezeigten Architektur umgesetzt werden, obwohl das Verfahren nicht unbedingt auf eine bestimmte Architektur eingeschränkt ist.
  • Bei 801 wird eine Stromausfallwarnung erkannt. Beispielsweise kann eine Stromausfall-Erkennungsschaltung erkennen, dass die Spannung des Eingangsstroms unter eine vorgegebene Schwelle abfällt. Bei 802 wird die Entleerungs-Engine ausgelöst und beginnt damit, den MSC der Reihe nach auf der Suche nach veränderten Zeilen zu durchlaufen (z. B. unter Verwendung des Entleerungsadressenzählers 702 wie zuvor beschrieben).
  • Bei 803 dürfen Lesevorgänge die entleerten Bereiche des MSC treffen, und bei 804 generieren Schreibvorgänge, die an die entleerten Bereiche gerichtet sind, Durchschreib- oder Schreibumgehungsvorgänge (z. B. Umgehen des MSC). Sobald der ganze MSC entleert wurde, was bei 805 bestimmt wird, wird ein ausdrücklicher Entleerungsbefehl an den PCM-Controller gesendet. In dieser Phase kann auch ein Benachrichtigungsbefehl an die System-Software gesendet werden (d. h. um das System über den entleerten Zustand zu benachrichtigen).
  • Die Ausführungsformen der Erfindung können diverse Schritte umfassen, die zuvor beschrieben wurden. Die Schritte können als maschinenausführbare Anweisungen ausgebildet sein, die verwendet werden können, um zu bewirken, dass ein universeller oder spezieller Prozessor die Schritte ausführt. Alternativ können diese Schritte von spezifischen Hardware-Komponenten, die eine fest verkabelte Logik enthalten, um die Schritte auszuführen, oder von einer beliebigen Kombination von programmierten Computerkomponenten und spezifischen Hardware-Komponenten ausgeführt werden.
  • Wie sie hier beschrieben werden, können sich die Anweisungen auf spezifische Konfigurationen von Hardware beziehen, wie etwa anwendungsspezifische integrierte Schaltungen (ASIC), die konfiguriert sind, um gewisse Vorgänge auszuführen, oder die eine vorbestimmte Funktion oder Software-Anweisungen aufweisen, die in dem Arbeitsspeicher gespeichert sind, der in einem nicht vorübergehenden, computerlesbaren Medium ausgebildet ist. Somit können die in den Figuren gezeigten Techniken unter Verwendung von Code und Daten umgesetzt werden, die auf einer oder mehreren elektronischen Vorrichtungen gespeichert und ausgeführt werden (z. B. einer Endstation, einem Netzwerkelement usw.). Derartige elektronische Vorrichtungen speichern und kommunizieren (intern und/oder mit anderen elektronischen Vorrichtungen über ein Netzwerk) Code und Daten unter Verwendung von maschinenlesbaren Medien, wie etwa von nicht vorübergehenden computermaschinenlesbaren Speicherplatzmedien (z. B. Magnetplatten; optische Platten; Direktzugriffsspeicher; Festspeicher; Flash-Arbeitsspeichervorrichtungen; Phasenwechselspeicher) und vorübergehenden computermaschinenlesbaren Kommunikationsmedien (z. B. elektrischen, optischen, akustischen oder anderen Formen von verbreiteten Signalen – wie etwa Trägerwellen, Infrarotsignale, Digitalsignale usw.). Zusätzlich umfassen solche elektronischen Vorrichtungen typischerweise einen Satz von einem oder mehreren Prozessoren, die mit einer oder mehreren anderen Komponenten gekoppelt sind, wie etwa mit einer oder mehreren Speicherplatzvorrichtungen (nicht vorübergehenden maschinenlesbaren Speicherplatzmedien), Benutzer-Ein-/Ausgangs-Vorrichtungen (z. B. eine Tastatur, ein Berührungsbildschirm und/oder ein Display) und Netzwerkanschlüsse. Das Koppeln des Satzes von Prozessoren und anderen Komponenten erfolgt typischerweise über einen oder mehrere Busse und Brücken (auch als Bus-Controller bezeichnet). Die Speicherplatz-Vorrichtung und Signale, die den Netzwerkverkehr jeweils befördern, stellen ein oder mehrere maschinenlesbare Speicherplatzmedien und maschinenlesbare Kommunikationsmedien dar. Somit speichert die Speicherplatz-Vorrichtung einer bestimmten elektronischen Vorrichtung typischerweise Code und/oder Daten zur Ausführung an dem Satz des einen oder der mehreren Prozessoren dieser elektronischen Vorrichtung. Natürlich kann bzw. können ein oder mehrere Teile einer Ausführungsform der Erfindung unter Verwendung verschiedener Kombinationen von Software, Firmware und/oder Hardware umgesetzt werden. In dieser gesamten ausführlichen Beschreibung wurden zum Zweck der Erklärung zahlreiche spezifische Einzelheiten dargelegt, um ein vollständiges Verständnis der vorliegenden Erfindung bereitzustellen. Es wird jedoch für den Fachmann ersichtlich sein, dass die Erfindung ohne einige dieser spezifischen Einzelheiten in die Praxis umgesetzt werden kann. In manchen Fällen wurden wohlbekannte Strukturen und Funktionen nicht ausführlich beschrieben, um den Gegenstand der vorliegenden Erfindung nicht zu verschleiern. Entsprechend sind Umfang und Geist der Erfindung im Hinblick auf die folgenden Ansprüche zu beurteilen.

Claims (20)

  1. Computersystem, umfassend: – ein Arbeitsspeicher-Teilsystem, das aus einem nicht flüchtigen Systemspeicher und einem flüchtigen arbeitsspeicherseitigen Zwischenspeicher (MSC) zum Zwischenspeichern von Teilen des nicht flüchtigen Systemspeichers besteht; und – eine Entleerungs-Engine zum Entleeren eines vorgegebenen Bereichs des MSC in den nicht flüchtigen Systemarbeitsspeicher als Reaktion auf einen Deaktivierungszustand, der mit dem vorgegebenen Bereich des MSC verknüpft ist.
  2. System nach Anspruch 1, wobei der Deaktivierungszustand als Reaktion auf eine Messung der Zwischenspeicherbelegung für den vorgegebenen Bereich des MSC ausgewählt wird.
  3. System nach Anspruch 2, wobei die Zwischenspeicherbelegung durch einen Bereichsbelegungszähler für den vorgegebenen Zwischenspeicherbereich verfolgt wird, wobei der Bereichsbelegungszähler jedes Mal inkrementiert wird, wenn eine neue Zwischenspeicherzeile in dem vorgegebenen Bereich zugeteilt wird, und jedes Mal dekrementiert wird, wenn sie innerhalb des vorgegebenen Zwischenspeicherbereichs bewegt oder ungültig gemacht wird.
  4. System nach Anspruch 1, wobei der Deaktivierungszustand als Reaktion auf eine Messung einer durchschnittlichen Verfehlungsquote in dem vorgegebenen Zwischenspeicherbereich ausgewählt wird.
  5. System nach Anspruch 4, wobei die durchschnittliche Verfehlungsquote als gleitendes Mittel über ein vorgegebenes Zeitintervall berechnet wird.
  6. System nach Anspruch 1, wobei der vorgegebene Bereich als Anzahl von Wegen des MSC identifiziert wird.
  7. System nach Anspruch 1, wobei der vorgegebene Bereich als vorgegebener Anteil des MSC identifiziert wird.
  8. System nach Anspruch 1, wobei die Entleerungs-Engine einen Entleerungsadressenzähler umfasst, der die Satzadresse des vorgegebenen Bereichs des MSC pflegt, der gerade deaktiviert wird.
  9. System nach Anspruch 8, wobei die Satzadresse von der Systemspeicheradresse abgeleitet wird, die generiert wird, um auf den Systemspeicher zuzugreifen.
  10. System nach Anspruch 1, wobei die Entleerungs-Engine einen Entleerungsadressenzähler umfasst, der auf einen oberen Teil des Bereichs des zu entleerenden MSC gesetzt wird, wobei der Entleerungsadressenzähler dekrementiert wird, wenn jede aufeinanderfolgende Zwischenspeicherzeile aus dem vorgegebenen Bereich des MSC entleert wird.
  11. Computerumgesetztes Verfahren, das in einem Arbeitsspeicher-Teilsystem umgesetzt wird, das aus einem nicht flüchtigen Systemspeicher und einem flüchtigen arbeitsspeicherseitigen Zwischenspeicher (MSC) zum Zwischenspeichern von Teilen des nicht flüchtigen Systemspeichers besteht, wobei das Verfahren folgende Schritte umfasst: – Erkennen eines Deaktivierungszustands, der mit einem vorgegebenen Bereich des MSC verknüpft ist; und – Entleeren des vorgegebenen Bereichs des MSC in den nicht flüchtigen Systemspeicher als Reaktion auf den Deaktivierungszustand, der mit dem vorgegebenen Bereich des MSC verknüpft ist.
  12. Verfahren nach Anspruch 11, ferner umfassend das Auswählen des Deaktivierungszustands als Reaktion auf eine Messung der Zwischenspeicherbelegung für den vorgegebenen Bereich des MSC.
  13. Verfahren nach Anspruch 12, ferner umfassend folgenden Schritt: – Verfolgen der Zwischenspeicherbelegung unter Verwendung eines Bereichsbelegungszählers für den vorgegebenen Zwischenspeicherbereich, wobei der Bereichsbelegungszähler jedes Mal inkrementiert wird, wenn eine neue Zwischenspeicherzeile innerhalb des vorgegebenen Bereichs zugeteilt wird, und jedes Mal dekrementiert wird, wenn sie innerhalb des vorgegebenen Zwischenspeicherbereichs bewegt oder ungültig gemacht wird.
  14. Verfahren nach Anspruch 11, wobei der Deaktivierungszustand als Reaktion auf eine Messung einer durchschnittlichen Verfehlungsquote innerhalb des vorgegebenen Zwischenspeicherbereichs ausgewählt wird.
  15. Verfahren nach Anspruch 14, wobei die durchschnittliche Verfehlungsquote als gleitendes Mittel über ein vorgegebenes Zeitintervall berechnet wird.
  16. Verfahren nach Anspruch 11, wobei der vorgegebene Bereich als Anzahl von Wegen des MSC identifiziert wird.
  17. Verfahren nach Anspruch 11, wobei der vorgegebene Bereich als vorgegebener Anteil des MSC identifiziert wird.
  18. Verfahren nach Anspruch 11, wobei die Entleerungs-Engine einen Entleerungsadressenzähler umfasst, der die Satz-Adresse des vorgegebenen Bereichs des MSC pflegt, der gerade deaktiviert wird.
  19. Verfahren nach Anspruch 18, wobei die Satzadresse aus der Systemspeicheradresse abgeleitet wird, die generiert wird, um auf den Systemspeicher zuzugreifen.
  20. Verfahren nach Anspruch 11, wobei die Entleerungs-Engine einen Entleerungsadressenzähler umfasst, der auf einen oberen Teil des Bereichs des zu entleerenden MSC eingestellt ist, wobei der Entleerungsadressenzähler jedes Mal dekrementiert wird, wenn jede nachfolgende Zwischenspeicherzeile aus dem vorgegebenen Bereich des MSC entleert wird.
DE112011105984.1T 2011-12-20 2011-12-20 Dynamische teilweise Abschaltung eines arbeitsspeicherseitigen Zwischenspeichers in einer Arbeitsspeicherhierarchie auf zwei Ebenen Pending DE112011105984T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/066302 WO2013095404A1 (en) 2011-12-20 2011-12-20 Dynamic partial power down of memory-side cache in a 2-level memory hierarchy

Publications (1)

Publication Number Publication Date
DE112011105984T5 true DE112011105984T5 (de) 2014-09-18

Family

ID=48669062

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112011105984.1T Pending DE112011105984T5 (de) 2011-12-20 2011-12-20 Dynamische teilweise Abschaltung eines arbeitsspeicherseitigen Zwischenspeichers in einer Arbeitsspeicherhierarchie auf zwei Ebenen

Country Status (8)

Country Link
US (2) US10795823B2 (de)
KR (2) KR101571991B1 (de)
CN (2) CN107368433B (de)
BR (1) BR112014013390A2 (de)
DE (1) DE112011105984T5 (de)
GB (1) GB2510760B (de)
TW (1) TWI489276B (de)
WO (1) WO2013095404A1 (de)

Families Citing this family (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
WO2013101201A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Home agent multi-level nvm memory architecture
WO2013101209A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Thin translation for system access of non volatile semicondcutor storage as random access memory
US9417998B2 (en) 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
US9003218B2 (en) * 2012-05-21 2015-04-07 International Business Machines Corporation Power shifting in multicore platforms by varying SMT levels
WO2014070200A1 (en) * 2012-11-02 2014-05-08 Hewlett-Packard Development Company, L.P. Selective error correcting code and memory access granularity switching
US9098402B2 (en) 2012-12-21 2015-08-04 Intel Corporation Techniques to configure a solid state drive to operate in a storage mode or a memory mode
US9239610B2 (en) * 2013-02-28 2016-01-19 Sandisk Technologies Inc. Systems and methods for managing data in a system for hibernation states
US9645938B2 (en) 2013-09-27 2017-05-09 Intel Corporation Cache operations for memory management
WO2015089488A1 (en) 2013-12-12 2015-06-18 Memory Technologies Llc Channel optimized storage modules
US9542336B2 (en) * 2013-12-18 2017-01-10 Intel Corporation Isochronous agent data pinning in a multi-level memory system
GB2524063B (en) 2014-03-13 2020-07-01 Advanced Risc Mach Ltd Data processing apparatus for executing an access instruction for N threads
US9558120B2 (en) 2014-03-27 2017-01-31 Intel Corporation Method, apparatus and system to cache sets of tags of an off-die cache memory
WO2015147868A1 (en) * 2014-03-28 2015-10-01 Empire Technology Development Llc Magnetoresistive random-access memory cache write management
US9779025B2 (en) 2014-06-02 2017-10-03 Micron Technology, Inc. Cache architecture for comparing data
US9536590B1 (en) * 2014-09-03 2017-01-03 Marvell International Ltd. System and method of memory electrical repair
US10928882B2 (en) * 2014-10-16 2021-02-23 Futurewei Technologies, Inc. Low cost, low power high performance SMP/ASMP multiple-processor system
WO2016099567A1 (en) * 2014-12-19 2016-06-23 Hewlett Packard Enterprise Development Lp Flushing data content in response to a power loss event to a processor
US9430396B2 (en) 2014-12-22 2016-08-30 Intel Corporation Updating persistent data in persistent memory-based storage
US11100083B2 (en) 2015-01-29 2021-08-24 Hewlett Packard Enterprise Development Lp Read only bufferpool
US9690716B2 (en) * 2015-02-13 2017-06-27 Intel Corporation High performance persistent memory for region-centric consistent and atomic updates
US9720773B2 (en) * 2015-03-04 2017-08-01 Cavium, Inc. Managing reuse information in caches
US10013360B2 (en) 2015-03-04 2018-07-03 Cavium, Inc. Managing reuse information with multiple translation stages
US20160259732A1 (en) * 2015-03-04 2016-09-08 Cavium, Inc. Managing reuse information for memory pages
CN110209346B (zh) * 2015-03-06 2021-02-12 华为技术有限公司 数据写入控制装置及方法
US9866647B2 (en) * 2015-03-26 2018-01-09 Alcatel Lucent Hierarchical cost based caching for online media
US10152413B2 (en) 2015-06-08 2018-12-11 Samsung Electronics Co. Ltd. Nonvolatile memory module and operation method thereof
US10423330B2 (en) * 2015-07-29 2019-09-24 International Business Machines Corporation Data collection in a multi-threaded processor
US9959075B2 (en) 2015-08-05 2018-05-01 Qualcomm Incorporated System and method for flush power aware low power mode control in a portable computing device
US20170068304A1 (en) * 2015-09-09 2017-03-09 Mediatek Inc. Low-power memory-access method and associated apparatus
CN106547480B (zh) * 2015-09-17 2019-04-12 慧荣科技股份有限公司 数据储存装置及其数据读取方法
US10185501B2 (en) * 2015-09-25 2019-01-22 Intel Corporation Method and apparatus for pinning memory pages in a multi-level system memory
US10095628B2 (en) 2015-09-29 2018-10-09 International Business Machines Corporation Considering a density of tracks to destage in groups of tracks to select groups of tracks to destage
US10241918B2 (en) * 2015-09-29 2019-03-26 International Business Machines Corporation Considering a frequency of access to groups of tracks to select groups of tracks to destage
US10120811B2 (en) 2015-09-29 2018-11-06 International Business Machines Corporation Considering a frequency of access to groups of tracks and density of the groups to select groups of tracks to destage
US9824419B2 (en) * 2015-11-20 2017-11-21 International Business Machines Corporation Automatically enabling a read-only cache in a language in which two arrays in two different variables may alias each other
US10152421B2 (en) 2015-11-23 2018-12-11 Intel Corporation Instruction and logic for cache control operations
CN106775436B (zh) * 2015-11-24 2019-10-25 群联电子股份有限公司 数据存取方法、存储器控制电路单元与存储器
US10303372B2 (en) 2015-12-01 2019-05-28 Samsung Electronics Co., Ltd. Nonvolatile memory device and operation method thereof
US10073790B2 (en) 2015-12-03 2018-09-11 Samsung Electronics Co., Ltd. Electronic system with memory management mechanism and method of operation thereof
US9934154B2 (en) 2015-12-03 2018-04-03 Samsung Electronics Co., Ltd. Electronic system with memory management mechanism and method of operation thereof
CN108027710B (zh) * 2015-12-03 2020-11-06 株式会社日立制作所 在软件定义的存储系统中进行高速缓存的方法和装置
US20170177482A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Computing system having multi-level system memory capable of operating in a single level system memory mode
US9928168B2 (en) * 2016-01-11 2018-03-27 Qualcomm Incorporated Non-volatile random access system memory with DRAM program caching
US9984009B2 (en) * 2016-01-28 2018-05-29 Silicon Laboratories Inc. Dynamic containerized system memory protection for low-energy MCUs
KR20170109133A (ko) * 2016-03-17 2017-09-28 에스케이하이닉스 주식회사 하이브리드 메모리 장치 및 그의 데이터 관리 방법
KR101842764B1 (ko) * 2016-03-18 2018-03-28 연세대학교 산학협력단 하드웨어 가속기와 호스트 시스템 사이의 데이터 일관성 유지 장치 및 방법
US9798672B1 (en) * 2016-04-14 2017-10-24 Macom Connectivity Solutions, Llc Data managment for cache memory
US10282302B2 (en) 2016-06-30 2019-05-07 Hewlett Packard Enterprise Development Lp Programmable memory-side cache management for different applications
US10579560B2 (en) * 2016-08-31 2020-03-03 Futurewei Technologies, Inc. Transaction-based hybrid memory
US10318428B2 (en) 2016-09-12 2019-06-11 Microsoft Technology Licensing, Llc Power aware hash function for cache memory mapping
US20180091150A1 (en) * 2016-09-27 2018-03-29 Intel Corporation Fused voltage level shifting latch
US11216396B2 (en) * 2016-09-29 2022-01-04 Intel Corporation Persistent memory write semantics on PCIe with existing TLP definition
US10489313B2 (en) 2016-10-31 2019-11-26 Alibaba Group Holding Limited Flash storage failure rate reduction and hyperscale infrastructure robustness enhancement through the MRAM-NOR flash based cache architecture
US10956325B2 (en) * 2016-12-12 2021-03-23 Intel Corporation Instruction and logic for flushing memory ranges in a distributed shared memory system
GB2560336B (en) * 2017-03-07 2020-05-06 Imagination Tech Ltd Address generators for verifying integrated circuit hardware designs for cache memory
US10198354B2 (en) 2017-03-21 2019-02-05 Intel Corporation Apparatus, system, and method to flush modified data from a volatile memory to a persistent second memory
US10318417B2 (en) * 2017-03-31 2019-06-11 Intel Corporation Persistent caching of memory-side cache content
CN108664523B (zh) * 2017-03-31 2021-08-13 华为技术有限公司 一种虚拟磁盘文件格式转换方法和装置
US11175853B2 (en) 2017-05-09 2021-11-16 Samsung Electronics Co., Ltd. Systems and methods for write and flush support in hybrid memory
US10068663B1 (en) 2017-05-30 2018-09-04 Seagate Technology Llc Data storage device with rewriteable in-place memory
US11449431B2 (en) 2017-05-30 2022-09-20 Seagate Technology Llc Data storage device with rewritable in-place memory
US10147501B1 (en) 2017-05-30 2018-12-04 Seagate Technology Llc Data storage device with rewriteable in-place memory
US10090067B1 (en) 2017-05-30 2018-10-02 Seagate Technology Llc Data storage device with rewritable in-place memory
US10591978B2 (en) 2017-05-30 2020-03-17 Microsoft Technology Licensing, Llc Cache memory with reduced power consumption mode
US10241561B2 (en) 2017-06-13 2019-03-26 Microsoft Technology Licensing, Llc Adaptive power down of intra-chip interconnect
US11126550B1 (en) 2017-09-01 2021-09-21 Crossbar, Inc Integrating a resistive memory system into a multicore CPU die to achieve massive memory parallelism
US10853299B2 (en) 2017-09-15 2020-12-01 Dell Products L.P. Hot-plugged PCIe device configuration system
US10437499B2 (en) * 2017-12-22 2019-10-08 Nanya Technology Corporation Hybrid memory system and method of operating the same
KR20190088790A (ko) 2018-01-19 2019-07-29 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
CN110297787B (zh) * 2018-03-22 2021-06-01 龙芯中科技术股份有限公司 I/o设备访问内存的方法、装置及设备
US10691347B2 (en) * 2018-06-07 2020-06-23 Micron Technology, Inc. Extended line width memory-side cache systems and methods
US11556477B2 (en) * 2018-06-15 2023-01-17 Arteris, Inc. System and method for configurable cache IP with flushable address range
US10877693B2 (en) * 2018-06-29 2020-12-29 Intel Corporation Architecture for dynamic transformation of memory configuration
US10937961B2 (en) * 2018-11-06 2021-03-02 International Business Machines Corporation Structure and method to form bi-layer composite phase-change-memory cell
KR20200114481A (ko) 2019-03-28 2020-10-07 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
US10860491B2 (en) * 2019-05-03 2020-12-08 Mediate Inc. Cache management method using object-oriented manner and associated microcontroller
JP6796681B2 (ja) * 2019-05-13 2020-12-09 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
KR20210016191A (ko) 2019-08-01 2021-02-15 삼성전자주식회사 스토리지 장치
US11526448B2 (en) * 2019-09-27 2022-12-13 Intel Corporation Direct mapped caching scheme for a memory side cache that exhibits associativity in response to blocking from pinning
US20200125495A1 (en) * 2019-12-19 2020-04-23 Intel Corporation Multi-level memory with improved memory side cache implementation
US11656967B2 (en) * 2020-02-13 2023-05-23 MemRay Corporation Method and apparatus for supporting persistence and computing device
US20200226066A1 (en) * 2020-03-27 2020-07-16 Intel Corporation Apparatus and method for efficient management of multi-level memory
KR20220023598A (ko) 2020-08-21 2022-03-02 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US20230359553A1 (en) * 2020-10-23 2023-11-09 Hewlett-Packard Development Company, L.P. Access to volatile memories
KR20220066741A (ko) 2020-11-16 2022-05-24 삼성전자주식회사 스토리지 장치 및 그 동작 방법
US20210216452A1 (en) * 2021-03-27 2021-07-15 Intel Corporation Two-level main memory hierarchy management

Family Cites Families (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6105141A (en) * 1998-06-04 2000-08-15 Apple Computer, Inc. Method and apparatus for power management of an external cache of a computer system
US5912839A (en) 1998-06-23 1999-06-15 Energy Conversion Devices, Inc. Universal memory element and method of programming same
JP4034923B2 (ja) * 1999-05-07 2008-01-16 富士通株式会社 半導体記憶装置の動作制御方法および半導体記憶装置
EP1182559B1 (de) * 2000-08-21 2009-01-21 Texas Instruments Incorporated Mikroprozessor
US6965970B2 (en) * 2001-09-27 2005-11-15 Intel Corporation List based method and apparatus for selective and rapid cache flushes
JP4056768B2 (ja) 2002-03-04 2008-03-05 富士通株式会社 マイクロコンピュータ、キャッシュメモリ制御方法及びクロック制御方法
US7100013B1 (en) 2002-08-30 2006-08-29 Nvidia Corporation Method and apparatus for partial memory power shutoff
US8392655B2 (en) * 2003-09-30 2013-03-05 Lenovo (Singapore) Pte Ltd. Apparatus for reducing accesses to levels of a storage hierarchy in a computing system
US7127560B2 (en) 2003-10-14 2006-10-24 International Business Machines Corporation Method of dynamically controlling cache size
US7475174B2 (en) 2004-03-17 2009-01-06 Super Talent Electronics, Inc. Flash / phase-change memory in multi-ring topology using serial-link packet interface
US20050268022A1 (en) 2004-05-26 2005-12-01 Pelley Perry H Cache line memory and method therefor
US7590918B2 (en) 2004-09-10 2009-09-15 Ovonyx, Inc. Using a phase change memory as a high volume memory
CN1787015A (zh) 2004-12-07 2006-06-14 曾蒙汉 交通事故记录装置
US20060143397A1 (en) 2004-12-29 2006-06-29 O'bleness R F Dirty line hint array for cache flushing
US7620773B2 (en) 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
US20070005922A1 (en) 2005-06-30 2007-01-04 Swaminathan Muthukumar P Fully buffered DIMM variable read latency
US7437510B2 (en) * 2005-09-30 2008-10-14 Intel Corporation Instruction-assisted cache management for efficient use of cache and memory
US7752173B1 (en) 2005-12-16 2010-07-06 Network Appliance, Inc. Method and apparatus for improving data processing system performance by reducing wasted disk writes
US20070150663A1 (en) 2005-12-27 2007-06-28 Abraham Mendelson Device, system and method of multi-state cache coherence scheme
US7600078B1 (en) 2006-03-29 2009-10-06 Intel Corporation Speculatively performing read transactions
US7492656B2 (en) 2006-04-28 2009-02-17 Mosaid Technologies Incorporated Dynamic random access memory with fully independent partial array refresh function
US7913147B2 (en) 2006-05-08 2011-03-22 Intel Corporation Method and apparatus for scrubbing memory
US7756053B2 (en) 2006-06-30 2010-07-13 Intel Corporation Memory agent with error hardware
US7493439B2 (en) 2006-08-01 2009-02-17 International Business Machines Corporation Systems and methods for providing performance monitoring in a memory system
WO2008040028A2 (en) 2006-09-28 2008-04-03 Virident Systems, Inc. Systems, methods, and apparatus with programmable memory control for heterogeneous main memory
WO2008055272A2 (en) * 2006-11-04 2008-05-08 Virident Systems, Inc. Integrating data from symmetric and asymmetric memory
US20080183968A1 (en) * 2007-01-30 2008-07-31 Chi-Ting Huang Computer system having cache system directly connected to nonvolatile storage device and method thereof
US8427891B2 (en) 2007-04-17 2013-04-23 Rambus Inc. Hybrid volatile and non-volatile memory device with a shared interface circuit
US20080270811A1 (en) 2007-04-26 2008-10-30 Super Talent Electronics Inc. Fast Suspend-Resume of Computer Motherboard Using Phase-Change Memory
US8429493B2 (en) 2007-05-12 2013-04-23 Apple Inc. Memory device with internal signap processing unit
WO2009052525A1 (en) * 2007-10-19 2009-04-23 Virident Systems, Inc. Managing memory systems containing components with asymmetric characteristics
US8285940B2 (en) 2008-02-29 2012-10-09 Cadence Design Systems, Inc. Method and apparatus for high speed cache flushing in a non-volatile memory
US20090313416A1 (en) 2008-06-16 2009-12-17 George Wayne Nation Computer main memory incorporating volatile and non-volatile memory
US8145932B2 (en) * 2008-06-30 2012-03-27 Dell Products L.P. Systems, methods and media for reducing power consumption in multiple controller information handling systems
US8250310B2 (en) * 2008-07-31 2012-08-21 International Business Machines Corporation Assigning data to NVRAM of shared access hybrid hard drives
CN101673188B (zh) * 2008-09-09 2011-06-01 上海华虹Nec电子有限公司 一种固态硬盘的数据存取方法
US9003118B2 (en) * 2009-01-09 2015-04-07 Dell Products L.P. Systems and methods for non-volatile cache control
US8195887B2 (en) 2009-01-21 2012-06-05 Globalfoundries Inc. Processor power management and method
US9105323B2 (en) 2009-01-23 2015-08-11 Micron Technology, Inc. Memory device power managers and methods
US8195891B2 (en) * 2009-03-30 2012-06-05 Intel Corporation Techniques to perform power fail-safe caching without atomic metadata
US8331857B2 (en) 2009-05-13 2012-12-11 Micron Technology, Inc. Wireless interface to program phase-change memories
US8250282B2 (en) 2009-05-14 2012-08-21 Micron Technology, Inc. PCM memories for storage bus interfaces
US8504759B2 (en) 2009-05-26 2013-08-06 Micron Technology, Inc. Method and devices for controlling power loss
US20100306453A1 (en) 2009-06-02 2010-12-02 Edward Doller Method for operating a portion of an executable program in an executable non-volatile memory
US9123409B2 (en) 2009-06-11 2015-09-01 Micron Technology, Inc. Memory device for a hierarchical memory architecture
US8132045B2 (en) * 2009-06-16 2012-03-06 SanDisk Technologies, Inc. Program failure handling in nonvolatile memory
US8489814B2 (en) * 2009-06-23 2013-07-16 Mediatek, Inc. Cache controller, method for controlling the cache controller, and computing system comprising the same
US8516219B2 (en) 2009-07-24 2013-08-20 Apple Inc. Index cache tree
KR20110048304A (ko) 2009-11-02 2011-05-11 삼성전자주식회사 솔더 리플로우에서 코드 데이터의 손실을 방지할 수 있는 방법과 그 장치들
US8914568B2 (en) 2009-12-23 2014-12-16 Intel Corporation Hybrid memory architectures
US8612809B2 (en) 2009-12-31 2013-12-17 Intel Corporation Systems, methods, and apparatuses for stacked memory
US20110208900A1 (en) 2010-02-23 2011-08-25 Ocz Technology Group, Inc. Methods and systems utilizing nonvolatile memory in a computer system main memory
KR20110103258A (ko) * 2010-03-12 2011-09-20 삼성전자주식회사 전력 소모 저감을 위한 하이브리드 메모리 장치 및 그 방법
KR20110131781A (ko) 2010-05-31 2011-12-07 삼성전자주식회사 위치정보의 정확도 확인방법 및 장치
US8649212B2 (en) 2010-09-24 2014-02-11 Intel Corporation Method, apparatus and system to determine access information for a phase change memory
US8838935B2 (en) 2010-09-24 2014-09-16 Intel Corporation Apparatus, method, and system for implementing micro page tables
US20120096295A1 (en) * 2010-10-18 2012-04-19 Robert Krick Method and apparatus for dynamic power control of cache memory
US8612676B2 (en) 2010-12-22 2013-12-17 Intel Corporation Two-level system main memory
US8462577B2 (en) 2011-03-18 2013-06-11 Intel Corporation Single transistor driver for address lines in a phase change memory and switch (PCMS) array
US8462537B2 (en) 2011-03-21 2013-06-11 Intel Corporation Method and apparatus to reset a phase change memory and switch (PCMS) memory cell
US8607089B2 (en) 2011-05-19 2013-12-10 Intel Corporation Interface for storage device access over memory bus
US20120297147A1 (en) * 2011-05-20 2012-11-22 Nokia Corporation Caching Operations for a Non-Volatile Memory Array
US8605531B2 (en) 2011-06-20 2013-12-10 Intel Corporation Fast verify for phase change memory with switch
US8463948B1 (en) 2011-07-01 2013-06-11 Intel Corporation Method, apparatus and system for determining an identifier of a volume of memory
US20130036270A1 (en) * 2011-08-04 2013-02-07 The Regents Of The University Of Michigan Data processing apparatus and method for powering down a cache
US9529708B2 (en) 2011-09-30 2016-12-27 Intel Corporation Apparatus for configuring partitions within phase change memory of tablet computer with integrated memory controller emulating mass storage to storage driver based on request from software

Also Published As

Publication number Publication date
US10795823B2 (en) 2020-10-06
CN103988183A (zh) 2014-08-13
BR112014013390A2 (pt) 2017-06-13
CN103988183B (zh) 2017-06-13
US20140304475A1 (en) 2014-10-09
GB201408834D0 (en) 2014-07-02
CN107368433B (zh) 2021-06-22
KR20140098167A (ko) 2014-08-07
TWI489276B (zh) 2015-06-21
GB2510760B (en) 2020-05-20
KR101571991B1 (ko) 2015-11-25
US11200176B2 (en) 2021-12-14
GB2510760A (en) 2014-08-13
WO2013095404A1 (en) 2013-06-27
CN107368433A (zh) 2017-11-21
US20210056035A1 (en) 2021-02-25
KR20150138399A (ko) 2015-12-09
TW201346554A (zh) 2013-11-16
KR101915073B1 (ko) 2018-11-06

Similar Documents

Publication Publication Date Title
US11200176B2 (en) Dynamic partial power down of memory-side cache in a 2-level memory hierarchy
US10719443B2 (en) Apparatus and method for implementing a multi-level memory hierarchy
US11132298B2 (en) Apparatus and method for implementing a multi-level memory hierarchy having different operating modes
DE102017113439B4 (de) Abbildungstabellen für Speichervorrichtungen
KR101636634B1 (ko) 프로세서로부터 메모리 서브시스템으로 데이터를 지능적으로 플러싱하기 위한 시스템 및 방법
US9317429B2 (en) Apparatus and method for implementing a multi-level memory hierarchy over common memory channels
US9286205B2 (en) Apparatus and method for phase change memory drift management
DE102014003668A1 (de) Befehle zum markieren des anfangs und endes eines nicht- transaktionsorientierten codegebiets, das ein zurückschreiben zu einer persistenten ablage erfordert
US11544093B2 (en) Virtual machine replication and migration
US11016905B1 (en) Storage class memory access
US20240061786A1 (en) Systems, methods, and apparatus for accessing data in versions of memory pages

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: MAUCHER BOERJES JENKINS, DE

Representative=s name: MAUCHER JENKINS, DE

Representative=s name: MAUCHER JENKINS PATENTANWAELTE & RECHTSANWAELT, DE

R016 Response to examination communication