DE69906585T2 - Datenverarbeitungssystem mit nichtuniformen speicherzugriffen (numa) mit spekulativer weiterleitung einer leseanforderung an einen entfernten verarbeitungsknoten - Google Patents

Datenverarbeitungssystem mit nichtuniformen speicherzugriffen (numa) mit spekulativer weiterleitung einer leseanforderung an einen entfernten verarbeitungsknoten Download PDF

Info

Publication number
DE69906585T2
DE69906585T2 DE69906585T DE69906585T DE69906585T2 DE 69906585 T2 DE69906585 T2 DE 69906585T2 DE 69906585 T DE69906585 T DE 69906585T DE 69906585 T DE69906585 T DE 69906585T DE 69906585 T2 DE69906585 T2 DE 69906585T2
Authority
DE
Germany
Prior art keywords
node
processing node
local
read request
interconnect
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.)
Expired - Lifetime
Application number
DE69906585T
Other languages
English (en)
Other versions
DE69906585D1 (de
Inventor
Yoanna Baumgartner
Edward Mark DEAN
Anna Elman
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
Application granted granted Critical
Publication of DE69906585D1 publication Critical patent/DE69906585D1/de
Publication of DE69906585T2 publication Critical patent/DE69906585T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)

Description

  • Die vorliegende Erfindung betrifft im Allgemeinen ein Verfahren und ein System zur Datenverarbeitung und insbesondere die Datenverarbeitung mit einem Datenverarbeitungssystem mit nichtuniformem Speicherzugriff (NUMA). Insbesondere betrifft die vorliegende Erfindung noch ein NUMA-Datenverarbeitungssystem und ein Kommunikationsverfahren in einem NUMA-Datenverarbeitungssystem, in dem Leseanforderungen spekulativ an einen fernen Speicher weitergeleitet werden.
  • In der Computertechnik ist es bereits bekannt, dass eine höhere Computersystemleistung erreicht werden kann, indem die Verarbeitungsleistung von mehreren einzelnen Prozessoren in einer Tandemanordnung genutzt wird. Mehrprozessor- (MP-) Computersysteme können mit mehreren verschiedenen Topologien gestaltet werden, von denen einige in Abhängigkeit von den Leistungsanforderungen und den Softwareanforderungen jeder Anwendung für bestimmte Anwendungen besser geeignet sind. Eine der häufigsten MP-Computertopologien ist eine symmetrische Mehrprozessor- (SMP-) Konfiguration, bei der mehrere Prozessoren allgemeine Ressourcen gemeinsam nutzen, beispielsweise einen Systemspeicher und ein Ein-/Ausgabe(E/A-) Teilsystem, die normalerweise mit einer gemeinsam genutzten Systemverbindung verbunden sind. Solche Computersysteme werden als symmetrisch bezeichnet, da alle Prozessoren in einem SMP-Computersystem bezüglich im gemeinsam genutzten Systemspeicher gespeicherter Daten Idealerweise dieselbe Zugriffslatenzzeit aufweisen.
  • Obwohl SMP-Computersysteme die Verwendung von verhältnismäßig einfachen Methodiken der Interprozessorkommunikation und der gemeinsamen Datennutzung ermöglichen, weisen sie eine begrenzte Skalierbarkeit auf. Mit anderen Worten, obwohl die Leistung eines typischen SMP-Computersystems im Allgemeinen durch eine Skalierung (d.h. durch Hinzufügung von mehr Prozessoren) erwartungsgemäß verbessert wird, verhindern innewohnende Bus-, Speicher- und Ein-/Ausgabe- (E/A-) Bandbreitenbegrenzungen das Erreichen eines deutlichen Vorteils, indem ein SMP über eine ausführungsabhängige Größe hinaus skaliert wird, bei der die Verwendung dieser gemeinsam genutzten Ressourcen optimiert wird. Folglich sind in der SMP-Topologie selbst leider in einem gewissen Ausmaß Begrenzungen der Bandbreite festzustellen, insbesondere im Systemspeicher, wenn die Systemskalierung zunimmt. Vom Standpunkt einer leistungsfähigen Herstellung aus lassen sich SMP-Computersysteme außerdem nicht gut skalieren. Obwohl beispielsweise einige Komponenten zur Verwendung in Einprozessor- und SMP-Computersystemen mit geringer Skalierung (small-scale SMP Computer Systems) optimiert werden können, sind solche Komponenten oftmals für die Verwendung in Großrechner-SMPs nicht leistungsfähig. Umgekehrt sind Komponenten, die für die Verwendung in Großrechner-SMP-Computersystemen entwickelt wurden, vom Kostenstandpunkt aus unpraktisch für die Verwendung in kleineren Systemen.
  • Infolgedessen ist eine als nichtuniformer Speicherzugriff (NUMA) bekannte MP-Computersystemtopologie als alternative Ausführung entstanden, die auf Kosten einer zusätzlichen Komplexität viele der Begrenzungen von SMP-Computersystemen angeht. Ein typisches NUMA-Computersystem enthält eine Anzahl von miteinander verbundenen Knoten, die jeweils einen oder mehrere Prozessoren und einen lokalen "System"-Speicher enthalten. Der Speicherzugriff solcher Computersysteme wird als nichtuniform bezeichnet, da jeder Prozessor in Bezug auf Daten, die in seinem lokalen Knoten im Systemspeicher gespeichert sind, eine geringere Zugriffslatenzzeit aufweist als in Bezug auf Daten, die in einem fernen Knoten im Systemspeicher gespeichert sind. NUMA-Systeme können außerdem als nichtkohärent oder cachespeicher-kohärent klassifiziert werden, je. nachdem, ob zwischen Cachespeichern in verschiedenen Knoten eine Datenkohärenz aufrechterhalten wird. Die Komplexität von cachespeicher-kohärenten NUMA- (CC-NUMA-) Systemen ist in hohem Maße der zusätzlichen Kommunikation zuzuschreiben, die für Hardware zur Aufrechterhaltung der Datenkohärenz nicht nur zwischen den verschiedenen Ebenen von Cachespeicher und Systemspeicher in jedem Knoten, sondern auch zwischen Cache- und Systemspeichern in anderen Knoten benötigt wird. NUMA-Computersysteme adressieren jedoch die Begrenzungen der Skalierbarkeit von herkömmlichen SMP-Computersystemen, da jeder Knoten in einem NUMA-Computersystem als ein kleineres SMP-System realisiert werden kann. Folglich können die gemeinsam genutzten Komponenten in jedem Knoten zur Verwendung durch nur wenige Prozessoren optimiert werden, während das Gesamtsystem aus der Verfügbarkeit einer höheren Parallelität (larger scale parallelism) Nutzen zieht, wobei eine verhältnismäßig kurze Latenzzeit eingehalten wird.
  • Ein wichtiger Punkt hinsichtlich der Leistungsfähigkeit bei CC-NUMA-Computersystemen ist die mit Kommunikationstransaktionen, die über die die Knoten verbindende Zwischenverbindung übertragen werden, verbundene Latenzzeit. Insbesondere Lesetransaktionen, die bei weitem der häufigste Transaktionstyp sind, können im Vergleich zu Lesetransaktionen, deren Zieldaten sich im lokalen Systemspeicher befinden, eine doppelt so lange Latenzzeit aufweisen; wenn die Zieldaten sich in einem fernen Systemspeicher befinden. Die Europäische Patentanmeldung EP-A-0817072 beschreibt beispielsweise ein Mehrprozessorsystem mit einem Steuereinheit-Teilknoten, der die Schnittstelle zwischen dem Verarbeitungsknoten und dem restlichen System verwaltet. Wenn eine Transaktion im Verarbeitungsknoten eingeleitet wird, wird eine Prüfung ausgeführt, um festzustellen, ob die Transaktion lokal ausgeführt werden kann; ist dies nicht der Fall, ist ein ferner Zugriff erforderlich. Vor der Feststellung, ob die Anforderung lokal bearbeitet werden kann, wird nichts unternommen. Aufgrund der verhältnismäßig langen Latenzzeit, die im Vergleich zu auf lokalen Zwischenverbindungen übertragenen Leseanforderungen mit über die Knotenzwischenverbindung übertragenen Leseanforderungen verbunden ist, ist eine Verringerung der Latenzzeit von über die Knotenzwischenverbindung übertragenen Leseanforderungen hilfreich und wünschenswert. Die Europäische Patentanmeldung EP-A-0379771 geht dieses Problem teilweise an, wobei versucht wird, die Latenzzeit zu verringern, falls eine geänderte Version von angeforderten Daten in einem Cachespeicher aufbewahrt wird.
  • Eine Aufgabe der vorliegenden Erfindung ist die Bereitstellung eines Verfahrens, das die obigen Nachteile des Standes der Technik mildert.
  • Unter einem ersten Aspekt stellt die Erfindung ein Computersystem mit nichtuniformem Speicherzugriff (NUMA) bereit, das Folgendes umfasst: eine Knotenzwischenverbindung; und mindestens einen lokalen Knoten und einen fernen Knoten, die jeweils mit der Knotenzwischenverbindung verbunden sind, wobei der lokale Knoten eine lokale Zwischenverbindung und der lokale und ferne Knoten jeweils eine oder mehrere Abhöreinrichtungen (snoopers) umfasst, wobei die eine oder mehreren Abhöreinrichtungen des lokalen Knotens eine Knotensteuereinheit enthalten, die zwischen die lokale Zwischenverbindung und die Knotenzwischenverbindung geschaltet ist, wobei die Knotensteuereinheit eine von der lokalen Zwischenverbindung empfangene Anforderungstransaktion vor der Feststellung einer Antwort des lokalen Knotens spekulativ über die Knotenzwischenverbindung an den fernen Knoten überträgt, wobei Abhöreinrichtungen im lokalen Knoten und im fernen Knoten die Anforderungstransaktion unabhängig voneinander verarbeiten, um die Antwort des lokalen Knotens im lokalen Knoten und. eine Antwort des fernen Knotens im fernen Knoten zu erhalten, und wobei die Knotensteuereinheit im lokalen Knoten die Antwort des fernen Knotens auf die Anforderungstransaktion entsprechend der Antwort des lokalen Knotens bearbeitet.
  • Unter einem zweiten Aspekt stellt die Erfindung ein Verfahren zur Kommunikation in einem NUMA-Computersystem bereit, das Folgendes enthält: eine Knotenzwischenverbindung, die mindestens einen lokalen Knoten und einen fernen Knoten verbindet, die jeweils eine oder mehrere Abhöreinrichtungen enthalten, wobei die eine oder mehreren Abhöreinrichtungen im lokalen Knoten eine zwischen eine lokale Zwischenverbindung und die Knotenzwischenverbindung geschaltete Knotensteuereinheit enthalten, wobei das Verfahren Folgendes umfasst: das spekulative Übertragen einer von der lokalen Zwischenverbindung empfangenen Anforderungstransaktion über die Knotenzwischenverbindung zum fernen Knoten vor der Feststellung einer Antwort des lokalen Knotens; das unabhängige Verarbeiten der Anforderungstransaktion durch Abhöreinrichtungen des lokalen Knotens, um die Antwort des lokalen Knotens im lokalen Knoten und eine ferne Antwort im fernen Knoten zu erhalten; und auf den Empfang der Antwort des fernen Knotens im lokalen Knoten hin Bearbeiten der Antwort des fernen Knotens entsprechend der Antwort des lokalen Knotens.
  • Die neuen Merkmale, die als kennzeichnend für die Erfindung betrachtet werden, werden in den angehängten Ansprüchen dargelegt. Die Erfindung selbst jedoch sowie eine bevorzugte Verwendungsart, weitere Aufgaben und Vorteile davon, werden am besten mit Bezugnahme auf die folgende ausführliche Beschreibung einer veranschaulichenden Ausführungsform verstanden, wenn sie in Verbindung mit den begleitenden Zeichnungen gelesen wird, in denen:
  • 1 eine veranschaulichende Ausführungsform eines NUMA-Computersystems gemäß der vorliegenden Erfindung zeigt;
  • 2 ein ausführlicheres Blockschaltbild der in 1 gezeigten Knotensteuereinheit ist;
    die 3A und 3B logische Übersichts-Flussdiagramme sind, die zusammen ein beispielhaftes Verfahren zur Verarbeitung von Anforderungstransaktionen darstellen, in denen Leseanforderungen in einem Quellenverarbeitungsknoten spekulativ an einen fernen Verarbeitungsknoten weitergeleitet werden; und
    die 4A bis 4D zusammen ein beispielhaftes Verarbeitungsszenario gemäß dem in den 3A und 3B dargestellten Verfahren zeigen.
  • Systemübersicht
  • Mit Bezugnahme auf die Figuren und insbesondere mit Bezugnahme auf 1 wird nun eine veranschaulichende Ausführungsform eines NUMA-Computersystems gemäß der vorliegenden Erfindung dargestellt. Die dargestellte Ausführungsform kann beispielsweise als Datenstation, Server oder Großrechner realisiert werden. Wie dargestellt wird, enthält ein NUMA-Computersystem 6 eine Anzahl (Nm2) von Verarbeitungsknoten 8a bis 8n, die durch eine Knotenzwischenverbindung 22 miteinander verbunden sind. Die Verarbeitungsknoten 8a bis 8n können jeweils M (M ≥ 0) Prozessoren 10, eine lokale Zwischenverbindung 16 und einen Systemspeicher 18 enthalten, auf den über eine Speichersteuereinheit 17 zugegriffen wird. Die Prozessoren 10a bis lOm sind vorzugsweise (jedoch nicht unbedingt) identisch und können einen Prozessor aus der PowerPCTM-Reihe von Prozessoren enthalten, die von International Business Machines (IBM) Corporation von Armonk, New York, erhältlich sind. Außer den zum Ausführen von Programmbefehlen verwendeten Registern, Befehlsflusslogik- und Ausführungseinheiten, die im Allgemeinen als der Prozessorkern 12 bezeichnet werden, enthält jeder der Prozessoren 10a bis lOm außerdem eine auf dem Chip integrierte Cachespeicherhierarchie, die zum Zwischenspeichern von Daten zum zugeordneten Prozessorkern 12 aus den Systemspeichern 18 verwendet wird. Jede Cachespeicherhierarchie 14 kann beispielsweise einen (L1-) Cachespeicher der Ebene 1 und einen (L2-) Cachespeicher der Ebene 2 enthalten, die Speicherkapazitäten zwischen 8 und 32 Kilobyte (kB) bzw. 1 bis 16 Megabyte (MB) aufweisen.
  • Jeder der Verarbeitungsknoten 8a bis 8m enthält außerdem eine entsprechende Knotensteuereinheit 20, die zwischen die lokale Zwischenverbindung 16 und eine Knotenzwischenverbindung 22 geschaltet ist. Jede Knotensteuereinheit 20 dient als lokaler Agent für ferne Verarbeitungsknoten 8, indem sie mindestens zwei Funktionen ausübt. Als Erstes hört jede Knotensteuereinheit 20 die zugeordnete lokale Zwischenverbindung 16 ab und erleichtert die Übertragung von lokalen Kommunikationstransaktionen zu fernen Verarbeitungsknoten B. Als Zweites hört jede Knotensteuereinheit 20 Kommunikationstransaktionen auf der Knotenzwischenverbindung 22 ab und überträgt (masters) entsprechende Kommunikationstransaktionen auf die zugeordnete lokale Zwischenverbindung 16. Die Kommunikation auf jeder lokalen Zwischenverbindung 16 wird von einer Zuteilungseinrichtung (arbiter) 24 gesteuert. Zuteilungseinrichtungen 24 regeln den Zugriff auf lokale Zwischenverbindungen 16 aufgrund von Busanforderungssignalen, die von den Prozessoren 10 erzeugt werden, und kompilieren Kohärenzantworten für abgehörte Kommunikationstransaktionen auf den lokalen Zwischenverbindungen 16, wie im Folgenden erläutert wird.
  • Die lokale Zwischenverbindung 16 ist über eine Zwischenbusbrücke (mezzanine bus bridge) 26 mit einem Zwischenbus (mezzanine bus) 30 verbunden, der beispielsweise als ein lokaler Peripheral Component Interconnection- (PCI-) Bus ausgeführt werden kann. Die Zwischenbusbrücke 26 stellt sowohl einen Pfad mit geringer Latenzzeit bereit, durch den die Prozessoren 10 direkt auf Einheiten unter den E/A-Einheiten 32 und den Speichereinheiten 34 zugreifen können, die auf den Busspeicher und/oder E/A-Adressräume abgebildet werden, als auch einen Pfad mit hoher Bandbreite, durch den die E/A-Einheiten 32 und die Speichereinheiten 34 auf den Systemspeicher 18 zugreifen können. Die E/A-Einheiten 32 können beispielsweise eine Anzeigeeinheit, eine Tastatur, einen grafischen Zeiger und serielle und parallele Anschlüsse zur Verbindung zu externen Netzwerken oder angeschlossenen Einheiten beinhalten. Die Speichereinheiten 34 können andererseits optische Platten oder Magnetplatten enthalten, die einen nichtflüchtigen Speicher für das Betriebssystem und Anwendungssoftware bereitstellen.
  • Speicherorganisation
  • Alle Prozessoren 10 im NUMA-Computersystem 6 nutzen gemeinsam einen einzigen physischen Speicherbereich, was bedeutet, dass jeder physischen Adresse nur eine einzige Position in einem der Systemspeicher 18 zugeordnet wird. Folglich kann der Gesamtinhalt des Systemspeichers, auf den im Allgemeinen jeder Prozessor 10 im NUMA-Computersystem zugreifen kann, als zwischen den Systemspeichern 18 aufgeteilt betrachtet werden. In einer veranschaulichenden Ausführungsform der vorliegenden Erfindung mit vier Verarbeitungsknoten 8 kann das NUMA-Computersystem beispielsweise einen physischen Adressraum von 16 Gigabyte (GB) aufweisen, zu dem sowohl ein allgemeiner Speicherbereich als auch ein reservierter Bereich gehören. Der allgemeine Speicherbereich ist in Segmente von 500 MB unterteilt, wobei jedem der vier Verarbeitungsknoten jedes vierte Segment zugeordnet wird. Zum reservierten Bereich, der etwa 2 GB enthalten kann, gehören Systemsteuerungsbereiche und periphere Speicher- und E/A-Bereiche, die jeweils einem entsprechenden der Verarbeitungsknoten 8 zugeordnet werden.
  • Für die vorliegende Erläuterung ist der Verarbeitungsknoten 8, der ein bestimmtes Datenelement in seinem Systemspeicher 18 speichert, der Heimknoten für dieses Datenelement; im Gegensatz dazu sind andere der Verarbeitungsknoten 8a bis 8n bezüglich des bestimmten Datenelementes ferne Knoten.
  • Speicherkohärenz
  • Da die in jedem Systemspeicher 18 gespeicherten Daten angefordert werden können, auf diese zugegriffen werden kann und diese von jedem Prozessor 10 im NUMA-Computersystem 6 geändert werden können, realisiert das NUMA-Computersystem 6 ein Cachespeicher-Kohärenzprotokoll, um eine Kohärenz zwischen den Cachespeichern im selben Verarbeitungsknoten und zwischen Cachespeichern in verschiedenen Verarbeitungsknoten aufrechtzuerhalten. Folglich wird das NUMA-Computersystem 6 ordnungsgemäß als ein CC-NUMA-Computersystem klassifiziert. Das realisierte Cachespeicher-Kohärenzprotokoll ist ausführungsabhängig und kann beispielsweise das bereits bekannte "Modified, Exclusive, Shared, Invalid Protocol" (MESI-Protokoll) oder eine Variante desselben umfassen. Im Folgenden wird vorausgesetzt, dass Cachespeicherhierarchien 14 und Zuteilungseinrichtung 24 das herkömmliche MESI-Protokoll realisieren, von dem die Knotensteuereinheiten 20 die M-, Sund I-Zustände erkennen und den E-Zustand der Richtigkeit halber mit dem M-Zustand verbinden. Das heißt, die Knotensteuereinheiten 20 setzen voraus, dass Daten, die ausschließlich von einem fernen Cachespeicher zwischengespeichert werden, geändert wurden, und zwar unabhängig davon, ob die Daten tatsächlich geändert wurden.
  • Verbindungsarchitektur
  • Lokale Zwischenverbindungen 16 und Knotenzwischenverbindungen 22 können mit jeder bus-basierten (bus based broadcast architecture) Rundsendearchitektur, vermittlungs-basierten (switch-based) Rundsendearchitektur oder vermittlungsbasierten Nicht-Rundsendearchitektur realisiert werden. In einer bevorzugten Ausführungsform wird jedoch mindestens die Knotenzwischenverbindung 22 als eine vermittlungs-basierte Nichtrundsende-Zwischenverbindung realisiert, die von dem von IBM Corporation entwickelten 6xx-Übertragungsprotokoll gesteuert wird. Die lokalen Zwischenverbindungen 16 und die Knotenzwischenverbindung 22 ermöglichen geteilte Transaktionen, was bedeutet, dass es keinen feststehenden zeitlichen Zusammenhang zwischen eine Kommunikationstransaktion umfassendem Adressen- und Datenbesitz (tenures) gibt und dass Datenpakete auf andere Weise als die zugeordneten Adressenpakete angefordert werden können. Außerdem wird die Verwendung von lokalen Zwischenverbindungen 16 und der Knotenzwischenverbindung 22 vorzugsweise durch eine Pipeline-Verarbeitung von Kommunikationstransaktionen verbessert, wodurch es ermöglicht wird, dass eine nachfolgende Kommunikationstransaktion übertragen werden kann, bevor der Sender einer vorhergehenden Kommunikationstransaktion Kohärenzantworten von jedem Empfänger empfängt.
  • Unabhängig vom realisierten Typ bzw. von den realisierten Typen der Verbindungsarchitektur werden mindestens drei Typen von "Paketen" (Paket wird hier generisch verwendet, um eine einzelne Informationseinheit zu bezeichnen) – Adresse, Daten und Kohärenzantwort – verwendet, um Daten über die Knotenzwischenverbindung 22 zwischen den Verarbeitungsknoten 8 und über die lokalen Zwischenverbindungen 16 zwischen den Abhöreinrichtungen zu übertragen. Mit Bezugnahme auf die Tabellen I und II wird nun eine Zusammenfassung von wichtigen Feldern und Definitionen für Adressen- bzw. Datenpakete gegeben. TABELLE I
    Feldname Beschreibung
    Adresse <0:7> Änderungswerte, die Attribute einer Kommunikationstransaktion für Kohärenz, Write-Through und Schutz definieren.
    Adresse <8:15> Kennzeichnung, die zum Kennzeichnen aller Pakete in einer Kommunikationstransaktion verwendet wird.
    Adresse <16:63> Adressenteil, der die physische, virtuelle oder E/A-Adresse in einer Anforderung anzeigt.
    A-Parität <0:2> Zeigt Parität für Adressenbits <0:63> an.
    T-Deskriptoren Zeigen die Größe und den Typ der Kommunikationstransaktion an.
    TABELLE II
    Feldname Beschreibung
    Daten <0:127> Daten für Lese- und Schreibtransaktionen
    Datenparität <0:15> Zeigt die Parität für Datenzeilen <0:127> an.
    D-Kennzeichnung <0:7> Kennzeichnung, die zum Vergleichen eines Datenpaketes mit einem Adressenpaket verwendet wird.
    D-gültig <0:1> Zeigt an, ob gültige Daten in Daten-und D-Kennzeichnungsfeldern vorhanden sind.
  • Wie in den Tabellen I und II angegeben wird, wird jedes Paket in einer Kommunikationstransaktion mit einer Transaktionskennzeichnung gekennzeichnet, um es zu ermöglichen, dass ein Empfängerknoten oder eine Abhöreinrichtung die Kommunikationstransaktion ermitteln können, zu der jedes Paket gehört. Fachleute werden verstehen, dass eine zusätzliche Flusssteuerlogik und damit verbundene Flusssteuersignale verwendet werden können, um die Nutzung der begrenzten Kommunikationsressourcen zu regeln.
  • In jedem Verarbeitungsknoten 8 werden zwischen jeder Abhöreinrichtung und der lokalen Zuteilungseinrichtung 24 Status- und Kohärenzantworten übertragen. Die für die Statusund Kohärenzkommunikation verwendeten Signalleitungen in den lokalen Zwischenverbindungen 16 werden im Folgenden in der Tabelle III zusammengefasst. TABELLE III
    Signalname Beschreibung
    AStatOut <0:1> Codierte Signale, die von jedem Busempfänger aktiviert werden, um der Zuteilungseinrichtung die Flusssteuerung oder Fehlerinformationen anzuzeigen.
    AStatIn <0:1> Codierte Signale, die von der Zuteilungseinrichtung auf das Zählen der von den Busempfängern aktivierten AStatOut-Signale hin aktiviert werden.
    ARespOut <0:2> Codierte Signale, die von jedem Busempfänger aktiviert werden, um der Zuteilungseinrichtung Kohärenzinformationen anzuzeigen.
    ARespIn <0:2> Codierte Signale, die von der Zuteilungseinrichtung auf das Zählen der von den Busempfängern aktivierten ARespOut-Signale hin aktiviert werden.
  • Status- und Kohärenzantworten, die über die AResp- und AStat-Leitungen der lokalen Zwischenverbindungen 16 übertragen werden, weisen vorzugsweise einen feststehenden, jedoch programmierbaren Zeitzusammenhang mit den zugeordneten Adressenpaketen auf. Beispielsweise werden die AStatOut-Voten, die eine vorläufige Anzeige darüber bereitstellen, ob jede Abhöreinrichtung ein auf der lokalen Zwischenverbindung 16 übertragenes Adressenpaket erfolgreich empfangen hat, möglicherweise im zweiten Zyklus benötigt, der auf den Empfang des Adressenpaketes folgt. Die Zuteilungseinrichtung 24 kompiliert die AStatOut-Voten und gibt sodann nach einer feststehenden, jedoch programmierbaren Anzahl von Zyklen (z. B.
  • nach einem Zyklus) das AStatIn-Votum aus. Mögliche AStatOut-Voten werden unten in Tabelle IV zusammengefasst. TABELLE IV
    AStat-Votum Bedeutung
    Null Frei
    Ack Transaktion von Abhöreinrichtung angenommen
    Error Paritätsfehler in Transaktion erkannt
    Retry Transaktion wiederholen, normalerweise für Flusssteuerung.
  • Nach der AStatIn-Periode werden möglicherweise nach einer feststehenden, jedoch programmierbaren Anzahl von Zyklen (z. B. nach 2 Zyklen) die ARespOut-Voten benötigt. Außerdem kompiliert die Zuteilungseinrichtung 24 vorzugsweise während des nächsten Zyklus die ARespOut-Voten von jeder Abhöreinrichtung und liefert ein ARespIn-Votum. Die möglichen AResp-Voten enthalten vorzugsweise die in Tabelle v aufgelisteten Kohärenzantworten. TABELLE V
    Kohärenzantwort Bedeutung
    Retry Quelle der Anforderung muss Transaktion wiederholen – normalerweise aus Gründen der Flusssteuerung
    Modified Intervention Zeile wird im Cachespeicher geändert und wird zum Anforderer übertragen
    Shared Zeile wird zur gemeinsamen Nutzung im Cachespeicher zwischengespeichert.
    Null Zeile ist ungültig im Cachespeicher
    ReRun Abgehörte Anforderung hat eine lange Latenzzeit und Quelle der Anforderung wird angewiesen, die Transaktion zu einem späteren Zeitpunkt erneut auszugeben.
  • Das AResp-Votum "ReRun", das normalerweise von einer Knotensteuereinheit 20 ausgegeben wird, zeigt an, dass die abgehörte Anforderung eine lange Latenzzeit aufweist und dass die Quelle der Anforderung angewiesen wird, die Transaktion zu einem späteren Zeitpunkt erneut auszugeben. Im Gegensatz zu einem AResp-Votum "Retry" macht ein "ReRun" folglich den Empfänger einer Transaktion, der "ReRun" wählte (und nicht den Sender der Transaktion) dafür verantwortlich, dass eine erneute Ausgabe der Kommunikationstransaktion zu einem späteren Zeitpunkt veranlasst wird.
  • Knotensteuereinheit
  • Mit Bezugnahme auf 2 wird nun ein ausführlicheres Blockschaltbild einer Knotensteuereinheit 20 im NUMA-Computersystem 6 von 1 dargestellt. Wie in 2 gezeigt wird, enthält jede Knotensteuereinheit 20, die zwischen eine lokale Zwischenverbindung 16 und eine Knotenzwischenverbindung 22 geschaltet ist, eine Transaktionsempfangseinheit (transaction receive unit) (TRU) 40, eine Transaktionsübertragungseinheit (transaction send unit) (TSU) 42, eine Datenempfangseinheit (DRU) 44 und eine Datenübertragungseinheit (DSU) 46. Die TRU 40, die TSU 42, die DRU 44 und die DSU 46 können beispielsweise mit Field-Programmable Gate Arrays (FPGAs) oder anwendungsspezifischen integrierten Schaltkreisen (ASICs) realisiert werden. Wie gezeigt wird, sind die Adressen- und Datenpfade durch die Knotensteuereinheit 20 gegabelt, wobei Adressen- (und Kohärenz-) Pakete von der TRU 40 und der TSU 42 und Datenpakete von der DSU 44 und der DRU 46 verarbeitet werden.
  • Die TRU 40, die so gestaltet ist, dass sie den Transaktionsfluss aus der Knotenzwischenverbindung 22 anzeigt, ist für das Annehmen von Adressen- und Kohärenzpaketen von der Knotenzwischenverbindung 22, das Ausgeben von Transaktion auf die lokale Zwischenverbindung 16 und das Weiterleiten von Antworten an die TSU 42 zuständig. Die TRU 40 enthält einen Antwortmultiplexer (mux) 52, der Pakete von der Knotenzwischenverbindung 22 empfängt und ausgewählte Pakete an den Busmaster 54 und an eine Kohärenzantwortlogik 56 in der TSU 42 weiterleitet. Auf den Empfang eines Adressenpaketes vom Antwortmultiplexer 52 hin kann der Busmaster 54 eine Kommunikationstransaktion auf seiner lokalen Zwischenverbindung 16 einleiten, die identisch mit oder verschieden von dem Typ von Kommunikationstransaktion ist, der vom empfangenen Adressenpaket angezeigt wird.
  • Die TSU 42, die, wie durch ihre Nomenklatur angezeigt wird, ein Kanal für auf die Knotenzwischenverbindung 22 fließende Transaktionen ist, enthält einen Wartepuffer 60 mit mehreren Einträgen (multiple-entry pending buffer), der Attribute von auf die Knotenzwischenverbindung 22 ausgegebenen Kommunikationstransaktionen vorübergehend speichert, die noch ausgeführt werden müssen. Die in einem Eintrag des Wartepuffers 60 gespeicherten Transaktionsattribute enthalten vorzugsweise zumindest die Adresse (einschließlich der Kennzeichnung) der Transaktion, den Typ der Transaktion und die Anzahl von erwarteten Kohärenzantworten. Jeder Wartepuffereintrag hat einen zugeordneten Status, der auf "Null" gesetzt werden kann, wodurch angezeigt wird, dass der Wartepuffereintrag gelöscht werden kann, oder auf "ReRun", wodurch angezeigt wird, dass die Transaktion noch immer anstehend ist. Außer der Ausgabe von Adressenpaketen auf die Knotenzwischenverbindung 22 steht die TSU 42 in Wechselwirkung mit der TRU 40, um Speicheranforderungstransaktionen zu verarbeiten, und gibt Befehle an die DRU 44 und die DSU 46 aus, um die Übertragung von Daten zwischen der lokalen Zwischenverbindung 16 und der Knotenzwischenverbindung 22 zu steuern. Die TSU 42 realisiert außerdem das ausgewählte (z. B. MSI-) Kohärenzprotokoll für die Knotenzwischenverbindung 22 mit der Kohärenzantwortlogik 56 und verwaltet das Kohärenzverzeichnis 50 mit der Kohärenzsteuerlogik 58.
  • Das Kohärenzverzeichnis 50 speichert Meldungen der Systemspeicheradressen von Daten (z. B. Cachespeicherzeilen), die Cachespeichern in fernen Knoten entnommen wurden, für die der lokale Verarbeitungsknoten der Heimknoten ist. Die Adressenmeldung für jede Cachespeicherzeile wird in Verbindung mit einem Kennzeichner von jedem fernen Verarbeitungsknoten, der eine Kopie der Cachespeicherzeile aufweist, und dem Kohärenzstatus der Cachespeicherzeile in jedem solchen fernen Verarbeitungsknoten gespeichert. Mögliche Kohärenzzustände für Einträge im Kohärenzverzeichnis 50 werden in der Tabelle VI zusammengefasst.
  • TABELLE VI
    Figure 00180001
  • Wie in Tabelle VI angegeben wird, ist die Kenntnis der Kohärenzzustände von in fernen Verarbeitungsknoten zwischengespeicherten Cachespeicherzeilen ungenau. Der Grund für diese Ungenauigkeit besteht darin, dass eine fern zwischengespeicherte Cachespeicherzeile einen Übergang von S nach I, von E nach I oder von E nach M ausführen kann, ohne die Knotensteuereinheit 20 des Heimknotens zu benachrichtigen.
  • Verarbeitung von Leseanforderungstransaktionen
  • Mit Bezugnahme auf die 3A und 3H werden nun zwei logische Übersichts-Flussdiagramme dargestellt, die zusammen ein beispielhaftes Verfahren zur Verarbeitung von Leseanforderungstransaktionen gemäß der vorliegenden Erfindung zeigen. Mit Bezugnahme auf 3A beginnt der Prozess als Erstes beim Block 70 und geht anschließend weiter zum Block 72, der einen Prozessor 10 darstellt, beispielsweise den Prozessor 10a des Verarbeitungsknotens 8a, der eine Leseanforderungstransaktion auf seine lokale Zwischenverbindung 16 ausgibt. Die Leseanforderungstransaktion wird von der Knotensteuereinheit 20 und den restlichen mit der lokalen Zwischenverbindung 16 des Verarbeitungsknotens 8a verbundenen Abhöreinrichtungen empfangen. Auf den Empfang der Leseanforderung hin steuern die Abhöreinrichtungen AStatOut-Voten an, die von der Zuteilungseinrichtung 24 kompiliert werden, um ein AStatIn-Votum zu erzeugen, wie beim Block 74 gezeigt wird. Bevor die Knotensteuereinheit 20 ein AStatOut-Votum "Ack" überträgt, um zu ermöglichen, dass die Leseanforderung weitergeht, ordnet sie dem Wartepuffer 60 sowohl einen Leseeintrag als auch einen "Write-with-clean"-Eintrag zu, falls die Leseanforderung eine Adresse in einem fernen Systemspeicher 18 angibt. Wie im Folgenden erläutert wird, kann die Knotensteuereinheit 20 die Leseanforderung durch die Zuordnung beider Einträge spekulativ an den Heimknoten der angeforderten Cachespeicherzeile weiterleiten und die Antwort auf die Leseanforderung unabhängig vom Ergebnis des anschließenden RResp-Votums im Verarbeitungsknoten 8a korrekt bearbeiten.
  • Mit Bezugnahme auf Block 76 wird nun die Leseanforderung im Grund genommen abgebrochen, falls das beim Block 74 erzeugte AStatIn-Votum "Retry" ist, zugeordnete Einträge im Wartepuffer 60 werden gegebenenfalls freigegeben, und der Prozess kehrt zurück zum beschriebenen Block 72. In diesem Fall muss der Prozessor 10a die Leseanforderung zu einem späteren Zeitpunkt erneut ausgeben. Falls das beim Block 74 erzeugte AStatIn-Votum andererseits nicht "Retry" ist, geht der Prozess vom Block 76 weiter zum Block 78, der darstellt, wie die Knotensteuereinheit 20 durch Bezugnahme auf die Speicherabbildung (memory map) feststellt, ob ihr Verarbeitungsknoten 8 der Heimknoten der in der Leseanforderung angegebenen physischen Adresse ist. Ist dies der Fall, geht der Prozess weiter zum Block 80; falls der lokale Verarbeitungsknoten 8 jedoch nicht der Heimknoten für die Leseanforderung ist, geht der Prozess weiter zum Block 100.
  • Mit Bezugnahme auf Block 80 stellen nun die Abhöreinrichtungen im Verarbeitungsknoten 8a ihre ARespOut-Voten bereit, die die Zuteilungseinrichtung 24 kompiliert, um ein ARespIn-Votum zu erzeugen. Falls das Kohärenzverzeichnis 50 anzeigt, dass die Cachespeicherzeile, die durch die in der Leseanforderung angegebene Adresse gekennzeichnet wird, zu mindestens einem fernen Verarbeitungsknoten 8 entnommen wird, wählt die Knotensteuereinheit 20"ReRun", falls die Bearbeitung der Leseanforderung eine Kommunikation mit einem fernen Verarbeitungsknoten 8 erforderlich macht. Falls das Kohärenzverzeichnis 50 beispielsweise anzeigt, dass eine angeforderte Cachespeicherzeile in einem fernen Verarbeitungsknoten 8 geändert wird, zieht die Bearbeitung einer Leseanforderung die Weiterleitung derselben an den fernen Verarbeitungsknoten 8 nach sich. Falls das Kohärenzverzeichnis 50 anzeigt, dass eine angeforderte Cachespeicherzeile in einem fernen Verarbeitungsknoten 8 gemeinsam genutzt wird, zieht die Bearbeitung einer "Readwith-intent-to-modify"- (RWITM-) Anforderung die Übertragung eines Abbruchbefehls (Kill command) an den fernen Verarbeitungsknoten 8 nach sich, um die ferne(n) Kopie(n) der angeforderten Cachespeicherzeile ungültig zu machen. Wie beim Block 82 gezeigt wird, geht der Prozess weiter zum unten beschriebenen Block 90, falls das ARespIn-Votum nicht "ReRun" ist; falls das ARespIn-Votum "ReRun" ist, geht der Prozess weiter zum Block 84.
  • Der Block 84 stellt dar, wie die Knotensteuereinheit 20 über die Knotenzwischenverbindung 22 eine entsprechende Transaktion zu dem einen oder den mehreren fernen Verarbeitungsknoten 8 überträgt, die die angeforderte Cachespeicherzeile entnommen haben. Wie oben angemerkt wurde, kann die Transaktion entweder ein Cachespeicherbefehl (z. B. Abbruch) oder eine Leseanforderungstransaktion sein. Der Prozess wird sodann beim Block 86 so lange wiederholt, bis von der Knotensteuereinheit 20 eine Antwort von jedem fernen Verarbeitungsknoten 8 empfangen wurde, an den beim Block 84 eine Transaktion übertragen. wurde. Nach dem Empfang der entsprechenden Anzahl von Antworten, die den Empfang einer Kopie der angeforderten Cachespeicherzeile beinhalten können, überträgt die Knotensteuereinheit 20 eine "ReRun"-Anforderung auf der lokalen Zwischenverbindung 16, die den anfordernden Prozessor 10a anweist, die Leseanforderung erneut auszugeben. Wie beim Block 88 angezeigt wird, antwortet der anfordernde Prozessor 10a auf die "ReRun"-Anforderung, indem er Leseanforderungstransaktion auf der lokalen Zwischenverbindung 16 erneut ausgibt. Nach den AStat- und AResp-Perioden wird die Leseanforderung beim Block 90 bearbeitet, entweder indem die Knotensteuereinheit 20 eine von einem fernen Verarbeitungsknoten 8 empfangene Kopie der angeforderten Cachespeicherzeile überträgt oder indem eine andere lokale Abhöreinrichtung im Verarbeitungsknoten 8 (z. B. der Speichersteuereinheit 17 oder einer Cachespeicherhierarchie 14) die angeforderte Cachespeicherzeile überträgt. Anschließend endet der Prozess beim Block 150.
  • Mit Bezugnahme auf Block 100 leitet die Knotensteuereinheit 20 des Verarbeitungsknotens 8a die Leseanforderungstransaktion nun spekulativ an den fernen Verarbeitungsknoten 8 weiter, der der Heimknoten für die angeforderte Cachespeicherzeile ist, falls sie feststellt, dass der Verarbeitungsknoten 8a nicht der Heimknoten für die angeforderte Cachespeicherzeile ist. Wie in 3A gezeigt wird, wird die Leseanforderung von der Knotensteuereinheit 20 zumindest gleichzeitig mit der ARespIn-Periode weitergeleitet und wird vorzugsweise unmittelbar nach dem Empfang des AStatIn-Votums von der Zuteilungseinrichtung 24 und vor der ARespOut-Periode weitergeleitet. Wenn die Leseanforderung weitergeleitet wird, wird der Status des Leseeintrags im Wartepuffer 60 auf "ReRun "aktualisiert. Wie beim Block 102 gezeigt wird, stellen die Abhöreinrichtungen anschließend ihre ARespOut-Voten bereit, die die Zuteilungseinrichtung 24 kompiliert, um ein ARespIn-Votum zu erzeugen. Wie beim Block 110 und den folgenden Blöcken dargestellt wird, überträgt der Heimknoten eine Antwort auf die Leseanforderung, und die Knotensteuereinheit 20 bearbeitet die Antwort gemäß dem ARespIn-Votum für die Leseanforderung im Verarbeitungsknoten 8a.
  • Falls das ARespIn-Votum "Retry" ist, wird die Leseanforderung im Verarbeitungsknoten 8a im Grunde genommen abgebrochen. Folglich wird der Status der im Wartepuffer 60 zugeordneten Lese- und Schreibeinträge auf den Empfang eines ARespIn-Votums "Retry" hin auf Null aktualisiert. Der Prozess geht sodann vom Block 110 weiter zu den Blöcken 112 und 114, die darstellen, wie die Knotensteuereinheit 20 darauf wartet, die angeforderte Cachespeicherzeile vom Heimknoten zu empfangen, und die Cachespeicherzeile löscht, wenn sie auf den Nullstatus des Leseeintrags im Wartepuffer 60 hin empfangen wurde. Der Prozess endet sodann beim Block 150.
  • Falls das ARespIn-Votum "Modified Intervention" ist, kann die Leseanforderung lokal im Verarbeitungsknoten 8a bearbeitet werden, ohne (veraltete) Daten vom Heimknoten zu verwenden. Folglich wird der Status des Leseeintrags im Warteschlangepuffer 60 auf einen Empfang eines ARespIn-Votums "Modified Intervention" hin auf "Null" aktualisiert, und der Prozess geht vom Block 102 durch die Blöcke 110 und 120 zum Block 122. Der Block 122 stellt die Abhöreinrichtung dar, die während der ARespOut-Periode "Modified Intervention" wählte, wobei die angeforderte Cachespeicherzeile auf der lokalen Zwischenverbindung 16 des Verarbeitungsknotens 8a bereitgestellt wurde. Der Kohärenzstatus der angeforderten Cachespeicherzeile in der diese bereitstellenden Abhöreinrichtung wird sodann von "Modified" auf "Shared" aktualisiert. Auf den Empfang der angeforderten Cachespeicherzeile hin lädt der anfordernde Prozessor 10a diese in seine Cachespeicherhierarchie 14, wie beim Block 124 dargestellt wird. Außerdem erfasst die Knotensteuereinheit 20 die angeforderte Cachespeicherzeile von der lokalen Zwischenverbindung 16 und gibt eine diese enthaltende "Writewith-clean"-Transaktion zum Heimknoten aus, um den Systemspeicher 18 des Heimknotens mit der geänderten Cachespeicherzeile zu aktualisieren, wie beim Block 126 gezeigt wird. Der Prozess geht sodann weiter zum bereits beschriebenen Block 112.
  • Das vom Computersystem 6 realisierte Kohärenzprotokoll kann wahlweise "Shared Intervention" unterstützen, das heißt, die Bearbeitung einer Leseanforderungstransaktion durch eine lokale Cachespeicherhierarchie 14, die die angeforderte Cachespeicherzeile in einem gemeinsam genutzten Status zwischenspeichert. Falls "Shared Intervention" vom Cachespeicher-Kohärenzprotokoll des Computersystems 6 unterstützt wird und das ARespIn-Votum für die Anforderungstransaktion "Shared" ist (d.h. "Shared Intervention"), stellt die Abhöreinrichtung, die "Shared" wählte, die angeforderte Cachespeicherzeile auf der lokalen Zwischenverbindung 16 bereit, wie beim Block 132 gezeigt wird. Auf den Empfang der angeforderten Cachespeicherzeile hin lädt der anfordernde Prozessor 10a diese in seine Cachespeicherhierarchie 14, wie beim Block 134 dargestellt wird. Wenn keine Aktualisierung des Systemspeichers 18 erforderlich ist, wird der Status der zugeordneten Lese- und Schreibeinträge im Wartepuffer 60 auf "Null" aktualisiert, und der Prozess endet beim Block 150.
  • Falls das ARespIn-Votum für die Anforderungstransaktion im Verarbeitungsknoten 8a"ReRun" ist, wird der Status des Schreibeintrags im Wartepuffer 60 schließlich auf "Null" aktualisiert und derjenige des Leseeintrags wird auf "ReRun" gesetzt. Dir Prozess geht sodann vom Block 102 durch die Blöcke 110, 120, 130 weiter zum Block 142, der darstellt, wie die Knotensteuereinheit 20 des Verarbeitungsknotens 8a wartet, bis die angeforderte Cachespeicherzeile vom Heimknoten empfangen wird. Auf den Empfang der angeforderten Cachespeicherzeile vom Heimknoten über die Knotenzwischenverbindung 22 hin überträgt die Knotensteuereinheit 20 diese über die lokale Zwischenverbindung 16 zum anfordernden Prozessor 10a, wie beim Block 144 gezeigt wird. Auf den Empfang der angeforderten Cachespeicherzeile hin lädt der anfordernde Prozessor 10a diese in seine Cachespeicherhierarchie 14, wie beim Block 146 dargestellt wird. Der Prozess endet sodann beim Block 150.
  • Mit Bezugnahme auf 3B wird nun ein logisches Übersichts-Flussdiagramm dargestellt, das zeigt, wie der Heimknoten eine von einem anderen Verarbeitungsknoten empfangene Transaktion verarbeitet. Wie dargestellt wird, beginnt der Prozess beim Block 160 und geht anschließend weiter zum Block 162, der eine Feststellung zeigt, ob der Heimknoten eine Transaktion von einem anderen Verarbeitungsknoten über die Knotenzwischenverbindung 22 empfangen hat. Falls nicht, wird der Prozess einfach beim Block 162 so lange wiederholt, bis eine Transaktion von einem anderen Verarbeitungsknoten 8 empfangen wird. Auf den Empfang einer Transaktion von einem fernen Verarbeitungsknoten 8 durch die Knotensteuereinheit 20 des Heimknotens hin geht der Prozess weiter zum Block 164, der darstellt, wie die Knotensteuereinheit 20 des Heimknotens die beim Block 162 empfangene Transaktion auf die lokale Zwischenverbindung 16 des Heimknotens überträgt. Falls die auf die lokale Zwischenverbindung 16 ausgegebene Transaktion eine Lesetransaktion ist, geht der Prozess weiter zum Block 172, der darstellt, wie die Leseanforderung von einer Abhöreinrichtung bearbeitet wird, die eine Kopie der angeforderten Cachespeicherzeile zur Knotensteuereinheit 20 des Heimknotens überträgt, wie durch den Entscheidungsblock 170 gezeigt wird. Auf den Empfang der angeforderten Cachespeicherzeile hin überträgt die Knotensteuereinheit 20 diese über die Knotenzwischenverbindung 22 zum anfordernden Verarbeitungsknoten 8, wie beim Block 174 dargestellt wird. Anschließend endet der Prozess beim Block 190.
  • Falls die auf der lokalen Zwischenverbindung 16 des Heimknotens übertragene Transaktion eine Schreib- (z. B. "Write-with-clean"-) Transaktion ist, geht der Prozess mit erneuter Bezugnahme auf Block 164 durch die Blöcke 170 und 180 weiter zum Block 184, der darstellt, wie die Speichersteuereinheit 17 den Systemspeicher 18 mit der in der Schreibtransaktion enthaltenen Cachespeicherzeile aktualisiert. Der Prozess endet sodann beim Block 190. Falls die auf der lokalen Zwischenverbindung 16 des Heimknotens übertragene Transaktion weder eine Lese- noch eine Schreibtransaktion ist, führt der Heimknoten den(die) durch die Transaktion beim Block 182 angegebenen Vorgang(Vorgänge) aus, und der Prozess endet beim Block 190. Zu den Vorgängen, die auf eine andere Transaktion als eine Lese- oder Schreibtransaktion hin ausgeführt werden können, gehören beispielsweise Aktualisierungen der Kohärenzstati von Cachespeicherzeilen, die in den Cachespeicherhierarchien 14 des Heimknotens zwischengespeichert werden.
  • Mit Bezugnahme auf die 4A bis 4D wird nun ein beispielhaftes Verarbeitungsszenario gemäß der vorliegenden Erfindung dargestellt. Der Klarheit halber wird das beispielhafte Verarbeitungsszenario im Folgenden unter Verwendung einer vereinfachten Darstellung des Computersystems 6 mit zwei Verarbeitungsknoten 8a und 8b erläutert, die jeweils zwei Prozessoren 10a und lOb enthalten. Der Kohärenzstatus der angeforderten Cachespeicherzeile wird innerhalb der Cachespeicherhierarchie 14 jedes Prozessors 10 und innerhalb des Kohärenzverzeichnisses 50 des Heimknotens 8a gezeigt.
  • Wie in 4A gezeigt wird, gibt der Prozessor lOb des Verarbeitungsknotens 8b als Erstes eine Leseanforderung für eine Cachespeicherzeile aus, die in seiner Cachespeicherhierarchie 14 ungültig (d.h. nicht vorhanden) ist. Auf den Empfang der Leseanforderung hin überträgt die Knotensteuereinheit 20 des Verarbeitungsknotens 8b die Leseanforderung spekulativ zum Verarbeitungsknoten 8a, der der Heimknoten der in der Leseanforderung angegebenen Cachespeicherzeile ist. Nach der spekulativen Weiterleitung der Leseanforderung zum Verarbeitungsknoten 8a wählt der Prozessor 10a"Modified Intervention" während der ARespOut-Periode, da seine Cachespeicherhierarchie 14 die angeforderte Cachespeicherzeile im geänderten Status zwischengespeichert hat. Die Zuteilungseinrichtung des Verarbeitungsknotens 8b kompiliert die ARespout-Voten und überträgt ein ARespIn-Votum "Modified Intervention" zu jeder Abhöreinrichtung im Verarbeitungsknoten 8b.
  • Wie in 4B gezeigt wird, empfängt die Knotensteuereinheit 20 des Verarbeitungsknotens 8a als Nächstes die spekulativ weitergeleitete Leseanforderung und gibt die Leseanforderung auf ihre lokale Zwischenverbindung 16 aus. Wie in 4H gezeigt wird, wählt die Knotensteuereinheit 20 auf eine Anzeige des Kohärenzverzeichnisses 50 hin, dass die in der Leseanforderung angegebene Cachespeicherzeile im Verarbeitungsknoten 8b geändert wurde, während der ARespOut-Periode "Null". Indem die Knotensteuereinheit 20 diese spezielle Bedingung erkennt, ist die weitere Verarbeitung der Leseanforderung möglich, wie im Folgenden mit Bezugnahme auf 4D erläutert wird.
  • Wie in 4C dargestellt wird, antwortet der Prozessor 10a des Verarbeitungsknotens 8b unabhängig von (und möglicherweise vor, gleichzeitig mit oder nach) der spekulativen Weiterleitung der Leseanforderung zum Verarbeitungsknoten 8a auf diese, indem er die angeforderte Cachespeicherzeile auf die lokale Zwischenverbindung 16 überträgt und den Kohärenzstatus der angeforderten Cachespeicherzeile in seiner Cacheespeicherhierarchie 14 auf "Shared" aktualisiert. Auf das Abhören der angeforderten Cachespeicherzeile hin lädt der anfordernde Prozessor 10b diese in seine Cachespeicherhierarchie 14 und setzt den zugeordneten Kohärenzstatus auf "Shared". Außerdem erfasst die Knotersteuereinheit 20 des Verarbeitungsknotens 8b die Cachespeicherzeile und gibt eine "Write-with-clean"-Transa.ktion zum Verarbeitungsknoten 8a aus, die die geänderte Cachespeicherzeile enthält. Auf den Empfang der "Write-withclean"-Transaktion hin gibt die Knotensteuereinheit 20 des Verarbeitungsknotens 8a diese über ihre lokale Zwischenverbindung 16 an den Systemspeicher 18 aus. Der Systemspeicher 18 des Heimknotens 8a aktualisiert sodann die entsprechende Speicherzeile mit den geänderten Daten.
  • Mit Bezugnahme auf 4D antwortet der Systemspeicher 18 des Verarbeitungsknotens 8a unabhängig von (und möglicherweise vor, gleichzeitig mit oder nach) der in 4A dargestellten Speicheraktualisierung auf die Leseanforderung, indem er eine möglicherweise veraltete Kopie der angeforderten Cachespeicherzeile über die lokale Zwischenverbindung 16 an die Knotensteuereinheit 20 des Verarbeitungsknotens 8a überträgt. Die Knotensteuereinheit 20 des Verarbeitungsknotens 8a leitet die Kopie der angeforderten Cachespeicherzeile sodann an die Knotensteuereinheit des Verarbeitungsknotens 8b weiter, der auf die in ihrem Wartepuffer 60 mit „Null" markierte Leseanforderung hin die Cachespeicherzeile löscht.
  • Wie beschrieben wurde, stellt die vorliegende Erfindung ein verbessertes NUMA-Computersystem und eine verbesserte Kommunikationsmethodik in einem NUMA-Computersystem bereit. Gemäß der vorliegenden Erfindung wird eine Leseanforderungstransaktion vor einer Feststellung, ob die Leseanforderung lokal ohne Eingriff des fernen Verarbeitungsknotens bearbeitet werden kann, über die Knotenzwischenverbindung spekulativ an einen fernen (d.h. Heim-) Verarbeitungsknoten ausgegeben. Wenn der ferne Verarbeitungsknoten auf die spekulativ weitergeleitete Leseanforderung antwortet, bearbeitet der anfordernde Verarbeitungsknoten die Antwort gemäß der lokalen Kohärenzantwort für die Leseanforderung. Auf diese Weise kann die Latenzzeit von Kommunikationstransaktionen erheblich verringert werden.
  • Wie außerdem beschrieben wurde, stellt die Erfindung ein Computersystem mit nichtuniformen Speicherzugriff (NUMA) bereit, das mindestens einen lokalen Verarbeitungsknoten und einen fernen Verarbeitungsknoten enthält, die jeweils mit einer Knotenzwischenverbindung verbunden sind. Der lokale Verarbeitungsknoten enthält eine lokale Zwischenverbindung, einen Prozessor und einen mit der lokalen Zwischenverbindung verbundenen Systemspeicher und eine Knotensteuereinheit, die zwischen die lokale Zwischenverbindung und die Knotenzwischenverbindung geschaltet ist. Auf den Empfang einer Leseanforderung von der lokalen Zwischenverbindung hin überträgt die Knotensteuereinheit die Leseanforderung über die Knotenzwischenverbindung spekulativ zum fernen Verarbeitungsknoten. Auf den Empfang einer Antwort auf die Leseanforderung vom fernen Verarbeitungsknoten hin bearbeitet die Knotensteuereinheit anschließend die Antwort gemäß einer Auswertung der Leseanforderung im lokalen Verarbeitungsknoten. In einem Verarbeitungsszenario werden beispielsweise Daten, die in der vom fernen Verarbeitungsknoten empfangenen Antwort enthalten sind, von der Knotensteuereinheit gelöscht, falls im lokalen Verarbeitungsknoten eine Kohärenzantwort "Modified Intervention" empfangen wird.

Claims (10)

  1. Cachespeicher-kohärentes NUMA-Computersystem (6), das Folgendes umfasst: eine Knotenzwischenverbindung (22); und mindestens einen lokalen Verarbeitungsknoten und einen fernen Heimverarbeitungsknoten, die jeweils mit der Knotenzwischenverbindung (22) verbunden sind, wobei der lokale Verarbeitungsknoten eine lokale Zwischenverbindung (16), einen Prozessor und einen mit der Zwischenverbindung verbundenen Systemspeicher und eine Knotensteuereinheit (20) enthält, die zwischen die lokale Zwischenverbindung (16) und die Knotenzwischenverbindung (22) geschaltet ist, wobei die Knotensteuereinheit eine von der lokalen Zwischenverbindung (16) empfangene Leseanforderungstransaktion über die Knotenzwischenverbindung (22) zum fernen Heimverarbeitungsknoten spekulativ überträgt, falls der lokale Verarbeitungsknoten kein Heimknoten für angeforderte Daten ist, dadurch gekennzeichnet, dass die Knotensteuereinheit (20) des lokalen Verarbeitungsknotens vom Heimverarbeitungsknoten empfangene Daten löscht, falls die angeforderten Daten im lokalen Verarbeitungsknoten in einem geänderten oder gemeinsam genutzten Status zwischengespeichert werden.
  2. Computersystem nach Anspruch 1, wobei der ferne Heimverarbeitungsknoten außerdem eine lokale Zwischenverbindung und eine zwischen die Knotenzwischenverbindung und die lokale Zwischenverbindung geschaltete Knotensteuereinheit umfasst, wobei die Knotensteuereinheit des fernen Heimverarbeitungsknotens auf den Empfang der spekulativen Leseanforderungstransaktion hin diese auf die lokale Zwischenverbindung des fernen Heimverarbeitungsknotens ausgibt.
  3. Computersystem nach Anspruch 1, wobei: das Computersystem außerdem einen dritten Verarbeitungsknoten umfasst; wobei die Leseanforderungstransaktion eine Adresse enthält; und die Knotensteuereinheit des ersten Verarbeitungsknotens zumindest teilweise auf die in der Leseanforderungstransaktion enthaltene Adresse hin einen Zielverarbeitungsknoten der spekulativ übertragenen Leseanforderungstransaktion ermittelt.
  4. Computersystem nach Anspruch 1, wobei der ferne Heimverarbeitungsknoten einen Systemspeicher enthält, wobei die Knotensteuereinheit des lokalen Verarbeitungsknotens die Leseanforderungstransaktion auf eine Feststellung hin, dass die Leseanforderungstransaktion eine dem Systemspeicher im fernen Heimverarbeitungsknoten zugeordnete Adresse angibt, spekulativ zum fernen Heimverarbeitungsknoten weiterleitet.
  5. Computersystem nach Anspruch 1, wobei die Knotensteuereinheit des lokalen Verarbeitungsknotens Daten liefert, die vom fernen Heimverarbeitungsknoten auf der lokalen Zwischenverbindung des lokalen Verarbeitungsknotens empfangen werden, falls die Leseanforderungstransaktion eine Kohärenzantwort im lokalen Verarbeitungsknoten empfängt, die anzeigt, dass die Leseanforderungstransaktion nicht lokal bearbeitet werden kann.
  6. Verfahren zur Kommunikation in einem cachespeicherkohärenten NUMA-Computersystem (6), das eine Knotenzwischenverbindung (22) enthält, die mindestens einen lokalen Verarbeitungsknoten und einen fernen Heimverarbeitungsknoten verbindet, wobei der lokale Verarbeitungsknoten eine lokale Zwischenverbindung (16), einen Prozessor und einen mit der lokalen Zwischenverbindung verbundenen Systemspeicher und eine zwischen die lokale Zwischenverbindung (16) und die Knotenzwischenverbindung (22) geschaltete Knotensteuereinheit (20) enthält, wobei das Verfahren Folgendes umfasst: das spekulative Übertragen einer von der lokalen Zwischenverbindung (16) empfangenen Leseanforderungstransaktion an den fernen Heimverarbeitungsknoten über die Knotenzwischenverbindung (22), falls der lokale Verarbeitungsknoten kein Heimknoten für angeforderte Daten ist; dadurch gekennzeichnet, dass die Knotensteuereinheit (20) des lokalen Verarbeitungsknotens vom fernen Heimverarbeitungsknoten empfangene Daten löscht, falls die angeforderten Daten im lokalen Verarbeitungsknoten in einem geänderten oder gemeinsam genutzten Status zwischengespeichert werden.
  7. Verfahren nach Anspruch 6, das außerdem Folgendes umfasst: auf den Empfang der spekulativen Leseanforderungstransaktion im fernen Heimverarbeitungsknoten hin Ausgeben der spekulativen Leseanforderungstransaktion auf eine lokale Zwischenverbindung des fernen Heimverarbeitungsknotens.
  8. Verfahren nach Anspruch 6, wobei das Computersystem außerdem einen dritten Verarbeitungsknoten enthält und die Leseanforderungstransaktion eine Adresse enthält, wobei das Verfahren außerdem Folgendes umfasst: Ermitteln eines Zielverarbeitungsknotens der spekulativ übertragenen Leseanforderungstransaktion zumindest teilweise auf die in der Leseanforderungstransaktion enthaltenen Adresse hin.
  9. Verfahren nach Anspruch 6, wobei der ferne Heimverarbeitungsknoten einen Systemspeicher enthält, wobei das spekulative Übertragen einer Leseanforderungstransaktion das spekulative Übertragen der Leseanforderungstransaktion an den fernen Heimverarbeitungsknoten auf eine Feststellung hin umfasst, dass die Leseanforderungstransaktion eine dem Systemspeicher im fernen Heimverarbeitungsknoten zugeordnete Adresse angibt.
  10. Verfahren nach Anspruch 6, wobei die Bearbeitung der Antwort das Liefern von Daten umfasst, die vom fernen Heimverarbeitungsknoten auf der lokalen Zwischenverbindung des lokalen Verarbeitungsknotens empfangen wurden, falls die Leseanforderungstransaktion eine Kohärenzantwort im lokalen Verarbeitungsknoten empfängt, die anzeigt, dass die Leseanforderungstransaktion nicht lokal bearbeitet werden kann.
DE69906585T 1998-12-15 1999-12-10 Datenverarbeitungssystem mit nichtuniformen speicherzugriffen (numa) mit spekulativer weiterleitung einer leseanforderung an einen entfernten verarbeitungsknoten Expired - Lifetime DE69906585T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/211,351 US6338122B1 (en) 1998-12-15 1998-12-15 Non-uniform memory access (NUMA) data processing system that speculatively forwards a read request to a remote processing node
US211351 1998-12-15
PCT/GB1999/004204 WO2000036514A1 (en) 1998-12-15 1999-12-10 Non-uniform memory access (numa) data processing system that speculatively forwards a read request to a remote processing node

Publications (2)

Publication Number Publication Date
DE69906585D1 DE69906585D1 (de) 2003-05-08
DE69906585T2 true DE69906585T2 (de) 2004-02-12

Family

ID=22786571

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69906585T Expired - Lifetime DE69906585T2 (de) 1998-12-15 1999-12-10 Datenverarbeitungssystem mit nichtuniformen speicherzugriffen (numa) mit spekulativer weiterleitung einer leseanforderung an einen entfernten verarbeitungsknoten

Country Status (16)

Country Link
US (1) US6338122B1 (de)
EP (1) EP1153349B1 (de)
KR (1) KR100465583B1 (de)
CN (1) CN1157659C (de)
AT (1) ATE236431T1 (de)
AU (1) AU1672500A (de)
CA (1) CA2349569C (de)
CZ (1) CZ20012153A3 (de)
DE (1) DE69906585T2 (de)
ES (1) ES2196893T3 (de)
HU (1) HUP0104577A3 (de)
IL (2) IL142265A0 (de)
PL (1) PL348859A1 (de)
RU (1) RU2220444C2 (de)
TW (1) TW446883B (de)
WO (1) WO2000036514A1 (de)

Families Citing this family (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DK1042435T3 (da) * 1997-12-19 2002-11-04 Unilever Nv Olivenolieholdig fødevaresammensætning
US6546429B1 (en) * 1998-09-21 2003-04-08 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that holds and reissues requests at a target processing node in response to a retry
US6591307B1 (en) * 1999-11-09 2003-07-08 International Business Machines Corporation Multi-node data processing system and method of queue management in which a queued operation is speculatively cancelled in response to a partial combined response
JP2001167077A (ja) * 1999-12-09 2001-06-22 Nec Kofu Ltd ネットワークシステムにおけるデータアクセス方法、ネットワークシステムおよび記録媒体
US6678798B1 (en) * 2000-07-20 2004-01-13 Silicon Graphics, Inc. System and method for reducing memory latency during read requests
US8635410B1 (en) 2000-07-20 2014-01-21 Silicon Graphics International, Corp. System and method for removing data from processor caches in a distributed multi-processor computer system
US6938128B1 (en) 2000-07-20 2005-08-30 Silicon Graphics, Inc. System and method for reducing memory latency during read requests
US6915387B1 (en) 2000-07-20 2005-07-05 Silicon Graphics, Inc. System and method for handling updates to memory in a distributed shared memory system
US6810467B1 (en) * 2000-08-21 2004-10-26 Intel Corporation Method and apparatus for centralized snoop filtering
US20020078118A1 (en) * 2000-12-19 2002-06-20 Cone Robert W. Network interface application specific integrated circuit to allow direct attachment for an appliance,such as a printer device
US7234029B2 (en) * 2000-12-28 2007-06-19 Intel Corporation Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US6799217B2 (en) * 2001-06-04 2004-09-28 Fujitsu Limited Shared memory multiprocessor expansion port for multi-node systems
US7394823B2 (en) * 2001-11-20 2008-07-01 Broadcom Corporation System having configurable interfaces for flexible system configurations
US6748479B2 (en) * 2001-11-20 2004-06-08 Broadcom Corporation System having interfaces and switch that separates coherent and packet traffic
US7206879B2 (en) * 2001-11-20 2007-04-17 Broadcom Corporation Systems using mix of packet, coherent, and noncoherent traffic to optimize transmission between systems
EP1316891B1 (de) * 2001-12-03 2007-10-10 Infineon Technologies AG Datenübertragungseinrichtung
US6959372B1 (en) * 2002-02-19 2005-10-25 Cogent Chipware Inc. Processor cluster architecture and associated parallel processing methods
US7085866B1 (en) * 2002-02-19 2006-08-01 Hobson Richard F Hierarchical bus structure and memory access protocol for multiprocessor systems
US7107409B2 (en) * 2002-03-22 2006-09-12 Newisys, Inc. Methods and apparatus for speculative probing at a request cluster
US7103725B2 (en) * 2002-03-22 2006-09-05 Newisys, Inc. Methods and apparatus for speculative probing with early completion and delayed request
US7107408B2 (en) * 2002-03-22 2006-09-12 Newisys, Inc. Methods and apparatus for speculative probing with early completion and early request
US7653790B2 (en) * 2002-05-13 2010-01-26 Glasco David B Methods and apparatus for responding to a request cluster
US7395379B2 (en) * 2002-05-13 2008-07-01 Newisys, Inc. Methods and apparatus for responding to a request cluster
US7266587B2 (en) * 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
US6965973B2 (en) * 2002-05-15 2005-11-15 Broadcom Corporation Remote line directory which covers subset of shareable CC-NUMA memory space
US6993631B2 (en) * 2002-05-15 2006-01-31 Broadcom Corporation L2 cache maintaining local ownership of remote coherency blocks
US7003631B2 (en) * 2002-05-15 2006-02-21 Broadcom Corporation System having address-based intranode coherency and data-based internode coherency
US7251698B2 (en) * 2002-05-28 2007-07-31 Newisys, Inc. Address space management in systems having multiple multi-processor clusters
US7103636B2 (en) * 2002-05-28 2006-09-05 Newisys, Inc. Methods and apparatus for speculative probing of a remote cluster
US7155525B2 (en) * 2002-05-28 2006-12-26 Newisys, Inc. Transaction management in systems having multiple multi-processor clusters
US6865595B2 (en) * 2002-05-28 2005-03-08 Newisys, Inc. Methods and apparatus for speculative probing of a remote cluster
US7281055B2 (en) * 2002-05-28 2007-10-09 Newisys, Inc. Routing mechanisms in systems having multiple multi-processor clusters
US6959364B2 (en) * 2002-06-28 2005-10-25 Intel Corporation Partially inclusive snoop filter
US7296121B2 (en) * 2002-11-04 2007-11-13 Newisys, Inc. Reducing probe traffic in multiprocessor systems
US7346744B1 (en) 2002-11-04 2008-03-18 Newisys, Inc. Methods and apparatus for maintaining remote cluster state information
US7003633B2 (en) * 2002-11-04 2006-02-21 Newisys, Inc. Methods and apparatus for managing probe requests
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7577755B2 (en) * 2002-11-19 2009-08-18 Newisys, Inc. Methods and apparatus for distributing system management signals
EP1426866A1 (de) * 2002-12-06 2004-06-09 Sun Microsystems, Inc. Verfahren zur Verminderung der Speicherlatenzzeit mittels zweistufiger Spekulation
US7917646B2 (en) * 2002-12-19 2011-03-29 Intel Corporation Speculative distributed conflict resolution for a cache coherency protocol
US7111128B2 (en) 2002-12-19 2006-09-19 Intel Corporation Hierarchical virtual model of a cache hierarchy in a multiprocessor system
US7334089B2 (en) * 2003-05-20 2008-02-19 Newisys, Inc. Methods and apparatus for providing cache state information
US7386626B2 (en) * 2003-06-23 2008-06-10 Newisys, Inc. Bandwidth, framing and error detection in communications between multi-processor clusters of multi-cluster computer systems
US7337279B2 (en) * 2003-06-27 2008-02-26 Newisys, Inc. Methods and apparatus for sending targeted probes
US7577727B2 (en) * 2003-06-27 2009-08-18 Newisys, Inc. Dynamic multiple cluster system reconfiguration
US7159137B2 (en) * 2003-08-05 2007-01-02 Newisys, Inc. Synchronized communication between multi-processor clusters of multi-cluster computer systems
US7117419B2 (en) * 2003-08-05 2006-10-03 Newisys, Inc. Reliable communication between multi-processor clusters of multi-cluster computer systems
US7103823B2 (en) 2003-08-05 2006-09-05 Newisys, Inc. Communication between multi-processor clusters of multi-cluster computer systems
US7395347B2 (en) * 2003-08-05 2008-07-01 Newisys, Inc, Communication between and within multi-processor clusters of multi-cluster computer systems
US20050240734A1 (en) * 2004-04-27 2005-10-27 Batson Brannon J Cache coherence protocol
US7822929B2 (en) * 2004-04-27 2010-10-26 Intel Corporation Two-hop cache coherency protocol
US20050262250A1 (en) * 2004-04-27 2005-11-24 Batson Brannon J Messaging protocol
US7395381B2 (en) * 2005-03-18 2008-07-01 Intel Corporation Method and an apparatus to reduce network utilization in a multiprocessor system
US8037465B2 (en) * 2005-09-30 2011-10-11 Intel Corporation Thread-data affinity optimization using compiler
US20110004732A1 (en) * 2007-06-06 2011-01-06 3Leaf Networks, Inc. DMA in Distributed Shared Memory System
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
US8782327B1 (en) 2010-05-11 2014-07-15 Western Digital Technologies, Inc. System and method for managing execution of internal commands and host commands in a solid-state memory
US9026716B2 (en) 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
WO2012029163A1 (ja) * 2010-09-02 2012-03-08 富士通株式会社 ノードコントローラ、ノードコントローラの制御方法及びコンピュータシステム
US8635412B1 (en) 2010-09-09 2014-01-21 Western Digital Technologies, Inc. Inter-processor communication
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
US9021192B1 (en) 2010-09-21 2015-04-28 Western Digital Technologies, Inc. System and method for enhancing processing of memory access requests
US9158670B1 (en) 2011-06-30 2015-10-13 Western Digital Technologies, Inc. System and method for dynamically adjusting garbage collection policies in solid-state memory
CN102439571B (zh) * 2011-10-27 2013-08-28 华为技术有限公司 一种防止节点控制器死锁的方法及装置
WO2013154549A1 (en) 2012-04-11 2013-10-17 Hewlett-Packard Development Company, L.P. Prioritized conflict handling in a system
US9465740B2 (en) 2013-04-11 2016-10-11 Apple Inc. Coherence processing with pre-kill mechanism to avoid duplicated transaction identifiers
US9925492B2 (en) * 2014-03-24 2018-03-27 Mellanox Technologies, Ltd. Remote transactional memory
FR3021773B1 (fr) * 2014-05-27 2017-10-06 Bull Sas Interrogation speculative en memoire centrale d'un systeme multiprocesseur
US9658963B2 (en) * 2014-12-23 2017-05-23 Intel Corporation Speculative reads in buffered memory
US10642780B2 (en) 2016-03-07 2020-05-05 Mellanox Technologies, Ltd. Atomic access to object pool over RDMA transport network
US10552367B2 (en) 2017-07-26 2020-02-04 Mellanox Technologies, Ltd. Network data transactions using posted and non-posted operations
US10613980B2 (en) * 2017-12-19 2020-04-07 International Business Machines Corporation Coherence protocol providing speculative coherence response to directory probe
US10579527B2 (en) 2018-01-17 2020-03-03 International Business Machines Corporation Remote node broadcast of requests in a multinode data processing system
US10713169B2 (en) 2018-01-17 2020-07-14 International Business Machines Corporation Remote node broadcast of requests in a multinode data processing system
US10387310B2 (en) 2018-01-17 2019-08-20 International Business Machines Corporation Remote node broadcast of requests in a multinode data processing system
GR20180100189A (el) * 2018-05-03 2020-01-22 Arm Limited Δικτυο επεξεργασιας δεδομενων με συμπυκνωση ροης για μεταφορα δεδομενων μεσω streaming
US11068407B2 (en) 2018-10-26 2021-07-20 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction
US10884740B2 (en) 2018-11-08 2021-01-05 International Business Machines Corporation Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads
US11119781B2 (en) 2018-12-11 2021-09-14 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a fronting load
US11106608B1 (en) 2020-06-22 2021-08-31 International Business Machines Corporation Synchronizing access to shared memory by extending protection for a target address of a store-conditional request
US11693776B2 (en) 2021-06-18 2023-07-04 International Business Machines Corporation Variable protection window extension for a target address of a store-conditional request

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02205963A (ja) 1989-01-27 1990-08-15 Digital Equip Corp <Dec> 読取中断処理
JPH06282528A (ja) 1993-01-29 1994-10-07 Internatl Business Mach Corp <Ibm> データ転送方法及びそのシステム
US5878268A (en) 1996-07-01 1999-03-02 Sun Microsystems, Inc. Multiprocessing system configured to store coherency state within multiple subnodes of a processing node
US5958019A (en) * 1996-07-01 1999-09-28 Sun Microsystems, Inc. Multiprocessing system configured to perform synchronization operations
US5950226A (en) * 1996-07-01 1999-09-07 Sun Microsystems, Inc. Multiprocessing system employing a three-hop communication protocol
US5892970A (en) * 1996-07-01 1999-04-06 Sun Microsystems, Inc. Multiprocessing system configured to perform efficient block copy operations
US5754877A (en) * 1996-07-02 1998-05-19 Sun Microsystems, Inc. Extended symmetrical multiprocessor architecture

Also Published As

Publication number Publication date
EP1153349A1 (de) 2001-11-14
PL348859A1 (en) 2002-06-17
ATE236431T1 (de) 2003-04-15
CZ20012153A3 (cs) 2001-09-12
RU2220444C2 (ru) 2003-12-27
CA2349569A1 (en) 2000-06-22
IL142265A0 (en) 2002-03-10
CN1330783A (zh) 2002-01-09
CN1157659C (zh) 2004-07-14
ES2196893T3 (es) 2003-12-16
DE69906585D1 (de) 2003-05-08
CA2349569C (en) 2005-04-05
US6338122B1 (en) 2002-01-08
KR20010101193A (ko) 2001-11-14
EP1153349B1 (de) 2003-04-02
HUP0104577A3 (en) 2003-11-28
TW446883B (en) 2001-07-21
AU1672500A (en) 2000-07-03
IL142265A (en) 2007-06-03
WO2000036514A1 (en) 2000-06-22
KR100465583B1 (ko) 2005-01-13
HUP0104577A2 (hu) 2002-03-28

Similar Documents

Publication Publication Date Title
DE69906585T2 (de) Datenverarbeitungssystem mit nichtuniformen speicherzugriffen (numa) mit spekulativer weiterleitung einer leseanforderung an einen entfernten verarbeitungsknoten
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE69727856T2 (de) Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren
DE69724353T2 (de) Mehrrechnersystem mit einem Drei-Sprung-Kommunikationsprotokoll
DE60117818T2 (de) Verwaltung des ersetzens von daten in einem zwischenspeicher auf einem knoten aufgrund von zwischenspeichern anderer knoten
DE60219436T2 (de) System mit adressbasierter Intraknotenkohärenz und datenbasierter Interknotenkohärenz
DE69729243T2 (de) Multiprozessorsystem mit Vorrichtung zur Optimierung von Spin-Lock-Operationen
DE112013000889B4 (de) Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System
DE60207210T2 (de) System mit Schnittstellen, einem Schalter und einer Speicherbrücke mit cc-numa (cache-coherent non-uniform memory access)
DE60203469T2 (de) System mit Schnittstellen und einem Schalter für die Trennung von kohärentem und nichtkohärentem Datenpaketverkehr
DE68927172T2 (de) Multiprozessorsystem mit cache-speichern
DE102009032076B4 (de) Erfüllung von Speicherordnungsanforderungen zwischen Teillesevorgängen und Nicht-Snoop-Zugriffen
DE3439302C2 (de)
DE69721891T2 (de) Deterministisches Kohärenzprotokoll für verteilten Multicache-Speicher
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE112017001959T5 (de) Cachespeicher-Zugriff
DE102013201079A1 (de) Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt
DE102007052853B4 (de) Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter
DE69736544T2 (de) Verfahren zur Verminderung der Anzahl von Kohärenz-Zyklen in einem verzeichnisbasierten Cachekohärenz-Speichersystem unter Verwendung eines Speicherzustands-Cachespeichers
DE112005003243T5 (de) System und Verfahren für die Cache-Kohärenz bei einem Cache mit unterschiedlichen Längen für die Cache-Orte
DE60212142T2 (de) Verfahren und vorrichtung zur übertragung von paketen in einem symmetrischen mehrprozessorsystem
DE102009022151A1 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8320 Willingness to grant licences declared (paragraph 23)
8328 Change in the person/name/address of the agent

Representative=s name: DUSCHER, R., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 7