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

Cachekohärenzprotokoll für persistente Speicher Download PDF

Info

Publication number
DE102011076895B4
DE102011076895B4 DE102011076895.5A DE102011076895A DE102011076895B4 DE 102011076895 B4 DE102011076895 B4 DE 102011076895B4 DE 102011076895 A DE102011076895 A DE 102011076895A DE 102011076895 B4 DE102011076895 B4 DE 102011076895B4
Authority
DE
Germany
Prior art keywords
memory
cache
storage
persistent
processing units
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
DE102011076895.5A
Other languages
English (en)
Other versions
DE102011076895A1 (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
    • 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
    • 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

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 eingerichtet ist, die Verarbeitungseinheiten in die Lage zu versetzen, um auf den Hauptspeicher gemäß eines Cachekohärenzprotokolls zuzugreifen, und wobei mindestens ein Teil des Hauptspeichers persistenten Speicher aufweist; wobei das Cachekohärenzprotokoll einen ersten In-Bearbeitung-Zustand aufweist, der angibt, ob sich ein Speicherort des Hauptspeichers gegenwärtig in einem Prozess einer Aktualisierung befindet, und einen zweiten Zustand, der angibt, ob der Aktualisierungsprozess abgeschlossen ist, sodass eine Anwendung mit solch einem bestimmten Speicherort, der in einem Cache abgebildet ist, wählen kann, auf ein Abschließen einer Aktualisierungsoperation zu warten oder alternativ die Aktualisierung zu ignorieren und gegenwärtig verfügbare, veraltete Cache-Inhalte zu verwenden.

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.
  • Der Artikel „Phase-Change Technology and the Future of Main Memory” von Benjamin C. Lee et al., Micro, IEEE, 2010, offenbart den Einsatz von PCM (”Phase-Change Memory”) als Alternative zu DRAM für den Hauptspeicher. Das Buch „Computer Architecture. A Quantitative Approach”, von David A. Patterson et al., Second Edition, 1996, offenbart in Abschnitt 8.3 („Centralized Shared-Memory Architectures”) Schemata, um Kohärenz in einer Prozessorarchitektur mit einem geteilten Speicher bereitzustellen.
  • Der Erfindung liegt die Aufgabe zugrunde, eine Speichervorrichtung anzugeben, die Kohärenz gewährleistet und in verbesserter Weise berücksichtigt, dass ein Teil des Hauptspeichers persistenten Speicher aufweist. Der Erfindung liegt auch die Aufgabe zugrunde, ein entsprechendes Verfahren, ein entsprechendes System und einen entsprechenden Hauptspeicher anzugeben.
  • Diese Aufgabe wird durch die Merkmale der Ansprüche 1, 8, 13 und 14 gelöst. Vorteilhafte Ausführungsformen finden sich in den abhängigen Ansprüchen.
  • 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 enthält ein System aus zwei oder mehreren Verarbeitungseinheiten, wie zum Beispiel zentrale Verarbeitungseinheiten (central processing units, CPUs), persistenten Speicher. Ein Cachekohärenzprotokoll für solch ein System enthält Merkmale, um bestimmten Aspekten von persistentem, nichtflüchtigem Speicher Rechnung zu tragen. Wie unten im Detail beschrieben, weisen solche Merkmale einen oder mehrere Cachekohärenzprotokollzustände auf, die angeben, ob ein Prozess zum Aktualisieren eines persistenten Speichers anhängig ist und/oder, ob 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 nichtsymmetrische 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 Implementierung 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 (15)

  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 eingerichtet ist, die Verarbeitungseinheiten in die Lage zu versetzen, um auf den Hauptspeicher gemäß eines Cachekohärenzprotokolls zuzugreifen, und wobei mindestens ein Teil des Hauptspeichers persistenten Speicher aufweist; wobei das Cachekohärenzprotokoll einen ersten In-Bearbeitung-Zustand aufweist, der angibt, ob sich ein Speicherort des Hauptspeichers gegenwärtig in einem Prozess einer Aktualisierung befindet, und einen zweiten Zustand, der angibt, ob der Aktualisierungsprozess abgeschlossen ist, sodass eine Anwendung mit solch einem bestimmten Speicherort, der in einem Cache abgebildet ist, wählen kann, auf ein Abschließen einer Aktualisierungsoperation zu warten oder alternativ die Aktualisierung zu ignorieren und gegenwärtig verfügbare, veraltete Cache-Inhalte zu verwenden.
  2. Speichervorrichtung nach Anspruch 1, wobei die Speichersteuerung weiterhin eingerichtet ist, einen Speicherdeskriptor zum Identifizieren des mindestens einen Teils des Hauptspeichers, der persistenten Speicher aufweist, freizugeben.
  3. Speichervorrichtung nach Anspruch 1, wobei der persistente Speicher einen Phasenänderungsspeicher (PCM) aufweist.
  4. Speichervorrichtung nach Anspruch 1, wobei der persistente Speicher einen Speicher mit asymmetrischen Lese-/Schreibgeschwindigkeiten aufweist.
  5. Speichervorrichtung nach Anspruch 1, wobei die zwei oder mehreren Verarbeitungseinheiten eine Mehrzahl an Zentralverarbeitungseinheiten (CPUs) aufweisen.
  6. Speichervorrichtung nach Anspruch 1, wobei die Speichersteuerung weiterhin eingerichtet 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.
  7. Speichervorrichtung nach Anspruch 6, wobei mindestens ein Teil der einen oder der mehreren Ebenen des Cachespeichers persistenten Speicher aufweist.
  8. Verfahren zum Betreiben einer Speichervorrichtung nach Anspruch 1, wobei die Anwendung mit dem bestimmten Speicherort, der in dem Cache abgebildet ist, wählt, ob auf das Abschließen der Aktualisierungsoperation gewartet wird oder ob alternativ die Aktualisierung ignoriert und die gegenwärtig verfügbaren, veralteten Cache-Inhalte verwendet werden.
  9. Verfahren nach Anspruch 8, wobei der persistente Speicher einen Phasenänderungsspeicher (PCM) aufweist.
  10. Verfahren nach Anspruch 8, wobei der persistente Speicher einen Speicher mit asymmetrischen Lese-/Schreibgeschwindigkeiten aufweist.
  11. Verfahren nach Anspruch 8, wobei das Cachekohärenzprotokoll zumindest teilweise ist auf einer oder mehreren Latenzeigenschaften des persistenten Speichers basiert.
  12. Verfahren nach Anspruch 8, wobei die Mehrzahl der Verarbeitungseinheiten eine oder mehrere Zentralverarbeitungseinheiten (CPUs) aufweist.
  13. System aufweisend: zwei oder mehrere Verarbeitungseinheiten; und eine Speichervorrichtung nach Anspruch 1.
  14. Speichervorrichtung nach Anspruch 1, weiterhin aufweisend einen Hauptspeicher, der einen dynamischen Speicher mit wahlfreiem Zugriff(DRAM)-Teil und einen persistenten Speicherteil aufweist.
  15. Speichervorrichtung nach Anspruch 14, wobei der Hauptspeicher weiterhin einen persistenten Speicherdeskriptor, um Adressen oder Adressbereiche der Speicherorte in den persistenten Speicherteilen zu identifizieren, aufweist.
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 DE102011076895A1 (de) 2011-12-15
DE102011076895B4 true 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 (19)

* 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 한국전자통신연구원 이동 통신 단말 및 방법
US9841920B2 (en) 2011-12-29 2017-12-12 Intel Corporation Heterogeneous memory die stacking for energy efficient computing
US20140114928A1 (en) 2012-10-22 2014-04-24 Robert Beers Coherence protocol tables
DE112013005093T5 (de) * 2012-10-22 2015-10-22 Intel Corporation Hochleistungszusammenschaltungsbitübertragungsschicht
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 华为技术有限公司 数据缓存方法、缓存和计算机系统
US9384133B2 (en) 2014-05-30 2016-07-05 International Business Machines Corporation Synchronizing updates of page table status indicators and performing bulk operations
US9785554B2 (en) 2014-05-30 2017-10-10 International Business Machines Corporation Synchronizing updates of page table status indicators in a multiprocessing environment
US20170192886A1 (en) * 2014-07-31 2017-07-06 Hewlett Packard Enterprise Development Lp 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
US10031834B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
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
JP5071798B2 (ja) 2005-03-31 2012-11-14 日本電気株式会社 計算機システム,メモリ管理方法,およびそのプログラム
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
JP4335300B2 (ja) 2006-02-24 2009-09-30 富士通株式会社 マルチプロセッサシステム、プロセッサ、およびキャッシュ制御方法
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
KR101038167B1 (ko) 2008-09-09 2011-05-31 가부시끼가이샤 도시바 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법
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

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Lee, B. C. et al.: Phase-Change Technology and the Future of Main Memory. In : IEEE Micro January/February 2010, S. 131 - 141 *
Lee, B. C. et al.: Phase-Change Technology and the Future of Main Memory. In : IEEE Micro January/February 2010, S. 131 – 141
Patterson, D. A. Et al.: Computer Architecture A Quantitative Approach, 2nd ed., Morgan Kaufmann Publishers,Inc., 1996. S. 654 - 693 *

Also Published As

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

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
DE102007052853B4 (de) Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter
DE112017001471T5 (de) Mehrebenen-speichermanagement
DE202015009267U1 (de) Priorisierung von Datenrekonstruktion in verteilten Speichersystemen
DE102018123669A1 (de) Host-Computer-Anordnung, Remote-Server-Anordnung, Speicherungssystem und Verfahren davon
DE112009000373T5 (de) Technik, um Information zwischen unterschiedlichen Kohärenz-Domains von Caches zu nutzen
DE102020122182A1 (de) Virtuelle-maschine-replikation und -migration
DE102019113049A1 (de) VERFAHREN UND VORRICHTUNG ZUR FLUSH-VERWALTUNG EINER ATOMISCHEN GRUPPE VON SCHREIBVORGäNGEN IN PERSISTENTEN SPEICHER ALS REAKTION AUF EINEN UNERWARTETEN STROMAUSFALL
DE112008001679T5 (de) Cache-Speicher mit konfigurierbarer Assoziativität
DE102013205886A1 (de) Dynamische Bankmodus-Adressierung für Speicherzugriff
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE102018204931A1 (de) Dauerhaftes Caching eines arbeitsspeicherseitigen Cache-Inhalts
DE102012222558A1 (de) Signalisieren, Ordnen und Ausführung von dynamisch erzeugten Aufgaben in einem Verarbeitungs-System
DE112019001863T5 (de) Verwenden von spursperren und schrittweitengruppensperren zum verwalten von cacheoperationen
DE112017001658T5 (de) Behandlung von fehleranfälligen Cache-Zeilen-Slots eines speicherseitigen Caches eines Multilevel-Systemspeichers
DE112018000842T5 (de) Mehrkern-on-die-speichermikrocontroller
DE102022129936A1 (de) Techniken zur Erweiterung des Systemspeichers durch Nutzung des verfügbaren Gerätespeichers
DE102020103521A1 (de) Minimieren der Nutzung von Hardware-Zählern bei getriggerten Operationen für kollektive Kommunikation
DE102019102884A1 (de) Techniken zum Vorabrufen von Daten zu einem ersten Speicherlevel einer hierarchischen Speicheranordnung
DE202017104850U1 (de) Neuaufteilen von Daten in einem verteilten Computersystem
DE112016007538T5 (de) Technologie zur realisierung eines binärverzweigten non-volatile-memory-express-treibers
DE102020128675A1 (de) Puffer zum verringern von schreibverstärkung fehlausgerichteter schreiboperationen

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