DE202017104840U1 - Hybriddatenspeichermanagement - Google Patents

Hybriddatenspeichermanagement Download PDF

Info

Publication number
DE202017104840U1
DE202017104840U1 DE202017104840.3U DE202017104840U DE202017104840U1 DE 202017104840 U1 DE202017104840 U1 DE 202017104840U1 DE 202017104840 U DE202017104840 U DE 202017104840U DE 202017104840 U1 DE202017104840 U1 DE 202017104840U1
Authority
DE
Germany
Prior art keywords
page
data store
access
count
main data
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.)
Active
Application number
DE202017104840.3U
Other languages
English (en)
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.)
Google LLC
Original Assignee
Google LLC
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
Priority claimed from US15/235,495 external-priority patent/US10152427B2/en
Application filed by Google LLC filed Critical Google LLC
Publication of DE202017104840U1 publication Critical patent/DE202017104840U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

System, das umfasst: einen oder mehrere Prozessoren; und einen Datenspeicher, der einen Hauptdatenspeicher und einen sekundären Datenspeicher umfasst, wobei der Datenspeicher Anweisungen speichert, die, wenn sie ausgeführt werden, dafür betreibbar sind zu veranlassen, dass der eine oder die mehreren Prozessoren Operationen ausführen, die umfassen: Bestimmen, ob ein Zugriffsbit gesetzt ist, für jeden Seitentabelleneintrag einer Seitentabelle auf der Grundlage einer Absuche der Seitentabelle mit einer Seitentabellen-Absucheinrichtung mit einem Prozessor, wobei das Zugriffsbit angibt, ob auf eine Seite, der der Seitentabelleneintrag zugeordnet ist, in einer letzten Absuchperiode zugegriffen wurde; Inkrementieren eines Zählwerts für jede Seite in Ansprechen auf die Bestimmung, dass das Zugriffsbit für den der Seite zugeordneten Seitentabelleneintrag nicht gesetzt ist; nach dem Bestimmen mit dem Prozessor, ob das Zugriffsbit gesetzt ist, für jeden Seitentabelleneintrag, Zurücksetzen des Zugriffsbits; Empfangen einer Anforderung zum Zugriff auf eine erste Seite von Daten aus einem Hauptdatenspeicher; Initiieren eines Seitenfehlers auf der Grundlage der Bestimmung, dass die erste Seite von Daten nicht in dem Hauptdatenspeicher gespeichert ist; und Bedienen des Seitenfehlers unter Verwendung einer Direktspeicherzugriffs-Engine (DMA-Engine), wobei das Bedienen des Seitenfehlers unter Verwendung einer DMA-Engine umfasst: Bestimmen einer bestimmten Seite auf der Grundlage des Zählwerts für jede Seite und Freigeben der bestimmten Seite in den sekundären Datenspeicher und Übertragen der ersten Seite von Daten aus dem sekundären Datenspeicher an den Hauptdatenspeicher an den Ort der freigegebenen bestimmten Seite in Ansprechen auf die Bestimmung, dass der Hauptdatenspeicher eine Seitenübertragung nicht empfangen kann.

Description

  • GEBIET
  • Die vorliegende Gebrauchsmusterschrift bezieht sich allgemein auf Datenspeichersysteme.
  • In Übereinstimmung mit den Anforderungen des Gebrauchsmustergesetzes sind nur Vorrichtungen oder Systeme, wie sie in den beigefügten Ansprüchen definiert sind, aber keine Verfahren als Gebrauchsmuster zu schützen und Gegenstand des Gebrauchsmusters. Falls in der Beschreibung auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich zur Veranschaulichung der Vorrichtungen oder Systeme, für die mit den beigefügten Ansprüchen Schutz begehrt wird.
  • HINTERGRUND
  • Um Daten und Anweisungen für verschiedene Computer und ähnliche Systeme zu unterhalten und zu speichern, können eine breite Vielfalt von Datenspeichervorrichtungen verwendet werden. In herkömmlichen Computersystemen wird üblicherweise die Technologie dynamischer Schreib-Lese-Speicher (DRAM) genutzt, um den dynamischen Datenspeicher des Computers zu betreiben, damit eine Anwendung mit hohen Geschwindigkeiten arbeitet. Allerdings skaliert der als Hauptdatenspeicher in Computersystemen verwendete DRAM nicht mehr so schnell wie in der Vergangenheit. Im Ergebnis ist der DRAM-Speicher in Computerumgebungen zu einem beschränkten Betriebsmittel geworden.
  • Ein zweiter Tire des Datenspeichers wie etwa ein nichtflüchtiger Datenspeicher kann verwendet werden, der die Leistungslücke zwischen dem DRAM und langsameren Technologien wie etwa NAND-Flash überbrückt. Auf den zweiten Tire des Datenspeichers kann über einen Datenspeicher- oder EA-Bus oder fern über ein schnelles Netz lokal zugegriffen werden. Allerdings müssen Anwendungen die Datenplatzierung explizit managen oder muss das System ein automatisches Management bereitstellen, das die Daten zwischen Datenspeicher-Tires transparent verschiebt. Somit sind neue Techniken für das automatische Management mit minimaler Leistungsauswirkung notwendig, um die Unzulänglichkeiten vorhandener Techniken, die für langsamere Speichervorrichtungen ausgelegt waren, zu überwinden.
  • ZUSAMMENFASSUNG
  • Ein innovativer Aspekt des in dieser Gebrauchsmusterschrift beschriebenen Gegenstands wird in Systemen und Verfahren verkörpert, die das Bestimmen, ob ein Zugriffsbit gesetzt ist, für jeden Seitentabelleneintrag einer Seitentabelle auf der Grundlage einer Absuche der Seitentabelle mit wenigstens einem Seitentabellen-Walker des Prozessors, wobei das Zugriffsbit angibt, ob auf eine Seite, der der Seitentabelleneintrag zugeordnet ist, in einer letzten Absuchperiode zugegriffen wurde; das Inkrementieren eines Zählwerts für jede Seite in Ansprechen auf die Bestimmung, dass das Zugriffsbit für den der Seite zugeordneten Seitentabelleneintrag nicht gesetzt ist; nach dem Bestimmen mit dem Prozessor, ob das Zugriffsbit gesetzt ist, für jeden Seitentabelleneintrag, das Zurücksetzen des Zugriffsbits mit dem Prozessor; das Empfangen einer Anforderung zum Zugriff auf eine erste Seite von Daten aus einem Hauptdatenspeicher; das Initiieren eines Seitenfehlers auf der Grundlage der Bestimmung, dass die erste Seite von Daten nicht in dem Hauptdatenspeicher gespeichert ist; und das Bedienen des Seitenfehlers unter Verwendung einer Direktspeicherzugriffs-Engine (DMA-Engine) enthalten.
  • In bestimmten Implementierungen enthält das Bedienen des Seitenfehlers unter Verwendung einer DMA-Engine das Bestimmen einer von zuletzt verwendeten Seiten auf der Grundlage des Zählwerts für jede Seite und das Freigeben einer der zuletzt bestimmten Seiten in den sekundären Datenspeicher und das Übertragen der Daten der ersten Seite aus dem sekundären Datenspeicher in den Hauptdatenspeicher an den Ort der freigegebenen wenigstens einen der zuletzt verwendeten Seiten, falls der Hauptdatenspeicher eine Seitenübertragung nicht empfangen kann; und falls der Hauptdatenspeicher eine Seitenübertragung empfangen kann, das Übertragen der Daten der ersten Seite aus dem sekundären Datenspeicher an den Hauptdatenspeicher.
  • In bestimmten Implementierungen enthält das Initiieren des Seitenfehlers das Blockieren der Ausführung eines Threads, während der Seitenfehler bedient wird; und das Freigeben des Threads zum Zugreifen auf den Hauptdatenspeicher, nachdem der Seitenfehler bedient worden ist. Ferner wird der Zählwert für jede Seite in bestimmten Implementierungen durch wenigstens eines der Folgenden unterhalten: einen Zähler für jede in dem statischen Schreib-Lese-Speicher gespeicherte Seite, Zähl-Bloom-Filter oder einen Zähler für jede in dem dynamischen Schreib-Lese-Speicher gespeicherte Seite.
  • Ein innovativer Aspekt des in dieser Gebrauchsmusterschrift beschriebenen Gegenstands wird in Systemen und Verfahren verkörpert, die das Bestimmen, ob ein Zugriffsbit gesetzt ist, für jeden Seitentabelleneintrag einer Seitentabelle auf der Grundlage einer Absuche der Seitentabelle mit wenigstens einem Seitentabellen-Walker, wobei das Zugriffsbit angibt, ob in einer letzten Absuchperiode auf eine Seite, der der Seitentabelleneintrag zugeordnet ist, bei einem Hauptdatenspeicher zugegriffen wurde; das Inkrementieren eines primären Zählwerts für jede Seite in dem Hauptdatenspeicher in Ansprechen auf die Bestimmung, dass das Zugriffsbit für den der Seite zugeordneten Seitentabelleneintrag nicht gesetzt ist; das Zurücksetzen des Zugriffsbits nach der Bestimmung, ob das Zugriffsbit gesetzt ist, für jeden Seitentabelleneintrag; das Bestimmen, ob auf eine Seite in einem sekundären Datenspeicher zugegriffen wird, aufgrund dessen, dass ein Home-Agent eine Anforderung zum Zugriff auf die Seite in dem sekundären Datenspeicher empfängt; das Inkrementieren eines sekundären Zählwerts für jede Seite in dem sekundären Datenspeicher in Ansprechen auf die Bestimmung, dass auf die Seite in dem sekundären Datenspeicher zugegriffen wird, aufgrund dessen, dass der Home-Agent eine Anforderung zum Zugriff auf die Seite in dem sekundären Datenspeicher empfängt; das Identifizieren einer bestimmten Seite in dem sekundären Datenspeicher als eine, auf die häufig zugegriffen wird, auf der Grundlage des sekundären Zählwerts; und das Migrieren der bestimmten Seite, die als eine identifiziert wurde, auf die häufig zugegriffen wird, aus dem sekundären Datenspeicher in den Hauptdatenspeicher, enthalten.
  • Ein anderer Aspekt des in dieser Gebrauchsmusterschrift beschriebenen Gegenstands kann in Systemen und Verfahren verkörpert werden, die das Identifizieren einer bestimmten Seite in dem Hauptdatenspeicher als eine, auf die selten zugegriffen wird, auf der Grundlage des primären Zählwerts; und das Migrieren der bestimmten Seite, die als eine identifiziert wurde, auf die selten zugegriffen wird, aus dem Hauptdatenspeicher in den sekundären Datenspeicher enthalten. Außerdem kann das Migrieren der bestimmten Seite, die als eine identifiziert wurde, auf die selten zugegriffen wird, das Annullieren des der bestimmten Seite zugeordneten Seitentabelleneintrags, das Ausführen eines Translation-Lookaside-Buffer-Shootdowns für irgendwelche der bestimmten Seite zugeordnete Einträge und das Übertragen der bestimmten Seite aus dem Hauptdatenspeicher in den sekundären Datenspeicher enthalten.
  • In bestimmten Implementierungen werden sowohl der primäre Zählwert für jede Seite in dem Hauptdatenspeicher als auch der sekundäre Zählwert für jede Seite in dem sekundären Datenspeicher durch wenigstens eines der Folgenden unterhalten: einen Zähler für jede in dem statischen Schreib-Lese-Speicher gespeicherte Seite, Zähl-Bloom-Filter oder einen Zähler für jede in dem dynamischen Schreib-Lese-Speicher gespeicherte Seite.
  • In bestimmten Implementierungen enthält das Identifizieren einer bestimmten Seite in dem Hauptdatenspeicher als eine, auf die selten zugegriffen wird, auf der Grundlage des primären Zählwerts das Bestimmen, dass eine Zugriffszwischenzeit für die bestimmte Seite einem Zugriffszwischenzeit-Schwellenwert genügt. Außerdem wird in bestimmten Implementierungen die bestimmte Seite, die als eine identifiziert wurde, auf die selten zugegriffen wird, in Ansprechen auf die Bestimmung, dass die Zugriffszwischenzeit für die bestimmte Seite dem Zugriffszwischenzeit-Schwellenwert genügt, aus dem Hauptdatenspeicher in den sekundären Datenspeicher migriert.
  • Andere Ausführungsformen dieser Aspekte enthalten entsprechende Systeme, Vorrichtungen und Computerprogramme, die dafür konfiguriert sind, die Tätigkeiten der Verfahren, die in Computerspeichervorrichtungen codiert sind, auszuführen.
  • Bestimmte Ausführungsformen des in dieser Gebrauchsmusterschrift beschriebenen Gegenstands können in der Weise implementiert werden, dass einer oder mehrere der folgenden Vorteile verwirklicht werden. Zum Beispiel können die Nutzungs- oder Zugriffsstatistiken für Seiten im Datenspeicher, die durch Hardware bestimmt werden, präziser und genauer als in aktuellen Verfahren, die Software und Absuchtechniken umfassen, bestimmt werden. Ferner kann dadurch, dass anstelle der vollen Datenseite zuerst eine bestimmte Cache-Zeile, für die der Zugriff angefordert wird, übertragen wird, die Verzögerung, die dadurch verursacht wird, dass eine Seite in Ansprechen auf eine Anforderung für den Zugriff auf die Seite übertragen wird, verringert werden, was zur schnelleren Ausführung der Anwendung oder des Prozesses, die bzw. der ausgeführt wird, führen kann.
  • In den beigefügten Zeichnungen und in der folgenden Beschreibung sind die Einzelheiten einer oder mehrerer Ausführungsformen der Erfindung dargelegt. Weitere Merkmale und Vorteile der Erfindung gehen aus der Beschreibung, aus den Zeichnungen und aus den Ansprüchen hervor.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt ein Beispiel eines Systems, das eine Datenspeichervorrichtung in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung enthält.
  • 2 zeigt ein Beispiel eines Systems, das eine Datenspeichervorrichtung in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung enthält.
  • 3A zeigt einen Ablaufplan eines Beispiels eines Prozessors zur Behandlung eines Seitenfehlers in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung.
  • 3B zeigt einen Ablaufplan eines Beispiels eines Prozesses für einen Rückschreib-Thread in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung.
  • 4 zeigt einen Ablaufplan eines Beispiels eines Prozesses zum Bestimmen einer Häufigkeit der Nutzung einer Seite mit Hardware und zum Bedienen eines Seitenfehlers unter Verwendung einer DMA-Engine in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung.
  • 5 zeigt einen Ablaufplan eines Beispiels eines Prozesses zum Bestimmen einer Häufigkeit der Nutzung einer Seite mit Hardware und zum Ausführen einer Seitenmigration auf der Grundlage der bestimmten Nutzung in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung.
  • 6 zeigt einen Ablaufplan eines Beispiels eines Prozesses zum Behandeln eines Seitenfehlers dadurch, dass eine entscheidende Cache-Zeile zuerst übertragen wird, in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung.
  • Gleiche Bezugszeichen und Bezeichnungen in den verschiedenen Zeichnungen bezeichnen gleiche Elemente.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Auf neue Technologien nichtflüchtiger Datenspeicher kann lokal über einen Datenspeicher- oder EA-Bus oder fern über ein schnelles Netz zugegriffen werden. Die Leistung dieser Technologien hat zwei wichtige Implikationen: Zunächst sind sie schnell genug, damit Software-Overheads, um auf sie zuzugreifen, minimal sein müssen; und zweitens sind sie langsam genug, damit üblicherweise ein DRAM als ein Cache verwendet werden kann. Um von den Vorteilen dieser Arten nichtflüchtiger Datenspeicher zu profitieren, müssen Anwendungen die Datenplatzierung explizit managen oder muss das System ein automatisches Management bereitstellen, das Daten zwischen verschiedenen Abschnitten des Datenspeichers transparent verschiebt.
  • Dementsprechend schaffen Ausführungsformen der vorliegenden Offenbarung ein System für ein automatisches Hochleistungsmanagement eines sekundären Datenspeichers, das entweder lokal über einen Datenspeicher- oder EA-Bus oder fern über ein Netz verfügbar ist. Der sekundäre Datenspeicher kann ein Computerdatenspeicher sein, der dem Wesen nach nichtflüchtig und beständig ist. Auf den sekundären Datenspeicher kann durch den Prozessor nicht direkt zugegriffen werden und er kann langsamer als der primäre Datenspeicher oder Hauptdatenspeicher sein. Auf den Hauptdatenspeicher, der auch als primärer Datenspeicher, als primärer Speicher, als interner Datenspeicher oder als Datenspeicher des ersten Tires bezeichnet wird, kann durch die CPU direkt zugegriffen werden. Wie im Folgenden ausführlicher beschrieben ist, nutzt die Hardware das Cache-Kohärenzprotokoll und die Verdrahtung in modernen prozessorbasierten Systemen, um Zugriffslatenzzeiten zu verringern und die Konsistenz aufrechtzuerhalten. Außerdem kann ein optimierter Kernel-Treiber z. B. einen schnellen Weg zu dem Datenspeicher des zweiten Tires bereitstellen und die gesamte Kommunikation mit der Datenspeichermanagementhardware behandeln. Im Vergleich zu vorhandenen Wegen über den Kernel für den Seitenwechsel, für die für Dinge wie für die Synchronisation, für das Datenspeichermanagement und für Block-EA-Übertragungen hohe Kosten anfallen, ist dieser Prozess ist vorteilhaft.
  • Diese Merkmale und zusätzliche Merkmale sind im Folgenden ausführlicher beschrieben.
  • 1 zeigt ein Beispiel eines Systems 100, das eine Datenspeichervorrichtung in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung enthält. Eine Zentraleinheit (CPU) 110 kann mit einem DRAM 120 und mit einer Datenspeicher-Managementeinheit (MMU) 150 in Kommunikation stehen. Ferner kann das System 100 einen fernen Datenspeicher 130 enthalten, auf den über ein Netz zugegriffen werden kann. Ein Cache-Agent 140 und ein Home-Agent 145 können bei dem Management des Datenspeichers mit der MMU 150 zusammenarbeiten. Der Begriff Cache-Agent bezieht sich auf einen Verarbeitungseinheitsagenten, der Cache-Daten speichert und der Datenspeicheranforderungen initiieren kann. Mit anderen Worten, der Begriff Cache-Agent kann eine Entität repräsentieren, die Transaktionen in den kohärenten Datenspeicher initiieren kann und die Kopien in ihrer eigenen Cache-Struktur halten kann. Der Home-Agent 145 kann z. B. ein Datenspeichercontroller sein. Der Begriff Home-Agent bezieht sich auf einen Verarbeitungseinheitsagenten, der ein Gebiet oder einen Abschnitt des Datenspeichers beaufsichtigt oder besitzt. Mit anderen Worten, der Begriff Home-Agent kann eine Entität repräsentieren, die kohärente Transaktionen bedient, einen Abschnitt des kohärenten Datenspeichers beaufsichtigt und/oder Konflikte, die zwischen verschiedenen Cache-Agenten auftreten können, managt. Außerdem können ein Seitentabellen-Walker 160 und ein Translation Look-aside Buffer (TLB) 165 Teil der MMU 150 oder mit ihr implementiert sein.
  • Die MMU 150 ist eine Hardwareeinheit, über die Datenspeicherbezugnahmen übergeben werden können, wobei sie die Übersetzung virtueller Datenspeicheradressen in physikalische Adressen ausführt und die Cache-Steuerung behandelt. Zum Beispiel kann die MMU 150 eine Seitentabelle als eine Tabelle im Datenspeicher verwenden, die einen Seitentabelleneintrag (PTE) pro Seite enthält, um Nummern virtueller Seiten in Nummern physikalischer Seiten im Hauptdatenspeicher abzubilden. Der Translation Look-aside Buffer 165 kann als ein Assoziativ-Cache der PTEs verwendet werden, um die Notwendigkeit, jedes Mal, wenn eine virtuelle Adresse abgebildet wird, auf den Hauptdatenspeicher zuzugreifen, zu vermeiden. Wenn ein PTE den Zugriff auf eine virtuelle Seite verhindert, da z. B. dieser virtuellen Seite kein physikalischer Schreib-Lese-Speicher zugeordnet worden ist, kann die MMU 150 einen Seitenfehler an die CPU 150 signalisieren. Anhand von 1 kann das System 100 zusätzlich einen nichtflüchtigen Datenspeicher 180 enthalten und kann es optional einen privaten DRAM 170 enthalten.
  • 2 zeigt ein Beispiel eines Systems 200, das eine Datenspeichervorrichtung in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung enthält. Das System 200 kann eine CPU 210 und einen DRAM 220 enthalten. Ferner kann das System 200 eine Direktdatenspeicherzugriffs-Engine (DMA-Engine) 230 und einen sekundären Speicher 240 enthalten. Die CPU 210, der DRAM 220, die DMA-Engine 230 und der sekundäre Datenspeicher 240 können über einen oder mehrere Busse 215, 225 oder über andere Mittel zur Datenkommunikation in Datenkommunikation stehen.
  • Im Betrieb kann die DMA-Engine 230 zum Bedienen von Seitenfehlern, zum Behandeln von Rückschreibvorgängen oder zur Seitenmigration verwendet werden. Der sekundäre Speicher 240 kann eine Datenspeichervorrichtung sein, die als Datenspeicher des zweiten Tires dient, auf den durch die CPU 210 nicht direkt zugegriffen werden kann. Die DMA-Engine 230 kann mit der CPU 210 direkt verbunden sein oder kann Teil einer getrennten Entität wie etwa eines Cache-Agenten sein. Wenn die CPU 210 auf eine Seite von dem DRAM 220 als Hauptdatenspeicher, d. h. als Datenspeicher des ersten Tires oder primärer Datenspeicher, zuzugreifen versucht und diese Seite ausgelagert ist und in dem sekundären Speicher 240 vorhanden ist, kann ein Seitenfehler auftreten. Der Seitenfehler kann angeben, dass das Betriebssystem (BS) die Seite aus dem sekundären Speicher 240 in den Hauptdatenspeicher DRAM 220 verschieben muss. In Übereinstimmung mit hier beschriebenen Ausführungsformen managt die Hardware-DMA-Engine 230 den Seitenfehler, wobei sie den Versuch, auf die Seite, die nicht in dem Hauptdatenspeicher DRAM 220 ist, zuzugreifen, detektiert. In Ansprechen darauf wird die Ausführung des Threads blockiert, während der Seitenfehler bedient wird. Daraufhin kann der Thread freigegeben werden, um auf den Hauptdatenspeicher DRAM 220 zuzugreifen und die Ausführung fortzusetzen.
  • Auf diese Weise kann die Hardware die Seitenübertragung durch Bedienen von Seitenfehlern unter Verwendung der DMA-Engine 230 initiieren. Dementsprechend gibt es eine programmierbare DMA-Engine 230 zum Beschleunigen von Seitenübertragungen beim Bedienen von Seitenfehlern, zum Zurückschreiben von Dirty-Seiten und zum Migrieren von Seiten. Die DMA-Engine 230 kann das Bedienen mehrerer gleichzeitiger Anforderungen managen. Die Anforderungen der DMA-Engine 230 können unter Verwendung eines Befehls mit niedrigem Overhead und einer Antwortschnittstelle über eine kohärente Verdrahtung, die eine Verdrahtung für den gemeinsam genutzten Datenspeicher sein kann, initiiert und abgeschlossen werden. Die DMA-Engine 230 kann als ein Nutzer des kohärenten Datenspeichers konfiguriert sein, der ein Datenspeicherkohärenzprotokoll nutzt, so dass die DMA-Engine 230 Daten in den Cache der letzten Ebene des Prozessors oder der CPU 210 direkt übertragen kann.
  • 3A zeigt einen Ablaufplan eines Beispiels eines Prozesses 300 zum Behandeln eines Seitenfehlers in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung. Wie oben beschrieben wurde, kann ein Seitenfehler auftreten, wenn ein Thread oder ein laufendes Programm auf eine Datenspeicherseite, die in den virtuellen Adressenraum abgebildet ist, aber nicht tatsächlich in den Hauptdatenspeicher geladen ist, zugreift. Die MMU 150 des Prozessors kann den Seitenfehler detektieren. Wenn der Seitenfehler bei 310 detektiert wird, kann bei 320 eine Bestimmung vorgenommen werden, ob es eine freie Seite gibt. Falls es eine freie Seite gibt, "ja", können Seitendaten bei 330 aus dem sekundären Speicher oder Sicherungsspeicher an den freien Seitenort kopiert werden. Falls es keine freie Seite gibt, "nein", kann bei 360 eine Seite von der FIFO-Warteschlange, die alle Seiten im Datenspeicher in einer Warteschlange mit der neuesten Ankunft hinten und der ältesten Ankunft vorn nachführen kann, abgehoben werden. Falls diese Seite dirty ist, d. h. geändert worden ist, kann das System die Seite bei 370 in den sekundären Datenspeicher oder Sicherungsspeicher schreiben. Beim Übertragen der Seite aus dem Hauptdatenspeicher in den sekundären Datenspeicher bei 380 kann der Seitentabelleneintrag, der der Seite zugeordnet ist, annulliert werden und kann für irgendwelche Einträge, die der Seite zugeordnet sind, ein TLB-Shootdown ausgeführt werden, was z. B. veranlasst, dass die TLB-Einträge für andere Prozessoren geräumt werden. Da diese Seite nun frei ist, können bei 330 Seitendaten aus dem sekundären Speicher oder Sicherungsspeicher an den Ort der freien Seite kopiert werden. Bei 340 können die Seitentabellen durch Aktualisieren des der Seite zugeordneten PTE, damit er auf den Ort in dem Hauptdatenspeicher der Seite weist, aktualisiert werden, um einen gültigen PTE zu erzeugen. Wenn der Seitenfehler behandelt worden ist, kann der Thread oder das laufende Programm bei 350 wiederaufgenommen werden.
  • 3B zeigt einen Ablaufplan eines Beispiels eines Prozesses 305 für einen Zurückschreib-Thread in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung. Beim Aufwecken bei 315 kann eine Bestimmung vorgenommen werden, ob die Anzahl freier Seiten einer Schwellenanzahl von Seiten genügt, die irgendeine Anzahl von Seiten sein kann, die zu behandeln die gegebene Architektur konfiguriert ist. Zum Beispiel kann bei 325 eine Bestimmung vorgenommen werden, ob die Anzahl freier Seiten kleiner oder gleich einem Schwellenwert ist. Falls die Anzahl freier Seiten dem Schwellenwert nicht genügt ("nein"), z. B., falls sie größer als der Schwellenwert ist, kann der Thread bei 335 schlafen. Falls dagegen bei 325 bestimmt wird, dass die Anzahl freier Seiten dem Schwellenwert genügt ("ja"), kann das System bei 345 die nächste Seite in der FIFO-Warteschlange bestimmen. Falls diese Seite dirty ist, d. h. geändert worden ist, kann das System die Seite bei 370 in den sekundären Datenspeicher oder Sicherungsspeicher schreiben. Beim Übertragen der Seite aus dem Hauptdatenspeicher in den sekundären Datenspeicher kann der der Seite zugeordnete Seitentabelleneintrag bei 380 annulliert werden und für irgendwelche der Seite zugeordnete Einträge ein TLB-Shootdown ausgeführt werden. Wenn diese Seite jetzt frei ist, kann bei 325 erneut eine Bestimmung vorgenommen werden, ob die Anzahl freier Seiten dem Schwellenwert genügt.
  • Die Seitentabellenabsuche, d. h. eine Absuche über die Seitentabelle, kann über Hardware anstelle von Software, die einen CPU-Overhead erfordert, der häufig zu langsameren Datenspeicherzugriff und langsamerer Datenspeicherverarbeitung führt und einige eigentlich nützliche Cache-Informationen verwirft, ausgeführt werden. Allgemein kann die Häufigkeit des Zugriffs auf Seitendaten, z. B., auf welche Seitendaten im Verhältnis zu anderen Seiten von Daten häufig zugegriffen wird und auf welche Seitendaten im Verhältnis zu anderen Seiten von Daten selten zugegriffen wird, durch Absuchen der Seitentabelle bestimmt werden. Jede Seite, die in die Seitentabelle abgebildet wird, d. h. jeder PTE, kann einen Merker oder ein Zugriffsbit aufweisen, der bzw. das jedes Mal, wenn auf die Seite zugegriffen wird, gesetzt und daraufhin, nachdem die Seitentabelle abgesucht worden ist, durch die CPU gelöscht werden kann.
  • Diese Hardware kann durch Ergänzen des Seitentabellen-Walkers oder der MMU, der bzw. die einen oder mehrere Seitentabellen-Walker, z. B. eingebaute Hardware zum Lesen der Seitentabelle und zum automatischen Laden von Virtuell-physikalisch-Übersetzungen in den TLB, enthalten kann, implementiert sein. Somit kann die Hardware Teil der Prozessorarchitektur sein, die den Seitentabellenabsuchmechanismus in dem Prozessor verwendet. Zum Beispiel kann die Hardware eine Routine zum Absuchen über eine Seitentabelle, zum Absuchen der PTEs, zum Bestimmen bei jedem PTE, ob seit dem letzten Absuchen ein Zugriffsbit gesetzt worden ist, implementieren. Nachdem bestimmt worden ist, ob das Zugriffsbit gesetzt worden ist, kann das Zugriffsbit gelöscht werden und können daraufhin die Operationen bis zur nächsten Absuche der Seitentabelle fortfahren. Die Absuche kann periodisch, z. B. mit einer vorgegebenen Zeitperiode zwischen Absuchen, stattfinden oder die Absuche kann durch ein äußeres Ereignis ausgelöst werden. Jedes Mal, wenn bestimmt wird, dass ein Zugriffsbit oder ein Zugriffsmerker nicht gesetzt ist, kann jeweils ein Zählwert für jede Seite inkrementiert werden.
  • Im Zeitablauf kann aus der Absuche ein Profil erzeugt werden, wobei das Profil angibt, wie häufig und/oder wie kürzlich auf jede Seite zugegriffen worden ist. Zum Beispiel kann die Hardware für jede Seite einen oder mehrere Zähler oder Bloom-Filter zum Unterhalten der Nutzungsstatistik, z. B. der Anzahl nicht gesetzter Zugriffsbits oder Zugriffsmerker, enthalten oder können die Ergebnisse im Datenspeicher, z. B. in einem Zweiebenen-Datenspeicher, gespeichert werden, um ein Sortieren und Filtern, z. B. der am meisten und am wenigstens verwendeten Seiten oder der Seiten, auf die häufiger oder weniger häufig zugegriffen wird, zu ermöglichen. Ausführlicher kann die Hardware einen Pro-Seite-Zähler unterhalten, um zu bestimmen, wie kürzlich auf eine Seite zugegriffen wurde, und kann jeder Zähler aktualisiert werden, wenn der jeweilige PTE abgesucht wird. Die Pro-Seite-Zähler können für den schnellen Zugriff im On-Chip-SRAM vorgesehen sein. Da die Größe des sekundären Datenspeichers groß sein kann, was die Flächenkosten der Zähler höher macht, können alternativ Zähl-Bloom-Filter verwendet werden, um die Zugriffsstatistiken über Sätze von Seiten zu unterhalten und dadurch Fläche zu sparen. Alternativ kann die Hardware eine kleine Menge privaten DRAM verwenden oder die Zähler im System-DRAM speichern.
  • In bestimmten Ausführungsformen kann die Seitentabellenabsuche zum Erheben einer Zugriffsstatistik mit einem Hardwaremodul implementiert sein, das in dem Seitentabellen-Walker des Prozessors enthalten oder eng mit ihm gekoppelt ist, oder in der MMU implementiert sein, da die MMU einen oder mehrere Seitentabellen-Walker aufweisen kann, die bereits für EA-Vorrichtungen verfügbar sind. Dementsprechend kann die Hardware wie oben beschrieben die Seitentabellen absuchen und das Zugriffsbit jedes PTE verwenden, um auf der Grundlage der Bestimmung, ob das Zugriffsbit seit der letzten Absuche gesetzt worden ist, jeweils das Alter jeder Seite zu bestimmen. Falls das Zugriffsbit z. B. gesetzt ist, wurde auf die Seite innerhalb der letzten Absuchperiode zugegriffen; falls das Zugriffsbit andernfalls nicht gesetzt ist, ist nicht auf sie zugegriffen worden und kann sie als kalt, z. B. als eine, auf die während der letzten Absuchperiode nicht zugegriffen worden ist, angesehen werden. Vorteilhaft können diese Nutzungs- oder Zugriffsstatistiken, die durch Hardware bestimmt werden, präziser und genauer als aktuelle Verfahren sein, die Software und Absuchtechniken umfassen.
  • Somit kann für den Hauptdatenspeicher für jede Seite die Anzahl gezählt werden, in der das Zugriffsbit nicht gesetzt gewesen ist, wobei die Seite z. B. umso kälter ist, je höher der Zählwert für eine Seite ist. Wenn auf die Seite zugegriffen wird und das Zugriffsbit gesetzt ist, kann der Zählwert auf null zurückgesetzt werden. Die Seitentabellen können periodisch abgesucht werden, um Änderungen des Zugriffsbits zu detektieren, und bei jeder Absuche können alle Zugriffsbits gelöscht werden. Somit kann der Zählwert das Alter der Seite, d. h., wie lange nicht auf die Seite zugegriffen worden ist, repräsentieren.
  • Wie oben beschrieben wurde, kann die DMA-Engine 230 beim Bedienen von Seitenfehlern verwendet werden. In bestimmten Ausführungsformen kann die Zugriffsstatistik verwendet werden, um das Ziel einer Seitenübertragung zu bestimmen oder um eine Richtlinie zu bestimmen, die implementiert werden kann, um zu identifizieren, welche Seiten übertragen werden sollen und wann diese Seiten übertragen werden sollen. Zum Beispiel können die Seiten auf der Grundlage der Zugriffsstatistik von den am meisten verwendeten zu den am wenigstens verwendeten oder umgekehrt geordnet werden. Wenn der Seitenfehler unter Verwendung der DMA-Engine 230 bedient wird, kann ein hardwaregestützter Seitenwechselprozess eine der am wenigstens verwendeten Seiten freigeben oder in den sekundären Datenspeicher zurückschreiben und kann er den Ort der am wenigstens verwendeten Seite verwenden, um die neue Seite in den Hauptdatenspeicher zu übertragen, falls es in dem Hauptdatenspeicher DRAM 220 keine freien Seiten gibt.
  • 4 zeigt einen Ablaufplan eines Beispiels eines Prozesses 400 zum Bestimmen einer Häufigkeit der Nutzung einer Seite mit Hardware und zum Bedienen eines Seitenfehlers unter Verwendung einer DMA-Engine in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung. Der Prozess 400 enthält bei 410 für jeden PTE einer Seitentabelle auf der Grundlage einer Absuche der Seitentabelle mit einer Seitentabellen-Absucheinrichtung unter Verwendung des Prozessors das Bestimmen, ob ein Zugriffsbit gesetzt ist. Wenigstens ein Seitentabellen-Walker des Prozessors kann z. B. geändert werden, um die Seitentabelle darauf abzusuchen, ob das Zugriffsbit gesetzt ist. Zum Beispiel kann zu dem Seitentabellen-Walker ein Thread zum Absuchen der Seitentabelle hinzugefügt werden oder kann das Absuchen getrennt von dem Seitentabellen-Walker durch Hardware erfolgen. Das Zugriffsbit kann angeben, ob auf eine dem PTE zugeordnete Seite innerhalb der letzten Absuchperiode, z. B. zwischen der letzten Absuche und der aktuellen Absuche der Seitentabelle, zugegriffen wurde.
  • Bei 420 kann in Ansprechen auf die Bestimmung, dass das Zugriffsbit für den der Seite zugeordneten PTE nicht gesetzt ist, ein Zählwert für jede Seite inkrementiert werden. Nach der Bestimmung, ob das Zugriffsbit gesetzt ist, für jeden PTE kann der Prozessor das Zugriffsbit bei 430 zurücksetzen. Der Zählwert für jede Seite kann für jede in dem statischen Schreib-Lese-Datenspeicher gespeicherte Seite durch einen Zähler unterhalten werden oder Zähl-Bloom-Filter können die Zugriffsstatistik über Sätze von Seiten unterhalten. Alternativ kann ein Zähler für jede Seite im dynamischen Schreib-Lese-Speicher, z. B. in einer kleinen Menge privatem DRAM oder im System-DRAM, gespeichert werden.
  • Ferner kann der Prozess 400 bei 440 das Empfangen einer Anforderung zum Zugreifen auf eine Seite von Daten von dem Hauptdatenspeicher enthalten. Bei 450 kann auf der Grundlage der Bestimmung, dass die Seite von Daten, für die ein Zugriff angefordert wird, nicht in dem Hauptdatenspeicher gespeichert ist, ein Seitenfehler initiiert werden. Bei 460 kann eine Seitenfehlerbehandlungsroutine den Seitenfehler detektieren und den Seitenfehler unter Verwendung der DMA-Engine 230 bedienen.
  • Zum Beispiel kann auf der Grundlage des Zählwerts für jede Seite bei 470 eine bestimmte Seite im Hauptdatenspeicher, z. B. eine der zuletzt verwendeten Seiten im Hauptdatenspeicher, bestimmt werden, falls der Hauptdatenspeicher keine freie Seite aufweist und die Seitenübertragung nicht empfangen kann. Die DMA-Engine 230 kann die Seitenübertragung managen und bei 470 kann die bestimmte eine der Seiten freigegeben werden oder in den sekundären Datenspeicher zurückgeschrieben werden. Ferner kann die Seite von Daten, für die ein Zugriff angefordert wird, bei 470 aus dem sekundären Datenspeicher in den Hauptdatenspeicher an den Ort der freigegebenen einen der zuletzt verwendeten Seiten übertragen werden. Alternativ kann die DMA-Engine 230 bei 480 die Übertragung der Seitendaten aus dem sekundären Datenspeicher in den Hauptdatenspeicher managen, falls der Hauptdatenspeicher eine freie Seite aufweist und die Seitenübertragung empfangen kann.
  • In bestimmten Ausführungsformen kann die Ausführung des Threads oder des laufenden Programms, wie oben beschrieben wurde, blockiert werden, während die DMA-Engine 230 die Datenübertragung managt, um den Seitenfehler zu bedienen, wenn der Seitenfehler initiiert wird. Nachdem der Seitenfehler bedient worden ist, kann der Thread freigegeben werden, um auf die Seite in dem Hauptdatenspeicher zuzugreifen.
  • Anstelle einer EA-Anforderung zum Zugreifen auf Daten und zum Initiieren eines Seitenfehlers, um Seitendaten aus dem sekundären Datenspeicher zu übertragen, kann in einigen Systemen durch den Prozessor mit Ladevorgängen und Speichervorgängen unter Verwendung der Seitenmigration direkt auf den sekundären Datenspeicher zugegriffen werden. In diesen Systemen braucht auf die Daten nicht mit der Seitengranularität zugegriffen zu werden. Allerdings kann es nützlich sein, die oben beschriebene Nutzungs- oder Zugriffsstatistik zu nutzen, um Daten automatisch aufgrund dessen zu migrieren, ob die Daten "heiß" oder "kalt" sind, d. h., wie kürzlich auf sie zugegriffen worden ist, wie häufig der Zugriff erfolgt oder wie hoch die Wahrscheinlichkeit ist, dass erneut zugegriffen wird.
  • Im Allgemeinen kann der Home-Agent 145 unter Nutzung von Merkmalen einer Cache-Kohärenzarchitektur, in der auf Daten in dem sekundären Datenspeicher mit einem Home-Agenten 145, der für ein Gebiet des physikalischen Adressenraums, z. B. für den gesamten Datenspeicher in dem Gebiet, verantwortlich ist, zugegriffen werden kann, jeden Zugriff auf den Datenspeicher, für den der Home-Agent verantwortlich ist, identifizieren und diese Identifizierung verwenden, um eine Zugriffsstatistik zu unterhalten. Der dem sekundären Datenspeicher zugeordnete Home-Agent 145 kann Daten darüber unterhalten, auf welche Seiten zugegriffen wird und wann auf diese Seiten zugegriffen wird. Auf der Grundlage der Häufigkeit des Zugriffs, z. B. aufgrund dessen, ob die Häufigkeit des Zugriffs einem Schwellenwert genügt, kann der Home-Agent 145 bestimmen, dass die Daten, auf die häufig zugegriffen wird, aus dem sekundären Datenspeicher in den Hauptdatenspeicher DRAM 120 übertragen werden können.
  • Um diese Migration auszuführen, ist es vorteilhaft, nicht nur zu bestimmen, welche Seiten in dem sekundären Datenspeicher "heiß" werden, d. h. eine Erhöhung der Häufigkeit der Zugriffe, sondern auch zu bestimmen, welche Seiten in dem Hauptdatenspeicher DRAM "kalt" werden, d. h. eine Verringerung der Häufigkeit des Zugriffs, mit anderen Worten zu bestimmen, auf welche Seiten in dem sekundären Datenspeicher, der langsamer als der Hauptdatenspeicher sein kann, häufiger zugegriffen wird und auf welche Seiten in dem Hauptdatenspeicher weniger häufig zugegriffen wird. Ein Prozess zum Bestimmen, auf welche Seiten in dem Hauptdatenspeicher weniger häufig zugegriffen wird, ist oben mit Bezug auf die Nutzungs- oder Zugriffsstatistik für den Hauptdatenspeicher DRAM z. B. aufgrund eines Zählwerts, dass das Zugriffsbit nicht gesetzt ist, beschrieben. Das System kann auf der Grundlage der oben beschriebenen Zugriffsstatistik für den Hauptdatenspeicher und unter Nutzung des Home-Agenten, der an den sekundären Datenspeicher gebunden ist, um die Zugriffsstatistik für den sekundären Datenspeicher zu bestimmen, bestimmen, wann Daten aus dem Hauptdatenspeicher DRAM in den sekundären Datenspeicher verschoben werden sollen und wann Daten aus dem sekundären Datenspeicher in den Hauptdatenspeicher DRAM verschoben werden sollen.
  • Somit kann die Hardware bestimmen, wann Seiten zwischen dem Hauptdatenspeicher, z. B. dem DRAM 220, und dem sekundären Datenspeicher, z. B. dem sekundären Speicher 240, migriert werden sollen. Zum Beispiel kann die Hardware eine Kombination von Cache-Kohärenznachrichten mit dem Home-Agenten und den PTEs mit dem Zugriffsbit verwenden, um die "Temperatur" von Daten, d. h., wie "heiß" bestimmte Daten sind oder wie häufig auf sie zugegriffen wird bzw. wie "kalt" bestimmte Daten sind oder wie selten auf sie zugegriffen wird, zu bestimmen. Dementsprechend werden Seiten mit einer Rate erhöhter Zugriffshäufigkeit aus dem sekundären Datenspeicher in den Hauptdatenspeicher migriert. Wie oben beschrieben wurde, können jene Seiten, die sich "erwärmen" oder auf die häufiger zugegriffen wird, dadurch bestimmt werden, dass die Hardware Speicherzugriffe auf den sekundären Datenspeicher über den Home-Agenten überwacht, der diese Zugriffe detektiert, da der Home-Agent den physikalischen Adressenbereich besitzt. Auf der Grundlage dieser bestimmten Zugriffe kann z. B. im On-Chip-SRAM ein Pro-Seite-Zugriffszähler unterhalten werden. Da die Größe des sekundären Datenspeichers groß sein kann, was die Hardwareflächenkosten der Zähler erhöht, können alternativ Zähl-Bloom-Filter verwendet werden, um die Zugriffsstatistik über Sätze von Seiten zu unterhalten und dadurch Fläche zu sparen. Alternativ kann die Hardware eine kleine Menge privaten DRAM verwenden oder die Zähler im System-DRAM speichern.
  • Wie oben ausführlicher beschrieben ist, können außerdem Seiten, die sich abkühlen oder auf die weniger häufig zugegriffen wird, durch Überwachen der PTEs bestimmt werden. Zum Beispiel kann das System die Übertragung der Seite aus dem Hauptdatenspeicher DRAM in den sekundären Datenspeicher durch Annullieren des der Seite zugeordneten PTE, durch Ausführen eines TLB-Shootdown für irgendwelche der Seite zugeordnete Einträge und durch Übertragen der Seite aus dem Hauptdatenspeicher DRAM in den sekundären Speicher initiieren, wenn Zugriffszwischenzeit für eine Seite einem Schwellenwert der Zeit zwischen Zugriffen genügt.
  • 5 zeigt einen Ablaufplan eines Beispiels eines Prozesses 500 zum Bestimmen einer Häufigkeit der Nutzung einer Seite mit Hardware und zum Ausführen der Seitenmigration auf der Grundlage der bestimmten Nutzung in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung. Der Prozess 500 enthält bei 510 das Bestimmen, ob ein Zugriffsbit gesetzt ist, für jeden PTE einer Seitentabelle auf der Grundlage einer Absuche der Seitentabelle mit einer Seitentabellen-Absucheinrichtung des Prozessors. Das Zugriffsbit kann angeben, ob auf eine Seite, der der PTE zugeordnet ist, innerhalb der letzten Absuchperiode, z. B. zwischen der letzten Absuche und der aktuellen Absuche der Seitentabelle, zugegriffen wurde. Bei 520 kann in Ansprechen auf die Bestimmung, dass das Zugriffsbit für den PTE, der der Seite zugeordnet ist, nicht gesetzt ist, ein Zählwert für jede Seite in dem Hauptdatenspeicher inkrementiert werden. Alternativ kann in Ansprechen auf die Bestimmung, dass das Zugriffsbit für den der Seite zugeordneten PTE gesetzt ist, ein Zählwert für jede Seite in dem Hauptdatenspeicher inkrementiert werden. Nach der Bestimmung, ob das Zugriffsbit gesetzt ist, für jeden PTE kann der Prozessor 530 das Zugriffsbit zurücksetzen. Der Zählwert für jede Seite in dem Hauptdatenspeicher kann für jede in dem statischen Schreib-Lese-Datenspeicher gespeicherte Seite durch einen Zähler unterhalten werden oder Zähl-Bloom-Filter können die Zugriffsstatistik über Sätze von Seiten unterhalten. Alternativ kann ein Zähler für jede Seite im dynamischen Schreib-Lese-Speicher, z. B. einer kleinen Menge privatem DRAM oder im System-DRAM, gespeichert werden.
  • Ferner kann der Prozess 500 bei 540 auf der Grundlage dessen, dass ein Home-Agent eine Anforderung zum Zugriff auf die Seite in dem sekundären Datenspeicher empfängt, das Bestimmen enthalten, ob auf eine Seite in einem sekundären Datenspeicher zugegriffen wird. Außerdem kann bei 540 in Ansprechen auf die Bestimmung, dass auf die Seite in dem sekundären Datenspeicher zugegriffen wird, aufgrund dessen, dass der Home-Agent eine Anforderung für den Zugriff auf die Seite in dem sekundären Datenspeicher empfängt, ein Zählwert für jede Seite in dem sekundären Datenspeicher inkrementiert werden. Auf der Grundlage dieses Zählwerts kann bei 550 eine Seite in dem sekundären Datenspeicher als eine, auf die häufig zugegriffen wird, identifiziert werden. Außerdem kann diese als eine, auf die häufig zugegriffen wird, identifizierte Seite bei 550 aus dem sekundären Datenspeicher in den Hauptdatenspeicher migriert werden. In bestimmten Ausführungsformen können Gruppen von Seiten oder Abschnitte des Datenspeichers als solche, auf die häufig zugegriffen wird, identifiziert werden und aus dem sekundären Datenspeicher in den Hauptdatenspeicher migriert werden.
  • Ferner kann der Prozess 500 bei 560 das Identifizieren einer Seite in dem Hauptdatenspeicher als eine, auf die selten zugegriffen wird, auf der Grundlage des Zählwerts für jede Seite in dem Hauptdatenspeicher enthalten. Die Seite, die als eine identifiziert wird, auf die selten zugegriffen wird, kann bei 560 aus dem Hauptdatenspeicher in den sekundären Datenspeicher migriert werden. In bestimmten Ausführungsformen können Gruppen von Seiten oder Abschnitte des Datenspeichers als solche, auf die selten zugegriffen wird, identifiziert werden und aus dem Hauptdatenspeicher in den sekundären Datenspeicher migriert werden. Das Identifizieren einer Seite in dem Hauptdatenspeicher als eine, auf die selten zugegriffen wird, auf der Grundlage des Zählwerts bei 560 kann das Bestimmen enthalten, dass eine Zugriffszwischenzeit, d. h. eine Zeit zwischen Zugriffen, für die Seite einem Zugriffszwischenzeit-Schwellenwert genügt, z. B., dass die Zugriffszwischenzeit für die Seite größer oder dass sie größer oder gleich einem Zugriffszwischenzeit-Schwellenwert ist. Somit kann die Seite oder die Gruppe von Seiten, die als solche identifiziert wurden, auf die selten zugegriffen wird, in Ansprechen auf die Bestimmung, dass die Zugriffszwischenzeit für die Seite oder für die Gruppe von Seiten dem Zugriffszwischenzeit-Schwellenwert genügt, aus dem Hauptdatenspeicher in den sekundären Datenspeicher migriert werden.
  • Der Prozess des Migrierens der Seite, die bei 560 als eine identifiziert worden ist, auf die selten zugegriffen wird, kann das Annullieren des PTE oder der PTEs, der bzw. die der Seite oder Gruppe von Seiten zugeordnet ist bzw. sind, das Ausführen eines Translation-Look-aside-Buffer-Shootdowns für irgendwelche der Seite oder der Gruppe von Seiten zugeordnete Einträge und das Übertragen der Seite oder Gruppe von Seiten aus dem Hauptdatenspeicher in den sekundären Datenspeicher enthalten. Der Zählwert für jede Seite in dem sekundären Datenspeicher kann für jede in dem statischen Schreib-Lese-Datenspeicher gespeicherte Seite durch einen Zähler unterhalten werden oder Zähl-Bloom-Filter können die Zugriffsstatistik über Sätze von Seiten unterhalten. Alternativ kann ein Zähler für jede Seite im dynamischen Schreib-Lese-Speicher, z. B. in einer kleinen Menge privatem DRAM oder im System-DRAM, gespeichert sein.
  • Wie oben diskutiert wurde, tritt ein Seitenfehler auf, wenn z. B. eine Anwendung auf den Datenspeicher, z. B. auf eine Seite, zuzugreifen versucht und wenn die Seite nicht in dem Hauptdatenspeicher vorhanden ist. Der Seitenfehler kann eine Übertragung der gesamten Seite aus dem sekundären Datenspeicher in den Hauptdatenspeicher DRAM auslösen und daraufhin kann die Anwendung die Ausführung fortsetzen. Allerdings kann dieser Prozess eine Verzögerung verursachen, während die Daten der Seite gelesen werden. Zum Beispiel können für eine Seite mit einer Größe von 4 kB die gesamten 4 kB übertragen werden, was während des Lesens der 4 kB Daten eine Verzögerung verursachen kann. In Übereinstimmung mit hier beschriebenen Ausführungsformen kann diese Verzögerung vorteilhaft verringert werden, was zur schnelleren Ausführung der Anwendung oder des Prozesses, die bzw. der ausgeführt wird, führen kann.
  • Anstatt die gesamte Seite, z. B. in dem obigen Beispiel die gesamten 4 kB, zu übertragen, identifiziert das System, auf welche Cache-Zeile, z. B. auf welchen Block von Daten, die Anwendung zuzugreifen versucht hat, und überträgt es anfangs nur diese Cache-Zeile aus den sekundären Datenspeicher in den Hauptdatenspeicher. Während die Cache-Zeile, für die der Zugriff angefordert wurde, übertragen wird, kann die Anwendung ihr Lesen oder Schreiben dieser Daten ausführen und weiter ausgeführt werden. Nachdem diese entscheidende Cache-Zeile übertragen worden ist, ohne die gesamte Seite zu übertragen, kann der verbleibende Abschnitt der Seite, z. B. der verbleibende Abschnitt der 4 kB, im Hintergrund übertragen werden.
  • In bestimmten Ausführungsformen kann die entscheidende Cache-Zeile für die CPU bereitgestellt werden und kann der Cache-Kohärenzmechanismus oder das Cache-Kohärenzprotokoll verwendet werden. Dieser Prozess erzielt eine schnellere Ausführung zum Behandeln von Seitenfehlern. Zum Beispiel kann im Betrieb eine Anwendung nur anfordern, auf eine oder zwei Cache-Zeilen von der Seite zuzugreifen, und können die entscheidenden Cache-Zeilen bereitgestellt werden, ohne darauf zu warten, dass die gesamte Seite übertragen wird. Nachdem die angeforderten Daten, z. B. die entscheidenden Cache-Zeilen, für die Anwendung bereitgestellt wurden, damit sie ihre Ausführung fortsetzen kann, kann der verbleibende Abschnitt der Seite daraufhin im Hintergrund übertragen werden.
  • Somit kann dadurch, dass die Hardware die entscheidende Cache-Zeile zuerst liefert, die Seitenfehlerlatenzzeit verringert werden. Die Hardware kann die angeforderte Cache-Zeile aus dem sekundären Datenspeicher z. B. an den Cache des Prozessors und an den Host-DRAM übertragen. Dementsprechend können die angeforderten Daten bereitgestellt werden, bevor der Rest der Cache-Zeilen in der angeforderten Seite übertragen wird. Ferner kann z. B. eine nutzerdefinierte Seitenfehlerbehandlungsroutine oder die Hardware den PTE aktualisieren, damit er auf die neue Seite in dem Host-DRAM weist. Im Ergebnis können andere Prozessoren auf Cache-Zeilen in der Seite zugreifen, bevor diese Cache-Zeilen tatsächlich in dem Hauptdatenspeicher vorhanden sind.
  • In bestimmten Ausführungsformen kann der Cache-Agent 140 an den Cache-Zeilen in der Seite eine Eignerschaftsanforderung (RFO) ausführen, um sie exklusiv zu halten, während die Seitenübertragung stattfindet, um eine konsistente Ansicht des Datenspeichers aufrechtzuerhalten. Nachdem die Hardware das Übertragen einer Cache-Zeile abgeschlossen hat, kann der Cache-Agent 140 die Eignerschaft dieser Cache-Zeile freigeben, so dass künftige Anforderungen von dem Cache des Hosts oder von dem Host-DRAM bedient werden können. Ferner kann die Hardware z. B. in Übereinstimmung mit dem Cache-Kohärenzmechanismus eine Snoop-Anforderung, z. B. eine Inter-Prozessor-Cache-Kohärenzoperation, für diese andere Cache-Zeile erkennen und in Ansprechen auf die Snoop-Anforderung die andere Cache-Zeile bereitstellen, wenn die andere Cache-Zeile aus dem sekundären Datenspeicher übertragen wird, wenn der Host auf eine der anderen Cache-Zeilen in der Seite zuzugreifen versucht, während die Seite übertragen wird.
  • In bestimmten Ausführungsformen kann die Hardware die Cache-Zeilen für Seiten während des Transports nicht tatsächlich in dem Cache des Cache-Agenten speichern. Vielmehr können die Tags und die Kohärenzzustandsbits für diese Zeilen gespeichert werden und können daraufhin die Daten für eine Anforderung entweder von dem Host-DRAM oder aus einem langsamen Datenspeicher weitergeleitet werden. In beiden Anordnungen kann der On-Chip-SRAM, der erforderlich ist, um Seiten, die übertragen werden, im Cache anzuordnen, verringert werden.
  • 6 zeigt einen Ablaufplan eines Beispiels eines Prozesses 600 zum Behandeln eines Seitenfehlers dadurch, dass zuerst eine entscheidende Cache-Zeile übertragen wird, in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung. Der Prozess 600 kann bei 610 das Empfangen einer Anforderung für den Zugriff auf eine Cache-Zeile einer Seite von Daten aus einem Hauptdatenspeicher enthalten. Bei 620 kann eine Bestimmung vorgenommen werden, dass die angeforderte Cache-Zeile nicht in dem Hauptdatenspeicher gespeichert ist, sondern vielmehr in dem sekundären Datenspeicher gespeichert sein kann. Bei 630 kann die angeforderte Cache-Zeile, z. B. der Datenblock, der Seite von Daten aus dem sekundären Datenspeicher in den Hauptdatenspeicher übertragen werden, ohne die gesamte Seite von Daten zu übertragen. Somit wird die angeforderte Cache-Zeile bereitgestellt und kann der verbleibende Abschnitt der Seite von Daten außer der angeforderten Cache-Zeile in dem sekundären Datenspeicher gespeichert bleiben.
  • Bei 640 kann der Prozess 600 das Aktualisieren eines der Seite von Daten zugeordneten PTE in der Weise, dass er auf einen Ort der Seite von Daten in dem Hauptdatenspeicher weist, enthalten. Bei 650 kann der verbleibende Abschnitt der Seite von Daten im Hintergrund aus dem sekundären Datenspeicher in den Hauptdatenspeicher übertragen werden, nachdem die angeforderte Cache-Zeile in Ansprechen auf die Anforderung zum Zugriff auf die Cache-Zeile bereitgestellt worden ist.
  • In bestimmten Ausführungsformen kann ein Cache-Kohärenzmechanismus implementiert werden, während der verbleibende Abschnitt der Seite von Daten bei 650 aus dem sekundären Datenspeicher in den Hauptdatenspeicher übertragen wird, um einen Zugriff auf eine zweite Cache-Zeile der Seite von Daten, die von der angeforderten ersten Cache-Zeile verschieden ist, zu bedienen. Der Cache-Kohärenzmechanismus kann das Ausgeben einer RFO von Cache-Zeilen in der Seite von Daten und das Freigeben der Eignerschaft jeder Cache-Zeile in Ansprechen darauf, dass die Cache-Zeile aus dem sekundären Datenspeicher in den Hauptdatenspeicher übertragen wird, durch den Cache-Agenten 140 enthalten. In Übereinstimmung mit dem Cache-Kohärenzmechanismus können Cache-Zeilen der Seite von Daten im Cache des Cache-Agenten 140 gespeichert werden. Alternativ können die Tags und Kohärenzzustandsbits, die diesen Cache-Zeilen der Seite von Daten zugeordnet sind, gespeichert werden. Ferner kann in Ansprechen auf eine Anforderung zum Zugreifen auf die zweite Cache-Zeile der Seite von Daten, während der verbleibende Abschnitt der Seite von Daten übertragen wird, bei 650 eine Snoop-Anforderung für die zweite Cache-Zeile erkannt werden und die zweite Cache-Zeile in Ansprechen auf die Snoop-Anforderung zurückgegeben werden, wenn die zweite Cache-Zeile aus dem sekundären Datenspeicher übertragen wird. Falls der Hauptdatenspeicher keine Seitenübertragung empfangen kann, z. B., falls es dort keine freien Seiten gibt, kann auf der Grundlage der oben beschriebenen Nutzungsstatistik eine der zuletzt verwendeten in dem Hauptdatenspeicher gespeicherten Seiten bestimmt werden und kann die eine der zuletzt verwendeten Seiten freigegeben oder in den sekundären Datenspeicher zurückgeschrieben werden. Dementsprechend kann die Seite von Daten aus dem sekundären Datenspeicher an den Ort der freigegebenen einen der zuletzt verwendeten Seiten in den Hauptdatenspeicher übertragen werden.
  • Es sind eine Anzahl von Implementierungen beschrieben worden. Dennoch können selbstverständlich viele Änderungen vorgenommen werden, ohne von dem Erfindungsgedanken und von dem Schutzumfang der Offenbarung abzuweichen. Zum Beispiel können verschiedene Formen der oben gezeigten Abläufe verwendet werden, wobei Schritte umgestellt, hinzugefügt oder entfernt worden sind.
  • Implementierungen der Erfindung und aller in dieser Gebrauchsmusterschrift beschriebenen Funktionsoperationen können in einer digitalen elektronischen Schaltungsanordnung, in Firmware oder in Hardware einschließlich der in dieser Gebrauchsmusterschrift offenbarten Strukturen und ihrer strukturellen Entsprechungen oder in Kombinationen einer oder mehrerer von ihnen implementiert werden. Implementierungen der Erfindung können als ein oder mehrere Computerprogrammprodukte, d. h. als ein oder mehrere Module von Computerprogrammanweisungen, die in einem computerlesbaren Medium zur Ausführung durch die Datenverarbeitungsvorrichtung oder zur Steuerung ihres Betriebs codiert sind, implementiert werden. Das computerlesbare Medium kann eine maschinenlesbare Speichervorrichtung, ein maschinenlesbares Speichersubstrat, eine Datenspeichervorrichtung oder eine Kombination eines oder mehrerer von ihnen sein. Der Begriff "Datenverarbeitungsvorrichtung" umfasst alle Geräte, Vorrichtungen und Maschinen zum Verarbeiten von Daten einschließlich beispielhaft eines programmierbaren Prozessors, eines Computers oder mehrerer Prozessoren oder Computer. Das Gerät kann außer Hardware Code, der eine Ausführungsumgebung für das fragliche Computerprogramm erzeugt, z. B. Code, der Prozessorfirmware, einen Protokollstapel, ein Datenbankmanagementsystem, ein Betriebssystem oder eine Kombination eines oder mehrerer von ihnen bildet, enthalten.
  • Obgleich diese Offenbarung viele Spezifika enthält, sind diese nicht als Beschränkungen des Schutzumfangs der Erfindung oder des Beanspruchten, sondern vielmehr als Beschreibungen von Merkmalen, die spezifisch für bestimmte Implementierungen der Erfindung sind, zu verstehen. Bestimmte Merkmale, die in dieser Gebrauchsmusterschrift im Kontext getrennter Implementierungen beschrieben sind, können ebenfalls zusammen in einer einzigen Implementierung implementiert werden. Umgekehrt können verschiedene Merkmale, die im Kontext einer einzelnen Implementierung geschrieben sind, ebenfalls in mehreren Implementierungen getrennt oder in irgendeiner geeigneten Teilkombination implementiert werden. Obgleich Merkmale oben in der Weise beschrieben worden sein können, dass sie in bestimmten Kombinationen wirken, und anfangs sogar in der Weise beansprucht sind, können darüber hinaus ein oder mehrere Merkmale einer beanspruchten Kombination in einigen Fällen aus der Kombination ausgenommen werden und kann die beanspruchte Kombination auf eine Teilkombination oder Abwandlung einer Teilkombination gerichtet sein.
  • Obgleich Operationen in den Zeichnungen in einer bestimmten Reihenfolge gezeigt sind, ist dies ähnlich nicht so zu verstehen, dass es erforderlich ist, dass diese Operationen in der bestimmten gezeigten Reihenfolge oder laufenden Folge ausgeführt werden oder dass alle dargestellten Operationen ausgeführt werden, um die gewünschten Ergebnisse zu erzielen. Unter bestimmten Umständen können Multitasking und Parallelverarbeitung vorteilhaft sein. Darüber hinaus ist die Trennung der verschiedenen Systemkomponenten in den oben beschriebenen Implementierungen nicht so zu verstehen, dass diese Trennung in allen Implementierungen erforderlich ist, und können die beschriebenen Programmkomponenten und Systeme selbstverständlich allgemein in einem einzelnen Softwareprodukt miteinander integriert sein oder in mehrere Softwareprodukte gepackt sein.
  • Somit sind bestimmte Implementierungen der vorliegenden Offenbarung beschrieben worden. Weitere Implementierungen liegen im Schutzumfang der folgenden Ansprüche. Zum Beispiel können die in den Ansprüchen dargestellten Tätigkeiten in einer anderen Reihenfolge ausgeführt werden und dennoch gewünschte Ergebnisse erzielen. Es sind eine Anzahl von Implementierungen beschrieben worden. Dennoch können selbstverständlich verschiedene Änderungen vorgenommen werden, ohne von dem Erfindungsgedanken und Schutzumfang der Offenbarung abzuweichen. Zum Beispiel können verschiedene Formen der oben gezeigten Abläufe verwendet werden, wobei Schritte umgestellt, hinzugefügt oder entfernt sind. Dementsprechend liegen weitere Implementierungen im Schutzumfang der folgenden Ansprüche.

Claims (10)

  1. System, das umfasst: einen oder mehrere Prozessoren; und einen Datenspeicher, der einen Hauptdatenspeicher und einen sekundären Datenspeicher umfasst, wobei der Datenspeicher Anweisungen speichert, die, wenn sie ausgeführt werden, dafür betreibbar sind zu veranlassen, dass der eine oder die mehreren Prozessoren Operationen ausführen, die umfassen: Bestimmen, ob ein Zugriffsbit gesetzt ist, für jeden Seitentabelleneintrag einer Seitentabelle auf der Grundlage einer Absuche der Seitentabelle mit einer Seitentabellen-Absucheinrichtung mit einem Prozessor, wobei das Zugriffsbit angibt, ob auf eine Seite, der der Seitentabelleneintrag zugeordnet ist, in einer letzten Absuchperiode zugegriffen wurde; Inkrementieren eines Zählwerts für jede Seite in Ansprechen auf die Bestimmung, dass das Zugriffsbit für den der Seite zugeordneten Seitentabelleneintrag nicht gesetzt ist; nach dem Bestimmen mit dem Prozessor, ob das Zugriffsbit gesetzt ist, für jeden Seitentabelleneintrag, Zurücksetzen des Zugriffsbits; Empfangen einer Anforderung zum Zugriff auf eine erste Seite von Daten aus einem Hauptdatenspeicher; Initiieren eines Seitenfehlers auf der Grundlage der Bestimmung, dass die erste Seite von Daten nicht in dem Hauptdatenspeicher gespeichert ist; und Bedienen des Seitenfehlers unter Verwendung einer Direktspeicherzugriffs-Engine (DMA-Engine), wobei das Bedienen des Seitenfehlers unter Verwendung einer DMA-Engine umfasst: Bestimmen einer bestimmten Seite auf der Grundlage des Zählwerts für jede Seite und Freigeben der bestimmten Seite in den sekundären Datenspeicher und Übertragen der ersten Seite von Daten aus dem sekundären Datenspeicher an den Hauptdatenspeicher an den Ort der freigegebenen bestimmten Seite in Ansprechen auf die Bestimmung, dass der Hauptdatenspeicher eine Seitenübertragung nicht empfangen kann.
  2. System nach Anspruch 1, wobei die bestimmte Seite auf der Grundlage des Zählwerts für jede Seite als eine der zuletzt verwendeten Seiten bestimmt wird.
  3. System nach Anspruch 1 oder 2, wobei das Initiieren des Seitenfehlers das Blockieren der Ausführung eines Threads, während der Seitenfehler bedient wird; und das Freigeben des Threads zum Zugreifen auf den Hauptdatenspeicher, nachdem der Seitenfehler bedient worden ist, umfasst.
  4. System nach einem der Ansprüche 1 bis 3, wobei der Zählwert für jede Seite durch wenigstens eines der Folgenden unterhalten wird: einen Zähler für jede in dem statischen Schreib-Lese-Speicher gespeicherte Seite, Zähl-Bloom-Filter oder einen Zähler für jede in dem dynamischen Schreib-Lese-Speicher gespeicherte Seite.
  5. System, das umfasst: einen oder mehrere Prozessoren; und einen Datenspeicher, der einen Hauptdatenspeicher und einen sekundären Datenspeicher umfasst, wobei der Datenspeicher Anweisungen speichert, die, wenn sie ausgeführt werden, dafür betreibbar sind zu veranlassen, dass der eine oder die mehreren Prozessoren Operationen ausführen, die umfassen: Bestimmen, ob ein Zugriffsbit gesetzt ist, für jeden Seitentabelleneintrag einer Seitentabelle auf der Grundlage einer Absuche der Seitentabelle mit wenigstens einem Seitentabellen-Walker, wobei das Zugriffsbit angibt, ob in einer letzten Absuchperiode auf eine Seite, der der Seitentabelleneintrag zugeordnet ist, bei einem Hauptdatenspeicher zugegriffen wurde; Inkrementieren eines primären Zählwerts für jede Seite in dem Hauptdatenspeicher in Ansprechen auf die Bestimmung, dass das Zugriffsbit für den der Seite zugeordneten Seitentabelleneintrag nicht gesetzt ist; Zurücksetzen des Zugriffsbits nach der Bestimmung, ob das Zugriffsbit gesetzt ist, für jeden Seitentabelleneintrag; Bestimmen, ob auf eine Seite in einem sekundären Datenspeicher zugegriffen wird, aufgrund dessen, dass ein Home-Agent eine Anforderung zum Zugriff auf die Seite in dem sekundären Datenspeicher empfängt; Inkrementieren eines sekundären Zählwerts für jede Seite in dem sekundären Datenspeicher in Ansprechen auf die Bestimmung, dass auf die Seite in dem sekundären Datenspeicher zugegriffen wird, aufgrund dessen, dass der Home-Agent eine Anforderung zum Zugriff auf die Seite in dem sekundären Datenspeicher empfängt; Identifizieren einer bestimmten Seite in dem sekundären Datenspeicher als eine, auf die häufig zugegriffen wird, auf der Grundlage des sekundären Zählwerts; und Migrieren der bestimmten Seite, die als eine identifiziert wurde, auf die häufig zugegriffen wird, aus dem sekundären Datenspeicher in den Hauptdatenspeicher.
  6. System nach Anspruch 5, wobei die Operationen ferner umfassen: Identifizieren einer bestimmten Seite in dem Hauptdatenspeicher als eine, auf die selten zugegriffen wird, auf der Grundlage des primären Zählwerts; und Migrieren der bestimmten Seite, die als eine identifiziert wurde, auf die selten zugegriffen wird, aus dem Hauptdatenspeicher in den sekundären Datenspeicher.
  7. System nach Anspruch 6, wobei das Migrieren der bestimmten Seite, die als eine identifiziert wurde, auf die selten zugegriffen wird, das Annullieren des der bestimmten Seite zugeordneten Seitentabelleneintrags, das Ausführen eines Translation-Look-aside-Buffer-Shootdowns für irgendwelche der bestimmten Seite zugeordnete Einträge und das Übertragen der bestimmten Seite aus dem Hauptdatenspeicher in den sekundären Datenspeicher umfasst.
  8. System nach einem der Ansprüche 5 bis 7, wobei sowohl der primäre Zählwert für jede Seite in dem Hauptdatenspeicher als auch der sekundäre Zählwert für jede Seite in dem sekundären Datenspeicher durch wenigstens eines der Folgenden unterhalten werden: einen Zähler für jede in dem statischen Schreib-Lese-Speicher gespeicherte Seite, Zähl-Bloom-Filter oder einen Zähler für jede in dem dynamischen Schreib-Lese-Speicher gespeicherte Seite.
  9. System nach Anspruch 6, wobei das Identifizieren einer bestimmten Seite in dem Hauptdatenspeicher als eine, auf die selten zugegriffen wird, auf der Grundlage des primären Zählwerts das Bestimmen umfasst, dass eine Zugriffszwischenzeit für die bestimmte Seite einem Zugriffszwischenzeit-Schwellenwert genügt.
  10. System nach Anspruch 9, wobei die bestimmte Seite, die als eine identifiziert wurde, auf die selten zugegriffen wird, in Ansprechen auf die Bestimmung, dass die Zugriffszwischenzeit für die bestimmte Seite dem Zugriffszwischenzeit-Schwellenwert genügt, aus dem Hauptdatenspeicher in den sekundären Datenspeicher migriert wird.
DE202017104840.3U 2016-08-12 2017-08-11 Hybriddatenspeichermanagement Active DE202017104840U1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US15/236,171 US10037173B2 (en) 2016-08-12 2016-08-12 Hybrid memory management
US15/235,495 US10152427B2 (en) 2016-08-12 2016-08-12 Hybrid memory management
US15/235,495 2016-08-12
US15/236,171 2016-08-12

Publications (1)

Publication Number Publication Date
DE202017104840U1 true DE202017104840U1 (de) 2017-12-12

Family

ID=60579714

Family Applications (2)

Application Number Title Priority Date Filing Date
DE202017104840.3U Active DE202017104840U1 (de) 2016-08-12 2017-08-11 Hybriddatenspeichermanagement
DE202017104841.1U Active DE202017104841U1 (de) 2016-08-12 2017-08-11 Hybriddatenspeichermanagement

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE202017104841.1U Active DE202017104841U1 (de) 2016-08-12 2017-08-11 Hybriddatenspeichermanagement

Country Status (6)

Country Link
US (1) US10037173B2 (de)
EP (2) EP3282364B1 (de)
JP (2) JP2018026136A (de)
CN (2) CN107729168A (de)
DE (2) DE202017104840U1 (de)
TW (1) TWI643073B (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10108550B2 (en) 2016-09-22 2018-10-23 Google Llc Memory management supporting huge pages
US10437800B2 (en) * 2016-12-02 2019-10-08 International Business Machines Corporation Data migration using a migration data placement tool between storage systems based on data access
US10437799B2 (en) * 2016-12-02 2019-10-08 International Business Machines Corporation Data migration using a migration data placement tool between storage systems based on data access
US20180336158A1 (en) * 2017-05-16 2018-11-22 Dell Products L.P. Systems and methods for data transfer with coherent and non-coherent bus topologies and attached external memory
WO2020056610A1 (zh) * 2018-09-18 2020-03-26 华为技术有限公司 一种存储装置及电子设备
US11609858B2 (en) 2018-12-26 2023-03-21 Samsung Electronics Co., Ltd. Bypass predictor for an exclusive last-level cache
US11113207B2 (en) * 2018-12-26 2021-09-07 Samsung Electronics Co., Ltd. Bypass predictor for an exclusive last-level cache
KR20200085522A (ko) * 2019-01-07 2020-07-15 에스케이하이닉스 주식회사 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법
US11474828B2 (en) 2019-10-03 2022-10-18 Micron Technology, Inc. Initial data distribution for different application processes
US11599384B2 (en) 2019-10-03 2023-03-07 Micron Technology, Inc. Customized root processes for individual applications
US11436041B2 (en) 2019-10-03 2022-09-06 Micron Technology, Inc. Customized root processes for groups of applications
US11429445B2 (en) 2019-11-25 2022-08-30 Micron Technology, Inc. User interface based page migration for performance enhancement
KR102400977B1 (ko) * 2020-05-29 2022-05-25 성균관대학교산학협력단 프로세서를 통한 페이지 폴트 처리 방법
US11393548B2 (en) * 2020-12-18 2022-07-19 Micron Technology, Inc. Workload adaptive scans for memory sub-systems
JP2022161746A (ja) 2021-04-09 2022-10-21 富士通株式会社 情報処理プログラム、情報処理方法、および情報処理装置
CN113311994A (zh) * 2021-04-09 2021-08-27 中企云链(北京)金融信息服务有限公司 一种基于高并发的数据缓存方法
US11733902B2 (en) * 2021-04-30 2023-08-22 International Business Machines Corporation Integrating and increasing performance of disaggregated memory in operating systems
CN114201444B (zh) * 2021-12-06 2023-11-14 海飞科(南京)信息技术有限公司 用于存储管理的方法、介质、程序产品、系统和装置

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6159557A (ja) * 1984-08-30 1986-03-27 Toshiba Corp 仮想記憶制御装置
JPH047653A (ja) * 1990-04-25 1992-01-13 Matsushita Electric Ind Co Ltd 仮想記憶メモリ装置
US5361345A (en) 1991-09-19 1994-11-01 Hewlett-Packard Company Critical line first paging system
JPH05241958A (ja) * 1992-02-26 1993-09-21 Nec Corp 仮想記憶制御方式
US5432917A (en) * 1992-04-22 1995-07-11 International Business Machines Corporation Tabulation of multi-bit vector history
US5493663A (en) 1992-04-22 1996-02-20 International Business Machines Corporation Method and apparatus for predetermining pages for swapping from physical memory in accordance with the number of accesses
US5613153A (en) 1994-10-03 1997-03-18 International Business Machines Corporation Coherency and synchronization mechanisms for I/O channel controllers in a data processing system
US6029224A (en) 1995-06-07 2000-02-22 Lucent Technologies Inc. Self-contained memory apparatus having diverse types of memory and distributed control
US6671791B1 (en) 2001-06-15 2003-12-30 Advanced Micro Devices, Inc. Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms
US6782453B2 (en) * 2002-02-12 2004-08-24 Hewlett-Packard Development Company, L.P. Storing data in memory
JP3982353B2 (ja) 2002-07-12 2007-09-26 日本電気株式会社 フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム
US6804729B2 (en) 2002-09-30 2004-10-12 International Business Machines Corporation Migrating a memory page by modifying a page migration state of a state machine associated with a DMA mapper based on a state notification from an operating system kernel
US20040117587A1 (en) * 2002-12-12 2004-06-17 International Business Machines Corp. Hardware managed virtual-to-physical address translation mechanism
JP2005216053A (ja) * 2004-01-30 2005-08-11 Matsushita Electric Ind Co Ltd 最適メモリ配置演算装置及び最適メモリ配置方法
US7409580B2 (en) 2005-02-09 2008-08-05 International Business Machines Corporation System and method for recovering from errors in a data processing system
US7546416B2 (en) * 2006-06-26 2009-06-09 Micron Technology, Inc. Method for substantially uninterrupted cache readout
US7882309B2 (en) * 2007-07-26 2011-02-01 Globalfoundries Inc. Method and apparatus for handling excess data during memory access
US8055876B2 (en) 2008-06-06 2011-11-08 International Business Machines Corporation Selectively mark free frames as unused for cooperative memory over-commitment
US20100070678A1 (en) * 2008-09-12 2010-03-18 Vmware, Inc. Saving and Restoring State Information for Virtualized Computer Systems
US8832353B2 (en) * 2009-04-07 2014-09-09 Sandisk Technologies Inc. Host stop-transmission handling
JP2011165093A (ja) * 2010-02-12 2011-08-25 Nippon Telegr & Teleph Corp <Ntt> メモリアクセス調査装置、メモリアクセス調査方法、及びプログラム
US9015441B2 (en) * 2010-04-30 2015-04-21 Microsoft Technology Licensing, Llc Memory usage scanning
US9195612B2 (en) * 2011-11-29 2015-11-24 Microsoft Technology Licensing, Llc Computer system with memory aging for high performance
US9330736B2 (en) * 2012-11-09 2016-05-03 Qualcomm Incorporated Processor memory optimization via page access counting
US10133677B2 (en) 2013-03-14 2018-11-20 Nvidia Corporation Opportunistic migration of memory pages in a unified virtual memory system
US10409730B2 (en) 2013-03-15 2019-09-10 Nvidia Corporation Microcontroller for memory management unit
US20150058520A1 (en) 2013-08-22 2015-02-26 International Business Machines Corporation Detection of hot pages for partition migration
US9535831B2 (en) 2014-01-10 2017-01-03 Advanced Micro Devices, Inc. Page migration in a 3D stacked hybrid memory
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
US10114559B2 (en) 2016-08-12 2018-10-30 International Business Machines Corporation Generating node access information for a transaction accessing nodes of a data set index

Also Published As

Publication number Publication date
JP2018026136A (ja) 2018-02-15
US20180046411A1 (en) 2018-02-15
CN111177030B (zh) 2021-08-20
EP3291097A2 (de) 2018-03-07
US10037173B2 (en) 2018-07-31
CN107729168A (zh) 2018-02-23
EP3291097A3 (de) 2018-05-30
TW201810057A (zh) 2018-03-16
JP2020009492A (ja) 2020-01-16
JP6944983B2 (ja) 2021-10-06
DE202017104841U1 (de) 2017-11-22
TWI643073B (zh) 2018-12-01
EP3282364B1 (de) 2019-10-09
EP3282364A1 (de) 2018-02-14
CN111177030A (zh) 2020-05-19

Similar Documents

Publication Publication Date Title
DE202017104840U1 (de) Hybriddatenspeichermanagement
US10705975B2 (en) Hybrid memory management
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE60222402T2 (de) Verfahren und system zur spekulativen ungültigkeitserklärung von zeilen in einem cachespeicher
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE112011103433B4 (de) Verfahren, System und Programm zum Steuern von Cache-Kohärenz
US20080183972A1 (en) Snoop Filtering Using a Snoop Request Cache
US20170192886A1 (en) Cache management for nonvolatile main memory
DE102008062044B4 (de) 1Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration
DE112005002180T5 (de) Lösen von Cachekonflikten
DE10232926A1 (de) Cachesystem mit Leitungsgruppen und mit Kohärenz sowohl für einzelne Leitungen als auch Gruppen von Leitungen
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE112017001658T5 (de) Behandlung von fehleranfälligen Cache-Zeilen-Slots eines speicherseitigen Caches eines Multilevel-Systemspeichers
DE112017003203T5 (de) Mehr-ebenen-systemspeicher mit near-memory-scrubbing basierend auf vorhergesagter far-memory-leerlaufzeit
DE112012004926B4 (de) Gemeinsame Speichernutzung durch Prozessoren
DE102020117350A1 (de) Speichersystem einschliesslich heterogener speicher, computersystem mit dem speichersystem und datenverwaltungsverfahren dafür
DE102019111219A1 (de) Bereitstellen von Toter-Block-Vorhersage zur Bestimmung, ob Daten in Cache-Vorrichtungen zwischenzuspeichern sind.
DE102006002444A1 (de) Verfahren und System für eine Cache-Nutzung durch ein Vorabrufen für mehrere DMA-Lesevorgänge
US9442856B2 (en) Data processing apparatus and method for handling performance of a cache maintenance operation
DE102013022166B4 (de) Seitenzustandsverzeichnis zur verwaltung eines vereinheitlichten virtuellen speichers
DE102019117783A1 (de) Anwendungsprozessor und System-on-Chip
DE112016007298T5 (de) Informationsverarbeitungsgerät
EP3942419A1 (de) Snoop-filtervorrichtung
DE102013022168B4 (de) Migrationsschema für vereinheitlichtes virtuelles Speichersystem
DE102020130530A1 (de) Nvram-systemspeicher mit speicherseitigem cache, der beschriebene posten favorisiert und/oder regionen mit angepassten temperaturinduzierten geschwindigkeitseinstellungen enthält

Legal Events

Date Code Title Description
R207 Utility model specification
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R150 Utility model maintained after payment of first maintenance fee after three years
R151 Utility model maintained after payment of second maintenance fee after six years