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