DE102011076895A1 - Cachekohärenzprotokoll für persistente Speicher - Google Patents

Cachekohärenzprotokoll für persistente Speicher Download PDF

Info

Publication number
DE102011076895A1
DE102011076895A1 DE102011076895A DE102011076895A DE102011076895A1 DE 102011076895 A1 DE102011076895 A1 DE 102011076895A1 DE 102011076895 A DE102011076895 A DE 102011076895A DE 102011076895 A DE102011076895 A DE 102011076895A DE 102011076895 A1 DE102011076895 A1 DE 102011076895A1
Authority
DE
Germany
Prior art keywords
memory
main memory
processing units
cache
persistent
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE102011076895A
Other languages
English (en)
Other versions
DE102011076895B4 (de
Inventor
John Rudelic
August Camber
Mostafa Naguib Abdulla
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.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of DE102011076895A1 publication Critical patent/DE102011076895A1/de
Application granted granted Critical
Publication of DE102011076895B4 publication Critical patent/DE102011076895B4/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Der Gegenstand, der hier offenbart wird, bezieht sich auf Cachekohärenz eines Prozessorsystems, das persistenten Speicher umfasst.

Description

  • Hintergrund
  • Gebiet:
  • Der Gegenstand, der hier offenbart wird, bezieht sich auf Cachekohärenz eines Prozessorsystems, das persistenten Speicher umfasst.
  • Information:
  • Computersysteme können eine Mehrfachprozessorkonfiguration mit einem gemeinsam genutzten Speicher (shared memory multiprocessor, SMP) verwenden. Die wachsende Anzahl an Prozessoren in solch einem Computersystem, die denselben Hauptspeicher nutzen, kann die Performance des Systems verbessern. Ein Computersystem kann ein Kohärenzprotokoll beinhalten, um Kohärenz zwischen Information, die vom Cachespeicher gelesen wird, und Information, die vom Hauptspeicher gelesen wird, sicherzustellen. Zum Beispiel, falls ein Prozessor Information aktualisiert hat, die in dem Hauptspeicher gespeichert ist, kann die Änderung in der Information in Kopien, die in Speichercaches von anderen Prozessoren gespeichert sind, gespiegelt werden.
  • Computersysteme können irgendeines einer Vielzahl an Kohärenzprotokollen verwenden, wie zum Beispiel das MESI-Protokoll, um zum Beispiel eine Kohärenzverwaltung durchzuführen. Das MESI-Protokoll kann Cachezeilen in einem Cachespeicher verwalten unter der Annahme, dass sich die Cachezeilen in einem von vier Zuständen befinden, nämlich den „M” (Modifiziert), „E” (Exklusiv), „S” (Gemeinsam genutzt (shared)) und „I” (Ungültig(invalid))-Zuständen. In einem Computersystem, welches das MESI-Protokoll verwendet, können einzelne Prozessoren bestimmen, ob eine Cachekohärenz-Verwaltungsanforderung für eine bestimmte Cachezeile auszugeben ist, zumindest teilweise auf basierend deren MESI-Zustand.
  • Kurze Beschreibung der Zeichnungen
  • Nicht beschränkende und nicht erschöpfende Ausführungsformen werden mit Bezug auf die folgenden Zeichnungen beschrieben werden, wobei gleiche Bezugszeichen auf gleiche Teile durchgängig für die verschiedenen Zeichnungen verweisen, außer es ist anderweitig spezifiziert.
  • 1 ist ein schematisches Blockdiagramm einer Verarbeitungssystemkonfiguration gemäß einer Ausführungsform.
  • 2 ist ein schematisches Diagramm eines Hauptspeichers gemäß einer Ausführungsform.
  • 3 ist ein Timing-Diagramm eines Cachekohärenzprotokolls gemäß einer Ausführungsform.
  • 4 ist ein schematisches Diagramm einer Mehrfachprozessorsystem-Konfiguration gemäß einer Ausführungsform.
  • 5 ist ein schematisches Diagramm einer Mehrfachprozessorsystem-Konfiguration gemäß einer anderen Ausführungsform.
  • 6 ist eine schematische Ansicht eines Computersystems und einer Speichervorrichtung gemäß einer Ausführungsform.
  • Detaillierte Beschreibung
  • Der durchgängige Bezug in dieser Spezifikation auf ”eine Ausführungsform” bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder Eigenschaft, die in Verbindung mit der Ausführungsform beschrieben ist, in mindestens einer Ausführungsform des beanspruchten Gegenstands enthalten ist. Somit sind das Auftreten der Ausdrücke ”in einer Ausführungsform” oder ”einer Ausführungsform” an verschiedenen Orten innerhalb bei dieser Spezifikation nicht notwendigerweise alle Bezug nehmend auf dieselbe Ausführungsform. Weiterhin, können die bestimmten Merkmale, Strukturen oder Eigenschaften in einer oder mehreren Ausführungsformen kombiniert werden.
  • In einer Ausführungsform, kann ein System aus zwei oder mehreren Verarbeitungseinheiten, wie zum Beispiel zentrale Verarbeitungseinheiten (central processing units, CPUs), persistenten Speicher enthalten. Ein Cachekohärenzprotokoll für solch ein System kann ein oder mehrere Merkmale enthalten, um bestimmten Aspekten von persistentem, nichtflüchtigem Speicher Rechnung zu tragen. Wie unten im Detail beschrieben, können solche Merkmale einen oder mehrere Cachekohärenzprotokollzustände aufweisen, die angeben, ob ein Prozess zum Aktualisieren eines persistenten Speichers anhängig ist und/oder, oh solch ein Prozess abgeschlossen ist. Ein anderes Merkmal kann einen persistenten Speicherdeskriptor aufweisen, um einen Speicherbereich anzugeben, der persistenten Speicher enthält. Dementsprechend kann solch ein System aus zwei oder mehreren Verarbeitungseinheiten auch Schaltungen aufweisen, um mindestens einen Teil eines Cachekohärenzprotokolls bereitzustellen wie es unten im Detail beschrieben wird.
  • Solch ein System aus zwei oder mehreren Verarbeitungseinheiten kann zum Beispiel ein Rechensystem aufweisen, um Anwendungen in irgendeiner einer Anzahl von Umgebungen auszuführen, wie zum Beispiel Computer, Mobiltelefone, PDAs, Datenlogger und Navigationsausrüstung, um nur einige wenige Beispiele zu nennen. Insbesondere können mehrere Anwendungen simultan durch mehrere CPUs ausgeführt werden. In einer Implementierung kann eine oder können mehrere solcher CPUs einzeln mit einem Hauptspeicher und/oder Cachespeicher assoziiert sein, jeder von ihnen kann mindestens einen Teil eines persistenten Speichers aufweisen. Zum Beispiel kann ein Hauptspeicher und/oder Cachespeicher einen Teil eines persistenten Speichers aufweisen und irgendeiner Varietät von Speichern mit wahlfreiem Zugriff (RAM). In einem bestimmten Beispiel kann der Hauptspeicher mindestens einen Teil eines Phasenänderungsspeichers (phase change memory, PCM) und dynamischen Speichern mit wahlfreiem Zugriff (dynamic random access memory, DRAM) aufweisen. In einem anderen bestimmten Beispiel kann der Cachespeicher PCM und/oder DRAM aufweisen. Solche Speicherkonfigurationen können Vorteile bieten wie zum Beispiel Nicht-Flüchtigkeit, relativ hohe Schreib-/Lesegeschwindigkeiten. Natürlich sind solche Speicherbeschreibungen nur Beispiele und der beanspruchte Gegenstand ist diesbezüglich nicht beschränkt.
  • Hier bezieht sich persistenter Speicher auf nichtflüchtigen Speicher wie zum Beispiel PCM, welcher die Fähigkeit besitzen kann Bits ändern zu lassen. Ein anderes Merkmal von persistentem Speicher weist nicht-symmetrische Lese-/Schreibgeschwindigkeiten auf, wobei eine Schreibgeschwindigkeit geringer sein kann als eine Lesegeschwindigkeit für eine gegebene Speicherzelle. Ein Vorhandensein von persistentem Speicher, der solche Merkmale aufweist, in einem Mehrfachprozessorsystem kann bestimmte Cachekohärenzprotokolle benutzen, um einer oder mehreren Verarbeitungseinheiten zu erlauben zum Beispiel den Hauptspeicher gemeinsam zu nutzen. Hier bezieht sich der Hauptspeicher auf Speicher, der durch eine Verarbeitungseinheit verwendet wird, um eine oder mehrere Anwendungen aufrecht zu erhalten, die durch die Verarbeitungseinheiten ausgeführt werden können mögen. Weiterhin kann der Hauptspeicher direkt oder indirekt mit einer Verarbeitungseinheit verbunden sein, unter Verwendung von Speicheranweisungen zum Zugriff auf den Hauptspeicher. Der Hauptspeicher unterscheidet sich zum Beispiel von Speicher, der über eine Eingabe/Ausgabe(E/A)-Schnittstelle zugänglich ist, die E/A-Operationen verwendet, um auf solchen Speicher zuzugreifen. In einem weiteren Beispiel eines Hauptspeichers, kann eine CPU auf eine Fähigkeit zum manipulieren (z. B. löschen, schreiben) von Daten begrenzt sein, die in einem Hauptspeicher vorhanden sind. Hier kann das Wort ”Haupt” verwendet werden, um von externen Massenspeichervorrichtungen wie zum Beispiel Festplattenlaufwerken zu unterscheiden. Selbstverständlich sind solche Beschreibungen des Hauptspeichers nur Beispiele und der beanspruchte Gegenstand ist in dieser Weise nicht beschränkt.
  • Ausführungsformen, die hierin beschrieben sind, enthalten die Ergänzung von einer beliebigen Anzahl bekannter Mehrfachprozessor-Cachekohärenzprotokolle wie zum Beispiel MESI-, MOSI- und MOESI-Protokollen. Insbesondere solche Ausführungsformen können Zustände von oben aufgelisteten Protokollen und einen oder mehrere zusätzliche Zustände enthalten, wie unten im Detail beschrieben. Solche Ausführungsformen können die Semantik der Cachekohärenz erweitern, um zum Beispiel Unterstützung für persistente Speicher zu enthalten. Ein Cachekohärenzprotokoll kann Semantik zum Sicherstellen von Cachekohärenz zwischen mehreren Prozessoren herstellen, die auf zum Beispiel einem vereinheitlichten Speicher arbeiten. Cachekohärenz-Semantik können ‚race conditions’ verhindern, wo zwei oder mehrere Prozessoren, die auf einem identischen Speicher arbeiten, unsynchronisiert werden können. Cachekohärenzprotokolle können Anweisungen an einen Prozessor bereitstellen, um lokale Caches mit dem Hauptspeicher zu synchronisieren. Cachekohärenzprotokolle können dabei helfen sicherzustellen, dass Inhalte eines Prozessor-Caches mit Inhalten von zum Beispiel dem Hauptspeicher auf dem aktuellen Stand sind.
  • In einer Ausführungsform kann PCM als Hauptspeicher für eine Computerplattform verwendet werden. PCM weist persistenten Speicher auf mit einer Art, die Bits ändern lassen kann, ähnlich zu DRAM, obgleich DRAM volatil ist. Falls PCM als Hauptspeicher auf eine Computerplattform verwendet wird, kann PCM zumindest einige derselben Cachekohärenzausgaben beinhalten, die für DRAM gelten. Dementsprechend können MESI-, MOSI- und MOESI-Protokolle, um nur einige wenige Beispiele zu nennen, adäquat Cachekohärenz für PCM abdecken, falls PCM verwendet wird, um DRAM in einer Anwendung zu ersetzen. Obgleich PCM der Bit-Änderbarkeit ähnlich ist wie DRAM, kann PCM unterschiedlich von DRAM in dem Sinne sein, dass PCM einen persistenten Speicher aufweist. DRAM kann gespeicherte Inhalte verlieren, falls die Stromversorgung entfernt wird, während PCM gespeicherte Inhalte beibehalten kann, selbst wenn die Stromversorgung entfernt wird. Somit können in einer Implementierung Cachekohärenz-Semantik hinzugefügt werden, um solch eine nichtflüchtige Eigenschaft von PCM zu unterstützen, falls PCM zumindest einen Teil des Hauptspeichers bildet. Natürlich sind solche Merkmale und Details einer Ausführungsform, die PCM als einen Hauptspeicher enthalten, nur Beispiele, und der Gegenstand ist in dieser Weise nicht beschränkt.
  • In einer Ausführungsform können zusätzliche Zustände zum Erweiterten der Cachekohärenz-Semantik für Speicherkohärenz Unterstützung bereitstellen auf einem relativ hohen Niveau innerhalb einer Speicherhierarchie wie zum Beispiel im Speicher gehaltenen Datenbanken. In dem Fall, dass der Hauptspeicher einen relativ schnellen, aber volatilen Speicher wie zum Beispiel ein DRAM aufweist, kann gespeicherte Information eventuell auf eine relativ langsame Platte, Band oder anderen langsamen persistenten Speicher kopiert werden. Falls jedoch PCM als Hauptspeicher verwendet wird, wegen der persistenten Fähigkeit von PCM, ist es für eine Anwendung nicht notwendig gespeicherte Information auf ein anderes Speichermedium auszulagern, oder einen Checkpoint zu bilden. Es kann jedoch einen Prozess zum Kommunizieren zu zahlreichen Anwendungsprozessen geben, ob Inhalte von PCM gerade in dem Prozess der Aktualisierung sind, und ob solch eine Aktualisierung abgeschlossen worden ist. Dementsprechend können zusätzliche Zustände zu erweiterter Cachekohärenz-Semantik Kohärenz-Semantik auf höherer Ebene bei einer Anwendungsebene unterstützen. Bei einer bestimmten Implementierung kann ein so genannter persistenter Speicherdeskriptor verwendet werden, um einen Bereich des Hauptspeichers anzugeben, der Persistenz unterstützt wie unten im Detail erläutert.
  • 1 ist ein schematisches Blockdiagramm eines Verarbeitungssystems 100 gemäß einer Ausführungsform. Das Verarbeitungssystem 100 kann eine Verarbeitungseinheit 110, einen Hauptspeicher 120 und/oder Cache 130 aufweisen. Insbesondere kann die Verarbeitungseinheit 110 eine CPU aufweisen, um eine oder mehrere Anwendungen zu bedienen, die in dem Hauptspeicher 120 gehalten werden. Obwohl es nicht in der 1 dargestellt ist, kann das Verarbeitungssystem 100 zusätzliche Verarbeitungseinheiten, zusätzliche Hauptspeicher und/oder zusätzliche Caches aufweisen. Zum Beispiel können die Verarbeitungseinheit 110, der Hauptspeicher 120 und/oder der Cache 130 kollektiv Funktionsbausteine für größere Mehrfachprozessorsysteme aufweisen. In einer Implementierung kann das Verarbeitungssystem 100 unter Verwendung einer Speicherhierarchie arbeiten, die eine oder mehrere Ebenen von Cachespeicher enthält, der gemeinsam von der einen oder den mehreren Verarbeitungseinheiten genutzt wird. Der Cachespeicher kann zum Beispiel einen Cache erster Ebene und einen Cache zweiter Ebene aufweisen, wobei einer oder beide von diesen zumindest teilweise persistenten Speicher aufweisen können. Ein Cachekohärenzprotokoll kann auf die Verarbeitungseinheit 100 zur Kohärenzverwaltung angewandt werden. Solch ein Protokoll kann zum Beispiel zur Vermeidung von Lese-/Schreib-Prozesskonflikten zwischen den zwei oder mehreren Hauptspeichern 120 und/oder dem einen oder den mehreren Caches 130 führen. Ein Hardwareblock 150 und/oder Codeblock 160 kann zusammen oder getrennt ein Cachekohärenzprotokoll bereitstellen. In einer bestimmten Implementierung kann zum Beispiel ein Cachekohärenzprotokoll ein Protokoll 140 aufweisen, welches eine Anzahl an Zuständen enthält wie zum Beispiel die Zustände geändert, exklusiv, gemeinsam genutzt und ungültig (zum Beispiel MESI), um nur einige wenige Beispiele zu nennen. Ein In-Bearbeitung-Zustand 142 kann in dem Protokoll 140 enthalten sein, um den persistenten Speicher in dem Verarbeitungssystem 100 Rechnung zu tragen wie unten im Detail erläutert. Ein anderer Zustand, der in dem Protokoll 140 enthalten ist, kann einen Festschreibungszustand 144 aufweisen wie auch im Detail unten beschrieben wird. Solche Zustände können reflektiert werden durch wählbare Flags wie zum Beispiel gesetzte und ungesetzte Bits, durch eine oder mehrere Speicherzellen, die bestimmte Zustandsinformation speichern, durch ein oder mehrere auf elektrischen Leitungen übertragene Signale, und/oder eine andere Informationsart, um einen bestimmten Zustand mitzuteilen. Natürlich kann jede Anzahl von Zuständen in dem Protokoll 140 enthalten sein, und der beanspruchte Gegenstand ist nicht auf die hierin beschriebenen beschränkt. Bei einer Implementierung kann der Hardwareblock 150 elektronische Schaltungen aufweisen, um zumindest ein Teil des Cachekohärenzprotokolls 140 bereitzustellen. Solche elektronische Schaltungen können zum Beispiel verschiedene Konfigurationen von logischen Gattern aufweisen. Der Codeblock 160 kann eine oder mehrere Anwendungen aufweisen, um zumindest ein Teil des Cachekohärenzprotokolls 140 bereitzustellen. Teile des Codeblocks 160 können durch die Verarbeitungseinheit 110 implementiert werden.
  • Bei einer Ausführungsform kann der In-Bearbeitung-Zustand 142 verwendet werden, um einer oder mehreren Speichersteuerungen 115 in dem Verarbeitungssystem 100 anzuzeigen, dass ein Speicherort in dem Hauptspeicher 120 sich gerade in einem Prozess der Aktualisierung befindet. Dementsprechend kann eine Anwendung mit solch einem bestimmten Speicherort, der in dem Cache 130 abgebildet ist, wählen auf ein Abschließen einer Aktualisierungsoperation zu warten. Alternativ kann die Anwendung die Aktualisierung ignorieren und gegenwärtig verfügbare, veraltete Cache-Inhalte verwenden (zum Beispiel vor einem Abschluss der Aktualisierung von Inhalten). Bei einer bestimmten Implementierung kann der Festschreibungszustand 144 verwendet werden, um den Speichersteuerungen 115 in dem Verarbeitungssystem 100 anzuzeigen, dass eine Speicheraktualisierung abgeschlossen ist, und der Cache 130 die Information wieder laden kann. Ein Beispiel für eine Anwendung, die wählen kann einen In-Bearbeitung-Zustand zu ignorieren, ist eine Suchmaschine, da eine etwas alte Information nicht nachteiliger Weise Suchergebnisse beeinflusst. Im Gegensatz dazu ist ein Beispiel für eine Anwendung, die wählen kann einen In-Bearbeitung-Zustand nicht zu ignorieren, ist eine Bank-Anwendung, die sich auf die aktuellst verfügbare Information verlässt, die nach Abschluss eines Aktualisierungsprozesses verfügbar ist. Dementsprechend kann solch eine Anwendung auf Abschluss jeder Aktualisierungs-Operation warten und kann assoziierte Cache-Information auf ungültig setzen, um sicherzustellen, dass die Anwendung mit den aktuellsten Speicherwerten fortsetzt. Natürlich sind solche Details eines Verarbeitungssystems und Cachekohärenzprotokolls nur Beispiele, und der beanspruchte Gegenstand ist in dieser Weise nicht beschränkt.
  • 2 ist ein schematisches Diagramm eines Hauptspeichers 210 gemäß einer Ausführungsform. Zumindest ein Teil des Hauptspeichers 210 kann persistenten Speicher 220 aufweisen. In einer bestimmten Implementierung kann ein anderer Teil des Hauptspeichers 210 verschiedene Speicherarten aufweisen, wie zum Beispiel flüchtiges DRAM. Die Teile an persistenten Speicher 220 brauchen nicht aneinander grenzend in dem Hauptspeicher 210 angeordnet sein, welcher zum Beispiel eine oder mehrere Chip-Strukturen aufweisen kann. Ein Cachekohärenzprotokollblock 255 kann Hardware und/oder implementierten Code aufweisen, um ein Cachekohärenzprotokoll für ein Verarbeitungssystem (zum Beispiel System 100 wie in 1 dargestellt) bereitzustellen, das den Hauptspeicher 210 enthält. Bei einer bestimmten Implementierung kann zum Beispiel solch ein Cachekohärenzprotokoll, einen In-Bearbeitung-Zustand 142 und/oder den Festschreibungszustand 144 aufweisen, um dem persistenten Speicher 220 Rechnung zu tragen wie oben beschrieben. Der In-Bearbeitung-Zustand 142 kann zum Beispiel eine hinzugefügte Verzögerung einer Schreiboperation verglichen mit einer Leseoperation Rechnung tragen. Somit kann der In-Bearbeitung-Zustand 142 einer Anwendung anzeigen, ob die Anwendung hat auf einen relativ langen Cache-Schreibprozess zu warten. Bei einer anderen bestimmten Imlementierung kann der Cachekohärenzprotokollblock 255 einen persistenten Speicher-Deskriptor bereitstellen, um einer Rechnerplattform zu erlauben zu identifizieren, welche Teile des Hauptspeichers 210 persistenten Speicher aufweisen. Solch eine Identifikation kann zum Beispiel eine oder mehrere Adressen oder Adressbereiche von Speicherorten in dem Hauptspeicher 210 aufweisen. Natürlich ist der beanspruchte Gegenstand nicht auf solche Protokollzustände beschränkt, und der Cachekohärenzprotokollblock 255 kann eine beliebige Anzahl an Protokollzuständen an ein System bereitstellen.
  • 3 ist ein Timing-Diagramm eines Cachekohärenzprotokolls gemäß einer Ausführungsform. Zum Zeitpunkt T1 kann der In-Bearbeitung-Zustand wechseln, um einer Speichersteuerung anzuzeigen, dass zumindest ein Speicherort in einem oder mehreren Hauptspeichern sich in einem Prozess einer Aktualisierung befindet. Während der Zeitdauer T2 kann eine oder können mehrere Anwendungen, die mit der Aktualisierung von Speicherort(en) assoziiert sind, wählen zu warten bis solch eine Aktualisierungsoperation abgeschlossen ist. Bei einer anderen Implementierung kann wie oben beschrieben eine Anwendung solch eine Aktualisierungsoperation ignorieren und einfach die gegenwärtig verfügbaren, veralteten Cache-Inhalte verwenden. Zum Zeitpunkt T3 mag eine Aktualisierungsoperation abgeschlossen sein, welche zum Beispiel durch ein Hardwaresignal, das von einem Zustand zu einem anderen Zustand, wie zum Beispiel vom hohen zu niedrigen oder vom niedrigen zum hohen Zustand wechselt, angezeigt werden. Nachfolgend auf eine abgeschlossene Aktualisierungsoperation kann zum Zeitpunkt T4 ein Festschreibungszustand wechseln, um einer Speichersteuerung anzuzeigen, dass eine Speicheraktualisierung abgeschlossen ist und der Cachespeicher verfügbar ist, um Information neu zu laden. Natürlich sind solche Timing-Details eines Cachekohärenzprotokolls nur Beispiele, und der beanspruchte Gegenstand ist in dieser Weise nicht beschränkt.
  • 4 ist ein schematisches Diagramm einer Mehrfachprozessorsystemkonfiguration 400 gemäß einer Ausführungsform. Ein Mehrfachprozessorsystem kann eine beliebige Anzahl von Verarbeitungseinheiten aufweisen, obwohl zwei solcher Einheiten in 4 dargestellt sind. Insbesondere können solche Verarbeitungseinheiten eine CPU 410, die mit einem Cache 430 assoziiert ist, und eine CPU 415, die mit einem Cache 435 assoziiert ist, aufweisen. In einem Beispiel kann die CPU 410 eine Cachezeile aufweisen, die auf einen Ort in einem Hauptspeicher 420 zeigt. Sowohl die CPU 410 als auch die CPU 415 kann auf/von dem Hauptspeicherort schreiben oder lesen. Ein Konflikt kann auftreten, falls die CPU 415 versucht von einer Cachezeile zu lesen, während die CPU 410 auf den Hauptspeicherort schreibt. Bei einer Implementierung braucht sich die CPU 415 nicht um solch einen potentiellen Konflikt zu kümmern. Bei einer anderen Implementierung kann die CPU 415, um solch einen Konflikt zu vermeiden, die Zustände In-Bearbeitung- und/oder Festschreibung zu überwachen, um sicherzustellen, dass sich ein In-Bearbeitung befindlicher Schreibzugriff von der CPU 410 abgeschlossen wurde. Bei einer Implementierung kann der In-Bearbeitung-Zustand mit einem bestimmten Bit, Flag, oder Signal korrespondieren, das hier ein I-Bit genannt wird, und der Festschreibungszustand kann mit einem bestimmten Bit, Flag, oder Signal korrespondieren, das hier ein C-Bit genannt wird. Solche Bits können wechseln zwischen gesetzten und ungesetzten Zuständen, um einen Status eines Prozesses anzuzeigen zum Aktualisieren eines Hauptspeichers wie oben beschrieben. Bei einer bestimmten Implementierung kann die CPU 415 von der Cachezeile lesen, falls weder das C- noch das I-Bit gesetzt sind. Falls zum Beispiel das I-Bit gesetzt ist, dann kann die CPU 410 den Hauptspeicher aktualisieren und die CPU 415 kann auf den Abschluss der Aktualisierung warten. Nach Abschluss der Aktualisierung der CPU 410, kann das C-Bit wechseln um solch einen Abschluss anzuzeigen. Dementsprechend kann die CPU 415 die Cachezeile Neuladen in Antwort auf das Umsetzen des C-Bits durch die CPU 410. Die CPU 415 kann dann den neuesten gültigen Wert für den Speicherort enthalten.
  • In einer Ausführungsform kann die Kohärenz des Hauptspeichers, von welchem mindestens ein Teil persistenten Speicher aufweist, aufrechterhalten werden durch einen virtuellen Speicher eines Betriebssystems und/oder durch einen Standard Page Handler. Solch ein Betriebssystem kann ein Verfahren unterstützen, um eine Massenschreiboperation zu identifizieren, die eine Kohärenzverwaltung umfasst. Solch eine Massenschreiboperation kann zum Beispiel einen Datenbankschreiboperation umfassen. Anwendungen können untereinander koordiniert werden, so dass eine Massenschreiboperation verwaltet werden kann als eine atomare Schreiboperation, wobei mehrere Felder quer über eine Datenbank aktualisiert werden mögen, bevor solch ein Aktualisierungsprozess als abgeschlossen betrachtet werden kann. Semantik auf Anwendungsebene kann eine oder mehrere Anwendungen davon abhalten ungültige Daten zu verwenden, in einer Weise ähnlich zu einzelnen Cachezeilen, obwohl Massenoperationen größeren Mengen an Information betreffen. Bei einer Implementierung kann ein Kommunizieren der Größe einer Massenschreiboperation einen persistenten Direktspeicherzugriffs(direct memory access, DMA)-Befehl enthalten. Bei einer anderen Implementierung kann ein Kommunizieren der Größe einer Massenschreiboperation einen Mechanismus enthalten, um die Definition eines Speicherpools zu kommunizieren. Bei noch einer anderen Implementierung kann ein Kommunizieren der Größe einer Massenschreiboperation ein Flag enthalten, das zu der Zeit einer dynamischen Speicherzuordnung verwendet wird. Bei noch einer anderen Implementierung kann ein Kommunizieren der Größe einer Massenschreiboperation ein Signalisieren durch die Anwendung enthalten. Eine Kohärenzverwaltung auf Anwendungsebene für persistenten Speicher kann Zustände: In-Bearbeitung- und/oder Festschreibung verwenden, die oben definiert werden als einfache Befehle zum Herstellen zum Beispiel einer Anwendungsebenen-Speicherkohärenz.
  • 5 ist ein schematisches Diagramm eines Mehrkernsystems 500 gemäß einer Ausführungsform. Solch ein System kann Prozessorknoten 502, 504, 506 und 508 aufweisen, die miteinander zum Beispiel über einen oder mehrere Busse verbunden sind. Bei einer Implementierung kann das Mehrkernsystem 500 einen Mehrfachprozessor mit gemeinsam verwendeten Speicher aufweisen. Einzelne Prozessorknoten 502, 504, 506 und 508 können jeweils Prozessoren 510, 512, 514 bzw. 516, Cachespeicher 530, 532, 534 bzw. 536, und/oder lokale Speicher 520, 522, 524 bzw. 526, aufweisen. Innerhalb bestimmter Prozessorknoten können solche lokale Speicher Hauptspeicher aufweisen, die mit Prozessoren der bestimmten Prozessorknoten assoziiert sind. Der lokale Speicher 520 kann zum Beispiel einen Hauptspeicher aufweisen, der mit dem Prozessor 510 in dem Prozessorknoten 502 assoziiert ist. Bei einer Implementierung können lokale Speicher gemeinsam genutzt werden von, bzw. kann auf diese zugegriffen werden durch Prozessoren der anderen Prozessorknoten. Einer oder mehrere lokale Speicher 520, 522, 524 und 526 können alle oder mindestens teilweise einen persistenten Speicher aufweisen. Bei einer bestimmten Implementierung kann ein Teil des lokalen Speichers verschiedene Speicherarten aufweisen wie zum Beispiel flüchtige DRAM. Teile eines persistenten Speichers brauchen nicht angrenzend in einem lokalen Speicher, welcher eine oder mehrere Chip-Strukturen aufweisen kann, angeordnet sein. Obwohl nicht dargestellt, können Prozessoreinheiten Speichersteuerungen enthalten, die zum Beispiel auf demselben Chip-Substrat wie der Prozessor oder auf getrennten Chip-Substraten integriert sind. Ebenso, obwohl 5 ein System zeigt, dass vier Knoten aufweist, kann jede beliebige Anzahl an Knoten enthalten sein und der beanspruchte Gegenstand ist nicht auf diese bestimmte Anordnung beschränkt.
  • Cachespeicher 530, 532, 534 und 536 können Hochgeschwindigkeitsspeicher zum Speichern einer Kopie der Information aufweisen, die von irgendeinem der lokalen Speicher 520, 522, 524 und 526 erhalten werden. Solcher Cachespeicher kann unter Verwendung mindestens eines Teils einer Adresse von zum Beispiel einzelnen lokalen Speichern gesucht werden. Solch ein Teil einer Speicheradresse, die zum Suchen von Cachespeicher verwendet wird, wird als ein Cache-Indexteil bezeichnet. Der Cachespeicher 530 kann zum Beispiel einen Cache-Indexteil und einen Cachedatenteil aufweisen. Der Cache-Indexteil kann Zeilenadressen von Information, die in dem Cachespeicher 530 gespeichert ist, und Zustandsinformation wie zum Beispiel MESI-Zustandsinformation und zum Beispiel In-Bearbeitung- und/oder Festschreibungszustandsinformation wie oben beschrieben enthalten. Natürlich sind solche Details eines Mehrkernsystems nur Beispiele, und der beanspruchte Gegenstand ist in dieser Weise nicht beschränkt.
  • 6 ist ein schematisches Diagramm, das eine beispielhafte Ausführungsform eines Computersystems 600, das eine Speichervorrichtung 610 enthält, veranschaulicht. Eine Rechenvorrichtung 604 kann repräsentativ sein für jede Vorrichtung, Gerät oder Maschine, die konfigurierbar ist, um die Speichervorrichtung 610 zu verwalten. Die Speichervorrichtung 610 kann eine Speichersteuerung 615 und einen Speicher 622 enthalten. Beispielsweise aber nicht begrenzend, kann die Rechenvorrichtung 604 enthalten: eine oder mehrere Rechenvorrichtungen und/oder Plattformen, wie zum Beispiel einen Desktopcomputer, einen Laptopcomputer, eine Arbeitsstation, eine Servervorrichtung oder Ähnliches; eine oder mehrere Personalcomputer- oder Kommunikationsvorrichtungen oder Geräte, wie zum Beispiel, einen persönlichen digitalen Assistenten, eine mobile Kommunikationsvorrichtung oder Ähnliches; ein Computersystem und/oder assoziierte Service Providerfähigkeit wie zum Beispiel eine Datenbank oder Datenspeicherdienste-Provider/System; und/oder irgendeine Kombination davon.
  • In einer Ausführungsform kann die Rechenvorrichtung 604 mehrere Verarbeitungseinheiten, die durch einen Block 620 repräsentiert sind, enthalten. Diese mehreren Verarbeitungseinheiten können operativ mit einem Speicher 622 durch einen Bus 640 und einem Host oder einer Speichersteuerung 615 gekoppelt sein. Mehrere Verarbeitungseinheiten 620 können zum Beispiel durch den Bus 640 gemeinsam den Speicher 622 nutzen, welcher Hauptspeicher aufweisen kann. Eine Verarbeitungseinheit 620 ist repräsentativ für eine oder mehrere Schaltungen, die konfigurierbar sind, um zumindest einen Teil einer Datenverarbeitungsprozedur oder eines Prozesses durchzuführen. Beispielsweise aber nicht begrenzend kann die Verarbeitungseinheit 620 mehrere Prozessoren, Steuerungen, Mikroprozessoren, Micro-controller, anwendungsspezifische Integrierte Schaltungen, digitale Signalprozessoren, programmierbare logische Vorrichtungen, Feldprogrammierbare Gate-Arrays und der gleichen, oder irgendeine Kombination davon aufweisen. Die Verarbeitungseinheit 620 kann mit der Speichersteuerung 615 kommunizieren, um speicherbezogene Operationen zu verarbeiten, wie zum Beispiel Lesen, Schreiben und/oder Löschen, so wie zum Beispiel oben diskutierte Speicherpartitionsprozesse. Die Verarbeitungseinheit 620 kann ein Betriebssystem enthalten, das eingerichtet ist zum Kommunizieren mit der Speichersteuerung 615. Solch ein Betriebssystem kann zum Beispiel Befehle erzeugen, die an die Speichersteuerung 615 über den Bus 640 zu senden sind. Solche Befehle können zum Beispiel Lese-/Schreibanweisungen enthalten.
  • Der Speicher 622 ist repräsentativ für jeden Datenspeichermechanismus. Der Speicher 622 kann zum Beispiel ein DRAM 624 und/oder einen persistenten Speicher 626 aufweisen. In einer bestimmten Ausführungsform kann der Speicher 622 einen Hauptspeicher, der zumindest teilweise persistenten Speicher enthält, wie oben beschrieben aufweisen. Der Speicher 622 kann auch Cachespeicher, der in gleicher Weise zumindest teilweise persistenten Speicher enthalten kann, aufweisen. Während in diesem Beispiel es als von der Verarbeitungseinheit 620 getrennt veranschaulicht ist, Versteht es sich, dass der Gesamte oder ein Teil des DRAMs 624 innerhalb oder in anderer Weise neben der Verarbeitungseinheit 620 angeordnet, oder mit der Verarbeitungseinheit 620 gekoppelt bereitgestellt sein kann.
  • Gemäß einer Ausführungsform kann ein oder können mehrere Teile des Speichers 622 Signale speichern, die für Daten und/oder Information repräsentativ sind wie durch einen bestimmten Zustand des Speichers 622 ausgedrückt. Zum Beispiel kann ein elektronisches Signal, das für Daten und/oder Information repräsentativ ist, in einem Teil des Speichers 622 ”gespeichert” werden durch Einwirken oder Ändern des Zustands solcher Teile des Speichers 622, um Daten und/oder Information als Binärinformation (z. B., Einsen und Nullen) zu repräsentieren. Als solches stellt in einer bestimmten Implementierung solch eine Zustandsänderung des Teils des Speichers, um ein Signal, das für Daten und/oder Information repräsentativ ist, zu speichern, eine Transformation des Speichers 622 zu einem unterschiedlichen Zustand oder einer anderen Sache her.
  • Persistenter Speicher 626 kann zum Beispiel dieselbe Art oder ähnliche Art von Speicher als Primärspeicher und/oder eine oder mehrere Datenspeichervorrichtungen oder Systeme enthalten, wie zum Beispiel PCM, ein Plattenlaufwerk, ein optisches Laufwerk, ein Bandlaufwerk, ein Festkörperspeicher eines Laufwerk, usw. Bei bestimmten Implementierungen, kann persistenter Speicher 626 operativ für ein computerlesbares Medium 628 empfänglich sein, oder auf andere Weise konfigurierbar sein, um mit diesem zu koppeln. Das computerlesbare Medium 628 kann zum Beispiel jedes Medium, das Daten, Code und/oder Anweisungen für eine oder mehrere der Vorrichtungen in dem System 600 tragen und/oder zugreifbar machen kann.
  • In einer Ausführungsform kann das System 600 eine Speichersteuerung 615 aufweisen, die zumindest eine erste Schnittstelle zu einem Hauptspeicher und zumindest eine zweite Schnittstelle zu einer Verarbeitungseinheit (z. B. Über den Bus 640 an den Prozesses 620) aufweist, wobei die Speichersteuerung fähig sein kann die Verarbeitungseinheit in die Lage zu versetzen auf den Hauptspeicher gemäß eines Cachekohärenzprotokolls zuzugreifen, und wobei zumindest ein Teil des Hauptspeichers persistenten Speicher aufweist. Solch ein persistenter Speicher kann zum Beispiel PCM aufweisen. Die Rechenvorrichtung 604 kann zum Beispiel eine Eingabe/Ausgabe 632 aufweisen. Die Eingabe/Ausgabe 632 ist repräsentativ für eine oder mehrere Vorrichtungen oder Merkmale, die konfigurierbar sein können zum Empfangen oder auf andere Weise zum Zuführen menschlicher und/oder Maschinen-Eingaben, und/oder einer oder mehrere Vorrichtungen oder Merkmale, die konfigurierbar sein können zum Abgeben oder auf andere Weise Bereitstellen von Ausgaben für Menschen und/oder Maschinen. Beispielsweise aber nicht begrenzend kann die Eingabe/Ausgabe-Vorrichtung 632 eine operativ konfigurierte Anzeige, Lautsprecher, Tastatur, Maus, Trackball, Berührungsbildschirm, Datenport, usw. aufweisen.
  • Während es veranschaulicht und beschrieben worden ist, was gegenwärtig als beispielhafte Ausführungsformen betrachtet wird, versteht der Fachmann, dass verschiedene andere Modifizierungen gemacht werden können und Äquivalente können ersetzt werden ohne von dem beanspruchten Gegenstand abzuweichen. Zusätzlich können Modifikationen gemacht werden, um eine bestimmte Situation der Lehre des beanspruchten Gegenstandes anzupassen ohne von dem zentralen hierin beschriebenen Konzept abzuweichen. Deswegen ist es beabsichtigt, das der beanspruchte Gegenstand nicht auf die bestimmten offenbarten Ausführungsformen beschränkt wird, sondern, dass solch ein beanspruchter Gegenstand auch alle Ausführungsformen enthalten kann, die innerhalb des Bereichs der beigefügten Ansprüche und der Äquivalente davon fallen.

Claims (22)

  1. Speichervorrichtung aufweisend: eine Speichersteuerung, die mindestens eine erste Schnittstelle zu einem Hauptspeicher und mindestens eine zweite Schnittstelle zu zwei oder mehreren Verarbeitungseinheiten aufweist, wobei die Speichersteuerung fähig ist die Verarbeitungseinheiten in die Lage zu versetzen, um auf den Hauptspeicher gemäß eines Cachekohärenzprotokolls zu zugreifen, und wobei mindestens ein Teil des Hauptspeichers persistenten Speicher aufweist.
  2. Speichervorrichtung nach Anspruch 1, wobei das Cachekohärenzprotokoll einen ersten Zustand aufweist, der angibt, ob sich der Hauptspeicher gegenwärtig in einem Prozess einer Aktualisierung befindet, und ein zweiter Zustand, der angibt, ob der Aktualisierungsprozess abgeschlossen ist.
  3. Speichervorrichtung nach Anspruch 2, wobei die Speichersteuerung weiterhin fähig ist zum Signalisieren an mindestens eine der zwei oder mehreren Verarbeitungseinheiten mit dem Zugriff auf den Hauptspeicher während des Aktualisierungsprozesses zu warten.
  4. Speichervorrichtung nach Anspruch 1, wobei die Speichersteuerung weiterhin fähig ist einen Speicherdeskriptor in die Lage zu versetzen zum Identifizieren des mindestens einen Teils des Hauptspeichers, der persistenten Speicher aufweist.
  5. Speichervorrichtung nach Anspruch 1, wobei der persistente Speicher einen Phasenänderungsspeicher (PCM) aufweist.
  6. Speichervorrichtung nach Anspruch 1, wobei der persistente Speicher einen Speicher mit asymmetrischen Lese-/Schreibgeschwindigkeiten aufweist.
  7. Speichervorrichtung nach Anspruch 1, wobei die zwei oder mehreren Verarbeitungseinheiten eine Mehrzahl an Zentralverarbeitungseinheiten (CPUs) aufweisen.
  8. Speichervorrichtung nach Anspruch 1, wobei die Speichersteuerung weiterhin fähig ist eine Speicherhierarchie in Betrieb zu setzen, die eine oder mehrere Ebenen an Cachespeicher enthält, der von den zwei oder mehreren Verarbeitungseinheiten gemeinsam genutzt wird.
  9. Speichervorrichtung nach Anspruch 8, wobei mindestens ein Teil der einen oder der mehreren Ebenen des Cachespeichers persistenten Speicher aufweist.
  10. Verfahren aufweisend: Verwalten eines Cachekohärenzprotokolls, um es einer Mehrzahl an Verarbeitungseinheiten zu erlauben einen Hauptspeicher gemeinsam zu nutzen, wobei mindestens ein Teil des Hauptspeichers persistenten Speicher aufweist.
  11. Verfahren nach Anspruch 10, weiterhin aufweisend: Überführen des Cachekohärenzprotokolls in einen ersten Zustand, um die Mehrzahl der Verarbeitungseinheiten anzuweisen mit dem Zugriff auf den Hauptspeicher während eines Aktualisierungsprozesses des Hauptspeichers zu warten.
  12. Verfahren nach Anspruch 11, weiterhin aufweisend: Überführen des Cachekohärenzprotokolls in einen zweiten Zustand, um die Mehrzahl der Verarbeitungseinheiten zu informieren, dass der Aktualisierungsprozess abgeschlossen ist.
  13. Verfahren nach Anspruch 10, wobei der persistente Speicher einen Phasenänderungsspeicher (PCM) aufweist.
  14. Verfahren nach Anspruch 10, wobei der persistente Speicher einen Speicher mit asymmetrischen Lese-/Schreibgeschwindigkeiten aufweist.
  15. Verfahren nach Anspruch 10, wobei das Cachekohärenzprotokoll zumindest teilweise ist auf einer oder mehreren Latenzeigenschaften des persistenten Speichers basiert.
  16. Verfahren nach Anspruch 10, wobei die Mehrzahl der Verarbeitungseinheiten eine oder mehrere Zentralverarbeitungseinheiten (CPUs) aufweist.
  17. System aufweisend: eine Mehrzahl an Verarbeitungseinheiten; und eine Speichervorrichtung aufweisend: eine Speichersteuerung, die mindestens eine erste Schnittstelle zu einem Hauptspeicher und mindestens eine zweite Schnittstelle zu der Mehrzahl der Verarbeitungseinheiten aufweist, wobei die Speichersteuerung fähig ist die Mehrzahl Verarbeitungseinheiten in die Lage zu versetzen, um auf den Hauptspeicher gemäß eines Cachekohärenzprotokolls zu zugreifen, und wobei mindestens ein Teil des Hauptspeichers persistenten Speicher aufweist.
  18. System nach Anspruch 17, wobei das Cachekohärenzprotokoll einen ersten Zustand aufweist, der angibt, ob sich der Hauptspeicher gegenwärtig in einem Prozess einer Aktualisierung befindet, und ein zweiter Zustand, der angibt, ob der Aktualisierungsprozess abgeschlossen ist.
  19. System nach Anspruch 18, wobei die Speichersteuerung weiterhin fähig ist zum Signalisieren an mindestens eine der zwei oder mehreren Verarbeitungseinheiten mit dem Zugriff, auf den Hauptspeicher während des Aktualisierungsprozesses zu warten.
  20. System nach Anspruch 18, wobei die Verarbeitungseinheit fähig ist mit dem Zugriff auf den Hauptspeicher während des Aktualisierungsprozesses zum Warten.
  21. Hauptspeicher, aufweisend: einen dynamischen Speicher mit wahlfreiem Zugriff(DRAM)-Teil und einen persistenten Speicherteil; und ein Cachekohärenzprotokollblock um Code zu implementieren, um Latenzunterschiede zwischen dem DRAM-Teil und dem persistenten Speicherteil Rechnung zu tragen.
  22. Hauptspeicher nach Anspruch 21, weiterhin aufweisend einen persistenten Speicherdeskriptor, um Adressen oder Adressbereiche der Speicherorte in den persistenten Speicherteilen zu identifizieren.
DE102011076895.5A 2010-06-09 2011-06-01 Cachekohärenzprotokoll für persistente Speicher Active DE102011076895B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/797,522 2010-06-09
US12/797,522 US9448938B2 (en) 2010-06-09 2010-06-09 Cache coherence protocol for persistent memories

Publications (2)

Publication Number Publication Date
DE102011076895A1 true DE102011076895A1 (de) 2011-12-15
DE102011076895B4 DE102011076895B4 (de) 2014-12-24

Family

ID=45020214

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102011076895.5A Active DE102011076895B4 (de) 2010-06-09 2011-06-01 Cachekohärenzprotokoll für persistente Speicher

Country Status (6)

Country Link
US (1) US9448938B2 (de)
JP (1) JP5348429B2 (de)
KR (1) KR101385430B1 (de)
CN (1) CN102279817B (de)
DE (1) DE102011076895B4 (de)
TW (1) TWI530786B (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8694737B2 (en) 2010-06-09 2014-04-08 Micron Technology, Inc. Persistent memory for processor main memory
US9037788B2 (en) 2010-09-30 2015-05-19 Micron Technology, Inc. Validating persistent memory content for processor main memory
KR101293260B1 (ko) 2011-12-14 2013-08-09 한국전자통신연구원 이동 통신 단말 및 방법
CN104025066B (zh) * 2011-12-29 2018-07-24 英特尔公司 用于能量高效计算的异构存储器晶片堆叠
WO2014065873A1 (en) * 2012-10-22 2014-05-01 Jeff Willey Control messaging in multislot link layer flit
US20140114928A1 (en) 2012-10-22 2014-04-24 Robert Beers Coherence protocol tables
US9367472B2 (en) * 2013-06-10 2016-06-14 Oracle International Corporation Observation of data in persistent memory
US9946656B2 (en) 2013-08-30 2018-04-17 Hewlett Packard Enterprise Development Lp Completion packet return based on eviction or flush
CN105094686B (zh) 2014-05-09 2018-04-10 华为技术有限公司 数据缓存方法、缓存和计算机系统
US9785554B2 (en) 2014-05-30 2017-10-10 International Business Machines Corporation Synchronizing updates of page table status indicators in a multiprocessing environment
US9384133B2 (en) 2014-05-30 2016-07-05 International Business Machines Corporation Synchronizing updates of page table status indicators and performing bulk operations
WO2016018421A1 (en) * 2014-07-31 2016-02-04 Hewlett-Packard Development Company, L.P. Cache management for nonvolatile main memory
US9430396B2 (en) * 2014-12-22 2016-08-30 Intel Corporation Updating persistent data in persistent memory-based storage
US10152435B2 (en) 2016-06-20 2018-12-11 Western Digital Technologies, Inc. Coherent controller
CN108959133B (zh) * 2017-05-22 2021-12-10 扬智科技股份有限公司 可共用存储器的电路结构与数字视频转换装置
US10459824B2 (en) * 2017-09-18 2019-10-29 Microsoft Technology Licensing, Llc Cache-based trace recording using cache coherence protocol data
US11907091B2 (en) 2018-02-16 2024-02-20 Microsoft Technology Licensing, Llc Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches
KR102412423B1 (ko) * 2020-01-09 2022-06-23 성균관대학교산학협력단 비휘발성 메모리 장치, 이것을 포함하는 컴퓨팅 시스템 및 이것의 동작 방법

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0358163A (ja) 1989-07-26 1991-03-13 Nec Corp 疎結合型マルチプロセッサシステム
JPH06150031A (ja) 1992-10-30 1994-05-31 Nec Corp Cpuモジュール
US5442704A (en) 1994-01-14 1995-08-15 Bull Nh Information Systems Inc. Secure memory card with programmed controlled security access control
JPH0816470A (ja) 1994-07-04 1996-01-19 Hitachi Ltd 並列計算機
JP3320562B2 (ja) 1994-09-22 2002-09-03 株式会社東芝 キャッシュメモリを有する電子計算機
JP3210590B2 (ja) 1996-11-29 2001-09-17 株式会社日立製作所 マルチプロセッサシステムおよびキャッシュコヒーレンシ制御方法
JPH10171676A (ja) 1996-12-10 1998-06-26 Toshiba Corp マイクロプロセッサのテスト容易化回路
US6516384B1 (en) 1999-12-30 2003-02-04 Intel Corporation Method and apparatus to perform a round robin and locking cache replacement scheme
US6760819B2 (en) 2001-06-29 2004-07-06 International Business Machines Corporation Symmetric multiprocessor coherence mechanism
CN1555557A (zh) 2001-07-18 2004-12-15 ���µ�����ҵ��ʽ���� 写入装置、半导体存储卡、写入程序及写入方法
US6658539B2 (en) * 2001-10-16 2003-12-02 International Business Machines Corporation Super-coherent data mechanisms for shared caches in a multiprocessing system
US6983348B2 (en) 2002-01-24 2006-01-03 Intel Corporation Methods and apparatus for cache intervention
US6892283B2 (en) 2002-12-05 2005-05-10 International Business Machines Corporation High speed memory cloner with extended cache coherency protocols and responses
US7322042B2 (en) 2003-02-07 2008-01-22 Broadon Communications Corp. Secure and backward-compatible processor and secure software execution thereon
JP4241175B2 (ja) 2003-05-09 2009-03-18 株式会社日立製作所 半導体装置
US20050080999A1 (en) 2003-10-08 2005-04-14 Fredrik Angsmark Memory interface for systems with multiple processors and one memory system
US20050251617A1 (en) * 2004-05-07 2005-11-10 Sinclair Alan W Hybrid non-volatile memory system
US20050160229A1 (en) 2004-01-16 2005-07-21 International Business Machines Corporation Method and apparatus for preloading translation buffers
US7644287B2 (en) 2004-07-29 2010-01-05 Microsoft Corporation Portion-level in-memory module authentication
US7240137B2 (en) 2004-08-26 2007-07-03 International Business Machines Corporation System and method for message delivery across a plurality of processors
US7451166B2 (en) 2005-01-13 2008-11-11 International Business Machines Corporation System and method for maintaining checkpoints of a keyed data structure using a sequential log
US8930659B2 (en) 2005-03-31 2015-01-06 Nec Corporation Computer system, memory management method and program thereof
US7130960B1 (en) * 2005-04-21 2006-10-31 Hitachi, Ltd. System and method for managing disk space in a thin-provisioned storage subsystem
US20060265544A1 (en) 2005-05-17 2006-11-23 John Rudelic Internally authenticated flash remediation
JP2006323739A (ja) 2005-05-20 2006-11-30 Renesas Technology Corp メモリモジュール、メモリシステム、及び情報機器
US7389402B2 (en) 2005-06-07 2008-06-17 Advanced Micro Devices, Inc. Microprocessor including a configurable translation lookaside buffer
US20070226795A1 (en) 2006-02-09 2007-09-27 Texas Instruments Incorporated Virtual cores and hardware-supported hypervisor integrated circuits, systems, methods and processes of manufacture
WO2007105256A1 (ja) 2006-02-24 2007-09-20 Fujitsu Limited マルチプロセッサシステム、プロセッサ、およびキャッシュ制御方法
WO2008040028A2 (en) * 2006-09-28 2008-04-03 Virident Systems, Inc. Systems, methods, and apparatus with programmable memory control for heterogeneous main memory
US7827360B2 (en) 2007-08-02 2010-11-02 Freescale Semiconductor, Inc. Cache locking device and methods thereof
CN100492274C (zh) 2007-08-17 2009-05-27 杭州华三通信技术有限公司 存储控制系统及其处理节点
US8015365B2 (en) 2008-05-30 2011-09-06 Intel Corporation Reducing back invalidation transactions from a snoop filter
US8055847B2 (en) 2008-07-07 2011-11-08 International Business Machines Corporation Efficient processing of data requests with the aid of a region cache
US8250350B2 (en) 2008-08-26 2012-08-21 Texas Digital And Multimedia Systems Computer system with non-volatile write-protected memory based operating system and secure system architecture
CN101673245B (zh) 2008-09-09 2016-02-03 株式会社东芝 包括存储器管理装置的信息处理装置和存储器管理方法
TW201017421A (en) 2008-09-24 2010-05-01 Panasonic Corp Cache memory, memory system and control method therefor
US8261019B2 (en) 2009-02-13 2012-09-04 Oracle America, Inc. Conveying critical data in a multiprocessor system
US8250282B2 (en) 2009-05-14 2012-08-21 Micron Technology, Inc. PCM memories for storage bus interfaces
US8180981B2 (en) * 2009-05-15 2012-05-15 Oracle America, Inc. Cache coherent support for flash in a memory hierarchy
US8291175B2 (en) * 2009-10-16 2012-10-16 Oracle America, Inc. Processor-bus attached flash main-memory module
US8694737B2 (en) 2010-06-09 2014-04-08 Micron Technology, Inc. Persistent memory for processor main memory

Also Published As

Publication number Publication date
US20110307653A1 (en) 2011-12-15
JP5348429B2 (ja) 2013-11-20
JP2011258193A (ja) 2011-12-22
TW201222252A (en) 2012-06-01
DE102011076895B4 (de) 2014-12-24
US9448938B2 (en) 2016-09-20
CN102279817B (zh) 2015-11-25
KR20110134855A (ko) 2011-12-15
CN102279817A (zh) 2011-12-14
TWI530786B (zh) 2016-04-21
KR101385430B1 (ko) 2014-04-29

Similar Documents

Publication Publication Date Title
DE102011076895B4 (de) Cachekohärenzprotokoll für persistente Speicher
DE102011076894B9 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE102013022712B4 (de) Virtuelle Speicherstruktur für Coprozessoren, die Speicherallokationsbegrenzungen haben
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE102009047518B4 (de) Computersystem und Verfahren geeignet zum Vermeiden von Datenkommunikationsverklemmungssituationen durch Markieren von CPU-Datenverkehr als speziell
DE202015009267U1 (de) Priorisierung von Datenrekonstruktion in verteilten Speichersystemen
DE112009000373T5 (de) Technik, um Information zwischen unterschiedlichen Kohärenz-Domains von Caches zu nutzen
DE102014117465A1 (de) Unterstützter kohärenter gemeinsamer Speicher
DE112017001471T5 (de) Mehrebenen-speichermanagement
DE102013205886A1 (de) Dynamische Bankmodus-Adressierung für Speicherzugriff
DE102019113049A1 (de) VERFAHREN UND VORRICHTUNG ZUR FLUSH-VERWALTUNG EINER ATOMISCHEN GRUPPE VON SCHREIBVORGäNGEN IN PERSISTENTEN SPEICHER ALS REAKTION AUF EINEN UNERWARTETEN STROMAUSFALL
DE102020122182A1 (de) Virtuelle-maschine-replikation und -migration
DE102012222558A1 (de) Signalisieren, Ordnen und Ausführung von dynamisch erzeugten Aufgaben in einem Verarbeitungs-System
DE102007052853A1 (de) Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE102018123669A1 (de) Host-Computer-Anordnung, Remote-Server-Anordnung, Speicherungssystem und Verfahren davon
DE112020000183T5 (de) Speicherungsklassenspeicherzugriff
DE202017104850U1 (de) Neuaufteilen von Daten in einem verteilten Computersystem
DE102018204931A1 (de) Dauerhaftes Caching eines arbeitsspeicherseitigen Cache-Inhalts
DE102019102884A1 (de) Techniken zum Vorabrufen von Daten zu einem ersten Speicherlevel einer hierarchischen Speicheranordnung
DE102022121773A1 (de) In-memory-assoziativverarbeitungssystem
DE112018000842T5 (de) Mehrkern-on-die-speichermikrocontroller
DE102021127151A1 (de) Verfahren und system für libfabric atomics-basierte lockless cluster-wide shared memory access api in einem verteilten system
DE102020128675A1 (de) Puffer zum verringern von schreibverstärkung fehlausgerichteter schreiboperationen
DE112016007538T5 (de) Technologie zur realisierung eines binärverzweigten non-volatile-memory-express-treibers

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R006 Appeal filed
R007 Decision rectified on appeal
R018 Grant decision by examination section/examining division
R020 Patent grant now final