DE102007018033A1 - Kohärenzverzeichnisaktualisierung - Google Patents

Kohärenzverzeichnisaktualisierung Download PDF

Info

Publication number
DE102007018033A1
DE102007018033A1 DE102007018033A DE102007018033A DE102007018033A1 DE 102007018033 A1 DE102007018033 A1 DE 102007018033A1 DE 102007018033 A DE102007018033 A DE 102007018033A DE 102007018033 A DE102007018033 A DE 102007018033A DE 102007018033 A1 DE102007018033 A1 DE 102007018033A1
Authority
DE
Germany
Prior art keywords
directory
memory
local
memory block
transaction
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.)
Ceased
Application number
DE102007018033A
Other languages
English (en)
Inventor
Erin A. Fort Collins Handgen
Patrick Fort Collins Knebel
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of DE102007018033A1 publication Critical patent/DE102007018033A1/de
Ceased legal-status Critical Current

Links

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/0817Cache consistency protocols using directory methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

Eine Kohärenzverzeichnisaktualisierung wird in einem Multiprozessorrechensystem (100) geschaffen. Eine Mehrzahl von Speicherressourcen (150) weisen ein Verzeichnis (170) auf und sind wirksam mit einer Verbindungsstruktur (185) verbunden. Eine Zelle (100A) ist wirksam mit der Verbindungsstruktur (185) verbunden. Die Zelle (100A) weist einen Cache (130) auf, der einen Eintrag (211) für jede einer Mehrzahl von Kohärenzeinheiten (160) umfasst, wobei jede Kohärenzeinheit (160), die in einem Speicherblock (180) umfasst ist, einen zusammenhängenden Abschnitt der Mehrzahl von Speicherressourcen (150) darstellt. Eine Steuerung (142) ist wirksam mit der Verbindungsstruktur (185) verbunden. Die Steuerung (142) ist konfiguriert, um einen Abschnitt der Mehrzahl von Speicherressourcen (150) zu steuern, und weist einen Komparator (141) auf, der konfiguriert ist, um zu identifizieren, ob ein Speicherblock (180) lokal ist. Wenn der Speicherblock (180) lokal ist, ist die Steuerung (142) konfiguriert, um einen Zustand (171) des Verzeichnisses (170) für eine Schreibtransaktion auf Exklusiv einzustellen. Wenn der Speicherblock (180) nicht lokal ist, ist die Steuerung (142) konfiguriert, um den Zustand (171) für eine Schreibtransaktion auf Ungültig einzustellen.

Description

  • In einer modernen Computersystemarchitektur werden mehrere Speicher-Caches beibehalten, um die Latenzzeit beim Zugreifen auf den Hauptspeicher zu reduzieren. Ein Cache weist üblicherweise eine Mehrzahl von Einträgen auf. Jeder Eintrag enthält eine bestimmte Anzahl von Bytes, die als Cacheleitung bekannt ist.
  • Wenn ein Prozessor eine Änderung an Daten in dem Hauptspeicher ausführt, können Kopien der Daten, die in einem oder mehreren der Caches beibehalten werden, inkonsistent (z. B. veraltet oder überholt) mit dem Hauptspeicher oder mit anderen Caches werden. Auf ähnliche Weise, wenn ein Prozessor eine Änderung an Daten in einem der Caches ausführt, können Kopien der Daten in dem Hauptspeicher oder in anderen Caches inkonsistent mit den geänderten Daten werden. Cache-Kohärenzprotokolle werden verwendet, um die Konsistenz von Daten zwischen Caches beizubehalten. Es gibt zwei allgemeine Klassen von Cachekohärenzprotokollen: Schnüffeln und Verzeichnis-basiert.
  • Bei einem Schnüffelprotokoll weist jeder Cache, der eine Kopie der Daten aus einem Block eines physischen Speichers aufweist, ebenfalls eine Kopie von Informationen über den Datenblock auf. Jeder Cache ist üblicherweise auf einem gemeinschaftlich verwendeten Speicherbus angeordnet, und alle Cachesteuerungen überwachen den Bus oder schnüffeln auf dem Bus, um zu bestimmen, ob sie eine Kopie des gemeinschaftlich verwendeten Blocks aufweisen oder nicht. Üblicherweise wurden Schnüffel- bzw. Abhör-Protokolle primär in einem kleinen Multiprozessor oder einzelnen Prozessorsystemen verwendet, während größere Hochleistungs-Multiprozessorsysteme verzeichnisbasierte Kohärenzprotokolle verwenden.
  • Bei einem verzeichnisbasierten Protokoll wird ein Verzeichnis verwendet, um eine Speichercachekohärenz und einen Zustand beizubehalten. Eine Kohärenzeinheit ist ein Block eines physischen Speichers, der einer Cacheleitung entspricht. Üblicherweise ist die kleinste Einheit eines Speichers, die zwischen dem Hauptspeicher und dem Cache übertragen werden kann, eine Kohärenzeinheit. Informationen über eine Kohärenzeinheit werden an nur einem Ort gehalten; d. h., jede Kohärenzeinheit weist ein Verzeichnis auf. Informationen in dem Verzeichnis umfassen allgemein, welcher Cache oder welche Caches eine Kopie der Kohärenzeinheit aufweisen, und ob diese Kopie ausschließlich für eine zukünftige Modifikation markiert ist. Ein Zugriff auf eine bestimmte Kohärenzeinheit fragt zuerst das Verzeichnis ab. Wenn ein Cache eine exklusive Kopie aufweist, können die Speicherdaten in der Kohärenzeinheit überholt sein. Die echten Daten können dann eine modifizierte Cacheleitung sein, die in dem exklusiven Cache vorliegt. Wenn es möglich ist, dass die Daten in der Kohärenzeinheit überholt sind, dann wird der Cache, der die echten Daten enthält, gezwungen, seine Daten zu der entsprechenden Kohärenzeinheit in dem Hauptspeicher zurückzusenden. Der physische Speicher leitet dann die Daten zu der neuen Anforderungseinrichtung weiter, die das Verzeichnis mit dem neuen Cacheort dieser Kohärenzeinheit aktualisiert.
  • Häufig wird ein dynamischer Direktzugriffsspeicher (DRAM; dynamic random access memory) verwendet, um das Verzeichnis zu speichern. Ein großer Teil einer Speicherbandbreite und einer Leistung kann jedoch für das Zugreifen auf und Aktualisieren von Verzeichnissen verbraucht werden. Die Verwendung eines chipintegrierten Verzeichniscaches kann die Menge externer Speicherbandbreite reduzieren, ist jedoch allgemein nicht erwünscht, aufgrund von erhöhten Kosten einer anwendungsspezifischen, integrierten Schaltung (ASIC), aufgrund einer Vergrößerung des Siliziumbereichs und der Entwurfskomplexität, und erhöhten chipintegrierten Leistungsanforderungen.
  • Im Gegensatz zu älteren Speichermodulen mit beidseitig beschichteter Platine (DIMMs; dual inline memory modules), verwenden vollständig gepufferte DIMM-Module (FBD-Module; FBD = fully-buffered DIMM) serielle Hochgeschwindigkeitsverknüpfungen. FBD DIMMs sind im Allgemeinen in der Lage, zweimal soviel Lesebandbreite bereitzustellen wie Schreibbandbreite, basierend auf einer Entwurfsannahme, dass Anwendungen mehr Lesebandbreite benötigen als Schreibbandbreite. Diese Annahme ist problematisch für bestehende, verzeichnisbasierte System, da Verzeichnisaktualisierungen verursachen können, dass sich die Schreibbandbreite relativ zu der Lesebandbreite verdoppelt oder verdreifacht, was eine schlechte Verwendung der verfügbaren Speicherbandbreite verursacht. Insbesondere bei High-End-Server-Chipsatz-Architekturen können Situationen entstehen, in denen ein Prozessor zwei Lesetransaktionen pro Schreibtransaktion ausgibt. Wenn z. B. Verzeichnisinformationen für Cacheleitungs-Besitz in den DIMMs beibehalten wird, verwandelt sich eine typische Speicherlesetransaktion aus der Perspektive der DIMMs in eine Lesen-Modifizieren-Schreiben-Transaktion. Bei einem darstellenden Beispiel können zwei Prozessor-Lesevorgänge und ein Prozessor-Schreibvorgang zu zusätzlichen Verzeichnisaktualisierungen führen, was zwei DRAM-Speicher-Lesevorgänge und drei DRAM-Speicher-Schreibvorgänge ergibt und somit 60 % mehr Speicherbandbreite und Leistung verbraucht als die Cacheleitungszugriffe allein.
  • Es ist die Aufgabe der vorliegenden Erfindung, ein System und ein Verfahren für ein Kohärenzverzeichnisaktualisieren in einem Multiprozessorrechensystem mit verbesserten Charakteristika zu schaffen.
  • Diese Aufgabe wird durch ein System gemäß Anspruch 1 und 9 und ein Verfahren gemäß Anspruch 5 gelöst.
  • Zum Zweck der Darstellung der Erfindung ist in den Zeichnungen eine Form gezeigt, die gegenwärtig exemplarisch ist; es wird jedoch darauf hingewiesen, dass diese Erfindung nicht auf die genauen Anordnungen und Instrumentalitäten beschränkt ist, die gezeigt sind.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
  • 1 ein Blockdiagramm, das eine exemplarische Speicherorganisation in einem Multiprozessorrechensystem gemäß einem Ausführungsbeispiel der Erfindung zeigt;
  • 2A ein Diagramm, das Merkmale eines Cache gemäß einem Ausführungsbeispiel der Erfindung darstellt;
  • 2B ein Diagramm, das einen darstellenden Cacheeintrag in einem Cachespeicher gemäß einem Ausführungsbeispiel der Erfindung zeigt;
  • 3 ein Flussdiagramm eines Verfahrens zur Kohärenzverzeichnisaktualisierung, das kein Ausführungsbeispiel der vorliegenden Erfindung verwendet, um zu prüfen, ob ein Speicherblock eine lokale Speicherregion ist; und
  • 4 ein Flussdiagramm eines exemplarischen Verfahrens zur Kohärenzverzeichnisaktualisierung gemäß einem Ausführungsbeispiel der vorliegenden Erfindung.
  • Übersicht
  • Aspekte der Erfindung sind in der Lage, das Verhalten zu verbessern und den Leistungsverbrauch für verzeichnisba sierte Systeme zu reduzieren, die einen DRAM-Speicher zum Speichern und Aktualisieren von Verzeichnissen verwenden, durch Bereitstellen eines kostengünstigen Mechanismus zum Reduzieren der Bandbreite, die für Verzeichnisaktualisierungen erforderlich ist, während der Betrag an Bandbreite vergrößert wird, der für Softwareanwendungen und ein Betriebssystem verfügbar ist. Ein minimaler Siliziumbereich und ein Verifizierungs-Mehraufwand ist erforderlich, um eine Verzeichnistaktik gemäß Ausführungsbeispielen der vorliegenden Erfindung zu implementieren.
  • Bei Multiprozessorrechensystemen ist der Speicher im Allgemeinen unter verschiedenen Prozessoren verteilt. Ein Speicher, der lokal an einem Prozessor ist (z. B. an dieselbe ASIC angebracht ist oder auf demselben Motherboard vorliegt), kann gemeinschaftlich durch viele Prozessoren verwendet werden oder kann primär durch die lokalen Prozessoren verwendet werden. Einige Speicherregionen können im Wesentlichen als für lokale Prozessoren reserviert bezeichnet sein oder für einen bestimmten Prozess-Thread (Teilprozess), der auf lokalen Prozessoren läuft. Bei einem exemplarischen Ausführungsbeispiel werden solche Regionen lokale Speicherregionen genannt. Darstellende Beispiele von lokalen Speicherregionen umfassen lokale Zellspeicherregionen (CLM-Regionen; CLM = cell local memory), und andere Arten von Ein-Eigentümer-Speicherregionen. In solchen Speicherregionen neigt jede Cacheleitung dazu, dass sie im Besitz von oder reserviert ist für einen einzelnen Cache-Agenten.
  • Bei einem darstellenden Ausführungsbeispiel, das in 1 gezeigt ist, ist eine lokale Speicherregion eine CLM-Region. Bei einigen Ausführungsbeispielen sind CLM-Regionen Hauptspeicherregionen, die eine nichteinheitliche Speicherzugriffs-Affinität mit niedriger Latenzzeit (NUMA-Affinität; NUMA = non-uniform memory access) für einen spezifischen Satz aus einem oder mehreren Prozess-Threads aufweisen, die auf einer oder mehreren CPUs laufen, die ihrer seits auf einem oder mehreren CPU-Sockeln vorliegen. Bei einem darstellenden Beispiel können exemplarische Systeme, die auf dem sx2000-Sever-Chipsatz basieren (handelsüblich erhältlich von der Hewlett-Packard Company) bis zu 16 Prozess-Threads aufweisen, die auf acht Doppel-Thread-Prozessorkernen laufen, die sich in vier CPU-Sockeln für eine CLM-Region befinden. Bei anderen Ausführungsbeispielen, wie z. B. bei Systemen mit integrierten Speichersteuerungen auf dem CPU-Sockel, kann jede CLM-Region nur Prozess-Threads unterstützen, die auf dem CPU-Sockel laufen. Die Bezeichnung einer Speicherregion als eine CLM-Region zeigt bei einigen Ausführungsbeispielen nur an, dass ein spezifischer Prozess-Thread eine Affinität für die CLM-Region aufweist, aber garantiert nicht einen exklusiven Zugriff auf die CLM-Region durch den bevorzugten Prozess-Thread.
  • Aspekte der Erfindung identifizieren lokale Speicherregionen, wie z. B. unter Verwendung eines inhaltsadressierbaren Speichers (CAM; content-addressable memory) (z. B. einen kleinen und kostengünstigen Adress-CAM), mit Zustandsinformationen zum Identifizieren lokaler Speicherregionen. Ausführungsbeispiele der Erfindung implementieren eine spezialisierte Verzeichnis-Aktualisierungs-Taktik für einen Speicher in einer lokalen Speicherregion. Weitere Aspekte der Erfindung vermeiden das Ändern des Verzeichniszustands einer lokalen Speichercacheleitung, da bei einigen Ausführungsbeispielen die Cacheleitung im Allgemeinen primär im Besitz desselben Prozessor-Threads ist (was denselben Cache-Agenten impliziert).
  • Ein verzeichnisbasiertes System gemäß einem Ausführungsbeispiel der Erfindung weist exklusive (E), gemeinschaftlich verwendete (S; shared), und ungültige (I; invalid) Verzeichniszustände auf. Daher sind die möglichen Verzeichniszustandsübergänge E-zu-E, E-zu-S, E-zu-I, S-zu-E, S-zu-S, S-zu-I, I-zu-E, I-zu-S und I-zu-I. Für Speicherregionen, auf die primär durch einen einzelnen Prozessor zugegriffen wird, wie z. B. lokale Speicherregionen, sind die E-zu-I und I-zu-E-Verzeichnisübergänge am häufigsten vorherrschend.
  • Bei einem typischen, exemplarischen Multiprozessorrechensystem, das verzeichnisbasierte Kohärenzprotokolle verwendet, zeigen schätzungsweise bis zu 50 % aller Speicherzugriffe E-zu-I-Verzeichniszustandsübergänge. Dementsprechend können durch Ändern der Verzeichnistaktik für lokale Speicherregionen derart, dass E-zu-I-Verzeichniszustandsübergänge verboten sind, Ausführungsbeispiele der Erfindung die Anzahl von Verzeichnisübergängen wesentlich reduzieren, wodurch zusätzliche Bandbreite und Leistung reduziert wird, die für Verzeichnisaktualisierungen erforderlich ist.
  • Ausführungsbeispiele der Erfindung ermöglichen es verzeichnisbasierten Multiprozessorrechensystemen, wie z. B. jenen, die die FBD-DIMM-Technik verwenden, mehr Speicherbandbreite zu gewinnen, durch Reduzieren der Menge an verschwenderischen Schreibvorgängen auf einem Schreibkanal. Eine solche Reduzierung hat auch indirekt Einfluss auf die Bandbreite auf einem Lesekanal. Daher ist mehr Bandbreite für die Anwendung verfügbar und weniger wird für unnötige Verzeichnisaktualisierungen verschwendet. Durch Reduzieren der Anzahl von Schreibvorgängen kann weniger Leistung für einen gegebenen Pegel eines Rechenverhaltens verbraucht werden.
  • Darstellende Rechenumgebun
  • Bezug nehmend auf die Zeichnungen, in denen gleiche Bezugszeichen gleiche Elemente darstellen, zeigt 1 eine exemplarische Speicherorganisation in einem Multiprozessorrechensystem 100 gemäß einem Ausführungsbeispiel der Erfindung, bei dem die hierin beschriebenen Verfahren und Vorrichtungen eingesetzt werden können. Das Multiprozessorrechensystem 100 weist eine Mehrzahl von Zellen 100A...100N auf. Zu darstellenden Zwecken ist die Zelle 100A detail lierter gezeigt als die Zellen 100B...100N, wobei jede derselben funktional ähnlich zu der Zelle 100A oder im Wesentlichen identisch zu der Zelle 100A ist.
  • Jede der Zellen 100A...100N ist mit einer Verbindungsstruktur 185 verbunden, durch die auf Speicherressourcen zugegriffen werden kann. Die Verbindungsstruktur 185 kann eine Netzwerkinfrastruktur zum Verbinden von Systemressourcen umfassen, wie z. B. Chips, Zellen, Speichersteuerungen, und ähnlichem. Die Verbindungsstruktur 185 kann z. B. Schalter, Router, Rückwandplatinen und/oder Kreuzschienen umfassen. Bei einem weiteren darstellenden Beispiel kann eine Verbindungsstruktur 185 ein InfiniBand-System mit Hostkanal-Adaptern in Servern, Zielkanal-Adaptern in Speichersystemen oder Gateways und eine Verbindungshardware aufweisen (z. B. Schalter, die Fibre Channel und/oder Ethernet Verbindungen verwenden).
  • Bei einem exemplarischen Ausführungsbeispiel ist das System 100 in der Lage, mehrere Instanzen eines Betriebssystems zu betreiben, durch definieren mehrerer Partitionen, die durch Software verwaltet und neu konfiguriert werden können. Bei solchen Ausführungsbeispielen umfasst eine Partition eine oder mehrere der Zellen 100A...100N, die der Partition zugewiesen sind, ausschließlich durch die Partition verwendet werden und nicht durch andere Partitionen in dem System 100 verwendet werden. Jede Partition richtet einen Teilsatz der Hardwareressourcen des Systems 100 ein, die als eine Systemumgebung zum Booten einer einzelnen Instanz des Betriebssystems verwendet werden sollen. Dementsprechend sind alle Prozessoren, Speicherressourcen und I/O in einer Partition ausschließlich für die Software verfügbar, die in der Partition läuft.
  • Eine exemplarische Partition 190 ist in dem dargestellten Ausführungsbeispiel gezeigt; Ausführungsbeispiele der Erfindung sind jedoch in Systemen verwendbar, die ein Partitionieren unterstützen, und in Systemen, die ein Partitionieren nicht unterstützen. Die exemplarische Partition 190 weist eine Zelle 100A und eine Zelle 100B auf. Bei dem Ausführungsbeispiel, das in 1 gezeigt ist, kann jeder der Zellen 100A...100N eine und nur eine Partition zugewiesen sein; dementsprechend können weitere exemplarische Partitionen (nicht gezeigt) definiert sein, um jegliche der Zellen 100C...100N zu umfassen.
  • Bei einem darstellenden Beispiel eines Multiprozessorrechensystems 100 mit einer Mehrzahl von Zellen 100A...100N können eine oder mehrere Zellenplatinen vorgesehen sein. Jede Zellenplatine kann eine Zellensteuerung und eine Mehrzahl von CPU-Sockeln 110 umfassen. Bei dem exemplarischen Ausführungsbeispiel ist jede der Zellen 100A...100N einem CPU-Sockel 110 zugeordnet. Jeder CPU-Sockel 110 kann mit einem CPU-Modul ausgestattet sein (z. B. einem Einzelprozessormodul, einem Dual-Prozessor-Modul oder jeglichem Typ eines Mehrfachprozessormoduls), zum Ausrüsten des Systems 100 mit einer Mehrzahl von CPUs, wie z. B. der exemplarischen CPU 120.
  • Bei einem exemplarischen Ausführungsbeispiel ist eine CPU 120, wie z. B. durch eine interne Verknüpfung, mit einem Prozessor-Cache-Speicher gekoppelt, wie z. B. dem Cache 130. Der Cache 130 kann z. B. ein Agent oder ein Logikblock sein, der in einem Chipsatz für das System 100 implementiert ist. Bei einigen Ausführungsbeispielen kann der Cache 130 in dem CPU-Sockel 110 angeordnet sein. Der Cache 130 umfasst eine Mehrzahl von Eingängen, die jeweils eine Cacheleitung und zusätzliche Informationen für die Cacheleitung aufweisen, wie in 2A und 2B unten gezeigt ist.
  • Der Cache 130 ist bei dem exemplarischen Ausführungsbeispiel mit einer Speichersteuerung 142 mit einer Kohärenzsteuerung 140 verbunden (z. B. elektronisch gekoppelt oder über eine Verbindungsstruktur 185 mit derselben verbunden); bei anderen Ausführungsbeispielen jedoch kann der Cache 130 entworfen sein, um jegliche gewünschte Anzahl von Speichersteuerungen 142 und Kohärenzsteuerungen 140 zu unterstützen.
  • Jede Speichersteuerung 142 ist in der Lage, physische Speicherressourcen 150 zu unterstützen, die ein oder mehrere Speichermodule oder -banken umfassen, die einen oder mehrere herkömmliche oder handelsüblich erhältliche dynamische Direktzugriffsspeicher (DRAM), synchrone DRAM (SDRAM), Doppeldatenraten-SDRAM (DDR-SDRAM) oder Rambus-DRAM (RDRAM) Speichervorrichtungen unter anderen Speichervorrichtungen sein und/oder umfassen können. Für organisatorische Zwecke sind diese Speicherressourcen 150 in Blöcke organisiert, die Speicherblöcke 180 genannt werden. Jede Speichersteuerung 142 kann eine Mehrzahl von Speicherblöcken 180 unterstützen.
  • Jede Kohärenzsteuerung 140 umfasst einen zugeordneten Komparator, wie z. B. einen Speicherziel-CAM (MTC; memory target CAM) 141. Der MTC 141 umfasst Einträge, wobei sich jeder Eintrag auf einen Speicherblock 180 bezieht. Jeder Speicherblock 180 weist eine Mehrzahl von Kohärenzeinheiten auf, wie z. B. exemplarische Kohärenzeinheiten 160A, 160B, 160C, 160D, 160E, 160F...160N (allgemein bezeichnet als „160"). Jede Kohärenzeinheit 160 in dem System 100 ist Teil eines Speicherblocks 180.
  • Bei einem Ausführungsbeispiel der Erfindung umfasst jeder der Einträge in der MTC 141 Zustandsinformationen, um anzuzeigen, ob der zugeordnete Speicherblock 180 eine lokale Speicherregion ist. Jeder Speicherblock 180 kann als eine CLM-Region oder als eine nichtlokale Speicherregion bezeichnet sein.
  • Bei dem dargestellten Beispiel ist der Speicherblock 180 eine lokale Speicherregion und der Speicherblock 180 umfasst Kohärenzeinheiten 160E...160N. Dementsprechend umfasst der Eintrag in der MTC 141 für den Speicherblock 180 Zustandsinformationen, die anzeigen, dass der Speicherblock 180 eine lokale Speicherregion ist. Die Zustandsinformationen, die durch die MTC 141 geliefert werden, können durch die Kohärenzsteuerung 140 und/oder die Speichersteuerung 142 verwendet werden, um zu bestimmen, ob jegliche der Kohärenzeinheiten 160 in einer lokalen Speicherregion umfasst ist (wie z. B. dem dargestellten Speicherblock 180).
  • Während die Darstellung Speicherressourcen 150 zeigt, die in eine Mehrzahl von Kohärenzeinheiten 160 organisiert sind, kann bei einigen Ausführungsbeispielen jegliche Anzahl von Kohärenzeinheiten 160 vorgesehen sein. Während die Darstellung nur einen Speicherblock 180 explizit zeigt, kann jegliche Anzahl von Speicherblöcken 180 vorgesehen sein.
  • Ein Datenfeld 270 (gezeigt in 2B), das Speicherdaten enthält, die einer Cacheleitung 220 entsprechen (gezeigt in 2B), ist in jeder Kohärenzeinheit 160 der Speicherressourcen 150 umfasst. Ein Verzeichnis 170 ist ferner in jeder Kohärenzeinheit 160 der Speicherressourcen 150 umfasst. Jedes Verzeichnis 170 enthält Informationen, die dem Cache-Speichern bzw. Zwischenspeichern der Speicherressourcen 150 zugeordnet sind. Ein exemplarisches Verzeichnis 170 kann verfolgen, wohin die entsprechende Kohärenzeinheit 160 zwischengespeichert wurde. Beispiele von Informationen in einem Verzeichnis 170 umfassen das Eigentums-Feld 172 (gezeigt in 2B) für Cacheleitungen, wie z. B. Daten, die die Kohärenzeinheit 160 einem bestimmten Cache 130 auf dem System 100 zuordnen.
  • Es wird darauf hingewiesen, dass das exemplarische Computersystem 100 ausschließlich darstellend für eine Rechenumgebung ist, in der die hierin beschriebenen Systeme und Verfahren arbeiten können, und die Implementierung der hierin beschriebenen Systeme und Verfahren in Rechenumgebungen mit unterschiedlichen Komponenten und Konfiguration nicht einschränkt, da die erfindungsgemäßen Konzepte, die hierin beschrieben sind, in verschiedenen Rechenumgebungen mit verschiedenen Komponenten und Konfigurationen implementiert sein können. Die Erfindung ist für viele unterschiedliche Typen von Prozessoren und Multiprozessorarchitekturen angepasst.
  • Exemplarische Cache-Merkmale
  • 2A ist ein Diagramm, das Merkmale eines Caches 130 gemäß einem Ausführungsbeispiel der Erfindung darstellt. Bei einem Ausführungsbeispiel kann der Cache 130 als ein Agent oder als ein Logikblock in einem Chipsatz für das System 100 oder auf einem CPU-Sockel 110 implementiert sein. Der Cache 130 umfasst eine Cache-Tabelle 210 mit einer Mehrzahl von Cache-Einträgen 211A, 211B, 211C...211N (jeder ein Cacheeintrag 211).
  • 2B ist ein Diagramm, das einen darstellenden Cacheeintrag 211 in einem Cache 130 zum Praktizieren eines Ausführungsbeispiels der Erfindung zeigt. Jeder Cacheeintrag 211 umfasst ein Datum mit einer festen Anzahl von Bytes, bekannt als eine Cacheleitung 220, zum Halten einer Kopie eines Datenfeldes 270 einer ausgewählten Kohärenzeinheit 160, die in dem Hauptspeicher vorliegt. Der Hauptspeicher umfasst z. B. Speicherressourcen 150, wie z. B. einen DRAM-Speicher, der jeglicher der Zellen 100A...100N zugeordnet ist. Bei einigen Ausführungsbeispielen ist eine Kohärenzeinheit 160 die kleinste Speichereinheit, die zwischen Hauptspeicher und dem Cache 130 übertragen werden kann.
  • Bei einigen Ausführungsbeispielen umfasst der Cacheeintrag 211 zusätzliche Informationen, die der Cacheleitung 220 zugeordnet sind. Ein darstellendes Beispiel des Cacheeintrags 211 umfasst ein Adress-Etikett 230 und Zustandsinformationen, wie z. B. Zustand 250. Bei einigen Ausführungsbeispielen ist das Adress-Etikett 230 ein Wert (z. B. ein Schlitz-Etikett), der verwendet werden kann, um den Cacheeintrag 211 an ausgewählte Bits einer Adresse 260 für die Kohärenzeinheit 160 in dem Hauptspeicher entsprechend der Cacheleitung 220 anzupassen. Die ausgewählten Bits der Adresse 260 müssen nicht zusammenhängend sein und sind im Allgemeinen nicht zusammenhängend.
  • Beispiele von Zustandsinformationen können Informationen umfassen, wie z. B. ein gültiges Bit, ein Bit mit modifiziertem Speicherinhalt (dirty bit; schmutziges Bit), und andere Datenelemente, die in der Lage sind, einen oder mehrere Zustände darzustellen, die der Cacheleitung 220 zugeordnet sind. Bei einem Ausführungsbeispiel der Erfindung weist der Zustand 250 einen Wert auf, der einen modifizierten Zustand, einen exklusiven Zustand, einen gemeinschaftlich verwendeten Zustand und einen ungültigen Zustand darstellen kann.
  • Bei einem Ausführungsbeispiel umfasst das Verzeichnis 170 Verzeichniszustandsinformationen, die der Kohärenzeinheit 160 zugeordnet sind. Gemäß einem Ausführungsbeispiel der Erfindung umfasst das Verzeichnis 170 einen Verzeichniszustand 171 mit einem Wert, der einen exklusiven Zustand, einen gemeinschaftlich verwendeten Zustand und einen ungültigen Zustand darstellen kann. Bei weiteren Ausführungsbeispielen umfasst das Verzeichnis 170 ein Eigentumsfeld 172 für die Kohärenzeinheit 160, wie z. B. Daten, die die Kohärenzeinheit 160 einem bestimmten Cache 130 auf dem System 100 zuordnen.
  • Exemplarische Verfahren
  • 3 ist ein Flussdiagramm eines Verfahrens 300 zur Kohärenzverzeichnisaktualisierung, das kein Ausführungsbeispiel der vorliegenden Erfindung verwendet, um zu prüfen, ob ein Speicherblock 180 eine lokale Speicherregion ist.
  • Das Verfahren 300 beginnt bei Startblock 301 und schreitet zu Block 310 fort. Bei Block 310 wird eine Speichertransaktion decodiert, wie z. B. durch die Speichersteuerung 142 oder die Kohärenzsteuerung 140, so dass die Speichertransaktion unter Verwendung des Cache 130 ausgeführt werden kann. Die Speichertransaktion kann von der lokalen CPU 120 empfangen worden sein; z. B. eine Anforderung durch eine Anwendung, die auf der CPU 120 läuft. Bei anderen Ausführungsbeispielen kann die Speichertransaktion über die Verbindungsstruktur 185 von einer der Zellen 100A...100N empfangen worden sein.
  • Beispiele von Typen von Speichertransaktionen umfassen Lesetransaktionen, Schreibtransaktionen und ausgestoßene Transaktionen (z. B. saubere Auswürfe einer Cacheleitung 220). Bei einem Ausführungsbeispiel wird eine Adresse 260 (z. B. eine physische Adresse) für einen gewünschten Speicherblock 180 decodiert, nachdem die Transaktion ausgeführt werden soll. Bei einigen Ausführungsbeispielen wird die Adresse 260 durch einen Übersetzungspuffer (translation lookaside buffer; TLB) von einer virtuellen Adresse in eine physische Adresse übersetzt. Bei anderen Ausführungsbeispielen kann die Adresse 260 eine Systemadresse sein, hergeleitet aus einer physischen Adresse. Bei weiteren Ausführungsbeispielen kann die Adresse 260 eine Strukturadresse sein. Unter Verwendung der Adresse 260 wird ein Cacheeintrag 211 ausgewählt.
  • Bei Block 320 wird eine Prüfung ausgeführt, wie z. B. durch die Speichersteuerung 142 oder die Kohärenzsteuerung 140, basierend auf dem Typ der Speichertransaktion. Wenn der Typ der Speichertransaktion eine Lesetransaktion ist, fährt das Verfahren 300 mit Block 330 fort. Wenn der Typ der Speichertransaktion eine saubere Auswurf-Transaktion ist (clean cast-out), fährt das Verfahren 300 ebenfalls mit Block 330 fort. Wenn der Typ der Speichertransaktion eine Schreibtransaktion ist, fährt das Verfahren 300 mit Block 350 fort.
  • Bei Block 330 liest die Speichersteuerung 142 oder die Kohärenzsteuerung 140 Daten in die Speicherressourcen 150 (z. B. DIMMs, FBD-DIMMs, DRAM) für die Kohärenzeinheit 160, die der Cacheleitung 220 entspricht. Die Kohärenzeinheit 160 umfasst ein Datenfeld 270 und ein Verzeichnis 170.
  • Bei Block 340 schreibt die Speichersteuerung 142 oder die Kohärenzsteuerung 140 Daten in Speicherressourcen 150 (z. B. DIMMs, FBD-DIMMs, DRAM) für die Kohärenzeinheit 160, die der Cacheleitung 220 entspricht. Die Kohärenzeinheit 160 umfasst das Datenfeld 270 und das Verzeichnis 170. Wenn der Typ der Speichertransaktion eine Lesen-Ungültigerklären-Transaktion ist, schreibt ein exemplarisches Ausführungsbeispiel den Verzeichniszustand 171 als exklusiv (z. B. „E"), und schreibt das Eigentumsfeld 172 mit einem Wert, der das Eigentum durch den Cache 130 identifiziert, der die Lesetransaktion initiiert hat. Wenn der Typ der Speichertransaktion eine saubere Auswurf-Transaktion ist, schreibt ein exemplarisches Ausführungsbeispiel den Verzeichniszustand 171 als ungültig (z. B. „I"), was anzeigt, dass der Wert des Eigentumsfeldes 172 unwichtig ist. Das Verfahren 300 endet dann bei Block 399.
  • Bei Block 350 schreiben die Speichersteuerung 142 oder die Kohärenzsteuerung 140 für eine Schreibtransaktion Daten in die Speicherressourcen 150 (z. B. DIMMs, FBD-DIMMs, DRAM) für die Kohärenzeinheit 160, die der Cacheleitung 220 entspricht. Die Kohärenzeinheit 160 umfasst das Datenfeld 270 und das Verzeichnis 170. Bei einigen Ausführungsbeispielen stellen die Speichersteuerung 142 oder die Kohärenzsteuerung 140 die Zustandsinformationen des Verzeichnisses 170 ein, um einen ungültigen Zustand darzustellen (der auch anzeigt, dass der Wert des Eigentumsfeldes 172 unwichtig ist), bevor das Verzeichnis 170 in die Speicherressourcen 150 als Teil der Kohärenzeinheit 160 geschrieben wird. Das Verfahren 300 endet dann bei Block 399.
  • 4 ist ein Flussdiagramm eines exemplarischen Verfahrens 400 zur Kohärenzverzeichnisaktualisierung gemäß einem zweiten Ausführungsbeispiel der vorliegenden Erfindung.
  • Das Verfahren 400 beginnt bei Startblock 301 und schreitet zu Block 310 fort. Block 310 ist wie oben Bezug nehmend auf 3 beschrieben wurde.
  • Die Prüfung bei Block 320 wird ausgeführt, wie oben Bezug nehmend auf 3 beschrieben wurde. Basierend auf der Prüfung bei Block 320, fährt das Verfahren 400 mit Block 330 fort, wenn der Typ der Speichertransaktion eine Lesetransaktion ist. Wenn der Typ der Speichertransaktion eine saubere Auswurftransaktion ist, fährt das Verfahren 400 mit Block 370A fort. Wenn der Typ der Speichertransaktion eine Schreibtransaktion ist, fährt das Verfahren 400 mit Block 370B fort.
  • Block 330 ist, wie oben Bezug nehmend auf 3 beschrieben wurde. Das Verfahren 400 fährt mit Block 360 fort, wo eine Prüfung ausgeführt wird, um die Richtigkeit des Verzeichnisses 170 zu bestimmen; z. B. ob das Verzeichnis 170 in einem korrekten Zustand ist. Die Prüfung bezieht sich auf die Kombination des Verzeichniszustands 171 und der Eigentumsinformationen in dem Eigentumsfeld 172 des Verzeichnisses 170. Die Prüfung bestimmt, ob das Eigentumsfeld 172 für das Verzeichnis 170, das in den Speicherressourcen 150 vorliegt, bereits ordnungsgemäß aufzeichnet, dass der Cache 130, der die Lesetransaktion ausgegeben hat, der Eigentümer der Cacheleitung 220 ist. Der Zustand des Verzeichnisses 170 wird als korrekt betrachtet, wenn er nicht als Ergebnis der aktuellen Transaktion geändert werden muss.
  • Wenn das Verzeichnis 170 in dem korrekten Zustand ist, ist keine Aktion erforderlich, und das Verfahren 400 endet bei Block 399. Dementsprechend, bei einem Ausführungsbeispiel der Erfindung, wenn eine Aktualisierung an dem Verzeichnis 170 zu keiner Änderung an dem Zustand des Verzeichnisses 170 führen würde, wird die Verzeichnisaktualisierung verworfen. Auf diese Weise vermeiden Ausführungsbeispiele der Erfindung verschwenderische Aktualisierungen des Verzeichnisses 170 für Lesetransaktionen, die den Zustand des Verzeichnissen 170 in den Speicherressourcen 150 eigentlich nicht ändern. Das heißt, in dem Fall, dass die Kohärenzeinheit 160 in einem Speicherblock 180 umfasst ist, der eine lokale Speicherregion ist, wird der vorangehende Cache 130 als Eigentümer der Cacheleitung 220 gelassen. In diesem Fall ist das Verzeichnis 170 in dem Hauptspeicher bereits korrekt und muss nicht mit einem Speicherschreibvorgang aktualisiert werden.
  • Wenn das Verzeichnis 170 nicht in dem korrekten Zustand ist, fährt das Verfahren 400 mit Block 340 fort, der wie oben Bezug nehmend auf 3 beschrieben wurde erfolgt, und nachfolgend endet das Verfahren 400 bei Block 399.
  • Wenn der Typ der Speichertransaktion eine saubere Auswurftransaktion ist, basierend auf der Prüfung bei Block 320, dann wird bei Block 370A eine Prüfung ausgeführt, um zu bestimmen, ob der Speicherblock 180, der die Kohärenzeinheit 160 aufweist, die der Cacheleitung 220 entspricht, lokal ist; d. h., ob die Kohärenzeinheit 160 Teil eines Speicherblock 180 ist, der eine lokale Speicherregion ist. Bei einem Ausführungsbeispiel wird die Prüfung bei Block 370A durch die MTC 141 ausgeführt.
  • Wenn der Speicherblock 180, der die Kohärenzeinheit 160 aufweist, nicht lokal ist, fährt das Verfahren 400 mit Block 330A fort, der identisch zu Block 330 ist, der oben Bezug nehmend auf 3 beschrieben wurde. Das Verfahren 400 fährt mit Block 340 fort, der so ist, wie oben Bezug nehmend auf 3 beschrieben wurde. Das Verfahren 400 endet dann bei Block 399.
  • Wenn der Speicherblock 180, der die Kohärenzeinheit 160 aufweist, lokal ist, ist keine Aktion erforderlich, und das Verfahren endet bei Block 399. Auf diese Weise verwerfen Ausführungsbeispiele der Erfindung die saubere Auswurftransaktion, um ein zyklisches Betreiben der Speicherressourcen 150 (z. B. DIMMs) zu vermeiden, um den Zustand des Verzeichnisses 170 zu Ungültig zu ändern. Dementsprechend vermeidet eine zukünftige Lesetransaktion aus demselben Cache 130 (oder bei einigen Ausführungsbeispielen Prozess-Thread) in den meisten Fällen eine Aktualisierung des Verzeichnisses 170. Bei einigen Ausführungsbeispielen jedoch wird die Aktualisierung des Verzeichnisses 160 nicht vermieden, wenn die Transaktion eine Lesen-Ungültigerklären-Transaktion ist, aus demselben Prozess-Thread, zu einer Cacheleitung 220, die vorangehend in dem gemeinschaftlich verwendeten Zustand war.
  • Wenn der Typ der Speichertransaktion eine Schreibtransaktion ist, basierend auf der Prüfung bei Block 320, dann wird bei Block 370B eine Prüfung ausgeführt, um zu bestimmen, ob der Speicherblock 180, der die Kohärenzeinheit 160 aufweist, die der Cacheleitung 220 entspricht, lokal ist; d. h., ob die Kohärenzeinheit 160 Teil eines Speicherblocks 180 ist, der eine lokale Speicherregion ist. Bei einem Ausführungsbeispiel wird die Prüfung bei Block 370A durch die MTC 141 ausgeführt.
  • Wenn der Speicherblock 180, der die Kohärenzeinheit 160 aufweist, nicht lokal ist, fährt das Verfahren 400 mit Block 350 fort, der ist, wie oben Bezug nehmend auf 3 beschrieben wurde. Das Verfahren 400 endet dann bei Block 399.
  • Wenn der Speicherblock 180, der die Kohärenzeinheit 160 aufweist, lokal ist, fährt das Verfahren 400 mit Block 355 fort. Bei Block 355 schreibt die Speichersteuerung 142 oder die Kohärenzsteuerung 140 für eine Schreibtransaktion Daten in die Speicherressourcen 150 (z. B. DIMMs, FBD DIMMs, DRAM) für die Kohärenzeinheit 160, die der Cacheleitung 220 entspricht. Die Kohärenzeinheit 160 umfasst das Datenfeld 270 und das Verzeichnis 170. Bei einem exemplarischen Ausführungsbeispiel stellt die Speichersteuerung 142 oder die Kohärenzsteuerung 140 den Verzeichniszustand 171 des Verzeichnisses 170 ein, um einen exklusiven Zustand darzustellen, vor dem Schreiben des Verzeichnisses 170 in die Speicherressourcen 150 als Teil der Kohärenzeinheit 160. Bei einem weiteren Ausführungsbeispiel aktualisiert die Speichersteuerung 142 oder die Kohärenzsteuerung 140 die Informationen in dem Eigentumsfeld 172 des Verzeichnisses 170 derart, dass der Cache 130, der die Schreibtransaktion initiiert, exklusiver Eigentümer der Kohärenzeinheit 160 ist. Auf diese Weise stellen Ausführungsbeispiele der Erfindung den exklusiven Zustand für eine explizite Zurückschreibtransaktion zu den Speicherressourcen 150 für eine lokale Speicherregion ein, die den Speicherblock 180 umfasst, wodurch einer zukünftigen Lesetransaktion aus demselben Cache 130 ermöglicht wird (oder bei einigen Ausführungsbeispielen dem Prozess-Thread), das Aktualisieren des Verzeichnisses 170 zu vermeiden.
  • Bei einem anderen Ausführungsbeispiel wird das Konzept eines voreingestellten Eigentümers unterstützt. Der MTC 141 ist mit voreingestellten Eigentümerinformationen für jeden Eintrag programmiert, der sich auf einen Speicherblock 180 bezieht. Bei dem Verarbeitungsschritt von Block 355 aktualisiert die Speichersteuerung 142 oder die Kohärenzsteuerung 140 das Eigentumsfeld 172 des Verzeichnisses 170 und stellt die Zustandsinformationen 171 des Verzeichnisses 170 auf exklusiv ein, derart, dass die voreingestellten Eigentumsinformationen von der MTC 141 in dem Verzeichnis 170 als exklusiver Eigentümer der Kohärenzeinheit 160 aufgezeichnet werden. Auf diese Weise sind Ausführungsbeispiele der Erfindung in der Lage, den exklusiven Zustand für eine explizite Zurückschreibtransaktion zu den Speicherressourcen 150 für eine lokale Speicherregion einzustellen, die den Speicherblock 180 umfasst, wodurch eine zukünftige Lesetransaktion aus dem Cache ermöglicht wird (oder bei einigen Ausführungsbeispielen dem Prozess-Thread), der der voreingestellte Eigentümer ist, um ein Aktualisieren des Verzeichnisses 170 zu vermeiden. Das Verfahren 400 endet dann bei Block 399.
  • Obwohl exemplarische Implementierungen der Erfindung oben detailliert beschrieben wurden, werden Fachleute auf dem Gebiet ohne weiteres erkennen, dass viele zusätzlich Modifikationen bei den exemplarischen Ausführungsbeispielen möglich sind, ohne materiell von den neuen Lehren und Vorteilen der Erfindung abzuweichen. Dementsprechend sollen diese und alle derartigen Modifikationen in dem Schutzbereich dieser Erfindung umfasst sein. Die Erfindung kann durch die nachfolgenden, exemplarischen Ansprüche besser definiert werden.

Claims (10)

  1. System zur Kohärenzverzeichnisaktualisierung in einem Multiprozessorrechensystem, das folgende Merkmale aufweist: eine Mehrzahl von Speicherressourcen, die ein Verzeichnis aufweisen und wirksam mit einer Verbindungsstruktur verbunden sind; eine Zelle, die wirksam mit der Verbindungsstruktur verbunden ist und einen Cache aufweist, der einen Eintrag für jede einer Mehrzahl von Kohärenzeinheiten umfasst, wobei jede Kohärenzeinheit in einem Speicherblock umfasst ist, der einen zusammenhängenden Abschnitt der Mehrzahl von Speicherressourcen darstellt; eine Steuerung, die wirksam mit der Verbindungsstruktur verbunden ist, und konfiguriert ist, um einen Abschnitt der Mehrzahl von Speicherressourcen zu steuern, und einen Komparator aufweist, der konfiguriert ist, um zu identifizieren, ob der Speicherblock lokal ist; wobei die Steuerung, wenn der Speicherblock lokal ist, konfiguriert ist, um einen Zustand des Verzeichnisses für eine Schreibtransaktion auf Exklusiv einzustellen; und wobei die Steuerung, wenn der Speicherblock nicht lokal ist, konfiguriert ist, um den Zustand für eine Schreibtransaktion auf Ungültig einzustellen.
  2. System gemäß Anspruch 1, bei dem die Steuerung ferner für eine Lesetransaktion konfiguriert ist, um eine Aktualisierung an dem Verzeichnis zu verwerfen, wenn das Verzeichnis in einem korrekten Zustand ist.
  3. System gemäß Anspruch 1 oder 2, bei dem die Steuerung, wenn der Speicherblock lokal ist, konfiguriert ist, um eine Auswurf-Transaktion zu verwerfen.
  4. System gemäß einem der Ansprüche 1 bis 3, bei dem ein Speicherblock lokal ist, wenn und nur wenn der Speicherblock eine lokale Speicherregion ist, die der Zelle zugeordnet ist.
  5. Verfahren zur Kohärenzverzeichnisaktualisierung in einem Multiprozessorrechensystem mit einem Verzeichnis in einer Mehrzahl von Speicherressourcen, das folgende Schritte aufweist: Decodieren einer Speichertransaktion für eine Kohärenzeinheit, die in einem Speicherblock umfasst ist, der einen zusammenhängenden Abschnitt der Mehrzahl von Speicherressourcen darstellt; und wenn die Speichertransaktion eine Schreibtransaktion aufweist, Prüfen, ob der Speicherblock lokal ist, Einstellen eines Zustands des Verzeichnisses, Schreiben des Verzeichnisses mit dem Zustand eingestellt auf Ungültig, wenn der Speicherblock nicht lokal ist; und Schreiben des Verzeichnisses mit dem Zustand eingestellt auf Exklusiv, wenn der Speicherblock lokal ist.
  6. Verfahren gemäß Anspruch 5, das ferner, wenn die Speichertransaktion eine Lesetransaktion aufweist, das Prüfen, ob das Verzeichnis korrekt ist, und Schreiben des Verzeichnisses nur, wenn das Verzeichnis nicht korrekt ist, aufweist.
  7. Verfahren gemäß Anspruch 5 oder 6, das ferner, wenn die Speichertransaktion eine Auswurf-Transaktion aufweist, das Prüfen, ob der Speicherblock lokal ist, Lesen der Kohärenzeinheit nur, wenn der Speicherblock nicht lokal ist, und Schreiben der Kohärenzeinheit nur, wenn der Speicherblock nicht lokal ist, aufweist.
  8. Verfahren gemäß einem der Ansprüche 5 bis 7, das ferner, wenn die Speichertransaktion eine Schreibtransaktion aufweist, das Aktualisieren eines Eigentumsfeldes des Verzeichnisses auf einen voreingestellten Eigentumswert für den Speicherblock, und Einstellen des Zustands des Verzeichnisses auf Exklusiv, aufweist.
  9. System zur Kohärenzverzeichnisaktualisierung in einem Multiprozessorrechensystem, das folgende Merkmale aufweist: eine Mehrzahl von Speicherressourcen, die ein Verzeichnis aufweisen und wirksam mit einer Verbindungsstruktur verbunden sind; eine Zelle, die wirksam mit der Verbindungsstruktur verbunden ist und einen Cache aufweist, der einen Eintrag für jede einer Mehrzahl von Kohärenzeinheiten um fasst, wobei jede Kohärenzeinheit, die in einem Speicherblock umfasst ist, einen zusammenhängenden Abschnitt der Mehrzahl von Speicherressourcen darstellt; eine Einrichtung zum Bestimmen eines Typs, der einer Speichertransaktion für den Speicherblock zugeordnet ist, eine Einrichtung zum Prüfen, ob der Speicherblock lokal ist, eine Einrichtung zum Einstellen eines Zustands des Verzeichnisses; und eine Steuerung, die wirksam mit der Verbindungsstruktur verbunden ist, und konfiguriert ist, um einen Abschnitt der Mehrzahl von Speicherressourcen zu steuern, wobei die Steuerung, wenn die Speichertransaktion eine Auswurf-Transaktion aufweist, konfiguriert ist, um die Kohärenzeinheit nur zu lesen, wenn der Speicherblock nicht lokal ist, und die Kohärenzeinheit nur zu schreiben, wenn der Speicherblock nicht lokal ist; wobei die Steuerung, wenn die Speichertransaktion eine Schreibtransaktion aufweist, konfiguriert ist, um das Verzeichnis mit dem Zustand eingestellt auf Ungültig zu schreiben, wenn der Speicherblock nicht lokal ist; und das Verzeichnis mit dem Zustand eingestellt auf Exklusiv zu schreiben, wenn der Speicherblock lokal ist.
  10. System gemäß Anspruch 9, bei dem die Steuerung, wenn die Speichertransaktion eine Lesetransaktion aufweist, konfiguriert ist, um das Verzeichnis nur zu schreiben, wenn das Verzeichnis nicht korrekt ist.
DE102007018033A 2006-04-27 2007-04-17 Kohärenzverzeichnisaktualisierung Ceased DE102007018033A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/413,158 US7941610B2 (en) 2006-04-27 2006-04-27 Coherency directory updating in a multiprocessor computing system
US11/413,158 2006-04-27

Publications (1)

Publication Number Publication Date
DE102007018033A1 true DE102007018033A1 (de) 2007-10-31

Family

ID=38542530

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102007018033A Ceased DE102007018033A1 (de) 2006-04-27 2007-04-17 Kohärenzverzeichnisaktualisierung

Country Status (2)

Country Link
US (1) US7941610B2 (de)
DE (1) DE102007018033A1 (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8001283B2 (en) * 2008-03-12 2011-08-16 Mips Technologies, Inc. Efficient, scalable and high performance mechanism for handling IO requests
US8516200B2 (en) * 2010-09-07 2013-08-20 International Business Machines Corporation Avoiding cross-interrogates in a streaming data optimized L1 cache
US20140281270A1 (en) * 2013-03-15 2014-09-18 Henk G. Neefs Mechanism to improve input/output write bandwidth in scalable systems utilizing directory based coherecy
US20150186278A1 (en) * 2013-12-26 2015-07-02 Sarathy Jayakumar Runtime persistence
US9424192B1 (en) 2015-04-02 2016-08-23 International Business Machines Corporation Private memory table for reduced memory coherence traffic
US9842050B2 (en) * 2015-04-30 2017-12-12 International Business Machines Corporation Add-on memory coherence directory
CN110710139A (zh) 2017-03-29 2020-01-17 芬基波尔有限责任公司 具有光置换器的无阻塞全网状数据中心网络
US10637685B2 (en) 2017-03-29 2020-04-28 Fungible, Inc. Non-blocking any-to-any data center network having multiplexed packet spraying within access node groups
US10686729B2 (en) 2017-03-29 2020-06-16 Fungible, Inc. Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths
WO2018191257A1 (en) 2017-04-10 2018-10-18 Fungible, Inc. Relay consistent memory management in a multiple processor system
US10725825B2 (en) 2017-07-10 2020-07-28 Fungible, Inc. Data processing unit for stream processing
US11303472B2 (en) 2017-07-10 2022-04-12 Fungible, Inc. Data processing unit for compute nodes and storage nodes
WO2019068013A1 (en) 2017-09-29 2019-04-04 Fungible, Inc. FABRIC CONTROL PROTOCOL FOR DATA CENTER NETWORKS WITH PACKAGING OF PACKETS ON MULTIPLE ALTERNATIVE DATA PATHWAYS
CN111164938A (zh) 2017-09-29 2020-05-15 芬基波尔有限责任公司 使用选择性多路径分组流喷射的弹性网络通信
WO2019104090A1 (en) 2017-11-21 2019-05-31 Fungible, Inc. Work unit stack data structures in multiple core processor system for stream data processing
US10540288B2 (en) 2018-02-02 2020-01-21 Fungible, Inc. Efficient work unit processing in a multicore system
US10929175B2 (en) 2018-11-21 2021-02-23 Fungible, Inc. Service chaining hardware accelerators within a data stream processing integrated circuit
US11687459B2 (en) * 2021-04-14 2023-06-27 Hewlett Packard Enterprise Development Lp Application of a default shared state cache coherency protocol

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4463420A (en) 1982-02-23 1984-07-31 International Business Machines Corporation Multiprocessor cache replacement under task control
JP3009430B2 (ja) 1990-07-09 2000-02-14 キヤノン株式会社 プロセッサおよびそのキャッシュメモリ制御方法
US6049851A (en) 1994-02-14 2000-04-11 Hewlett-Packard Company Method and apparatus for checking cache coherency in a computer architecture
US5655103A (en) 1995-02-13 1997-08-05 International Business Machines Corporation System and method for handling stale data in a multiprocessor system
US5862316A (en) 1996-07-01 1999-01-19 Sun Microsystems, Inc. Multiprocessing system having coherency-related error logging capabilities
US6662216B1 (en) * 1997-04-14 2003-12-09 International Business Machines Corporation Fixed bus tags for SMP buses
US6587931B1 (en) * 1997-12-31 2003-07-01 Unisys Corporation Directory-based cache coherency system supporting multiple instruction processor and input/output caches
US6857051B2 (en) 1998-12-23 2005-02-15 Intel Corporation Method and apparatus for maintaining cache coherence in a computer system
US6868481B1 (en) 2000-10-31 2005-03-15 Hewlett-Packard Development Company, L.P. Cache coherence protocol for a multiple bus multiprocessor system
US7822929B2 (en) 2004-04-27 2010-10-26 Intel Corporation Two-hop cache coherency protocol
US7366844B2 (en) * 2005-02-10 2008-04-29 International Business Machines Corporation Data processing system and method for handling castout collisions

Also Published As

Publication number Publication date
US20070255906A1 (en) 2007-11-01
US7941610B2 (en) 2011-05-10

Similar Documents

Publication Publication Date Title
DE102007018033A1 (de) Kohärenzverzeichnisaktualisierung
DE112008002018B4 (de) Bereitstellen eines gemeinsam genutzten Inklusiv-Cache bei Mehrkern-Cache-Clustern
DE69233655T2 (de) Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedenartiger Prozessoren
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE112015004336B4 (de) Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls
DE112012005210B4 (de) Bereitstellen eines gemeinsamen Caching-Agenten für ein Kern- und integriertes Ein-/Ausgabe-(IO)-Modul
DE102011076894B9 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE69822534T2 (de) Gemeinsame Speicherbenutzung mit variablen Blockgrössen für symmetrische Multiporzessor-Gruppen
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE102008062044B4 (de) 1Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration
DE112008001679T5 (de) Cache-Speicher mit konfigurierbarer Assoziativität
DE112009000373T5 (de) Technik, um Information zwischen unterschiedlichen Kohärenz-Domains von Caches zu nutzen
DE112005002180T5 (de) Lösen von Cachekonflikten
DE112009000836T5 (de) Adaptive Cache-Organisation für Chip-Multiprozessoren
DE10393727T5 (de) Prozessor-Cache-Speicher als RAM zur Ausführung von Boot-Code
DE112006003597T5 (de) Unbeschränkte Transaktionsspeichersysteme
DE102013201079A1 (de) Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt
DE102007032307A1 (de) Dedizierter Mechanismus zur Seitenabbildung in einer GPU
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE102006047656A1 (de) Speichersteuerung
DE102006030879A1 (de) System zum Reduzieren der Latenzzeit von exklusiven Leseanforderungen in einem symmetrischen Multiprozessorsystem
DE112004000694B4 (de) Ein Verfahren und eine Vorrichtung zur Verbesserung der Multi-CPU-Systemleistung für Speicherzugriffe

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final