DE112015004336T5 - Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls - Google Patents

Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls Download PDF

Info

Publication number
DE112015004336T5
DE112015004336T5 DE112015004336.5T DE112015004336T DE112015004336T5 DE 112015004336 T5 DE112015004336 T5 DE 112015004336T5 DE 112015004336 T DE112015004336 T DE 112015004336T DE 112015004336 T5 DE112015004336 T5 DE 112015004336T5
Authority
DE
Germany
Prior art keywords
node
protocol
cache coherency
nodes
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112015004336.5T
Other languages
English (en)
Other versions
DE112015004336B4 (de
Inventor
Robert Sonnelitter III
Ekaterina Ambroldze
Arthur O'Neill, JR.
Michael Fee
Deanna Postles Dunn Berger
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112015004336T5 publication Critical patent/DE112015004336T5/de
Application granted granted Critical
Publication of DE112015004336B4 publication Critical patent/DE112015004336B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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
    • 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
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/314In storage network, e.g. network attached cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/622State-only directory, i.e. not recording identity of sharing or owning nodes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Eine Topologie aus Clustern von Prozessoren einer Computer-Konfiguration, die so konfiguriert ist, dass beliebige einer Vielzahl von Cachekohärenz-Protokollen unterstützt werden, wird zum Zeitpunkt der Initialisierung erkannt, um festzulegen, welches Cachekohärenz-Protokoll der Vielzahl von Cachekohärenz-Protokollen verwendet werden soll, um Kohärenz-Anforderungen der Konfiguration zu verarbeiten.

Description

  • BEREICH DER ERFINDUNG
  • Die vorliegende Erfindung betrifft Computersysteme und insbesondere das dynamische Auswählen von Cachekohärenz-Protokollen von Mehrprozessorsystemen.
  • HINTERGRUND
  • Moderne Computer-Packungstechnologie ermöglicht einen modularen Aufbau, der in vielen verschiedenen Computersystemprodukten in Verbindung mit einem Computerhauptspeicher verwendet werden kann. In einem Beispiel können mehrere Prozessorkerne auf einem einzelnen Modul oder Chipschaltkreis untergebracht werden. In einem weiteren Beispiel können mehrere Chip-Kerne mit einer Speichersteuerungsfunktion auf einem einzelnen Modul oder Chipschaltkreis untergebracht werden. In einer Ausführungsform verwenden die mehreren Prozessorkerne eine Cache-Hierarchie auf dem Modul oder Chipschaltkreis. In einer Ausführungsform besteht die Möglichkeit, nur einen einzigen Kern des Moduls oder des Chipschaltkreises in einem Computersystem zu verwenden. In einer Ausführungsform besteht die Möglichkeit, nur ein einziges solches Modul oder einen einzigen solchen Chipschaltkreis in einem Computersystem zu verwenden. In einer Ausführungsform können mehrere solche Module oder Chipschaltkreise in einem Computersystem verwendet werden. Jede Ausführungsform erfordert gegebenenfalls ein anderes Cachekohärenz-Protokoll, damit die gewünschte Funktion und Leistung wirksam ausgeführt werden kann.
  • Die US-Patentschrift Nr. 8,423,736 ”MAINTAINING CACHE COHERENCE IN A MULTI-NODE, SYMMETRIC MULTIPROCESSING COMPUTER”, eingereicht am 16.06.2010, lehrt das ”Aufrechterhalten der Cachekohärenz in einem symmetrischen Mehrprozessor-Computer mit mehreren Knoten, wobei der Computer aus einer Vielzahl von Rechenknoten besteht, einschließlich einer im Rundsendeverfahren durch einen ersten Rechenknoten erfolgenden Übertragung einer Anforderung für eine Cachezeile im Anschluss an einen Cache-Fehltreffer; Senden des Zustands der Cachezeile auf diesem Knoten von einem jeden der anderen Rechenknoten an alle anderen Knoten einschließlich des Sendens von einem beliebigen Rechenknoten, der über eine korrekte Kopie verfügt, der korrekten Kopie der Cachezeile an den ersten Knoten; und das durch einen jeden Knoten erfolgende Aktualisieren des Zustands der Cachezeile in jedem Knoten in Abhängigkeit von einem oder mehreren der Zustände der Cachezeile in allen Knoten.”
  • Die US-Patentschrift Nr. 8,402,225 ”METHOD FOR PERFORMING CACHE COHERENCY IN A COMPUTER SYSTEM”, eingereicht am 21.09.2010, lehrt ”in einem Computersystem wird die Cachekohärenz hergestellt, indem ein Kohärenz-Protokoll einer Vielzahl von Kohärenz-Protokollen für eine erste Hauptspeicher-Transaktion ausgewählt wird. Jedes der Vielzahl der Kohärenz-Protokolle verfügt über eine eindeutige Menge an Cache-Zuständen, die für die erste Hauptspeicher-Transaktion auf zwischengespeicherte Daten angewendet werden können. Die Cachekohärenz wird auf entsprechenden Cachespeichern in dem Datenverarbeitungssystem hergestellt, indem die Menge der Cache-Zustände des ausgewählten Kohärenz-Protokolls der Vielzahl der Kohärenz-Protokolle angewendet wird.”
  • Die US-Patentschrift Nr. 8,010,716 ”METHODS AND APPARATUS FOR SUPPORTING MULTIPLE CONFIGURATIONS IN A MULTI-PROCESSOR SYSTEM”, eingereicht am 18.08.2010, lehrt ”Methoden und eine Vorrichtung ermöglichen die untereinander erfolgende Verbindung von einem oder mehreren Multiprozessoren und einer oder mehreren externen Einheiten über eine oder mehrere konfigurierbare Schnittstellenschaltungen, die für den Betrieb ausgelegt sind in: (i) einer ersten Betriebsart, um eine kohärente symmetrische Schnittstelle bereitzustellen; oder (ii) einer zweiten Betriebsart, um eine nichtkohärente Schnittstelle bereitzustellen.
  • Die veröffentlichte US-Patentanmeldung Nr. 2004/0044850 mit dem Titel ”Method and Apparatus for the Synchronization of Distributed Caches”, eingereicht am 28.08.2002, lehrt ein hierarchisches Zwischenspeicherungsprotokoll, das zur Verwendung mit verteilten Cachespeichern einschließlich der Verwendung innerhalb eines der Zwischenspeicherung dienenden Eingabe-/Ausgabe-Hubs geeignet ist.
  • KURZDARSTELLUNG
  • Ein Mechanismus wird gemäß einer bevorzugten Ausführungsform bereitgestellt, um die Topologie eines Computersystems zu erkennen und um auf der Grundlage der Topologie ein ausgewähltes Cachekohärenz-Protokoll einer Vielzahl von zur Verfügung stehenden Kohärenz-Protokollen zu instanziieren.
  • In einer Ausführungsform wird ein Cachekohärenz-Protokoll einer Vielzahl von Cachekohärenz-Protokollen ausgewählt und in einem Computersystem ausgeführt, das einen ersten Knoten einer Konfiguration aufweist, die einen oder mehrere kommunikativ verbundene Knoten aufweist, wobei jeder Knoten ein oder mehrere kommunikativ verbundene Computer-Elemente aufweist, wobei jedes Computer-Element mindestens ein Cluster und/oder eine Speichercontroller-(SC-)Funktion aufweist, wobei jedes Cluster einen oder mehrere Prozessoren aufweist, wobei die SC-Funktion einen gemeinsam genutzten Cache aufweist, wobei der gemeinsam genutzte Cache von Prozessoren eines jeden Clusters gemeinsam genutzt wird, wobei das Verfahren aufweist: Einleiten einer Übertragung durch jedes Element der Konfiguration an andere Elemente der Konfiguration, um die Konfigurationstopologie zu ermitteln; auf der Grundlage eines Ergebnisses der eingeleiteten Übertragung Speichern eines Kohärenzwerts durch jedes Element; auf der Grundlage des Kohärenzwerts Festlegen, durch Elemente des Knotens, eines Cachekohärenz-Protokolls der Vielzahl der Cachekohärenz-Protokolle, das von dem Knoten verwendet werden soll; und Verwenden des festgelegten Cachekohärenz-Protokolls, um Cachekohärenz-Anforderungen zu verarbeiten.
  • In einer Ausführungsform besteht die Konfigurationstopologie aus dem ersten Knoten, wobei die Vielzahl der Cachekohärenz-Protokolle ein erstes Protokoll aufweist, das keine SC-Funktion verwendet, um die Cachekohärenz des ersten Knotens aufrechtzuerhalten, und ein zweites Protokoll, das eine SC-Funktion verwendet, um die Cachekohärenz des ersten Knotens aufrechtzuerhalten.
  • In einer Ausführungsform besteht die Konfigurationstopologie aus dem ersten Knoten, wobei das Verwenden des ausgewählten Cachekohärenz-Protokolls des Weiteren den Zugriff auf ein inklusives Verzeichnis der SC-Funktion des ersten Knotens aufweist, um die Cachekohärenz-Anforderungen zu verarbeiten.
  • In einer Ausführungsform weist die Konfigurationstopologie des Weiteren einen oder mehrere zweite Knoten auf, wobei der erste Knoten mit dem einen oder den mehreren zweiten Knoten kommunikativ verbunden ist, wobei das Verwenden des ausgewählten Cachekohärenz-Protokolls des Weiteren aufweist: Zugreifen durch den ersten Knoten auf ein inklusives Verzeichnis der SC-Funktion des ersten Knotens, um die Cachekohärenz-Anforderungen zu verarbeiten; auf der Grundlage der Feststellung durch den ersten Knoten, dass die Cachekohärenz-Operation nur von dem ersten Knoten durchgeführt werden kann, Durchführen der Cachekohärenz-Operation durch den ersten Knoten, ohne auf Cachespeicher des einen oder der mehreren zweiten Knoten zuzugreifen; und auf der Grundlage der Feststellung durch den ersten Knoten, dass die Cachekohärenz-Operation auf den einen oder die mehreren zweiten Knoten zugreifen muss, Durchführen der Cachekohärenz-Operation, indem auf Cachespeicher des einen oder der mehreren zweiten Knoten zugegriffen wird.
  • In einer Ausführungsform weist die Vielzahl der Cachekohärenz-Protokolle ein drittes Protokoll und ein viertes Protokoll auf, um die Cachekohärenz des Knotens aufrechtzuerhalten, wobei es sich bei dem dritten Protokoll um das MESI-Protokoll und bei dem vierten Protokoll um das MOESI-Protokoll handelt.
  • In einer Ausführungsform weist die Konfigurationstopologie des Weiteren einen oder mehrere zweite Knoten auf, wobei der erste Knoten mit dem einen oder den mehreren zweiten Knoten kommunikativ verbunden ist, wobei die SC-Funktion des ersten Knotens feststellt, dass entweder das erste Protokoll oder das zweite Protokoll bei lokalen Cachekohärenz-Operationen in dem ersten Knoten verwendet werden soll, und dass ein anderes Protokoll als das erste Protokoll und das zweite Protokoll bei globalen Cachekohärenz-Operationen, an denen der eine oder die mehreren zweiten Knoten beteiligt sind, verwendet werden soll.
  • Ein System und Computerprogrammprodukte, die den vorstehend zusammengefassten Verfahren entsprechen, werden hier ebenfalls beschrieben und beansprucht.
  • Zusätzliche Merkmale und Vorteile werden durch die Techniken der vorliegenden Erfindung realisiert. Weitere Ausführungsformen und Aspekte der Erfindung werden hier ausführlich beschrieben und als ein Teil der beanspruchten Erfindung betrachtet. Um die Erfindung mit Vorteilen und Merkmalen besser verstehen zu können, sei auf die Beschreibung und die Zeichnungen verwiesen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Der als die Erfindung betrachtete Gegenstand ist in den Ansprüchen am Ende der Beschreibung im Einzelnen dargelegt und gesondert beansprucht. Ausführungsformen der vorliegenden Erfindung werden nun lediglich anhand eines Beispiels und mit Bezug auf die folgenden Zeichnungen beschrieben:
  • 1 zeigt ein Beispiel von Komponenten eines Knotens;
  • 2 zeigt ein Beispiel von Komponenten eines Einschubs;
  • 3 zeigt ein Beispiel von Komponenten von zwei Einschüben;
  • 4 zeigt ein Beispiel von Komponenten von vier Einschüben;
  • 5 zeigt Komponenten eines beispielhaften Zentralprozessors (CP);
  • 6 zeigt Komponenten eines beispielhaften SC;
  • 7 zeigt eine beispielhafte Konfiguration mit einem einzigen CP;
  • 8 zeigt eine beispielhafte Konfiguration mit mehreren CP;
  • 9 zeigt eine beispielhafte CP-Verbindung; und
  • die 10 bis 12 zeigen beispielhafte Operationen von Ausführungsformen.
  • Die ausführliche Beschreibung erklärt die bevorzugten Ausführungsformen der Erfindung zusammen mit Vorteilen und Merkmalen anhand eines Beispiels mit Bezug auf die Zeichnungen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In modernen Mehrprozessor-Computersystemen wird eine Hierarchie von Cachespeichern verwendet, um Hauptspeicher-Cachezeilen zwischenzuspeichern und so den Zeitaufwand für den Zugriff auf Daten im Hauptspeicher zu verringern. Um allen Prozessoren den Zugriff auf zwischengespeicherte Daten zu gewähren, wird ein Kohärenz-Mechanismus verwendet, um sicherzustellen, dass der zwischengespeicherte Wert eines Prozessors kohärent ist. Wenn beispielsweise mehrere Prozessoren dieselbe Cachezeile zur selben Zeit ändern könnten, könnte keinem Prozessor zugesichert werden, dass seine Kopie korrekt ist. Folglich erhalten alle Prozessoren durch den Kohärenz-Mechanismus eine im Cachespeicher abgelegte Ansicht des Hauptspeicherinhalts, die konsistent wäre, wenn es überhaupt keinen Cache gäbe, sondern nur einen einzigen Hauptspeicher. Eine solche Cachekohärenz wird in einem symmetrischen Mehrprozessor-Computersystemen (SMP-Computersystem) ermöglicht. Es gibt viele mögliche Protokolle, die verwendet werden können, um die Cachekohärenz in einem großen SMP-System herzustellen. In Abhängigkeit von der SMP-Struktur und der Systemkonfiguration sind manche Protokolle im Hinblick auf die Busauslastung und die Leistungsfähigkeit des Systems aufgrund ihres Zuschnitts möglicherweise besser geeignet als andere. Verschiedene SMP-Strukturen sind gegebenenfalls auch für unterschiedliche Anforderungen an die Systemhardwareausstattung oder die Kapazitätsanforderungen des Kunden besser geeignet.
  • Prozessor-CLUSTER
  • In Ausführungsformen (5) bildet ein aus einem oder mehreren Verarbeitungseinheiten 501 bis 506 (die zum Beispiel einen oder mehrere Prozessorkerne auf einem Chipschaltkreis aufweisen) bestehendes ”Cluster” 500 den Baustein von verschiedenen Systemstrukturen. Jedes Cluster kann eine Hierarchie von Cachespeichern, zum Beispiel lokale Cachespeicher (L1/L2) (der Ebene 1), die zu jeweiligen Verarbeitungseinheiten 501 bis 506 gehören, sowie einen von dem Cluster gemeinsam genutzten Cachespeicher (L3), der von allen Verarbeitungseinheiten 501 bis 506 des Clusters genutzt wird, enthalten. Jedes Cachesystem eines Clusters kann gegebenenfalls so konfiguriert werden, dass es die Kohärenz innerhalb des Clusters 500 verwaltet oder mit anderen Clustern des Systems an der Verwaltung der Kohärenz zwischen mehreren Clustern beteiligt ist. Jedes Cluster kann als ein einzelner Chipschaltkreis, als ein mehrere Chipschaltkreise aufweisendes Modul oder als eine andere in der Technik bekannte Verpackungsvorrichtung verpackt sein. Jedes Cluster kann eine genau gleiche Konfiguration oder eine jeweils andere Konfiguration aufweisen. Als ein erstes Beispiel kann jedes Cluster sechs Prozessorkerne 501 bis 506 aufweisen. In einem zweiten Beispiel kann ein Cluster sechs Prozessorkerne und ein weiteres Cluster kann vier Prozessorkerne 501 bis 504 aufweisen.
  • In einer Ausführungsform (7) kann ein System aus einem einzigen Cluster 700 bestehen. Das Cluster kann mit dem Hauptspeicher-Subsystem 108 und einem E/A-Subsystem 107 zum Anschluss an Peripherie- oder Netzwerkeinheiten kommunikativ verbunden 113 sein. Die Cachekohärenz des einzelnen Clusters wird von dem einzelnen Cluster verwaltet.
  • In der Datenverarbeitung versteht man unter Cachekohärenz die Übereinstimmung von gemeinsam genutzten Ressourcendaten, die letzten Endes in mehreren lokalen Cachespeichern gespeichert werden.
  • Wenn Clients in einem System Cachespeicher einer gemeinsamen Hauptspeicherressource verwalten, kann es zu Problemen mit inkonsistenten Daten kommen. Dies gilt insbesondere für zentrale Verarbeitungseinheiten (CPUs) in einem Mehrprozessorsystem. Bezug nehmend auf die Darstellung auf der rechten Seite könnte der obere Client, wenn er über eine Kopie eines Hauptspeicherblocks aus einer vorhergehenden Leseoperation verfügt und der untere Client diesen Hauptspeicherblock ändert, am Schluss einen Hauptspeicher-Cache ungültigen Inhalts haben, ohne dass er über die Änderung informiert worden wäre. Mittels Cachekohärenz sollen solche Konflikte bewältigt und die Konsistenz zwischen dem Cache und dem Hauptspeicher aufrechterhalten werden.
  • In einem Mehrprozessorsystem mit gemeinsam genutztem Hauptspeicher und einem separaten Cachespeicher für jeden Prozessor ist es möglich, dass man viele Kopien von einem beliebigen Instruktionsoperanden hat: eine Kopie im Hauptspeicher und eine Kopie in jedem Cachespeicher. Wenn eine Kopie eines Operanden geändert wird, müssen die anderen Kopien des Operanden ebenfalls geändert werden. Cachekohärenz ist die Disziplin, die sicherstellt, dass Änderungen von Werten von gemeinsam genutzten Operanden rechtzeitig im gesamten System weitergegeben werden.
  • Es gibt drei verschiedene Stufen der Cachekohärenz:
    Jede Schreiboperation erscheint so, als würde sie sofort stattfinden;
    alle Prozessoren sehen genau dieselbe Abfolge von Änderungen von Werten für jeden einzelnen Operanden; und
    verschiedene Prozessoren sehen möglicherweise eine Operation und nehmen unterschiedliche Folgen von Werten an; dies wird als nichtkohärentes Verhalten betrachtet.
  • Sowohl beim Verhalten der Stufe 2 als auch beim Verhalten der Stufe 3 kann ein Programm veraltete Daten wahrnehmen. In letzter Zeit haben Entwickler von Computern allmählich erkannt, dass die für den Umgang mit dem Verhalten der Stufe 2 erforderliche Programmierdisziplin ausreicht, um auch mit dem Verhalten der Stufe 3 umgehen zu können. Daher sieht man in Maschinen an einem gewissen Punkt nur das Verhalten der Stufe 1 und das Verhalten der Stufe 3.
  • Kohärenz bezeichnet das Verhalten von Lese- und Schreiboperationen von demselben bzw. auf denselben Speicherplatz. Die Kohärenz von Cachespeichern wird erreicht, wenn die folgenden Bedingungen erfüllt werden:
    In einer von einem Prozessor P durchgeführten Leseoperation an einem Speicherplatz X, die auf eine von demselben Prozessor P an X durchgeführte Schreiboperation folgt, ohne dass zwischen der von P ausgeführten Schreib- und Leseanweisung Schreiboperationen durch einen anderen Prozessor an X stattfinden, muss X immer den von P geschriebenen Wert zurückgeben. Diese Bedingung hängt mit der Beibehaltung der Programmreihenfolge zusammen und diese muss selbst in Architekturen, die eine Verarbeitung in Mono-Technik durchführen, erfüllt werden.
  • Eine von einem Prozessor P1 am Speicherplatz X durchgeführte Leseoperation, die nach einer von einem anderen Prozessor P2 an X durchgeführten Schreiboperation stattfindet, muss den Wert, den P2 geschrieben hat, zurückgeben, wenn keine anderen von einem Prozessor durchgeführten Schreiboperationen an X zwischen den beiden Zugriffen stattfinden und die Lese- und die Schreiboperation in ausreichendem Abstand voneinander erfolgen. Diese Bedingung legt das Konzept einer kohärenten Ansicht des Hauptspeichers fest. Wenn Prozessoren im Anschluss an die von P2 durchgeführte Schreiboperation denselben alten Wert lesen können, kann man sagen, dass der Hauptspeicher inkohärent ist.
  • Schreiboperationen an denselben Speicherplatz müssen aufeinanderfolgend stattfinden. Anders ausgedrückt, wenn der Speicherplatz X zwei verschiedene Werte A und B – in dieser Reihenfolge – von zwei beliebigen Prozessoren empfangen hat, können die Prozessoren den Speicherplatz X niemals als 'B' und dann als 'A' lesen. Der Speicherplatz X muss mit den Werten A und B in dieser Reihenfolge wahrgenommen werden.
  • Diese Bedingungen werden unter der Annahme festgelegt, dass die Lese- und die Schreiboperationen sofort erfolgen. Aufgrund der Latenzzeit des Hauptspeichers und anderer Aspekte der Architektur ist dies in Computer-Hardware jedoch nicht der Fall. Eine vom Prozessor P1 durchgeführte Schreiboperation wird von einer Leseoperation des Prozessors P2 möglicherweise nicht wahrgenommen, wenn die Leseoperation innerhalb eines sehr kurzen Zeitraums nach der Schreiboperation erfolgt. Das Modell der Hauptspeicherkonsistenz legt fest, wann ein geschriebener Wert von einer auf die Schreiboperation folgenden Leseanweisung, die von den anderen Prozessoren ausgegeben wird, wahrgenommen werden muss.
  • Selten, und insbesondere bei Algorithmen, kann sich die Kohärenz stattdessen auf das Lokalitätsprinzip beziehen.
  • Verzeichnisbasiert
  • In einem verzeichnisbasierten System werden die gemeinsam genutzten Daten in ein allgemeines Verzeichnis gestellt, das die Kohärenz zwischen Cachespeichern aufrechterhält. Das Verzeichnis hat die Funktion eines Filters, durch den der Prozessor um die Erlaubnis bitten muss, einen Eintrag aus dem primären Hauptspeicher in seinen Cache zu laden. Wenn ein Eintrag geändert wird, aktualisiert das Verzeichnis entweder die anderen Cachespeicher mit diesem Eintrag oder es macht diesen Eintrag in den anderen Cachespeichern ungültig.
  • Snooping (Abhören)
  • Bei diesem Prozess überwachen die einzelnen Cachespeicher Adresszeilen hinsichtlich des Zugriffs auf Hauptspeicherplätze, die sie zwischengespeichert haben. Es wird als Schreiboperation-Invalidierungsprotokoll bezeichnet, wenn eine Schreiboperation an einen Speicherplatz beobachtet wird, von dem ein Cache eine Kopie hat und der Cache-Controller seine eigene Kopie des abgehörten Speicherplatzes ungültig macht.
  • Snarfing (Informationsdiebstahl oder Datenmanipulation)
  • Snarfing ist ein Mechanismus, bei dem ein Cache-Controller sowohl Adressen als auch Daten in dem Versuch beobachtet, seine eigene Kopie eines Hauptspeicherplatzes zu aktualisieren, wenn ein zweiter Master einen Speicherplatz im Hauptspeicher ändert. Wenn eine Schreiboperation an einen Speicherplatz beobachtet wird, von dem ein Cache eine Kopie hat, aktualisiert der Cache-Controller seine eigene Kopie des mittels Informationsdiebstahl manipulierten Speicherplatzes mit den neuen Daten.
  • Verteilte, gemeinsam genutzte Hauptspeichersysteme bilden diese Mechanismen in dem Versuch nach, die Konsistenz zwischen Blöcken des Hauptspeichers in lose miteinander verbundenen Systemen zu wahren.
  • Die beiden gängigsten Mechanismen zur Sicherstellung von Kohärenz sind Snooping und der verzeichnisbasierte Mechanismus, wobei jeder seine eigenen Vor- und Nachteile hat. Snooping-(Abhör-)Protokolle sind gewöhnlich schneller, sofern ausreichend Bandbreite zur Verfügung steht, da es sich bei allen Transaktionen um eine Anforderung/Antwort handelt, die von allen Prozessoren wahrgenommen wird. Der Nachteil ist, dass Snooping nicht skalierbar ist. Jede Anforderung muss im Rundsendeverfahren an alle Knoten in einem System übertragen werden, was bedeutet, dass mit zunehmender Größe des Systems sowohl der (logische oder physische) Bus als auch die von ihm bereitgestellte Bandbreite größer werden muss. Verzeichnisse haben andererseits gewöhnlich längere Latenzzeiten (mit den drei Zwischenschritten Anforderung/Weiterleitung/Antwort), nehmen aber weitaus weniger Bandbreite in Anspruch, da Nachrichten nicht im Rundsendeverfahren, sondern von Punkt zu Punkt übertragen werden. Aus diesem Grund verwenden viele der größeren Systeme (> 64 Prozessoren) diese Art der Cachekohärenz.
  • Bei dem Snooping-Mechanismus verringert ein Snoop-Filter den Snooping-Verkehr, indem er eine Vielzahl von Einträgen beibehält, von denen jeder eine Cachezeile darstellt, die einem oder mehreren Knoten gehören kann. Wenn einer der Einträge ersetzt werden muss, wählt der Snoop-Filter denjenigen Eintrag als Ersatz aus, der die Cachezeile oder die Cachezeilen darstellt, welche den wenigsten Knoten gehört bzw. gehören, was von einem Präsenz-Vektor in jedem der Einträge festgestellt wird. Ein Zeit-Algorithmus oder eine andere Art von Algorithmus wird verwendet, um die Auswahl zu verfeinern, wenn der geringsten Anzahl von Knoten mehr als eine Cachezeile gehört.
  • Das MESI-Protokoll (das aufgrund dessen, dass es an der Universität von Illinois in Urbana-Champaign entwickelt wurde, auch als Illinois-Protokoll bezeichnet wird), ist ein weitverbreitetes Cachekohärenz- und Hauptspeicherkohärenz-Protokoll. Es ist das gebräuchlichste Protokoll, das einen Rückschreibcache unterstützt.
  • Jede Cachezeile wird mit einem der folgenden vier Zustände (in zwei zusätzlichen Bits codiert) markiert:
    Modified: Die Cachezeile ist nur im aktuellen Cache vorhanden und ist unsauber; sie wurde geändert und hat einen vom Wert im Hauptspeicher abweichenden Wert. Der Cache muss die Daten irgendwann in der Zukunft in den Hauptspeicher zurückschreiben, bevor er eine weitere Leseoperation des (nicht mehr gültigen) Zustands des Hauptspeichers gestattet. Durch das Zurückschreiben wird der Zustand der Zeile in ”Exclusive” geändert.
  • Exclusive: Die Cachezeile ist nur im aktuellen Cache vorhanden, aber sie ist sauber; sie stimmt mit dem Hauptspeicher überein. Sie kann als Reaktion auf eine Leseanforderung jederzeit in den Zustand ”Shared” geändert werden. Alternativ kann sie in den Zustand ”Modified” geändert werden, wenn sie beschrieben wird.
  • Shared: Zeigt an, dass diese Cachezeile in anderen Cachespeichern der Maschine gespeichert werden kann und dass sie ”sauber” ist; sie stimmt mit dem Hauptspeicher überein. Die Zeile kann jederzeit verworfen (in den Zustand ”Invalid” geändert) werden.
  • Invalid: Zeigt an, dass diese Cachezeile ungültig ist (nicht verwendet wird).
  • In einem typischen System nutzen mehrere Cachespeicher einen gemeinsamen Bus zum Hauptspeicher. Jeder Cache verfügt auch über eine angeschlossene zentrale Verarbeitungseinheit (CPU), die Lese- und Schreibanforderungen ausgibt. Das gemeinsame Ziel der Cachespeicher besteht darin, die Verwendung des gemeinsam genutzten Hauptspeichers auf ein Minimum zu reduzieren.
  • Ein Cachespeicher kann eine Leseanforderung aus jedem Zustand mit Ausnahme des Zustands 'Invalid' erfüllen. Eine Zeile 'Invalid' muss abgerufen werden (in den Zustand 'Shared' oder den Zustand 'Exclusive'), um eine Leseanforderung zu erfüllen.
  • Eine Schreiboperation kann nur durchgeführt werden, wenn sich die Cachezeile im Zustand 'Modified' oder 'Exclusive' befindet. Wenn sie sich im Zustand 'Shared' befindet, müssen alle anderen zwischengespeicherten Kopien zuerst ungültig gemacht werden. Dies geschieht üblicherweise mit einer Rundsende-Operation, die als Request For Ownership (RFO) bezeichnet wird.
  • Ein Cache kann eine nicht im Zustand 'Modified' befindliche Zeile jederzeit verwerten, indem er sie in den Zustand 'Invalid' ändert. Eine im Zustand 'Modified' befindliche Zeile muss zuerst zurückgeschrieben werden.
  • Ein Cache, der eine Zeile im Zustand 'Modified' hält, muss alle versuchten Leseoperationen (von allen anderen Cachespeichern in dem System) von dem entsprechenden Hauptspeicherplatz abhören (abfangen) und die von ihm gehaltenen Daten einfügen. Dies geschieht üblicherweise, indem er die Leseoperation zum Aussetzen (d. h. zur späteren Wiederholung) zwingt, die Daten dann in den Hauptspeicher schreibt und die Cachezeile in den Zustand 'Shared' ändert.
  • Ein Cache, der eine Zeile im Zustand 'Shared' hält, muss auf Invalidierungs- oder Request-For-Ownership-Rundsende-Operationen von anderen Cachespeichern lauschen und die Zeile bei Übereinstimmung verwerfen (indem er sie in den Zustand 'Invalid' versetzt).
  • Ein Cache, der eine Zeile im Zustand 'Exclusive' hält, muss ebenfalls alle Lesetransaktionen von allen anderen Cachespeichern abhören und die Zeile bei Übereinstimmung in den Zustand 'Shared' versetzen.
  • Die Zustände 'Modified' und 'Exclusive' sind immer genau: Das heißt, sie entsprechen dem wahren Cachezeilen-Eigentumsverhältnis in dem System. Der Zustand 'Shared' kann ungenau sein: Wenn ein anderer Cache eine Shared-Zeile verwirft, kann dieser Cache der alleinige Eigentümer dieser Cachezeile werden, jedoch wird sie nicht in den Zustand 'Exclusive' befördert. Andere Cachespeicher senden keine Mitteilungen im Rundsendeverfahren, wenn sie Cachezeilen verwerten, und dieser Cache könnte solche Benachrichtigungen nicht verwenden, ohne einen Zählstand der Anzahl der gemeinsam genutzten Kopien festzuhalten.
  • In dieser Hinsicht ist der Zustand 'Exclusive' eine opportunistische Optimierung: Wenn die CPU eine Cachezeile ändern möchte, die sich im Zustand S befindet, ist eine Bustransaktion notwendig, um alle anderen zwischengespeicherten Kopien ungültig zu machen. Der Zustand E ermöglicht die Änderung einer Cachezeile ohne Bustransaktion.
  • Eine Variante des MESI-Protokolls ist das MOESI-Protokoll, das einen Zustand 'Owned' beinhaltet: Dieser Cache ist einer von mehreren mit einer gültigen Kopie der Cachezeile, verfügt aber über das ausschließliche Recht, Änderungen an ihr vorzunehmen. Er muss diese Änderungen im Rundsendeverfahren an alle anderen Cachespeicher, die die Zeile ebenfalls verwenden, übertragen. Die Einführung des Zustands 'Owned' lässt eine unsaubere gemeinsame Nutzung von Daten zu, d. h., ein geänderter Cache-Block kann an verschiedene Cachespeicher weitergegeben werden, ohne dass der Hauptspeicher aktualisiert wird. Die Cachezeile kann in den Zustand 'Modified' geändert werden, nachdem alle gemeinsam genutzten Kopien ungültig gemacht wurden, oder sie kann in den Zustand 'Shared' geändert werden, indem die Änderungen zurück in den Hauptspeicher geschrieben werden. Cachezeilen mit dem Zustand 'Owned' müssen auf eine Snoop-Anforderung mit Daten antworten.
  • Prozessor-CLUSTER
  • In einer Ausführungsform (8) kann ein System aus mehreren Clustern 800 bis 802 bestehen, wobei die mehreren Cluster 800 bis 802 mit einem gemeinsam genutzten Hauptspeicher 108 und einem E/A-Subsystem 107 kommunikativ verbunden 113 sein können. Zu den mehreren Clustern kann in einer Ausführungsform ein gemeinsam genutzter L3-Cache gehören. Die Cachekohärenz kann von den mehreren Clustern des Systems gemeinsam verwaltet werden.
  • In einer Ausführungsform (1) kann das System eine Vielzahl von Clustern 109 bis 111 und eine Speichersteuerungs-(SC-)Funktion 112 aufweisen. Die Cluster sind miteinander verbunden 100, 101, 105 und mit der SC 112 kommunikativ verbunden 102, 103, 104. Die SC 112 kann einen Cachespeicher (L4) einer höheren Stufe enthalten. Die Cluster 109 bis 111 können mit einem gemeinsam genutzten Hauptspeicher-Subsystem 108 und einem E/A-Subsystem 107 kommunikativ verbunden 113 sein. In einer Ausführungsform kann eine miteinander verbundene Vielzahl von Clustern 109 bis 111 und eine SC 112 einen ”Knoten” bilden. In einer Ausführungsform enthält die SC 112 ein inklusives Cache-Verzeichnis, so dass die SC 112 Kenntnis von allen Zeilen des Knotens hat. In einer Ausführungsform ist die inklusive Cache-Verzeichnis-Funktion unter den Prozessoren verteilt und kann von den kombinierten nicht-inklusiven Cache-Verzeichnissen von allen Clustern des Knotens umgesetzt werden. Die SC 112 kann feststellen, ob ein Cache-Zugriff des Knotens vollständig in dem Knoten durchgeführt werden kann (wie zum Beispiel, wenn ein Prozessor des Knotens die Eigentümerschaft an einer Cachezeile anfordert, die bereits einem Prozessor des Knotens gehört), oder sie kann festlegen, dass bei einem Cache-Zugriff des Knotens andere Knoten abgefragt werden müssen (wie zum Beispiel, wenn ein Prozessor des Knotens die Eigentümerschaft an einer Cachezeile anfordert, die dem Knoten gerade nicht gehört). In einer Ausführungsform kann die SC-Funktion 112 von kooperativer Logik der Prozessoren 109 bis 111 des Knotens bereitgestellt werden. In dieser Ausführungsform arbeiten die Prozessoren zusammen, um festzustellen, ob ein Zugriff auf einen externen Knoten erforderlich ist, und der anfordernde Prozessor kann dann Kohärenz-Zugriffe auf andere Knoten im Namen des Knotens steuern. In einer weiteren Ausführungsform kann die SC-Funktion 112 von funktionsspezifischer Logik bereitgestellt werden, möglicherweise zum Beispiel in einem gesonderten Chipschaltkreis des Knotens.
  • Eine Konfiguration (1) kann Computer-Speichermedien 114 enthalten. In einer Ausführungsform (2) kann eine Vielzahl von Knoten 201, 202 als ”Einschub” 203 verpackt und über einen S-Bus 200 miteinander verbunden sein.
  • In einer Ausführungsform (3) kann ein System eine Vielzahl von Einschüben 309, 310 aufweisen, wobei jeder Knoten eines Einschubs 309, 310 über einen jeweiligen S-Bus 301, 302 in dem jeweiligen Einschub kommunikativ verbunden sein kann. Vorzugsweise ist jeder Knoten des Einschubs 305, 306 mit einem Knoten 307, 308 eines anderen Einschubs 310 über einen A-Bus kommunikativ verbunden. Die knoteninterne Kohärenz-Übertragung kann in einer Ausführungsform mittels Durchgriffsverbindungen und einer Kombination aus S-Bus- und A-Bus-Verbindungen durchgeführt werden. Vorzugsweise (4) werden getrennte A-Busse 400 bis 405 und 409 bis 414 zwischen den Knoten 424 bis 431 eines jeden Einschubs einer Konfiguration bereitgestellt und auf dem Einschub sind die Knoten 424, 426, 428, 430 mit einem oder mehreren anderen Knoten 425, 427, 429, 431 des jeweiligen Einschubs über einen entsprechenden auf dem Einschub befindlichen S-Bus 406 407, 408, 419 kommunikativ verbunden. In einer Ausführungsform können Knoten eines Einschubs als Durchgriffspfade für eine Übertragung von Einschub zu Einschub dienen. In einer solchen Ausführungsform wird nur ein Satz von A-Bussen für die Übertragung von Einschub zu Einschub benötigt 400, 401, 402 und die von einem zweiten Satz von A-Bussen 403, 404, 405 bereitgestellte Funktion wird von einem Knoten 424, 426, 428, 430 bereitgestellt, der Mitteilungen von dem einzelnen Satz von A-Bussen 400, 401, 402 eines jeden Einschubs über jeweilige S-Busse 406, 407, 408, 419 an einen oder mehrere andere Knoten 425, 427, 429, 431 weiterleitet.
  • Vorzugsweise werden Busse für eine direkte Übertragung bereitgestellt, die verwendet werden, um Elemente (Cluster, Knoten, Einschübe) kommunikativ zu verbunden. Somit hat jedes Element eine direkte Verbindung zu jedem anderen Element. In einer weiteren Ausführungsform sind ein oder mehrere Elemente kommunikativ verbunden, indem eine Durchgriffsfunktion an einem Element bereitgestellt wird, um die Anzahl der erforderlichen Busse zu verringern. Bei den Bussen kann es sich zum Beispiel um unidirektionale Paare (9, CP1 900, beispielsweise das aus REC-X und DRV-X bestehende Paar), ein gängiges bidirektionales Protokoll oder um Busse mit mehreren Anschlüssen handeln.
  • 9 zeigt eine beispielhafte Verbindung von Clustern 900, 901, 902 und einer SC 903. Jedes Element (Chipschaltkreis) verfügt über drei Paare (X, Y und Z) von unidirektionalen Bussen (REC-X DRV-X, REC-Y DRV-Y und REC-Z DRV-Z). In dieser Cluster-Konfiguration verfügt jedes Element über eine direkte Verbindung zu jedem der anderen Elemente des Clusters.
  • In einer Ausführungsform wird die Cachekohärenz zwischen Prozessoren über die gesamte Cache-Hierarchie auf der untersten Ebene hergestellt, um die Leistungsfähigkeit zu verbessern und Störbeeinflussungen auf ein Minimum zu reduzieren. Folglich können, wenn möglich, beispielsweise nur Cachekohärenz-Operationen von Cachespeichern eines Clusters, die auf Cachespeicher von anderen Clustern zugreifen müssen, auf andere Cluster zugreifen, nur Cachekohärenz-Operationen von Cachespeichern eines Knotens, die auf Cachespeicher von anderen Knoten zugreifen müssen, können auf andere Knoten zugreifen und nur Cachekohärenz-Operationen von Cachespeichern eines Einschubs, die auf Cachespeicher von anderen Knoten zugreifen müssen, können zum Beispiel auf andere Knoten zugreifen.
  • In einer Ausführungsform kommen Cachezeilen, die Prozessoren einer Entität auf einer Kohärenz-Stufe (Cluster, Knoten, Einschub) gehören oder von diesen gemeinsam genutzt werden, für eine Verarbeitung auf der Kohärenz-Stufe in Frage. Wenn ein Prozessor der Entität die Eigentümerschaft oder die gemeinsame Nutzung einer Zeile anfordert, die einem Prozessor der Entität bereits gehört, braucht die Entität folglich nicht auf andere Entitäten zuzugreifen, um die Anforderung kohärent zu verarbeiten. Wenn ein Prozessor einer Entität darüber hinaus die gemeinsame Nutzung einer Zeile anfordert, die einem Prozessor der Entität gehört oder von diesem gemeinsam mit anderen Prozessoren genutzt wird, braucht die Entität nicht auf andere Entitäten zuzugreifen, um die Anforderung zu verarbeiten. Eine Anforderung, beispielsweise von einem Prozessor des Knotens A in 4 424, für die gemeinsame Nutzung einer Cachezeile wird von der SC-Funktion geprüft, um festzustellen, ob die Zeile einem Prozessor des Knotens A gehört oder von diesem gemeinsam mit anderen Prozessoren genutzt wird. Wenn sie bereits einem Prozessor des Knotens A gehört oder von diesem gemeinsam mit anderen Prozessoren genutzt wird, verarbeitet die SC die Anforderung in dem Knoten, ohne auf einen anderen Knoten zuzugreifen. Wenn die Zeile weder einem Prozessor des Knotens A gehört noch von diesem gemeinsam mit anderen Prozessoren genutzt wird, führt die SC des Knotens A eine Cachekohärenz-Operation mit anderen Knoten 425 bis 431 durch. In einer Ausführungsform können bestimmte Kohärenz-Operationen eines Knotens in einem solchen Szenario die Anforderung im Rundsendeverfahren spekulativ an andere Knoten übertragen, bevor sie feststellen, dass die Zeile von einem Prozessor des Knotens A gemeinsam mit anderen Prozessoren genutzt wird oder diesem gehört. In diesem Fall können die anderen Knoten beispielsweise ihren Kohärenzzustand für die Cachezeile prüfen, bevor sie tatsächlich an der Kohärenz-Operation teilnehmen müssen. Die spekulative Anforderung kann später storniert werden oder ein Zeitlimit überschreiten, wenn der anfordernde Knoten erkennt, dass er nicht gebraucht wird.
  • In einer Ausführungsform wird die Topologie einer Konfiguration von jedem Cluster einer Konfiguration erkannt, zum Beispiel zum Zeitpunkt der Initialisierung der Konfiguration. Wenn ein Cluster eingeschaltet wird, können Signale über Cluster-Schnittstellen gesendet werden, um festzustellen, ob andere Cluster oder Unterstützungselemente (SCs zum Beispiel) mit dem Signale übertragenden Cluster kommunikativ verbunden sind. Dies kann von Mikrocode (Firmware) des Clusters vorgenommen werden. Basierend auf der Signalübertragung kann das Cluster einen Konfigurationswert erfassen, der die Topologie aus Sicht des Clusters darstellt. In einem Beispiel kann das Cluster einen bitsignifikanten Wert erfassen, wobei jedes Bit den Zustand einer entsprechenden Schnittstelle darstellt. In einer weiteren Ausführungsform stellt der Konfigurationswert das von dem Cluster zu verwendende Protokoll dar. Somit würde eine einzelne Cluster-Konfiguration (7, 700) einen Konfigurationswert erfassen, der anzeigt, dass keine solchen Verbindungen aktiv sind. Ein Cluster (8) einer aus mehreren Clustern bestehenden Konfiguration (800, 801, 802) würde einen Konfigurationswert erfassen, der anzeigt, dass Verbindungen 100, 101 zu anderen Clustern 801, 802 aktiv sind. Ein Cluster (1, 109) einer aus mehreren Clustern bestehenden Konfiguration, die über eine SC-Funktion 112 verfügt, würde einen Konfigurationswert erfassen, der anzeigt, dass Verbindungen 100, 101,102 zu anderen Clustern 110, 111 und einer SC 112 aktiv sind. In einer Ausführungsform kann eine SC-Funktion (6, 600) eines Knotens (1, 109 bis 112) einen Konfigurationswert erfassen, der anzeigt, ob Verbindungen zu anderen Knoten (auf dem Einschub befindlicher SC-Chip 406) oder zu Knoten von anderen Einschüben (nicht auf dem Einschub befindliche SC-Chips 400, 401, 402) aktiv sind, und einen Konfigurationswert setzen, der die Verbindungsmöglichkeiten des Einschubs anzeigt. In einem Beispiel einer Konfiguration mit mehreren Einschüben (4), die über 2 Knoten 424, 425 je Einschub 420 verfügt, kann ein Knoten 424 eines Einschubs 420 feststellen, dass ein S-Bus 406 zu einem anderen Knoten 425 des Einschubs aktiv ist und dass drei A-Bus-Schnittstellen 400, 401, 402 des Knotens zu entsprechenden Knoten 426, 428, 430 von drei entsprechenden anderen Einschüben 421, 422, 423 aktiv sind. Ein Knoten 424 kann in ähnlicher Weise ebenso feststellen, dass andere Knoten 427, 429, 431 von anderen Einschüben über eine Durchgriffsfunktion, zum Beispiel unter Verwendung des S-Busses 406, 407, 408, 419, kommunikativ verbunden sind. In solch einer Konfiguration wird ein Signal von einem Knoten 424 über einen S-Bus 406 an einen anderen Knoten 425 des Einschubs 420 übertragen, das einen Konfigurationswert des anderen Knotens 425 zurückgibt, welcher anzeigt, dass andere Knoten 427, 429, 431 von jeweiligen anderen Einschüben 421, 422, 423 mit dem anderen Knoten 425 kommunikativ verbunden sind und über eine Durchgriffsfunktion des anderen Knotens 425 auf die anderen Knoten 427, 429, 431 zugegriffen werden kann.
  • In einer Ausführungsform legt der resultierende Konfigurationswert eines Knotens fest, ob die Kohärenz des Knotens von einem ersten Kohärenz-Protokoll einer Konfiguration festgestellt werden soll, welche über keine SC-Funktion (8) verfügt, oder von einem zweiten Kohärenz-Protokoll einer Konfiguration, welche über eine SC-Funktion verfügt (1), wobei das erste Kohärenz-Protokoll nur von Clustern des Knotens gesteuert wird und das zweite Kohärenz-Protokoll vollständig in dem Knoten von einer SC 112 des Knotens gesteuert wird.
  • In einer Ausführungsform kann der resultierende Konfigurationswert des Knotens (2, 305) festlegen, ob die Kohärenz eines Knotens 305 von einem dritten Kohärenz-Protokoll einer Konfiguration, die über einen oder mehrere weitere Knoten 306 in demselben Einschub verfügt, oder von einem vierten Kohärenz-Protokoll einer Konfiguration, die über einen oder mehrere weitere Einschübe 310 mit einem oder mehreren weiteren Knoten 307, 308 verfügt, festgestellt werden soll.
  • Ein moderner Prozessorchip (Siliciumchip) kann daher in vielen verschiedenen Systemkonfigurationen eingesetzt werden und es wäre für den Chip vorteilhaft, wenn er das Cachekohärenz-Protokoll optimieren könnte, das entsprechend der Konfiguration, in der er sich befindet, verwendet wird. In der hier verwendeten Weise wird ein Prozessorchip beschrieben, jedoch wären Ausführungsformen in anderen Packungen genauso nützlich, so zum Beispiel ein Multi-Chip-Modul, das eine Prozessorfunktion bereitstellt.
  • In Ausführungsformen ist ein Chip in der Lage, die Systemkonfiguration, in der er sich befindet, zu erkennen und das in der Konfiguration verwendete Cachekohärenz-Protokoll folglich entsprechend anzupassen. Dadurch können wir viele verschiedene Systemstrukturen aufbauen, um den Erfordernissen eines einzelnen Systems basierend auf demselben Chip besser gerecht zu werden.
  • Bezug nehmend auf 4, kann ein vollständig konfiguriertes SMP-System in einer Ausführungsform aus vier ”Einschüben” 420 bis 423 bestehen, wobei jeder Einschub bis zu zwei Knoten 424 425, 426 427, 428 429, 430 431 aufweisen kann. Jeder Knoten in der leistungsstärkeren Konfiguration (High-End-Konfiguration) kann aus drei CP-Chips 109 bis 111 und einem SC-Chip 112 bestehen, wie in 1 gezeigt ist.
  • Eine beispielhafte Darstellung der L3-Cache-Hierarchie (5) und der L4-Cache-Hierarchie (6), der Cache-Controller und ihrer wichtigsten Komponenten und Interaktionen kann bereitgestellt werden, die so in Dialogverkehr treten können, wie in den 5 und 6 gezeigt ist. Wie beispielsweise gezeigt ist, kann der CP-Chip 500 sechs Prozessorkerne 501 bis 506, einen gemeinsam genutzten L3-Cache 508, Anschlüsse, um durch ein Hauptspeicher-Steuersystem (memory control system (MCS)) 507 auf den Hauptspeicher und durch jeweilige E/A-Komplexe 519, 520 auf E/A-Anschlüsse zuzugreifen, enthalten. In einer Ausführungsform kann jeder CP-Chip 500 eine X-Bus-Verbindung A B C für den direkten Zugriff auf bis zu zwei weitere CP-Chips 500 und einen SC-Chip (6) 600 enthalten. Über einen X-Bus 100 bis 105 kann der SC-Chip 600 einen vollständig gemeinsam genutzten L4-Cache 601 sowie Verbindungen A B und C für eine Verbindung mit drei CP-Chips enthalten. Die CP-Chips 500 und der SC-Chip 600 auf demselben Knoten tauschen über die X-Bus-Schnittstelle (1) 100 bis 105 Daten aus. Ein Knoten kann aus bis zu vier Chips bestehen, die in einer vollständig verbundenen Punkt-zu-Punkt-X-Bus-Topologie verbunden sind. Die Anzahl und die Art der mit dem X-Bus verbundenen Chips ist in Abhängigkeit von der Systemkonfiguration unterschiedlich. Wenn sich der SC-Chip 600 in der Konfiguration befindet, kann er als Kohärenzpunkt dienen. Weil der CP-Chip jedoch alle notwendigen Verbindungen und die Funktionalität zur Aufrechterhaltung der Kohärenz enthält, muss der SC-Chip nicht in Konfigurationen des unteren Leistungsbereichs (Low-End-Konfigurationen) installiert sein.
  • Wenn in dem System kein SC-Chip vorhanden ist, muss der CP-Chip das Kohärenz-Protokoll unterstützen. In einer Ausführungsform könnte sich dasselbe CP-Chip-Design in beliebigen von mehreren möglichen Systemkonfigurationen befinden:
    Der CP-Chip (5) 500 könnte der einzige Chip in dem System sein, wie in 7, 700 gezeigt ist. In dieser Konfiguration können Cachezeilen, die in dem L3-Cache fehlen, über die Hauptspeicherschnittstelle auf dem einzigen CP-Chip 700 direkt aus dem Hauptspeicher abgerufen werden, und Zeilen, die ihre maximale Lebensdauer im L3-Cache 508 erreicht haben, können auf ähnliche Weise direkt im Hauptspeicher abgelegt werden. Der auf dem Chip befindliche L3-Cache 508 kann als Kohärenzpunkt dienen und die Eigentümerschaft der Cachezeile verwalten.
  • Der CP-Chip (5) 500 könnte sich in einem System (8) mit einem oder mehreren gleichrangigen CP-Chips 800, 801, 802 befinden. In dieser Konfiguration sind Fehltreffer in dem auf dem Chip befindlichen L3 chipexterne Rundsendungen an die anderen (1 oder 2) CP-Chips über die X-Bus-Schnittstelle 100, 101, 105. Die X-Bus-Schnittstelle kann eine direkte Punkt-zu-Punkt-Übertragung zwischen jedem CP-Chip in der Konfiguration ermöglichen. Der oder die L3-Cachespeicher auf dem oder den anderen CP-Chips können abgefragt werden und der resultierende Trefferstatus kann auf dem X-Bus 100, 101, 105 übertragen und an die anderen CP-Chips 800, 801, 802 in dem System, einschließlich des anfordernden CP-Chips, gesendet werden. Weil jeder Chip Informationen aus einer Verzeichnissuche empfangen kann, die den Status der Zielzeile von allen anderen Chips bereitstellen, kann jeder Chip die resultierenden Informationen von jedem Chip (unter Verwendung von Partial-Response-Informationen (Presp)) zu einer systemweiten Gesamt-Momentaufnahme des Status der Zielzeile (Combined-Response-Informationen (Cresp)) zusammenfassen. Die Presp oder 'Partial Response' (Teilantwort) bezieht sich auf den Teil des Kohärenzzustands der Cachezeile, der ermittelt werden kann, indem nur der Verzeichniszustand von einem CP-Chip in dem Knoten abgefragt wird. Die Cresp oder 'Combined Response' (kombinierte Antwort) bezieht sich auf den vollständigen Kohärenzzustand des gemeinsam genutzten Cachespeichers, der von der XBUS-Empfänger-Hardware eines jeden Chips durch die Kombination aller Presps, die von allen anderen Chips auf dem Knoten empfangen werden, ermittelt werden kann. Wenn es bezüglich der Zielzeile in dem L3-Cache auf einem der fernen (nicht anfordernden) CP-Chips einen Treffer gab, werden die Abrufdaten von diesem Chip geliefert. Wenn es bezüglich der Zeile in dem L3-Cache auf allen CP-Chips keinen Treffer gab, wird die Zeile aus dem Hauptspeicher geliefert. Es sei angemerkt, dass es sich bei dem Ziel-CP des Hauptspeichers um einen beliebigen der CP-Chips in dem System, einschließlich des anfordernden Chips, handeln kann. L3-Cache-Steuerlogik auf jedem CP-Chip kann unabhängig bestimmen, ob sie die Daten in Abhängigkeit von dem lokalen Trefferzustand, vom Hauptspeicherzustand und den resultierenden Cache-Trefferzuständen von den anderen CP-Chips, welche über den X-Bus 100, 101, 105 übertragen werden, liefern soll oder nicht.
  • Der CP-Chip (5) 500 könnte sich in einem großen System mit 1 oder mehreren gleichrangigen CP-Chips 109, 110, 111 und einem SC-Chip 112 befinden, wie in 1 gezeigt ist. In dieser Konfiguration können Abrufe, die in dem lokalen L3 keinen Treffer landen, im Rundsendeverfahren an den oder die anderen CP-Chip(s) 109, 110, 111 und den SC-Chip 112 übertragen werden. Der SC-Chip enthält einen großen L4-Cache, der von allen CP-Chips in dem System gemeinsam genutzt wird. Der L4-Cache 601 enthält möglicherweise nicht alle L3-Cachespeicher auf einem Knoten, jedoch kann der L4-Cache-Controller (Systemkohärenz-Manager 601) durch die Verwendung eines nicht-inklusiven L4-Cache-Verzeichnisses, das den Zustand von Zeilen im L3 verwaltet, welche sich nicht auch im L4 befinden, den Überblick über alle Zeilen auf dem Knoten behalten. In dieser Konfiguration können Fehltreffer in dem auf dem Chip befindlichen L3 über die X-Bus-Schnittstelle 100 bis 105 chipextern im Rundsendeverfahren an die anderen (1 oder 2) CP-Chips 109, 110, 111 und den SC-Chip 112 übertragen werden. Die X-Bus-Schnittstelle ermöglicht eine direkte Punkt-zu-Punkt-Übertragung zwischen dem SC-Chip und jedem CP-Chip in dem Knoten. Bei Vorhandensein eines SC dient dieser als Kohärenzpunkt für das System und ermöglicht dadurch eine wirksame Kohärenzverwaltung über zusätzliche Knoten und/oder Einschübe hinweg. In einem solchen System kann der L3 die Kohärenz über den lokalen Knoten hinweg weiterhin verwalten, sich aber darauf verlassen, dass der SC Informationen über den Zustand der Zielzeile in dem lokalen L4 und (in Konfigurationen mit mehreren Knoten/Einschüben) den Zustand der Zielzeile in anderen L3- und L4-Cachespeichern auf anderen Knoten und/oder Einschüben bereitstellt. Folglich sind das Verhalten des L3 und die Verwaltungsabfolgen in Konfigurationen mit mehreren Chips, die einen SC-Chip enthalten, anders als in Konfigurationen mit mehreren Chips, die keinen SC-Chip enthalten.
  • In einer Ausführungsform erkennen die Chips die Konfiguration des Systems beim Start. Wenn die Chips anfangs eingeschaltet werden, verfügt kein Chips über chipexterne Schnittstellen zu irgendeinem anderen Chip. Da die Hardware beispielsweise von Mikrocode (Firmware, die intern zur Durchführung von Aufgaben im Namen der Hardware verwendet wird) initialisiert wird, können die chipexternen Schnittstellen auf den CP-Chips von Firmware kalibriert werden, um eine Übertragung von Chip zu Chip zu ermöglichen. Wenn eine Schnittstelle erfolgreich kalibriert ist, setzt die Firmware ein Status-Bit, um anzuzeigen, dass die Schnittstelle jetzt gültig ist und für eine Übertragung von Chip zu Chip zur Verfügung steht, und sie stellt zusätzliche Informationen darüber bereit, welche Art von Chip mit einer jeden gültigen Schnittstelle verbunden ist. Durch die Auswertung des kollektiven Zustands dieser 'Gültig'-Anzeigen kann der L3-Cache-Controller feststellen, welche Schnittstellen über aktive Verbindungen verfügen, und er kann die Topologie des Systems feststellen, d. h., ob der CP-Chip über eine Schnittstelle mit anderen CP-Chips und in einer Ausführungsform mit einem SC-Chip verbunden ist.
  • Auf der Grundlage dieser Informationen kann der L3-Cache-Controller das Kohärenz-Protokoll und den Kohärenz-Mechanismus bereitstellen, das bzw. der für eine Übertragung von Chip zu Chip verwendet wird. Im einfachsten Fall ist der Chip möglicherweise der einzige Chip in dem System (keine anderen Chips schicken eine Antwort zurück), und folglich braucht er nur die Kohärenz zwischen den Kernen auf dem Chip zu verwalten. In dem Fall, dass es nur gleichrangige CP-Chips gibt (mehr als einen CP-Chip, aber keinen SC-Chip), kann das Protokoll auf der Grundlage der Einstellung, dass die Schnittstelle gültig ist, bereitgestellt werden, so dass einer der CP-Chips als der Kohärenzpunkt in dem System dient. Der Kohärenzpunkt kann auf Basis einer einzelnen Zeile, beruhend auf dem Zustand der Cachezeile, in einem jeden Chip festgelegt werden (ein Kohärenzpunkt eines CP-Chips für eine bestimmte Cachezeile kann von einem CP-Chip und eine weitere Cachezeile kann von einem anderen CP-Chip verwaltet werden). In den Systemen, die sowohl über CP- als auch über SC-Chips verfügen, kann das Protokoll für ein mehrschichtiges Protokoll bereitgestellt werden, wobei der SC als ein globaler Kohärenzpunkt für das System dient und die CP-Chips als ein lokaler Kohärenzpunkt für den Knoten dienen.
  • Wenn ein CP beispielsweise durch die Auswertung der Anzeigen, dass die Schnittstelle gültig ist, feststellt, dass er nur mit anderen CP-Chips verbunden ist, weiß er, dass es sich bei der Systemtopologie um diejenige einer verhältnismäßig kleinen SMP-Struktur handelt. Er kann dann feststellen, dass die chipexterne Übertragung hinsichtlich der Systemleistung optimiert werden sollte und sich für die Verwendung eines Abhörprozesses für den Kohärenz-Mechanismus und ein Protokoll wie zum Beispiel MESI entscheiden, um die Kohärenz zwischen CP-Chips zu verwalten. Wenn die Auswertung der Anzeigen, dass die Schnittstelle gültig ist, alternativ anzeigt, dass der CP mit einem SC-Chip verbunden ist, weiß er, dass er zu einer großen SMP-Struktur gehört. In solch einem Fall ist ein skalierbarerer Kohärenz-Mechanismus wie zum Beispiel ein verzeichnisbasierter Mechanismus besser geeignet und die Verwendung eines anderen Protokolls wie zum Beispiel MOESI kann für die Verwaltung der Kohärenz zwischen Cachespeichern eine bessere Wahl darstellen.
  • In einer Ausführungsform stellt jedes Cluster zum Zeitpunkt der Initialisierung fest, ob der Knoten des Clusters weitere Cluster oder einen SC enthält und erfasst einen entsprechenden Kohärenzwert und verwendet den erfassten entsprechenden Kohärenzwert während des Normalbetriebs, um festzustellen, welche Schnittstellen verwendet werden sollen. In einer Ausführungsform verwendet das Cluster überdies ein MESI-Protokoll, wenn kein SC vorhanden ist, aber ein MOESI-Protokoll, wenn ein SC vorhanden ist.
  • In einer Ausführungsform stellt die SC-Funktion, sofern sie in dem Knoten vorhanden ist, zum Zeitpunkt der Initialisierung fest, ob der Knoten des SC weitere Cluster enthält und ob der Knoten mit anderen Knoten (und folglich der Konfigurationstopologie) kommunikativ verbunden ist. Die SC-Funktion des Knotens kann ihren erfassten entsprechenden Kohärenzwert während des Normalbetriebs verwenden, um festzustellen, welche Schnittstellen verwendet, welches Kohärenz-(Fabric-)Protokoll des lokalen Cachespeichers verwendet und welches Kohärenz-(Fabric-)Protokoll des globalen Cachespeichers verwendet werden soll.
  • In einer Ausführungsform wird anhand der von einem SC-Chip vorgenommenen Auswertung der Anzeigen, dass die Schnittstelle gültig ist, festgestellt, ob weitere Knoten vorhanden sind. Wenn der Knoten des SC-Chips der einzige Knoten in dem System ist, kann der Zusatzaufwand in Form von Kohärenzoperationen zwischen Knoten entfallen.
  • Folglich kann die Kohärenz für eine Zeile, die sich nur auf die auf dem Chip befindlichen Verarbeitungseinheiten (processing units (PUs)) 501 bis 506 der CPs 109, 110, 111 eines Knotens auswirkt, ohne Störbeeinflussung von anderen Knoten verwaltet werden, was zu einer deutlich besseren Systemleistung führt. Wenn einer PU eines Knotens beispielsweise eine Cachezeile ”gehört” und eine weitere PU desselben Knotens die Eigentümerschaft anfordert, können die Anforderung und der Wechsel der Eigentümerschaft durchgeführt werden, ohne andere Knoten zu stören.
  • In einer Ausführungsform kann der physische X-Bus zum Senden von Hauptspeicherbefehlen und Hauptspeicherdaten verwendet werden und er kann in zwei logische Busse aufgeteilt werden. Der erste Bus ist ein gemeinsam genutzter Adress- und Datenbus (d. h. der primäre Bus). Der zweite Bus ist der Antwort-Seitenbandbus. Die vollständigen Verbindungsmöglichkeiten des X-Busses von Chip zu Chip ist in 9 gezeigt. Jeder Chip des Knotens hat ein Ansteuer-, Empfangspaar von Bussen, die jeweils einem anderen Chip des Knotens fest zugeordnet sind. Die X-Bus-Protokollsequenz kann in mehrere einzelne Schritte aufgeteilt werden. Alle Sequenzen auf einem beispielhaften X-Bus können mit diesen ersten vier Schritten beginnen:
    Der anfordernde Chip leitet die Sequenz ein, indem er den Befehl und die Adresse im Rundsendeverfahren an alle fernen Chips auf dem Knoten überträgt. Jeder Chip auf dem Knoten kann der anfordernde Chip für eine bestimmte Operation sein.
  • Der im Rundsendeverfahren übertragene Befehl/die im Rundsendeverfahren übertragene Adresse wird von einem jeden der fernen Chips empfangen und eine Abhörleitung wird durchlaufen. Das Durchlaufen der Abhörleitung kann eine Teilantwort (PRESP) erzeugen und Abhörinformationen in einen Controller auf dem fernen Chip laden.
  • Jeder ferne Chip kann seine PRESP im Rundsendeverfahren an jeden anderen Chip auf dem Knoten (d. h. sowohl an den anfordernden Chip als auch die anderen fernen Chips) übertragen.
  • Alle Chips auf dem Knoten können alle PRESPs zusammentragen und dann eine kombinierte Antwort (CRESP) für den Controller erzeugen, der die Sequenz gerade verarbeitet. Auf der Grundlage der CRESP wird einer der Chips auf dem Knoten als Kohärenzpunkt für die Zeile festgelegt und ist dafür verantwortlich, die Zeile für die Dauer der Sequenz zu schützen.
  • An diesem Punkt ist die Abfolge der Antworten in Abhängigkeit von der Art der Operation und der CRESP unterschiedlich. Der Beispiel-Fall eines Abrufs, der von dem anfordernden Chip mit Daten gesendet wird, die von einem fernen Chip geliefert werden, wird hier beschrieben:
    Der ferne Chip, der die Daten liefert, kann eine Datenantwort (data response (DRESP)) an den anfordernden Chip senden. Der ferne Chip kann die DRESP spekulativ vor der CRESP senden.
  • Alle fernen Chips können notwendige Verzeichnis-Aktualisierungen vornehmen.
  • Alle fernen CP-Chips können eine abschließende Antwort (final response (FRESP)) an den anfordernden Chip senden.
  • Wenn der anfordernde Chip ein CP ist, kann er eine Rücksetzantwort (reset response (RRESP)) an den SC senden, um den SC-Controller zurückzusetzen.
  • Nach dem Empfang einer Befehls-/Adressanforderung kann jeder ferne Chip eine Abhörleitung durchlaufen, um den Zustand der angeforderten Zeile in seinem Cache zu prüfen. Beim Durchlaufen der Abhörleitung kann auch eine Prüfung auf Ressourcenverfügbarkeit und auf einen Adressenkonflikt mit anderen Anforderungen vorgenommen werden. Die Ergebnisse dieses Leitungsdurchlaufs, die als Teilantwort bezeichnet werden, können dann im Rundsendeverfahren an alle anderen Chips auf dem Knoten übertragen werden.
  • Das XBUS-Protokoll kann in der High-End-(HE-)Konfiguration, die einen SC-Chip (1) enthalten kann, und in der Low-End-(LE-)Konfiguration (8), die nur CP-Chips enthalten kann, unterschiedlich sein.
  • In der Low-End-(LE-)Konfiguration ist der Local Intervention Master (LIM) L3 vorzugsweise der primäre Serialisierungs- und Kohärenzpunkt auf dem Knoten. Der LIM L3 kann der L3 auf dem CP-Chip sein, der Daten liefert. In dieser Konfiguration kann der L3 auf fernen CP-Chips auf der Grundlage von Adressvergleichen, die während des Durchlaufens der Abhörleitung auf dem fernen CP-Chip entdeckt wurden, Zurückweisungs-Teilantworten über den XBUS senden. Nach dem Empfang dieser Zurückweisungs-Teilantworten kann der anfordernde CP-Chip zu einem späteren Zeitpunkt den auf dem XBUS im Rundsendeverfahren übertragenen Befehl wiederholen.
  • In der High-End-(HE-)Konfiguration (1) kann der SC-Chip 112 der Serialisierungs- und Kohärenzpunkt auf dem Knoten sein. Der L3 der CPs weist vorzugsweise keine X-Bus-Anforderungen in der HE-Konfiguration zurück, seine PRESP enthält vorzugsweise nur die Ergebnisse des L3-Verzeichnisses. Der L3 muss vorzugsweise auf eine Nichtzurückweisungs-CRESP warten, bevor er das L3-Verzeichnis ungültig machen kann. Wenn es beim Abhören einen Adressen- oder Ressourcenkonflikt gibt, kann der L4 die SC-Zurückweisungs-PRESP senden. Der L4-Controller wartet vorzugsweise, bis der Konflikt gelöst ist und sendet dann eine FRESP, um zu veranlassen, dass der anfordernde L3 seine Anforderung erneut im Rundsendeverfahren überträgt. Die erste Anforderung an den SC kann eine Adresse in einen Controller in dem SC laden, der nachfolgende Anforderungen an dieselbe Adresse zurückweisen kann. Die Adresse kann von dem L4-Controller geschützt werden, welche für die Dauer der Operation gültig bleiben kann. Der L4 kann Anforderungen von anderen L3s zurückweisen und auch die Zeile vor globalen Fabric-Anforderungen schützen. Am Ende der Sequenz kann der L3-Controller den L4-Controller benachrichtigen, dass er nun sicher zurückgesetzt werden kann.
  • In sowohl der HE- als auch der LE-Konfiguration können Anforderungen für Daten von dem Local-Intervention-Master-(LIM-)Chip auf dem Knoten geliefert werden. Es kann immer einen LIM-Chip auf dem Knoten geben. Der L4 ist möglicherweise kein vollständig inklusiver Cache, doch kann er den Überblick über alle Zeilen auf dem Knoten behalten. Das Verzeichnis des nicht-inklusiven L4-Cachespeichers (Non Inclusive Cache (NIC)) kann verwendet werden, um den Überblick über alle Zeilen in dem L3 zu behalten, die sich nicht auch im L4 befinden. Daher könnte der LIM-Chip in HE-Konfigurationen der SC-Chip oder einer der CP-Chips sein, jedoch ist der L4 immer der Kohärenzpunkt.
  • In der LE-Konfiguration können lokale und/oder ferne L3-Controller den LIM (Local Intervention Master) auf 'anstehend' (pending) und den LMM (Local Memory Master) auf 'anstehend' setzen, um die Adresse zu schützen und Adressenvergleiche zu ermöglichen, um die Kohärenz der Zeile zu schützen. Die Entscheidung, welcher CP-Chip den LIM auf 'anstehend' setzt, kann von dem lokalen Treffer-Zustand und den kombinierten Treffer-Zuständen der beiden anderen CP-Chips getroffen werden, welche von der Cresp (Kombination aus den Presp-Zuständen von anderen CP-Chips) ermittelt werden, und sie kann als Folge des vollständig verbundenen X-Bus-Protokolls parallel auf allen CP-Chips getroffen werden. Die Entscheidung, welcher CP-Chip den LMM auf 'anstehend' setzt, kann basierend darauf, welcher Chip den Hauptspeicherplatz der Zielzeile enthält, getroffen werden.
  • Die L3-Controller setzen weder den LIM noch den LMM in der HE-Konfiguration auf 'anstehend'; die Kohärenz kann durch Adressenvergleiche im L4-Cache-Controller aufrechterhalten werden.
  • Ein weiterer Unterschied zwischen dem LE- und dem HE-Protokoll schließt vorzugsweise die Bedingungen ein, unter denen der Einlass in den lokalen L3-Fehltreffer-Controller blockiert wird. Ein Einlass in diesen Controller ist gegebenenfalls nur zulässig, wenn alle notwendigen fernen Ressourcen zur Verfügung stehen. Nur ferne Ressourcen, die in der Konfiguration tatsächlich vorhanden sind, können in der Blockierlogik des lokalen L3-Fehltreffer-Controllers berücksichtigt werden. Wenn es keinen SC-Chip in der Konfiguration gibt, braucht der anfordernde CP-Chip (L3) folglich keine Prüfung auf verfügbare Ressourcen auf dem SC-Chip vorzunehmen oder auf verfügbare Ressourcen auf dem SC-Chip zu warten. Basierend auf dieser Anzeige in der Konfigurationseinstellung überspringt die CP-L3-X-Bus-Befehlsstart-Hardwarearbitrierung die Logik, welche die SC-Ressourcenprüfung sowie mögliche Übergänge in Wartezustände für SC-Ressourcen durchführt. Auf ähnliche Weise prüft die CP-L3-X-Bus-Befehlsstart-Hardware den Hinweis, ob es einen oder zwei weitere CP-Chips in dem System gibt oder nicht, und wenn nicht, überspringt sie die Logik, welche die Prüfung auf ferne CP-Ressourcen sowie mögliche Übergänge in Wartezustände für ferne CP-Ressourcen durchführt. Darüber hinaus weist die Rundsenderate auf dem X-Bus möglicherweise eine notwendige Beschränkung in High-End-Konfigurationen aufgrund der Pipelining-Verfügbarkeit in dem L4 auf. Diese Beschränkung der Rundsenderate kann auch dynamisch aufgehoben werden, sobald festgestellt wird, dass die aktuelle Konfiguration keinen L4-/SC-Chip enthält.
  • In einer Ausführungsform wird ein Cachekohärenz-Protokoll einer Vielzahl von Cachekohärenz-Protokollen in einem Computersystem ausgeführt, das ein oder mehrere kommunikativ verbundene Computer-Elemente 109 bis 112 eines ersten Knotens aufweist, wobei jedes Computer-Element 109 bis 112 mindestens ein Cluster 500 und/oder eine Speichercontroller-(SC-)Funktion 600 aufweist, wobei jedes Cluster 500 einen oder mehrere Prozessoren 501 bis 506 aufweist, wobei die SC-Funktion einen gemeinsam genutzten Cache aufweist, wobei der gemeinsam genutzte Cache von Prozessoren eines jeden Clusters gemeinsam genutzt wird, wobei der erste Knoten so konfiguriert ist, dass er ein Verfahren durchführt, wobei das Verfahren aufweist: Einleiten (10) 1000 der Übertragung durch jedes Element der Konfiguration an andere Elemente der Konfiguration, um die Konfigurationstopologie zu ermitteln; auf der Grundlage eines Ergebnisses der eingeleiteten Übertragung Speichern 1001 eines Kohärenzwerts 1006 durch jedes Element 109 bis 112; auf der Grundlage des Kohärenzwerts 1006 Auswählen 1003 durch die Elemente 109 bis 112 eines Knotens 424, eines Cachekohärenz-Protokolls der Vielzahl der Cachekohärenz-Protokolle 1002, das von dem Knoten 424 verwendet werden soll; und Verwenden 1004 des ausgewählten Cachekohärenz-Protokolls, um Cachekohärenz-Anforderungen 1100 zu verarbeiten.
  • In einer Ausführungsform besteht die Konfigurationstopologie aus dem ersten Knoten 424, wobei die Vielzahl der Cachekohärenz-Protokolle 1002 ein erstes Protokoll aufweist 1007, das keine SC-Funktion 600 verwendet, um die Cachekohärenz des Knotens 424 aufrechtzuerhalten, und ein zweites Protokoll, das eine SC-Funktion 600 verwendet, um die Cachekohärenz des ersten Knotens 424 aufrechtzuerhalten.
  • In einer Ausführungsform besteht die Konfigurationstopologie aus dem ersten Knoten 424, wobei das Verwenden 1004 des ausgewählten Cachekohärenz-Protokolls des Weiteren den Zugriff auf ein inklusives Verzeichnis 1105 der SC-Funktion 600 des ersten Knotens 424 aufweist, um die Cachekohärenz-Anforderungen zu verarbeiten.
  • In einer Ausführungsform weist die Konfigurationstopologie des Weiteren einen oder mehrere zweite Knoten 425 bis 427 auf, wobei der erste Knoten 424 mit dem einen oder den mehreren zweiten Knoten 425 kommunikativ verbunden ist, wobei das Verwenden 1004 des ausgewählten Cachekohärenz-Protokolls des Weiteren aufweist:
    Zugreifen 1103 durch den ersten Knoten 424 auf ein inklusives Verzeichnis 1005 der SC-Funktion 600 des ersten Knotens 424, um die Cachekohärenz-Anforderungen zu verarbeiten; auf der Grundlage der Feststellung durch den ersten Knoten, dass die Cachekohärenz-Operation nur von dem ersten Knoten durchgeführt werden kann, Durchführen 1102 der Cachekohärenz-Operation durch den ersten Knoten, ohne auf Cachespeicher des einen oder der mehreren zweiten Knoten zuzugreifen; und auf der Grundlage der Feststellung durch den ersten Knoten, dass die Cachekohärenz-Operation auf den einen oder die mehreren zweiten Knoten zugreifen muss, Durchführen 1103 der Cachekohärenz-Operation, indem auf Cachespeicher des einen oder der mehreren zweiten Knoten zugegriffen wird.
  • In einer Ausführungsform weist die Vielzahl der Cachekohärenz-Protokolle 1007 ein drittes Protokoll und ein viertes Protokoll auf, um die Cachekohärenz des Knotens 424 aufrechtzuerhalten, wobei es sich bei dem dritten Protokoll um das MESI-Protokoll 1007 und bei dem vierten Protokoll um das MOESI-Protokoll 1007 handelt.
  • In einer Ausführungsform legt die SC-Funktion 600 fest 1202, dass entweder das erste Protokoll 1007 oder das zweite Protokoll 1007 bei lokalen Cachekohärenz-Operationen in dem Knoten verwendet werden soll und dass ein anderes Protokoll als das erste Protokoll 1007 oder das zweite Protokoll 1007 bei globalen Cachekohärenz-Operationen verwendet werden soll.
  • In einer Ausführungsform weist die Konfigurationstopologie eine Vielzahl von Knoten 424 bis 431 auf, wobei eine erste Vielzahl von Knoten 424, 425 über einen S-Bus 406 kommunikativ verbunden ist, wobei die erste Vielzahl von Knoten 424, 425 mit anderen Knoten 426 bis 431 der Vielzahl der Knoten über einen oder mehrere A-Busse 400 bis 405 kommunikativ verbunden ist, wobei Kohärenz-Operationen über den S-Bus 406 und den einen oder die mehreren A-Busse 400 bis 405 im Rundsendeverfahren an alle Knoten übertragen 1203 werden.
  • Bezug nehmend auf 1 kann die vorliegende Erfindung ein System, ein Verfahren und/oder ein Computerprogrammprodukt sein. Das Computerprogrammprodukt kann ein von einem Computer lesbares Speichermedium (oder Speichermedien) beinhalten, auf dem sich von einem Computer lesbare Programmanweisungen befinden, um einen Prozessor zu veranlassen, Aspekte der vorliegenden Erfindung umzusetzen.
  • Das von einem Computer lesbare Speichermedium kann eine physisch greifbare Einheit sein, die Anweisungen zur Verwendung durch eine Anweisungsausführungseinheit aufnehmen und speichern kann. Das von einem Computer lesbare Speichermedium kann zum Beispiel, ohne darauf beschränkt zu sein, eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder eine beliebige geeignete Kombination des Vorstehenden sein. Eine Liste mit genaueren Beispielen für das von einem Computer lesbare Speichermedium, die keinen Anspruch auf Vollständigkeit erhebt, beinhaltet die folgenden Beispiele: eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flashspeicher), einen statischen Direktzugriffsspeicher (SRAM), einen tragbaren Compact-Disk-Nur-Lese-Speicher (CD-ROM), eine digitale vielseitig verwendbare Disk (DVD), einen Speicherstick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhöhte Strukturen in einer Rille mit darauf aufgezeichneten Anweisungen sowie jede beliebige geeignete Kombination des Vorstehenden. Ein von einem Computer lesbares Speichermedium in der hier verwendeten Weise ist nicht so auszulegen, dass es sich dabei um kurzzeitige Signale an sich, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich über einen Wellenleiter oder andere Übertragungsmedien ausbreiten (z. B. Lichtimpulse, die durch ein Lichtwellenleiterkabel geleitet werden), oder elektrische Signale, die über ein Kabel übertragen werden, handelt.
  • Von einem Computer lesbare Programmanweisungen, die hier beschrieben sind, können von einem Speichermedium, das von einem Computer gelesen werden kann, auf entsprechende Rechen-/Verarbeitungseinheiten oder über ein Netzwerk, zum Beispiel das Internet, ein lokales Netz, ein Weitverkehrsnetz und/oder ein drahtloses Netz, auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenleiter, drahtlose Übertragung, Router, Firewalls, Vermittlungsstellen (Switches), Gateway-Rechner und/oder Edge-Server aufweisen. Eine Netzadapterkarte oder Netzschnittstelle in jeder Rechen-/Verarbeitungseinheit empfängt von einem Computer lesbare Programmanweisungen von dem Netzwerk und leitet die von einem Computer lesbaren Programmanweisungen weiter, um sie in einem von einem Computer lesbaren Speichermedium in der jeweiligen Rechen-/Verarbeitungseinheit zu speichern.
  • Bei den von einem Computer lesbaren Programmanweisungen zur Durchführung von Operationen der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, Befehle der Befehlssatzarchitektur (ISA), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, Zustandseinstellungsdaten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen einschließlich einer objektorientierten Programmiersprache, wie beispielsweise Smalltalk, C++ oder dergleichen, sowie in herkömmlichen prozeduralen Programmiersprachen wie beispielsweise der Programmiersprache ”C” oder in ähnlichen Programmiersprachen geschrieben sind. Die von einem Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. Im letzteren Szenario kann der ferne Computer mit dem Computer des Benutzers über jede beliebige Art eines Netzwerks einschließlich eines lokalen Netzes (LAN) oder eines Weitverkehrsnetzes (WAN) verbunden sein oder die Verbindung kann zu einem externen Computer (zum Beispiel über das Internet mittels eines Internet-Dienstanbieters) hergestellt werden. In manchen Ausführungsformen können elektronische Schaltungen, zu denen beispielsweise programmierbare Logikschaltkreise, kundenprogrammierbare Universalschaltkreise (FPGA) oder programmierbare logische Anordnungen (PLA) gehören, die von einem Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der von einem Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung umzusetzen.
  • Aspekte der vorliegenden Erfindung werden hier mit Bezug auf Darstellungen in Ablaufplänen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Darstellungen in den Ablaufplänen und/oder der Blockschaubilder sowie Kombinationen aus Blöcken in den Darstellungen der Ablaufpläne und/oder den Blockschaubildern von Programmanweisungen, die von einem Computer gelesen werden können, realisiert werden können. Diese von einem Computer lesbaren Programmanweisungen können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Anweisungen, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zur Ausführung der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
  • Diese von einem Computer lesbaren Programmanweisungen können auch in einem von einem Computer lesbaren Speichermedium gespeichert werden, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass das von dem Computer lesbare Speichermedium, das über darin gespeicherte Anweisungen verfügt, einen Herstellungsgegenstand aufweist, der Anweisungen enthält, die Aspekte der Funktion/des Vorgangs umsetzen, welche beziehungsweise welcher in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben ist.
  • Die von einem Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder auf eine andere Einheit geladen werden, um die Durchführung einer Reihe von Betriebsschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder auf einer anderen Einheit zu bewirken, um einen von einem Computer ausgeführten Prozess zu erzeugen, so dass die Anweisungen, die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführt werden, die Funktionen/Vorgänge ausführen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
  • Die Ablaufpläne und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und die Betriebsweise von möglichen Ausführungsarten von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in den Ablaufplänen oder in den Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, das beziehungsweise der einen oder mehrere ausführbare Anweisungen zur Ausführung der angegebenen logischen Funktion(en) aufweist. In manchen alternativen Ausführungsarten treten die in dem Block angegebenen Funktionen gegebenenfalls nicht in der in den Figuren angegebenen Reihenfolge auf. In Abhängigkeit von der mit ihnen verbundenen Funktionalität können beispielsweise zwei Blöcke, die als aufeinanderfolgende Blöcke dargestellt sind, tatsächlich weitgehend gleichzeitig ausgeführt werden oder die Blöcke können zuweilen in der umgekehrten Reihenfolge ausgeführt werden. Man wird auch feststellen, dass jeder Block der Blockschaubilder und/oder der Darstellung in den Ablaufplänen sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder der Darstellung in den Ablaufplänen von Systemen, die auf Spezial-Hardware beruhen und die angegebenen Funktionen oder Vorgänge oder Kombinationen aus Anweisungen von Spezial-Hardware und Computer-Anweisungen durchführen, realisiert werden können.

Claims (20)

  1. Computersystem, um ein Cachekohärenz-Protokoll einer Vielzahl von Cachekohärenz-Protokollen auszuwählen und auszuführen, wobei das Computersystem aufweist: einen ersten Knoten einer Konfiguration, die einen oder mehrere kommunikativ verbundene Knoten aufweist, wobei jeder Knoten ein oder mehrere kommunikativ verbundene Computer-Elemente aufweist, wobei jedes Computer-Element mindestens ein Cluster und/oder eine Speichercontroller-(SC-)Funktion aufweist, wobei jedes Cluster einen oder mehrere Prozessoren aufweist, wobei die SC-Funktion einen gemeinsam genutzten Cache aufweist, wobei der gemeinsam genutzte Cache von Prozessoren eines jeden Clusters gemeinsam genutzt wird, wobei der erste Knoten so konfiguriert ist, dass er ein Verfahren durchführt, wobei das Verfahren aufweist: Einleiten einer Übertragung durch jedes Element der Konfiguration an andere Elemente der Konfiguration, um die Konfigurationstopologie zu ermitteln; auf der Grundlage eines Ergebnisses der eingeleiteten Übertragung Speichern eines Kohärenzwerts durch ein Element des ersten Knotens; auf der Grundlage des Kohärenzwerts Auswählen, durch ein jedes Element des ersten Knotens, eines Cachekohärenz-Protokolls der Vielzahl der Cachekohärenz-Protokolle, das von dem ersten Knoten verwendet werden soll; und Verwenden des ausgewählten Cachekohärenz-Protokolls durch den ersten Knoten, um Cachekohärenz-Anforderungen zu verarbeiten.
  2. Computersystem nach Anspruch 1, wobei die Konfigurationstopologie aus dem ersten Knoten besteht, wobei die Vielzahl der Cachekohärenz-Protokolle ein erstes Protokoll aufweist, das keine SC-Funktion verwendet, um die Cachekohärenz des ersten Knotens aufrechtzuerhalten, und ein zweites Protokoll, das eine SC-Funktion verwendet, um die Cachekohärenz des ersten Knotens aufrechtzuerhalten.
  3. Computersystem nach Anspruch 1, wobei die Konfigurationstopologie aus dem ersten Knoten besteht, wobei das Verwenden des ausgewählten Cachekohärenz-Protokolls des Weiteren den Zugriff auf ein inklusives Verzeichnis der SC-Funktion des ersten Knotens aufweist, um die Cachekohärenz-Anforderungen zu verarbeiten.
  4. Computersystem nach Anspruch 1, wobei die Konfigurationstopologie des Weiteren einen oder mehrere zweite Knoten aufweist, wobei der erste Knoten mit dem einen oder den mehreren zweiten Knoten kommunikativ verbunden ist, wobei das Verwenden des ausgewählten Cachekohärenz-Protokolls des Weiteren aufweist: Zugreifen durch den ersten Knoten auf ein inklusives Verzeichnis der SC-Funktion des ersten Knotens, um die Cachekohärenz-Anforderungen zu verarbeiten; auf der Grundlage der Feststellung durch den ersten Knoten, dass die Cachekohärenz-Operation nur von dem ersten Knoten durchgeführt werden kann, Durchführen der Cachekohärenz-Operation durch den ersten Knoten, ohne auf Cachespeicher des einen oder der mehreren zweiten Knoten zuzugreifen; und auf der Grundlage der Feststellung durch den ersten Knoten, dass die Cachekohärenz-Operation auf den einen oder die mehreren zweiten Knoten zugreifen muss, Durchführen der Cachekohärenz-Operation, indem auf Cachespeicher des einen oder der mehreren zweiten Knoten zugegriffen wird.
  5. Computersystem nach Anspruch 1, wobei die Vielzahl der Cachekohärenz-Protokolle ein drittes Protokoll und ein viertes Protokoll aufweist, um die Cachekohärenz des Knotens aufrechtzuerhalten, wobei es sich bei dem dritten Protokoll um das MESI-Protokoll und bei dem vierten Protokoll um das MOESI-Protokoll handelt.
  6. Computersystem nach Anspruch 2, wobei die Konfigurationstopologie des Weiteren einen oder mehrere zweite Knoten aufweist, wobei der erste Knoten mit dem einen oder den mehreren zweiten Knoten kommunikativ verbunden ist, wobei die SC-Funktion des ersten Knotens feststellt, dass entweder das erste Protokoll oder das zweite Protokoll bei lokalen Cachekohärenz-Operationen in dem ersten Knoten verwendet werden soll, und dass ein anderes Protokoll als das erste Protokoll und das zweite Protokoll bei globalen Cachekohärenz-Operationen, an denen der eine oder die mehreren zweiten Knoten beteiligt sind, verwendet werden soll.
  7. Computersystem nach Anspruch 1, wobei die Konfigurationstopologie des Weiteren einen oder mehrere zweite Knoten aufweist, wobei der erste Knoten mit dem einen oder den mehreren zweiten Knoten kommunikativ verbunden ist, wobei eine erste Vielzahl von Knoten über einen S-Bus kommunikativ verbunden ist, wobei die erste Vielzahl von Knoten über einen oder mehrere A-Busse mit anderen Knoten der Vielzahl von Knoten kommunikativ verbunden ist, wobei Kohärenz-Operationen über den S-Bus und den einen oder die mehreren A-Busse im Rundsendeverfahren an alle Knoten übertragen werden.
  8. Computerprogrammprodukt, um ein Cachekohärenz-Protokoll einer Vielzahl von Cachekohärenz-Protokollen in einem Computersystem auszuwählen und auszuführen, das einen ersten Knoten einer Konfiguration aufweist, die einen oder mehrere kommunikativ verbundene Knoten aufweist, wobei jeder Knoten ein oder mehrere kommunikativ verbundene Computer-Elemente aufweist, wobei jedes Computer-Element mindestens ein Cluster und/oder eine Speichercontroller-(SC-)Funktion aufweist, wobei jedes Cluster einen oder mehrere Prozessoren aufweist, wobei die SC-Funktion einen gemeinsam genutzten Cache aufweist, wobei der gemeinsam genutzte Cache von Prozessoren eines jeden Clusters gemeinsam genutzt wird, wobei das Computerprogrammprodukt aufweist: ein von einem Computer lesbares Speichermedium, das von einer Verarbeitungsschaltung lesbar ist und Anweisungen zur Ausführung durch die Verarbeitungsschaltung speichert, um ein Verfahren durchzuführen, welches aufweist: Einleiten einer Übertragung durch jedes Element der Konfiguration an andere Elemente der Konfiguration, um die Konfigurationstopologie zu ermitteln; auf der Grundlage eines Ergebnisses der eingeleiteten Übertragung Speichern eines Kohärenzwerts durch ein Element des ersten Knotens; auf der Grundlage des Kohärenzwerts Auswählen, durch ein jedes Element des ersten Knotens, eines Cachekohärenz-Protokolls der Vielzahl der Cachekohärenz-Protokolle, das von dem ersten Knoten verwendet werden soll; und Verwenden des ausgewählten Cachekohärenz-Protokolls durch den ersten Knoten, um Cachekohärenz-Anforderungen zu verarbeiten.
  9. Computerprogrammprodukt nach Anspruch 8, wobei die Konfigurationstopologie aus dem ersten Knoten besteht, wobei die Vielzahl der Cachekohärenz-Protokolle ein erstes Protokoll aufweist, das keine SC-Funktion verwendet, um die Cachekohärenz des ersten Knotens aufrechtzuerhalten, und ein zweites Protokoll, das eine SC-Funktion verwendet, um die Cachekohärenz des ersten Knotens aufrechtzuerhalten.
  10. Computerprogrammprodukt nach Anspruch 8, wobei die Konfigurationstopologie aus dem ersten Knoten besteht, wobei das Verwenden der ausgewählten Cachekohärenz des Weiteren den Zugriff auf ein inklusives Verzeichnis der SC-Funktion des ersten Knotens aufweist, um Cachekohärenz-Anforderungen zu verarbeiten.
  11. Computerprogrammprodukt nach Anspruch 8, wobei die Konfigurationstopologie des Weiteren einen oder mehrere zweite Knoten aufweist, wobei der erste Knoten mit dem einen oder den mehreren zweiten Knoten kommunikativ verbunden ist, wobei das Verwenden des ausgewählten Cachekohärenz-Protokolls des Weiteren aufweist: Zugreifen durch den ersten Knoten auf ein inklusives Verzeichnis der SC-Funktion des ersten Knotens, um die Cachekohärenz-Anforderungen zu verarbeiten; auf der Grundlage der Feststellung durch den ersten Knoten, dass die Cachekohärenz-Operation nur von dem ersten Knoten durchgeführt werden kann, Durchführen der Cachekohärenz-Operation durch den ersten Knoten, ohne auf Cachespeicher des einen oder der mehreren zweiten Knoten zuzugreifen; und auf der Grundlage der Feststellung durch den ersten Knoten, dass die Cachekohärenz-Operation auf den einen oder die mehreren zweiten Knoten zugreifen muss, Durchführen der Cachekohärenz-Operation, indem auf Cachespeicher des einen oder der mehreren zweiten Knoten zugegriffen wird.
  12. Computerprogrammprodukt nach Anspruch 8, wobei die Vielzahl der Cachekohärenz-Protokolle ein drittes Protokoll und ein viertes Protokoll aufweist, um die Cachekohärenz des Knotens aufrechtzuerhalten, wobei es sich bei dem dritten Protokoll um das MESI-Protokoll und bei dem vierten Protokoll um das MOESI-Protokoll handelt.
  13. Computerprogrammprodukt nach Anspruch 9, wobei die Konfigurationstopologie des Weiteren einen oder mehrere zweite Knoten aufweist, wobei der erste Knoten mit dem einen oder den mehreren zweiten Knoten kommunikativ verbunden ist, wobei die SC-Funktion des ersten Knotens feststellt, dass entweder das erste Protokoll oder das zweite Protokoll bei lokalen Cachekohärenz-Operationen in dem ersten Knoten verwendet werden soll, und dass ein anderes Protokoll als das erste Protokoll und das zweite Protokoll bei globalen Cachekohärenz-Operationen, an denen der eine oder die mehreren zweiten Knoten beteiligt sind, verwendet werden soll.
  14. Computerprogrammprodukt nach Anspruch 8, wobei die Konfigurationstopologie des Weiteren einen oder mehrere zweite Knoten aufweist, wobei der erste Knoten mit dem einen oder den mehreren zweiten Knoten kommunikativ verbunden ist, wobei eine erste Vielzahl von Knoten über einen S-Bus kommunikativ verbunden ist, wobei die erste Vielzahl von Knoten mit anderen Knoten der Vielzahl von Knoten über einen oder mehrere A-Busse kommunikativ verbunden ist, wobei Kohärenz-Operationen über den S-Bus und den einen oder die mehreren A-Busse im Rundsendeverfahren an alle Knoten übertragen werden.
  15. Von einem Computer durchgeführtes Verfahren, um ein Cachekohärenz-Protokoll einer Vielzahl von Cachekohärenz-Protokollen in einem Computersystem auszuwählen und auszuführen, das einen ersten Knoten einer Konfiguration aufweist, die einen oder mehrere kommunikativ verbundene Knoten aufweist, wobei jeder Knoten ein oder mehrere kommunikativ verbundene Computer-Elemente aufweist, wobei jedes Computer-Element mindestens ein Cluster und/oder eine Speichercontroller-(SC-)Funktion aufweist, wobei jedes Cluster einen oder mehrere Prozessoren aufweist, wobei die SC-Funktion einen gemeinsam genutzten Cache aufweist, wobei der gemeinsam genutzte Cache von Prozessoren eines jeden Clusters gemeinsam genutzt wird, wobei das Verfahren aufweist: Einleiten einer Übertragung durch jedes Element der Konfiguration an andere Elemente der Konfiguration, um die Konfigurationstopologie zu ermitteln; auf der Grundlage eines Ergebnisses der eingeleiteten Übertragung Speichern eines Kohärenzwerts durch ein jedes Element; auf der Grundlage des Kohärenzwerts Festlegen, durch Elemente des Knotens, eines Cachekohärenz-Protokolls der Vielzahl der Cachekohärenz-Protokolle, das von dem Knoten verwendet werden soll; und Verwenden des festgelegten Cachekohärenz-Protokolls, um Cachekohärenz-Anforderungen zu verarbeiten.
  16. Verfahren nach Anspruch 15, wobei die Konfigurationstopologie aus dem ersten Knoten besteht, wobei die Vielzahl der Cachekohärenz-Protokolle ein erstes Protokoll aufweist, das keine SC-Funktion verwendet, um die Cachekohärenz des ersten Knotens aufrechtzuerhalten, und ein zweites Protokoll, das eine SC-Funktion verwendet, um die Cachekohärenz des ersten Knotens aufrechtzuerhalten.
  17. Verfahren nach Anspruch 15, wobei die Konfigurationstopologie aus dem ersten Knoten besteht, wobei das Verwenden des ausgewählten Cachekohärenz-Protokolls des Weiteren den Zugriff auf ein inklusives Verzeichnis der SC-Funktion des ersten Knotens aufweist, um die Cachekohärenz-Anforderungen zu verarbeiten.
  18. Verfahren nach Anspruch 15, wobei die Konfigurationstopologie des Weiteren einen oder mehrere zweite Knoten aufweist, wobei der erste Knoten mit dem einen oder den mehreren zweiten Knoten kommunikativ verbunden ist, wobei das Verwenden des ausgewählten Cachekohärenz-Protokolls des Weiteren aufweist: Zugreifen durch den ersten Knoten auf ein inklusives Verzeichnis der SC-Funktion des ersten Knotens, um die Cachekohärenz-Anforderungen zu verarbeiten; auf der Grundlage der Feststellung durch den ersten Knoten, dass die Cachekohärenz-Operation nur von dem ersten Knoten durchgeführt werden kann, Durchführen der Cachekohärenz-Operation durch den ersten Knoten, ohne auf Cachespeicher des einen oder der mehreren zweiten Knoten zuzugreifen; und auf der Grundlage der Feststellung durch den ersten Knoten, dass die Cachekohärenz-Operation auf den einen oder die mehreren zweiten Knoten zugreifen muss, Durchführen der Cachekohärenz-Operation, indem auf Cachespeicher des einen oder der mehreren zweiten Knoten zugegriffen wird.
  19. Verfahren nach Anspruch 15, wobei die Vielzahl der Cachekohärenz-Protokolle ein drittes Protokoll und ein viertes Protokoll aufweist, um die Cachekohärenz des Knotens aufrechtzuerhalten, wobei es sich bei dem dritten Protokoll um das MESI-Protokoll und bei dem vierten Protokoll um das MOESI-Protokoll handelt.
  20. Verfahren nach Anspruch 16, wobei die Konfigurationstopologie des Weiteren einen oder mehrere zweite Knoten aufweist, wobei der erste Knoten mit dem einen oder den mehreren zweiten Knoten kommunikativ verbunden ist, wobei die SC-Funktion des ersten Knotens feststellt, dass entweder das erste Protokoll oder das zweite Protokoll bei lokalen Cachekohärenz-Operationen in dem ersten Knoten verwendet werden soll, und dass ein anderes Protokoll als das erste Protokoll und das zweite Protokoll bei globalen Cachekohärenz-Operationen, an denen der eine oder die mehreren zweiten Knoten beteiligt sind, verwendet werden soll.
DE112015004336.5T 2014-11-20 2015-11-13 Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls Active DE112015004336B4 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/548,988 2014-11-20
US14/548,988 US9886382B2 (en) 2014-11-20 2014-11-20 Configuration based cache coherency protocol selection
US14/816,636 2015-08-03
US14/816,636 US9898407B2 (en) 2014-11-20 2015-08-03 Configuration based cache coherency protocol selection
PCT/IB2015/058778 WO2016079646A1 (en) 2014-11-20 2015-11-13 Configuration based cache coherency protocol selection

Publications (2)

Publication Number Publication Date
DE112015004336T5 true DE112015004336T5 (de) 2017-06-14
DE112015004336B4 DE112015004336B4 (de) 2022-03-10

Family

ID=56010348

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112015004336.5T Active DE112015004336B4 (de) 2014-11-20 2015-11-13 Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls

Country Status (4)

Country Link
US (5) US9886382B2 (de)
DE (1) DE112015004336B4 (de)
GB (1) GB2547397B (de)
WO (1) WO2016079646A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10394712B2 (en) 2014-11-20 2019-08-27 International Business Machines Corporation Configuration based cache coherency protocol selection

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9727464B2 (en) 2014-11-20 2017-08-08 International Business Machines Corporation Nested cache coherency protocol in a tiered multi-node computer system
US10157133B2 (en) * 2015-12-10 2018-12-18 Arm Limited Snoop filter for cache coherency in a data processing system
US9900260B2 (en) 2015-12-10 2018-02-20 Arm Limited Efficient support for variable width data channels in an interconnect network
US9747222B1 (en) * 2016-03-31 2017-08-29 EMC IP Holding Company LLC Dynamic ingestion throttling of data log
US9990292B2 (en) 2016-06-29 2018-06-05 Arm Limited Progressive fine to coarse grain snoop filter
CN107894914A (zh) * 2016-09-30 2018-04-10 华为技术有限公司 缓存一致性处理方法和装置
NO342930B1 (en) * 2016-10-18 2018-09-03 Numascale As Cache Coherent node controller
US10310982B2 (en) 2016-12-15 2019-06-04 International Business Machines Corporation Target cache line arbitration within a processor cluster
US10042766B1 (en) 2017-02-02 2018-08-07 Arm Limited Data processing apparatus with snoop request address alignment and snoop response time alignment
NO343359B1 (en) 2017-05-02 2019-02-11 Numascale As Interconnect switch in multiprocessor systems
US10482015B2 (en) 2017-05-18 2019-11-19 International Business Machines Corporation Ownership tracking updates across multiple simultaneous operations
US10628313B2 (en) * 2017-05-26 2020-04-21 International Business Machines Corporation Dual clusters of fully connected integrated circuit multiprocessors with shared high-level cache
US20180365070A1 (en) * 2017-06-16 2018-12-20 International Business Machines Corporation Dynamic throttling of broadcasts in a tiered multi-node symmetric multiprocessing computer system
US11194753B2 (en) * 2017-09-01 2021-12-07 Intel Corporation Platform interface layer and protocol for accelerators
US10713169B2 (en) * 2018-01-17 2020-07-14 International Business Machines Corporation Remote node broadcast of requests in a multinode data processing system
US10891228B2 (en) * 2018-02-12 2021-01-12 International Business Machines Corporation Cache line states identifying memory cache
US10628312B2 (en) * 2018-09-26 2020-04-21 Nxp Usa, Inc. Producer/consumer paced data transfer within a data processing system having a cache which implements different cache coherency protocols
US11010210B2 (en) 2019-07-31 2021-05-18 International Business Machines Corporation Controller address contention assumption
CN110704694B (zh) * 2019-09-29 2021-12-31 哈尔滨工业大学(威海) 一种基于网络表示学习的组织层级划分方法及其应用
US11163449B2 (en) 2019-10-17 2021-11-02 EMC IP Holding Company LLC Adaptive ingest throttling in layered storage systems
US11188471B2 (en) * 2020-04-03 2021-11-30 Alibaba Group Holding Limited Cache coherency for host-device systems
US11966330B2 (en) * 2020-06-05 2024-04-23 Intel Corporation Link affinitization to reduce transfer latency
US11449424B2 (en) 2020-10-26 2022-09-20 International Business Machines Corporation Server recovery from a change in storage control chip

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5752264A (en) * 1995-03-31 1998-05-12 International Business Machines Corporation Computer architecture incorporating processor clusters and hierarchical cache memories
US5895487A (en) * 1996-11-13 1999-04-20 International Business Machines Corporation Integrated processing and L2 DRAM cache
US6330643B1 (en) 1998-02-17 2001-12-11 International Business Machines Corporation Cache coherency protocols with global and local posted operations
US6192451B1 (en) * 1998-02-17 2001-02-20 International Business Machines Corporation Cache coherency protocol for a data processing system including a multi-level memory hierarchy
JP4123621B2 (ja) 1999-02-16 2008-07-23 株式会社日立製作所 主記憶共有型マルチプロセッサシステム及びその共有領域設定方法
US6697919B2 (en) 2000-06-10 2004-02-24 Hewlett-Packard Development Company, L.P. System and method for limited fanout daisy chaining of cache invalidation requests in a shared-memory multiprocessor system
US6751721B1 (en) 2000-08-31 2004-06-15 Hewlett-Packard Development Company, L.P. Broadcast invalidate scheme
US6918012B2 (en) 2001-08-28 2005-07-12 Hewlett-Packard Development Company, L.P. Streamlined cache coherency protocol system and method for a multiple processor single chip device
US7546422B2 (en) 2002-08-28 2009-06-09 Intel Corporation Method and apparatus for the synchronization of distributed caches
US7111128B2 (en) 2002-12-19 2006-09-19 Intel Corporation Hierarchical virtual model of a cache hierarchy in a multiprocessor system
US6954829B2 (en) 2002-12-19 2005-10-11 Intel Corporation Non-speculative distributed conflict resolution for a cache coherency protocol
US7272688B1 (en) * 2003-04-28 2007-09-18 Newisys,, Inc. Methods and apparatus for providing cache state information
US7802058B1 (en) 2003-04-30 2010-09-21 Silicon Graphics International Method for performing cache coherency in a computer system
US7085898B2 (en) 2003-05-12 2006-08-01 International Business Machines Corporation Coherency management for a “switchless” distributed shared memory computer system
US6988173B2 (en) 2003-05-12 2006-01-17 International Business Machines Corporation Bus protocol for a switchless distributed shared memory computer system
US7436775B2 (en) * 2003-07-24 2008-10-14 Alcatel Lucent Software configurable cluster-based router using stock personal computers as cluster nodes
US7085895B2 (en) 2003-09-05 2006-08-01 International Business Machines Corporation Apparatus, system, and method flushing data from a cache to secondary storage
US20050216637A1 (en) * 2004-03-23 2005-09-29 Smith Zachary S Detecting coherency protocol mode in a virtual bus interface
US7822929B2 (en) 2004-04-27 2010-10-26 Intel Corporation Two-hop cache coherency protocol
US20050240734A1 (en) 2004-04-27 2005-10-27 Batson Brannon J Cache coherence protocol
TWI321414B (en) 2004-10-15 2010-03-01 Sony Computer Entertainment Inc Methods and apparatus for supporting multiple configurations in a multi-processor system
US7404046B2 (en) * 2005-02-10 2008-07-22 International Business Machines Corporation Cache memory, processing unit, data processing system and method for filtering snooped operations
US7415030B2 (en) * 2005-02-10 2008-08-19 International Business Machines Corporation Data processing system, method and interconnect fabric having an address-based launch governor
US7395376B2 (en) * 2005-07-19 2008-07-01 International Business Machines Corporation Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of shared memory blocks
US7536514B2 (en) * 2005-09-13 2009-05-19 International Business Machines Corporation Early return indication for read exclusive requests in shared memory architecture
US8990501B1 (en) * 2005-10-12 2015-03-24 Azul Systems, Inc. Multiple cluster processor
US7761642B2 (en) * 2006-12-22 2010-07-20 Lsi Corporation Serial advanced technology attachment (SATA) and serial attached small computer system interface (SCSI) (SAS) bridging
US8539164B2 (en) 2007-04-30 2013-09-17 Hewlett-Packard Development Company, L.P. Cache coherency within multiprocessor computer system
US7904676B2 (en) 2007-04-30 2011-03-08 Hewlett-Packard Development Company, L.P. Method and system for achieving varying manners of memory access
US7669013B2 (en) 2007-07-26 2010-02-23 International Business Machines Corporation Directory for multi-node coherent bus
US7925857B2 (en) 2008-01-24 2011-04-12 International Business Machines Corporation Method for increasing cache directory associativity classes via efficient tag bit reclaimation
US8560776B2 (en) * 2008-01-29 2013-10-15 International Business Machines Corporation Method for expediting return of line exclusivity to a given processor in a symmetric multiprocessing data processing system
US8135916B1 (en) * 2008-04-25 2012-03-13 Marvell International Ltd. Method and apparatus for hardware-configurable multi-policy coherence protocol
US8055847B2 (en) 2008-07-07 2011-11-08 International Business Machines Corporation Efficient processing of data requests with the aid of a region cache
EP2405361A4 (de) 2009-03-06 2012-12-19 Fujitsu Ltd Computersystem, steuerverfahren, aufzeichnungsmedium und steuerprogramm
US8423736B2 (en) 2010-06-16 2013-04-16 International Business Machines Corporation Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
US9477600B2 (en) 2011-08-08 2016-10-25 Arm Limited Apparatus and method for shared cache control including cache lines selectively operable in inclusive or non-inclusive mode
US8954639B2 (en) * 2011-09-06 2015-02-10 International Business Machines Corporation Integrated link calibration and multi-processor topology discovery
FR2992446B1 (fr) * 2012-06-22 2015-04-10 Commissariat Energie Atomique Systeme et procede de traitement de donnees a gestion d'une coherence de caches dans un reseau de processeurs munis de memoires caches.
US20150186277A1 (en) * 2013-12-30 2015-07-02 Netspeed Systems Cache coherent noc with flexible number of cores, i/o devices, directory structure and coherency points
US9727464B2 (en) 2014-11-20 2017-08-08 International Business Machines Corporation Nested cache coherency protocol in a tiered multi-node computer system
US9886382B2 (en) 2014-11-20 2018-02-06 International Business Machines Corporation Configuration based cache coherency protocol selection

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10394712B2 (en) 2014-11-20 2019-08-27 International Business Machines Corporation Configuration based cache coherency protocol selection
US10402328B2 (en) 2014-11-20 2019-09-03 International Business Machines Corporation Configuration based cache coherency protocol selection
US10824565B2 (en) 2014-11-20 2020-11-03 International Business Machines Corporation Configuration based cache coherency protocol selection

Also Published As

Publication number Publication date
DE112015004336B4 (de) 2022-03-10
US20160147661A1 (en) 2016-05-26
US20180121359A1 (en) 2018-05-03
US20160147658A1 (en) 2016-05-26
GB2547397B (en) 2017-11-29
WO2016079646A1 (en) 2016-05-26
US20180121358A1 (en) 2018-05-03
GB2547397A (en) 2017-08-16
US9898407B2 (en) 2018-02-20
US10402328B2 (en) 2019-09-03
US9886382B2 (en) 2018-02-06
US20190205251A1 (en) 2019-07-04
US10824565B2 (en) 2020-11-03
US10394712B2 (en) 2019-08-27
GB201709198D0 (en) 2017-07-26

Similar Documents

Publication Publication Date Title
DE112015004336B4 (de) Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls
US9892043B2 (en) Nested cache coherency protocol in a tiered multi-node computer system
DE112008002018B4 (de) Bereitstellen eines gemeinsam genutzten Inklusiv-Cache bei Mehrkern-Cache-Clustern
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE69721891T2 (de) Deterministisches Kohärenzprotokoll für verteilten Multicache-Speicher
DE102009032076B4 (de) Erfüllung von Speicherordnungsanforderungen zwischen Teillesevorgängen und Nicht-Snoop-Zugriffen
DE69729243T2 (de) Multiprozessorsystem mit Vorrichtung zur Optimierung von Spin-Lock-Operationen
DE69724353T2 (de) Mehrrechnersystem mit einem Drei-Sprung-Kommunikationsprotokoll
DE102013201079A1 (de) Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt
DE102021121062A1 (de) System, vorrichtung und verfahren zur dynamischen bereitstellung kohärenter speicherdomänen
DE112013000889T5 (de) Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System
DE112013000891T5 (de) Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten
DE10232926A1 (de) Cachesystem mit Leitungsgruppen und mit Kohärenz sowohl für einzelne Leitungen als auch Gruppen von Leitungen
DE112012005991T5 (de) Skalierbare gemeinsame Referenztaktungsarchitektur unter Verwendung einer getrennten, einzigen Taktquelle für Blade- und Rack-Server
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE112012005210T5 (de) Bereitstellen eines gemeinsamen Caching-Agenten für ein Kern- und integriertes Ein-/Ausgabe-(IO)-Modul
DE112008002019T5 (de) Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor
DE60311302T2 (de) Verfahren und vorrichtung zur verriegelung von mehreren clustern
DE69724879T2 (de) Verfahren und Vorrichtung für einen Kohärenzumwandler zur Verbindung von Rechnersystemkohärenzdomänen
DE112012003462T5 (de) Durchführung einer atomaren Operation ohne Stilllegung einer Verbindungsstruktur
DE102018005759A1 (de) Verbinden von beschleunigerressourcen unter verwendung einesswitches

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final