DE10045915A1 - Verfahren und System zum Steuern von Datenübertragungen mit physikalischer Trennung der Datenfunktionalität von der Adressen- und Steuerfunktionalität in einem verteilten Multi-Bus-Mehrprozessorsystem - Google Patents
Verfahren und System zum Steuern von Datenübertragungen mit physikalischer Trennung der Datenfunktionalität von der Adressen- und Steuerfunktionalität in einem verteilten Multi-Bus-MehrprozessorsystemInfo
- Publication number
- DE10045915A1 DE10045915A1 DE10045915A DE10045915A DE10045915A1 DE 10045915 A1 DE10045915 A1 DE 10045915A1 DE 10045915 A DE10045915 A DE 10045915A DE 10045915 A DE10045915 A DE 10045915A DE 10045915 A1 DE10045915 A1 DE 10045915A1
- Authority
- DE
- Germany
- Prior art keywords
- data
- bus
- node
- address
- master device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
- G06F15/17368—Indirect interconnection networks non hierarchical topologies
- G06F15/17381—Two dimensional, e.g. mesh, torus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Eine verteilte Systemstruktur für ein Breitweg-symmetrisches Mehrprozessorsystem unter Anwendung eines Cache-Kohärenzprotokolls auf Bus-Basis ist vorgesehen. Die verteilte Systemstruktur enthält einen Adressenschalter, multiple Speicherteilsysteme und multiple Mastervorrichtungen, entweder Prozessoren, E/A-Agenten oder kohärente Speicheradapter, die in einem Knotensatz organisiert sind, der von einem Knotenkontroller unterstützt wird. Der Knotenkontroller erhält Befehle von einer Mastervorrichtung, kommuniziert mit einer Mastervorrichtung als eine andere Mastervorrichtung oder als eine Slave-Vorrichtung und setzt von einer Master-Vorrichtung erhaltene Befehle in eine Warteschlange. Infolge Kontaktstifteinschränkungen, die von breiten Bussen verursacht sein können, z. B. von Bussen, die eine große Anzahl Datenkontaktstifte unterstützen, kann der Knotenkontroller so implementiert werden, dass die Funktionalität für seine Adressenwege und Datenwege in physikalisch getrennten Komponenten, Chips oder Schaltungen implementiert sein kann, wie z. B. in einem Knotendatenkontroller (NCD) oder einem Knotenadressenkontroller (NCA). In diesem Fall können Befehle zum Steuern des Datenflusses durch einen Knoten vom Knotenadressenkontroller an den Knotendatenkontroller geschickt werden.
Description
Die vorliegende Erfindung betrifft im allgemeinen ein
verbessertes Datenverarbeitungssystem und insbesondere ein
Verfahren und ein System zum Verbessern des Datendurchsatzes
in einem Datenverarbeitungssystem. Spezifisch betrifft die
vorliegende Erfindung ein Verfahren und ein System zum
Verbessern der Leistung des Speicherzugriffs und der
Steuerung unter Verwendung einer Cache-Speicher-Kohärenz.
Herkömmlicherweise werden symmetrische Multiprozessoren um
einen gemeinsamen Systembus herum konstruiert, auf dem alle
Prozessoren und sonstigen Vorrichtungen, wie z. B. Speicher
und E/A-Vorrichtungen, durch einfache physikalische Kontakte
an die Drähte angeschlossen sind, die die Bussignale führen.
Dieser allgemeine Bus ist der Pfad zum Übertragen von
Befehlen und Daten zwischen den Vorrichtungen und auch zum
Erzielen der Kohärenz zwischen dem Cache und dem Speicher des
Systems. Eine allgemeine Einbuskonstruktion bleibt eine
populäre Wahl für die Mehrprozessor-Anschließbarkeit wegen
der Einfachheit der Systemorganisation.
Diese Organisation vereinfacht auch die Aufgabe des Erzielens
der Kohärenz zwischen den Cache-Speichern des Systems. Ein
Befehl, der von einer Vorrichtung ausgegeben wird, wird
gleichzeitig und im gleichen Taktzyklus, in dem der Befehl
auf den Bus gelegt wird, an alle anderen Systemvorrichtungen
gesandt. Ein Bus erzwingt eine feste Ordnung für alle
Befehle, die auf ihn gelegt werden. Diese Ordnung wird
vereinbart von allen Vorrichtungen im System, weil sie alle
die gleichen Befehle befolgen. Die Vorrichtungen können auch
ohne besondere Anstrengung in den Auswirkungen einer
Befehlssequenz übereinstimmen. Das ist ein Hauptvorteil für
einen Mehrprozessor, der sich auf einen einzigen Bus gründet.
Eine Konstruktion, die sich auf einen einzigen allgemeinen
Bus gründet, beschränkt jedoch in der Regel die Größe des
Systems, es sei denn, man entscheidet sich für eine geringere
Systemleistung. Die Grenzen der Technik lassen jedoch dann
nur zu, dass wenige Vorrichtungen an den Bus angeschlossen
werden können, ohne die Geschwindigkeit zu kompromittieren,
mit der der Bus schaltet, und damit auch die Geschwindigkeit,
mit der das System läuft. Wenn mehr Master-Vorrichtungen, wie
z. B. Prozessoren und E/A-Agenten, auf den Bus gelegt werden,
muss der Bus langsamer schalten, was seine verfügbare
Bandbreite einschränkt. Geringere Bandbreiten können
Warteschlangenverzögerungen bewirken, was zur Minderung der
Prozessorbenutzung führt und die Systemleistung reduziert.
Ein weiterer ernstlicher Nachteil in einem Ein-Bus-System ist
die Verfügbarkeit nur eines einzigen Datenwegs für die
Datenübertragung. Das verschärft zusätzlich die
Warteschlangenverzögerungen und trägt zu einer Minderung der
Systemleistung bei.
Es gibt zwei Klassen von Cache-Kohärenz-Protokollen. Eine
sind Erfassungsprotokolle auf Bus-Basis, in dem alle Cache-
Speicher im System an einen gemeinsamen Bus angeschlossen
sind und nach Transaktionen suchen, die von anderen Cache-
Speichern auf den gemeinsamen Bus gelegt werden, und dann
geeignete Aktionen unternehmen, um miteinander kohärent zu
bleiben. Die andere Klasse sind auf Unterverzeichnissen
gegründete Protokolle, in denen jede Speicheradresse eine
"Home-Site" hat. Wenn immer ein Cache diese Adresse
anspricht, wird ein "Unterverzeichnis" an der Home-Site
aktualisiert, um die Identität des Cache mit dem Stand der
darin enthaltenen Daten abzuspeichern. Wenn es erforderlich
wird, den Zustand der Daten in diesem Cache zu aktualisieren,
schickt die Home-Site ausdrücklich eine Meldung an den Cache
und fordert ihn auf, eine geeignete Aktion zu unternehmen.
Ausgedrückt als Implementierungs- und Überprüfungskomplexität
ist das Erfassungsprotokoll auf Bus-Basis signifikant
einfacher als das auf Unterverzeichnis gründende Protokoll,
und ist das Protokoll der Wahl für symmetrische
Mehrprozessor-(SMP)-Systeme. Jedoch wird das
Erfassungsprotokoll auf Bus-Basis effektiv eingesetzt in
einem System mit nur einer kleinen Anzahl Prozessoren,
üblicherweise 2 bis 4.
Zwar ist derzeit eine Einsystembus-Konstruktion die
bevorzugte Konstruktionswahl für die Implementierung eines
Kohärenzprotokolls, sie kann jedoch für ein Breitweg-
Mehrprozessor-System nicht eingesetzt werden.
Es wäre also vorteilhaft, eine verteilte, Breitweg-Multi-Bus-
Mehrprozessor-Konstruktion zu haben, die Cache-
Kohärenzprotokolle auf Bus-Basis benutzt.
Eine verteilte Systemstruktur für ein Breitweg-symmetrisches
Mehrprozessorsystem unter Verwendung eines Cache-
Kohärenzprotokolls auf Bus-Basis ist vorgesehen. Die
verteilte Systemstruktur enthält einen Adressenschalter,
multiple Speicherteilsysteme, und multiple
Mastervorrichtungen, entweder Prozessoren, E/A-Agenten oder
kohärente Speicheradapter, die in einem Knotensatz
organisiert sind, der von einem Knotenkontroller unterstützt
wird. Der Knotenkontroller erhält Befehle von einer
Mastervorrichtung, kommuniziert mit einer Mastervorrichtung
als andere Mastervorrichtung oder als Slave-Vorrichtung, und
setzt von einer Master-Vorrichtung erhaltene Befehle in eine
Warteschlange. Aufgrund von Kontaktstiftbeschränkungen, die
von breiten Bussen verursacht sein können, z. B. von Bussen,
die eine große Anzahl Kontaktstifte unterstützen, kann der
Knoten Controller so implementiert sein, dass die
Funktionalität für seine Adressenwege und Datenwege in
physikalisch getrennten Komponenten, Chips oder Schaltungen
implementiert sein kann, wie z. B. ein Knoten-Daten-Controller
(NCD) oder ein Knoten-Adressen-Controller (NCA). In diesem
Fall können Befehle vom Knoten-Adressen-Controller zum
Knoten-Daten-Controller geschickt werden, um den durch einen
Knoten fließenden Datenfluß zu steuern.
Die neuartigen Merkmale, die als kennzeichnend für die
Erfindung angesehen werden, sind in den beiliegenden
Ansprüchen dargelegt. Die Erfindung selbst, sowie ein
bevorzugter Anwendungsmodus, weitere Aufgaben und Vorteile
derselben, lassen sich am besten unter Bezugnahme auf die
nachstehende detaillierte Beschreibung einer illustrativen
Ausführungsform anhand der begleitenden Zeichnungen
verstehen; in diesen ist
Fig. 1 ein Übersichtsschaltbild, das die grundlegende
Struktur eines herkömmlichen Mehrprozessor-Computersystems
darstellt;
Fig. 2 ist ein Übersichtsschaltbild, das eine typische
Architektur wiedergibt;
Fig. 3 ist ein Übersichtsschaltbild, das ein Mehrprozessor-
Computersystem mit drei Verarbeitungseinheiten wiedergibt;
Fig. 4 ist ein Übersichtsschaltbild, das eine verteilte
Systemstruktur für ein verteiltes Mehrprozessor-
Computersystem mit einem unterstützenden Cache-Kohärenz-
Protokoll auf Busbasis aus der Perspektive der Adressenwege
in einem Mehrprozessorsystem wiedergibt;
Fig. 5 ist ein Übersichtsschaltbild, das eine verteilte
Systemstruktur für ein verteiltes Mehrprozessor-
Computersystem mit einem unterstützenden Cache-Kohärenz-
Protokoll auf Busbasis aus der Perspektive der Datenwege in
einem Mehrprozessorsystem wiedergibt;
Fig. 6 ist ein Übersichtsschaltbild, das die Adressenwege im
Inneren eines Knotenkontrollers darstellt;
Fig. 7 ist ein Übersichtsschaltbild, das die internen
Adressenwege eines Adressenschalters darstellt, der
Knotenkontroller und Speicherteilsysteme miteinander
verschaltet;
Fig. 8 ist ein Diagramm, das ein Speicherteilsystem
darstellt, das an den Adressenschalter des verteilten Systems
gemäß der vorliegenden Erfindung angeschlossen ist;
Fig. 9 ist ein Übersichtsschaltbild, das die Datenwege im
Inneren eines Knotenkontrollers darstellt;
Fig. 10A-10B sind Übersichtsschaltbilder, die die
Systemstruktur zum Bestimmen eines Busreaktionssignals für
eine verteilte Systemstruktur darstellt;
Fig. 10C-10D sind Übersichtsschaltbilder, die die Komponenten
darstellen, deren Signale an den lokalen und globalen Zyklen
beteiligt sind;
Fig. 11 ist ein Übersichtsschaltbild, das die getrennte
Daten- und Adressen/Steuerungsfunktionalität für einen
einzelnen Knoten in einer Mehrfachknoten-Systemstruktur für
ein verteiltes, Multibus-Mehrprozessorsystem darstellt; und
Fig. 12A-12B sind Tabellen, die ein Codierungsschema für
Datenleitwegführungsbefehle zeigen, die von einem
Knotenadressen-Controller (NCA) an einen Knoten-Daten-
Controller (NCD) gesendet werden.
Nehmen wir jetzt Bezug auf Fig. 1; hier wird die grundlegende
Struktur eines herkömmlichen Mehrprozessor-Computersystems
110 dargestellt. Das Computersystem 110 weist mehrere
Verarbeitungseinheiten 112a, 112b und 112c auf, die mit
verschiedenen peripheren Vorrichtungen, einschließlich
Eingangs/Ausgangs-(E/A)-Agenten 114, zusammengeschlossen
sind; diese empfangen bzw. senden Daten von einem Monitor-
Adapter 102 an einen Anzeigen-Monitor 105, Tastaturadapter
104 und eine Tastatur 107, Plattenadapter 103 und eine
nichtflüchtige Speichervorrichtung 106, eine
Speichervorrichtung 116 (wie z. B. ein dynamischer
Direktzugriffsspeicher d. h. DRAM), der von den
Verarbeitungseinheiten zum Abarbeiten von Programmbefehlen
benutzt wird, und Firmware 118 (festgespeicherte
Standardprogramme), deren Hauptaufgabe es ist, ein
Betriebsystem in einer der Peripherievorrichtungen (in der
Regel die nichtflüchtige Speichervorrichtung) zu suchen und
zu laden, immer dann, wenn der Computer zum ersten Mal
eingeschaltet wird. Verarbeitungseinheiten 112a-112c
kommunizieren mit den Peripherievorrichtungen über
verschiedene Mittel, einschließlich ein Bus 120. Das
Computersystem 110 kann zusätzliche Komponenten aufweisen,
die nicht dargestellt sind, wie z. B. serielle und parallele
Ports, zum Anschluss an Peripherievorrichtungen, wie z. B.
Modems oder Drucker. Der Fachmann erkennt ferner, dass es
noch weitere Komponenten gibt, die im Zusammenhang mit denen
benutzt werden können, die im Übersichtsschaltbild 1
dargestellt sind; zum Beispiel, kann ein Anzeigeadapter
benutzt werden, um einen Videoanzeigemonitor zu steuern, ein
Speicherkontroller kann benutzt werden, um auf den Speicher
116 zuzugreifen, usw. Zusätzlich kann das Computersystem 110
mit mehr oder auch weniger Prozessoren konfiguriert sein.
In einem symmetrischen Mehrprozessor-(SMP)-Computer sind alle
Verarbeitungseinheiten 112a-112c im allgemeinen identisch;
d. h. sie benutzen alle einen gemeinsamen Satz oder Teilsatz
von Anweisungen oder Protokollen zum Arbeiten und weisen in
der Regel die gleiche Architektur auf.
Nehmen wir jetzt Bezug auf Fig. 2; hier wird eine typische
Organisation dargestellt. Eine Verarbeitungseinheit 112
beinhaltet einen Prozessor 122 mit einer Vielzahl Register
und Ausführungseinheiten, die Programmanweisungen abarbeiten,
um den Computer zu betreiben. Der Prozessor kann auch Cache-
Speicher aufweisen, wie z. B. einen Anweisungs-Cache 125 und
einen Daten-Cache 126. Diese Cache-Speicher werden als
"integriert" (on-board) bezeichnet, wenn sie zusammen mit den
Registern und Ausführungseinheiten des Prozessors einstückig
gepackt sind. Cache-Speicher werden allgemein benutzt, um
Speicherwerte zwischenzuspeichern, auf die der Prozessor
wiederholt zugreifen muss, um die Verarbeitung durch
Vermeiden des längerdauernden Schritts des Ladens der Werte
aus dem Speicher, wie z. B. aus Speicher 116, gezeigt in Fig.
1, zu beschleunigen.
Die Verarbeitungseinheit 112 kann zusätzliche Cache-Speicher
beinhalten, wie z. B. Cache 128. Cache 128 wird als Ebene 2
(L2 - Level 2) Cache bezeichnet, weil er die integrierten
Cache-Speicher (Ebene 1) 124 und 126 unterstützt. Mit anderen
Worten, Cache 128 wirkt als Zwischenglied zwischen Speicher
116 und den integrierten Cache-Speichern und kann eine viel
größere Menge Informationen (Anweisungen und Daten)
speichern, als die integrierten Cache-Speicher, obwohl
natürlich zu Lasten eines länger dauernden Zugriffs. Zum
Beispiel könnte Cache 128 ein Chip sein mit einer
Speicherkapazität von 256 oder 512 Kilobyte, während der
Prozessor 112 ein IBM PowerPCTM Prozessor der Serie 604 sein
kann, mit integrierten Cache-Speichern mit einer
Gesamtspeicherkapazität von 64 kB. Cache 128 ist mit dem Bus
120 verbunden, und das Laden aller Informationen vom Speicher
116 zum Prozessor 112 muss durch den Cache 128 laufen. Zwar
zeigt Fig. 2 eine Cache-Hierarchie auf nur zwei Ebenen,
jedoch können auch Mehr-Ebenen-Cache-Hierarchien vorgesehen
werden, in denen viele Ebenen seriell verbundener Cache-
Speicher arbeiten.
Für einen SMP-Computer ist es wichtig, ein kohärentes
Speichersystem vorzusehen, d. h. zu bewirken, dass
Schreibvorgänge auf jeden individuellen Speicherort in irgend
einer Reihenfolge für alle Prozessoren serialisiert werden.
Nehmen wir z. B. an, dass ein Speicherort durch eine Sequenz
von Schreibvorgängen modifiziert wird, um die Werte 1, 2, 3,
4 anzunehmen. In einem Cache-kohärenten System beobachten
alle Prozessoren die Schreibvorgänge auf eine bestimmte
Speicherstelle in der gezeigten Reihenfolge. Es ist jedoch
möglich, dass ein bestimmtes Bearbeitungselement einen
Schreibvorgang in die Speicherstelle überspringt. Ein
gegebenes Verarbeitungselement, das die Speicherstelle liest,
könnte die Folge 1, 3, 4 sehen und die Aktualisierung auf den
Wert 2 überspringen. Ein System, das sicherstellt, dass jeder
Prozessor die gültige Datenreihenfolge erhält, heißt
"kohärent". Es ist bedeutsam, dass virtuell alle Kohärenz-
Protokolle nur mit der Granularität von der Größe eines
Cache-Blocks arbeiten. Das heißt, das Kohärenz-Protokoll
steuert die Bewegung der Schreibzulassungen für Daten auf
einer Cache-Block-Basis und nicht gesondert für jede
individuelle Speicherstelle.
Es gibt eine Reihe von Protokollen und Techniken zum
Erreichen der Cache-Kohärenz, die dem Fachmann bekannt sind.
Im Mittelpunkt aller dieser Mechanismen zum Wahren der
Kohärenz steht die Forderung, dass die Protokolle zu einem
gegebenen Zeitpunkt nur einem einzigen Prozessor die
"Genehmigung" geben, die einen Schreibvorgang auf eine
gegebene Speicherstelle (Cache-Block) zuläßt. Als Konsequenz
dieser Forderung ergibt sich, wenn immer ein
Bearbeitungselement versucht, auf eine Speicherstelle zu
schreiben, muss es zunächst alle Verarbeitungselemente
informieren, dass es auf die Speicherstelle zu schreiben
wünscht, und muss von allen anderen Verarbeitungselementen
die Genehmigung zum Durchführen dieses Schreibbefehls
einholen. Der entscheidende Punkt dabei ist, dass alle
anderen Prozessoren im System vom ersten Prozessor über den
Schreibbefehl informiert werden müssen, bevor das Schreiben
erfolgt. Näherer Einzelheiten darüber, wie die Cache-Kohärenz
in einer Mehrebenen-Hierarchie implementiert wird, siehe Fig.
3.
Nehmen wir jetzt Bezug auf Fig. 3; hier wird ein
Mehrprozessor-Computersytem mit drei Verarbeitungseinheiten
(140, 141, 142) dargestellt, bestehend aus den Prozessoren
(140a, 141a, 142a), die jeweils einen Cache L1 (140b, 141b,
142b), einen Cache L2 (140c, 141c, 142c) und schließlich
einen Cache L3 (140d, 141d, 142d) aufweisen. In dieser
Hierarchie ist jeder Cache, der auf einer tieferen Ebene
steht, (d. h. ein Cache L3 steht "tiefer" als ein Cache L2) in
der Regel größer und hat eine längere Zugriffszeit als der
nächst höher stehende Cache. Ferner enthalten üblicherweise,
obwohl nicht unbedingt gefordert, die Cache-Speicher auf
einer tieferen Ebene Kopien aller Blöcke, die auf den Cache-
Speichern der höheren Ebene vorhanden sind. Wenn z. B. ein
Block im Cache L2 einer gegebenen Verarbeitungseinheit steht,
impliziert das, dass auch der Cache L3 dieser
Verarbeitungseinheit eine (möglicherweise veraltete) Kopie
des Blocks enthält. Wenn ferner ein Block im Cache L1 einer
gegebenen Verarbeitungseinheit vorkommt, steht er auch in den
Cache-Speichern L2 und L3 dieser Verarbeitungseinheit. Diese
Eigenschaft heißt Inklusion, und ist dem Fachmann
wohlbekannt. Von jetzt ab wird daher angenommen, falls nicht
anders festgelegt, dass das Prinzip der Inklusion auf den
Cache der vorliegenden Erfindung anwendbar ist.
Um eine Cache-Kohärenz in einem System, wie in Fig. 3 gezeigt
wird, zu implementieren, kommunizieren die Prozessoren über
eine gewöhnliche allgemeine Zwischenverbindung 143. Die
Prozessoren schicken Meldungen über die Zwischenverbindung,
die ihren Wunsch anzeigen, von Speicherstellen zu lesen oder
darauf zu schreiben. Wenn eine Operation auf die
Zwischenverbindung gelegt wird, "erfassen" (snoop) alle
anderen Prozessoren diese Operation und entscheiden, ob es
der Zustand ihrer Cache-Speicher erlaubt, dass die
angeforderte Operation durchgeführt wird, und wenn, unter
welchen Bedingungen. Diese Mitteilung ist nötig, weil in
Systemen mit Cache-Speichern die jeweils neueste gültige
Kopie eines gegebenen Speicherblocks aus dem Systemspeicher
144 auf einen oder mehrere Cache-Speichern im System
übertragen worden sein kann. Wenn ein Prozessor (sagen wir
140a) versucht, auf eine Speicherstelle zuzugreifen, die in
einer Cache-Hierarchie (140b, 140c und 140d) nicht vorkommt,
kann die korrekte Version des Blocks, die den wahren Wert für
die Speicherstelle enthält, entweder im Systemspeicher 144
oder in einem der Cache-Speicher in den
Verarbeitungseinheiten 141 und 142 stehen. Falls die korrekte
Version in einem der anderen Cache-Speicher des Systems
steht, müssen die korrekten Werte aus dem Cache im System
anstatt aus dem Systemspeicher geholt werden.
Betrachten wir jetzt zum Beispiel einen Prozessor, sagen wir
140a, der eine Stelle im Speicher lesen will. Zunächst fragt
er seinen eigenen Cache L1, 140b, ab. Wenn der Block nicht im
Cache L1 (140b) steht, geht die Abfrage auf Cache L2, 140c,
über. Wenn der Block nicht im Cache L2 steht, geht die
Abfrage auf Cache L3, 140d, über. Wenn der Block nicht im
Cache L3, 140d, steht, wird die Anforderung auf die
generalisierte, abzuarbeitende Zwischenverbindung 143 gelegt.
Sobald eine Operation auf die generalisierte
Zwischenverbindung gelegt ist, "erfassen" die anderen
Verarbeitungseinheiten die Operation und bestimmen, ob der
Block in ihren Cache-Speichern vorkommt. Wenn dann eine
Verarbeitungseinheit, sagen wir 142, den von der
Verarbeitungseinheit 140 angeforderten Datenblock nach dem
Prinzip der Inklusion in ihrem Cache L1, 142a, hat und die
Daten modifiziert sind, haben auch Cache L2, 142c, und Cache
L3, 142d, Kopien des Blocks. Wenn daher der Cache L3, 142d,
der Verarbeitungseinheit 142 die Leseoperation erfasst,
stellt er fest, dass der angeforderte Block im Cache L3,
142d, vorhanden und modifiziert ist. Wenn das geschieht, kann
der Cache L3, 142d, eine Meldung auf die generalisierte
Zwischenverbindung legen, die die Verarbeitungseinheit 140
unterrichtet, dass sie die Operation später noch einmal
versuchen muss, weil der zuletzt aktualisierte Wert des
Speicherortes für die Leseoperation im Cache L3, 142d, steht,
der außerhalb des Hauptspeichers 144 liegt, und es muss eine
geeignete Aktion unternommen werden, um ihn verfügbar zu
machen, um die Leseanforderung der Verarbeitungseinheit 140
zu bedienen.
Der Cache L3, 142d, kann einen Prozess beginnen, um die
modifizierten Daten aus dem Cache L3 in den Hauptspeicher 144
einzuspeichern. Damit wird der neueste, aktualisierte Wert
der Speicherstelle für die anderen Prozessoren verfügbar
gemacht.
Alternativ kann in einem Prozess, genannt "Intervention", der
Cache L3, 142d, den neuesten aktualisierten Wert für die
Speicherstelle direkt an die Verarbeitungseinheit 140
schicken, die ihn angefordert hat. Der Cache L3 kann dann
einen Prozess beginnen, die modifizierten Daten aus dem Cache
L3 in den Hauptspeicher einzuspeichern. Die
Verarbeitungseinheit 140, insbesondere ihr Cache L3, 140d,
stellt schließlich die Leseanforderung auf der
generalisierten Zwischenverbindung dar. An diesem Punkt
wurden jedoch die modifizierten Daten aus dem Cache L1 der
Verarbeitungseinheit 142 abgerufen und die Leseanforderung
vom Prozessor 140 wird befriedigt. Das eben beschriebene
Szenario wird im allgemeinen als "Erfassungs-Einspeicherung"
(snoop push) bezeichnet. Eine Leseanforderung wird auf der
verallgemeinerten Zwischenverbindung erfasst, was bewirkt,
dass die Verarbeitungseinheit 147 den Block in der Hierarchie
ganz nach unten drückt, um die von der Verarbeitungseinheit
140 gestellte Leseanforderung zu befriedigen.
Der hier zu bemerkende Schlüsselpunkt ist, wenn ein Prozessor
einen Block lesen oder darauf schreiben will, muss er diesen
Wunsch den anderen Verarbeitungseinheiten im System
mitteilen, um die Cache-Speicherkohärenz zu wahren. Um das zu
erreichen, ordnet das Cache-Kohärenzprotokoll jedem Block auf
jeder Ebene der Cache-Hierarchie einen Status-Indikator zu,
der den augenblicklichen "Status" des Blocks anzeigt. Die
Statusinformation wird benutzt, um gewisse Optimierungen im
Kohärenzprotokoll zu ermöglichen, die den Meldungsverkehr auf
der verallgemeinerten Zwischenverbindung 143 und den
Zwischen-Cache-Verbindungen 140x, 140y, 141x, 141y, 142x,
142y einschränkt. Als ein Beispiel für diesen Mechanismus,
wenn eine Verarbeitungseinheit einen Lesevorgang durchführt,
erhält sie eine Meldung, die anzeigt, ob das Lesen später
noch einmal versucht werden muss. Wenn die Leseoperation
nicht noch einmal versucht wird, enthält die Meldung im
allgemeinen auch Informationen, die es der
Verarbeitungseinheit ermöglichen, festzustellen, ob auch eine
andere Verarbeitungseinheit eine noch aktive Kopie des Blocks
enthält (das geschieht dadurch, dass die anderen Cache-
Speicher auf der untersten Ebene eine Angabe "gemeinsam
benutzt" oder "nicht gemeinsam benutzt" für jeden Lesevorgang
angeben, den sie nicht wieder versuchen).
Auf diese Weise kann eine Verarbeitungseinheit bestimmen, ob
ein anderer Prozessor im System eine Kopie des Blocks hat.
Wenn keine andere Verarbeitungseinheit eine aktive Kopie des
Blocks hat, markiert die Lese-Verarbeitungseinheit den Status
des Blocks als "exklusiv". Wenn ein Block als "exklusiv"
gekennzeichnet ist, ist es zulässig, der Verarbeitungseinheit
zu ermöglichen, den Block später zu schreiben, ohne erst mit
den anderen Verarbeitungseinheiten im System zu
kommunizieren, weil keine andere Verarbeitungseinheit eine
Kopie des Blocks hat. Es ist daher im allgemeinen für einen
Prozessor möglich, eine Stelle zu lesen oder zu beschreiben,
ohne vorher diese Absicht auf der Zwischenverbindung
mitzuteilen. Das geschieht jedoch nur in Fällen, in denen das
Kohärenzprotokoll sichergestellt hat, dass kein anderer
Prozessor ein Interesse an dem Block hat. Einige Details des
genauen Arbeitens eines Mehrebenen-Cache-Kohärenzprotokolls
wurden in der vorliegenden Diskussion zwecks Vereinfachung
ausgelassen. Jedoch die wesentlichen Aspekte, die auf die
Erfindung Einfluß haben, wurden beschrieben. Diese nicht
beschriebenen Aspekte sind dem Fachmann wohlbekannt. Ein
weiterer Aspekt der Vielebenen-Cache-Strukturen, die sich auf
die Erfindung beziehen, sind die Operationen, die als
Freigabe bezeichnet werden. Die Blöcke in einem Cache-
Speicher werden in Blockgruppen unterteilt, die sogenannten
"Sätze". Ein Satz ist eine Sammlung von Blöcken, in denen
eine gegebener Speicherblock sitzen kann. Für jeden gegebenen
Speicherblock gibt es einen unverwechselbaren Satz im Cache,
auf den der Block gemäß vorgegebener Abbildungsfunktionen
abgebildet werden kann. Die Anzahl der Blöcke in einem Satz
wird als Assoziativität des Cache bezeichnet (z. B. 2-Wegsatz
assoziativ heißt, dass es für jeden gegebenen Speicherblock
zwei Blöcke im Cache gibt, auf die der Speicherblock
abgebildet werden kann). Jedoch können mehrere
unterschiedliche Blöcke im Hauptspeicher auf einen gegebenen
Satz abgebildet werden.
Wenn alle Blöcke in einem Satz für einen gegebenen Cache voll
sind und bei diesem Cache eine Anforderung eingeht, ob zum
Lesen oder zum Schreiben an einer Speicherstelle, die auf den
vollen Satz abbildet, muss der Cache einen der Blöcke
"freigeben", die augenblicklich im Satz stehen. Der Cache
wählt einen Block, der geräumt werden muss, durch eines einer
Reihe vom Mitteln, die dem Fachmann wohlbekannt sind, (least
recently used (LRU), zufällig, Pseudo-LRU, usw.). Wenn die
Daten im ausgewählten Block modifiziert werden, werden diese
Daten auf die nächst niedere Ebene in der Speicherhierarchie
geschrieben, die ein anderer Cache (im Falle eines L1- oder
L2-Cache) oder Hauptspeicher (im Falle eines L3-Cache) sein
kann. Hier ist anzumerken, dass nach dem Inklusions-Prinzip
auf der unteren Ebene der Hierarchie ein Block verfügbar sein
wird, um die geschriebenen modifizierten Daten aufzunehmen.
Wenn aber die Daten im angewählten Block nicht verändert
werden, wird der Block einfach aufgegeben und nicht auf die
nächstniedere Ebene in der Hierarchie geschrieben. Dieser
Prozess des Entfernens eines Blocks aus einer Ebene der
Hierachie ist als "Eviction" (Räumen) bekannt. Am Ende dieses
Prozesses hat der Cache keine Kopie des geräumten Blocks mehr
und nimmt nicht mehr aktiv am Kohärenzprotokoll für den
geräumten Block teil, weil, wenn der Cache eine Operation
erfasst (entweder auf der generalisierten Zwischenverbindung
143 oder Zwischen-Cache-Verbindungen 140x, 141x, 142x, 140y,
141y, 142y) wird der Block im Cache nicht gefunden.
Die vorliegende Erfindung ist in der Lage, eine große Anzahl
Vorrichtungen in einem verteilten, Multibus-Mehrprozessor-
System zusammenzuschließen und die Beschränkungen einer auf
einen Einzelbus basierenden Konstruktion zu überwinden. Die
folgende Beschreibung betrifft die Erfindung im Hinblick auf
die 6xx-Bus-Architektur, jedoch ist die vorliegende Erfindung
keinesfalls auf eine besondere Busarchitektur beschränkt und
das nachstehend erläuterte System kann auch auf andere Bus-
Architekturen angewandt werden.
Nehmen wir jetzt Bezug auf Fig. 4; hier bildet ein
Übersichtsschaltbild eine verteilte Systemstruktur für ein
Mehrprozessorsystem mit einem unterstützenden Cache-Kohärenz-
Protokoll auf Busbasis aus der Perspektive der Adressenwege
innerhalb des Mehrprozessor-Systems. Fig. 4 zeigt eine Anzahl
Master-Vorrichtungen, die einen Befehl anlaufen lassen
können, wie z. B. eine Speichertransaktion. Diese Master-
Vorrichtungen, wie z. B. Prozessoren, E/A-Agenten, und
kohärente Speicheradapter sind in Clustern auf eine Anzahl N
Gruppen, genannt Knoten, verteilt. Am Kopf jedes Knotens
steht ein Knotenkontroller, an den seine Master angeschlossen
sind.
Fig. 4 zeigt die Knoten 410 und 420, die Gruppierungen von
Systemelementen enthalten. Die Anzahl der Knotenanzahl kann
unterschiedlich sein, je nach der Konfiguration des Systems.
Der Knoten 410, auch als Node0 bezeichnet, enthält die
Prozessoren 411 und 412, auch als Prozessor P0 und Prozessor
PP-1 bezeichnet, die die Master für den Knoten 410 sind. Jeder
Knotenkontroller hat eine Vielzahl bidirektionaler Standard-
Prozessoradressendaten-Busse, über die die Master zum
verteilten System zusammengeschaltet sind. Die Prozessoren
411 und 412 sind über die Busse 413 und 414, auch bezeichnet
als P0Bus bzw. PP-1Bus, an den Knotenkontroller 415, bezeichnet
auch als Knotenkontroller NC0 angeschlossen. Der Knoten 421,
bezeichnet auch als NodeN-1, enthält Prozessor 421 und E/A-
Agent 422, die die Master für den Knoten 420 sind. Prozessor
421 und E/A-Vorrichtung 422 sind über die Busse 423 bzw. 424
an den Knotenkontroller 425, auch als Knotenkontroller NCN-1
bezeichnet, angeschlossen. Die Anzahl der Master je Knoten
kann unterschiedlich sein, in Abhängigkeit von der
Konfiguration des Systems, und die Anzahl der Master an jedem
Knoten muss nicht einheitlich in allen Knoten im System sein.
Der Knotenkontroller stellt die physikalische Schnittstelle
zwischen einem Master und dem Rest des Systems dar und jeder
Knotenkontroller im System enthält die gesamte erforderliche
Logik, um Prozessorbusse individuell zuzuteilen und mit
seinen lokalen Mastern als weiterer Master oder als Slave,
d. h. eine Vorrichtung, die Masterbefehle akzeptiert und
ausführt, aber keine Masterbefehle generiert, zu
kommunizieren. Ein Prozessor schickt über seinen lokalen
Knotenkontroller einen Befehl in das System. Zwar zeigt die
Fig. 4 einen Master je Port, jedoch sind bei einem geeigneten
Verteilungsschema auf dem Bus dieses Ports auch mehrere
Master je Port möglich. Zum Beispiel könnte Prozessor 411
einer von vielen Prozessoren sein, die mit dem Bus 413
zusammengeschlossen sind. Wenn jedoch mehr Prozessoren an
einen einzigen Port angeschlossen sind, dann arbeitet ihr
Adressenbus langsamer, gerechnet in Buszykluszeit.
Alternativ kann einer der Master des Knotens 420 einen
kohärenten Speicheradapter beinhalten, der eine Kommunikation
mit einem anderen Datenverarbeitungssystem vorsieht, das eine
Cache-Kohärenz bewahrt. Der kohärente Speicheradapter kann
nah oder fern liegen und kann einen Port eines
Knotenkontrollers besetzen, um Speichertransaktionen zu
senden oder zu empfangen, um auf ähnliche Weise wie ein E/A-
Agent als Master/Slave-Vorrichtung zu handeln. Beispielsweise
kann ein anderer Knotenkontroller von einem anderen
Datenverarbeitungssystem auch an den kohärenten
Speicheradapter angeschlossen sein, so dass
Datenverarbeitungssysteme, die die vorliegende Erfindung
anwenden, miteinander verkettet werden können.
Die Knotenkontroller 415 und 425 sind über Paare von
einseitig gerichteten Nur-Adressenbussen an eine Vorrichtung
angeschlossen, die Adressenschalter (ASX) heißt. Die Busse
416 und 417, bezeichnet auch AOut0 bzw. AIn0, verbinden den
Knotenkontroller 415 mit dem Adressenschalter 430. Die Busse
426 und 427, bezeichnet auch AOutN-1 bzw. AInN-1, verbinden den
Knotenkontroller 425 mit dem Adressenschalter 430. Wie
gezeigt, leiten die Busse AOutx Adressen von den
Knotenkontrollern zum Adressenschalter, und die Busse AInx
leiten Adressen vom Adressenschalter zu den
Knotenkontrollern.
Der Adressenschalter 430 hat zusätzliche unidirektionale
Adressenbusverbindungen 431 und 432, auch bezeichnet als AInN
und AIn(N+S-1), zu Speicherkontrollern oder Speicherteilsystemen
442 und 444, auch bezeichnet als Speicherteilsysteme MS0 und
MSS-1. Die Speicherkontroller werden als Slave-Vorrichtungen
angenommen und haben keine Fähigkeit, Befehle an das
verteilte System auszugeben. Die Anzahl der
Speicherteilsysteme kann variieren, in Abhängigkeit von der
Konfiguration des Systems.
Nehmen wir jetzt Bezug auf Fig. 5; hier zeigt ein
Übersichtsschaltbild eine verteilte Systemstruktur für ein
verteiltes Mehrprozessorsystem mit einem unterstützenden
Cache-Kohärenz-Protokoll auf Busbasis aus der Perspektive der
Datenwege innerhalb des Mehrprozessor-Systems. Ähnlich wie
Fig. 4 zeigt Fig. 5 eine Anzahl Mastervorrichtungen. Diese
Mastervorrichtungen sind in Clustern auf eine Anzahl von N
Gruppen, genannt Knoten, verteilt. Am Kopf jedes Knotens
steht ein Knotenkontroller, an den seine Master angeschlossen
sind. Fig. 5 heißt Knoten 510 und 520, die die Prozessoren
511 und 512 enthalten. Die Prozessoren 511 und 512 sind über
die Busse 513 und 514 an den Knotenkontroller 515
angeschlossen. Der Knoten 520, auch als NodeN-1 bezeichnet,
enthält den Prozessor 521 und die E/A-Vorrichtung 522, die
über die Busse 523 bzw. 524 an den Knotenkontroller 525
angeschlossen sind, der auch als Knotenkontroller NCN-1
bezeichnet wird.
Die in Fig. 4 und Fig. 5 gezeigten Knotenkontroller könnten
physikalisch die gleiche Systemkomponente sein, werden aber
aus unterschiedlichen Perspektiven beschrieben, um die
unterschiedliche Funktionalität zu zeigen, die von den
Knotenkontrollern ausgeführt wird. Fig. 4 zeigt Adressenwege
innerhalb des Mehrprozessorsystems, während Fig. 5 die
Datenwege innerhalb des Mehrprozessorsystems darstellt. Als
Alternative können in einer bevorzugten Ausführungsform die
Adressenwege und die Datenwege mit einer unterstützenden
Funktionalität in physikalisch getrennten Komponenten, Chips
oder Schaltkreisen, wie in einen Knoten-Datenkontroller oder
einen Knoten-Adressenkontroller implementiert sein. Die Wahl,
einen Knotenkontroller mit getrennter oder kombinierter
Daten- und Adressenfunktionalität zu implementieren, kann von
Parametern anderer Systemkomponenten abhängen. Wenn zum
Beispiel die Größen der im System unterstützten Busse klein
genug sind, können sowohl Adressen- als auch
Datenfunktionalität in eine einzige Knotenkontroller-
Komponente gelegt werden. Wenn aber die Busse eine höhere
Anzahl Datenkontaktstifte unterstützen, kann die
Kontaktstiftbeschränkung physikalisch erfordern, dass die
Adressen- und die Datenfunktionalität auf gesonderte
Knotenkontroller-Komponenten gelegt werden.
Als Alternative kann ein gesonderter Knotendatenkontroller
weiter in mehrere Knotendatenkontroller je Knoten unterteilt
sein, so dass jeder Knotendatenkontroller eine Unterstützung
für einen Teil des Datenwegs des Knotens vorsieht. Auf diese
Weise wird der Datenweg des Knotens über mehr als einen
Knotendatenkontroller unterteilt.
In Fig. 5 wird dargestellt, wie jeder Knotenkontroller an
eine Vielzahl Speicherkontroller, wie z. B.
Speicherteilsysteme MS0 und MSS-1 angeschlossen ist. Zwar wird
jeder Knotenkontroller als über einen unabhängigen Datenbus
mit jedem Speicherkontroller verbunden dargestellt, jedoch
können Mehrfachknoten- und/oder Mehrfachdatenkontroller auch
über den gleichen Datenbus verbunden sein, wenn ein
geeigneter Verteilermechanismus eingebaut ist. Wie beim
Zusammenschließen einer Vielzahl Mastervorrichtungen über
einen einzigen Bus an einen einzigen Knotenkontroller, wird
die Schaltrate eine Funktion der Anzahl Vorrichtungen, die an
den Bus angeschlossen sind. Der Knotenkontroller 515 ist über
den Datenbus 516 mit dem Speicherteilsystem 542, und über den
Bus 517 mit dem Speicherteilsystem 544 verbunden, auch
bezeichnet als N0D0 bzw. N0DS-1. Der Knotenkontroller 525 ist
über den Datenbus 527 mit dem Speicherteilsystem 544, und
über den Datenbus 526 mit dem Speicherteilsystem 542
verbunden, auch bezeichnet als NN-1D0 bzw. Nn-1DS-1.
Anstatt eines einzigen Datenbusses, der die Daten aller
Master überträgt, gibt es auch Mehrfachdatenbusse, von denen
jeder nur einen kleinen Teil des Datenverkehrs trägt, der
übernommen werden müsste, wenn die Master an einen einzigen
Bus angeschlossen wären. Dabei können die
Komponentenschnittstellen schneller getaktet sein, als es bei
nur einem Bus möglich wäre. Diese Konfiguration ermöglicht
die Zuteilung von mehr Datenbus-Bandbreite je Master, als es
auf einem einzigen Bit möglich wäre, was zu geringeren
Warteschlangenverzögerungen führt.
Nehmen wir jetzt Bezug auf Fig. 6; ein Übersichtsschaltbild
zeigt die Adressenwege im Inneren eines Knotenkontrollers.
Knotenkontroller 600, auch bezeichnet als NCx, ist ähnlich
wie die Knotenkontroller 415 und 425 in Fig. 4, oder die
Knotenkontroller 515 und 525 in Fig. 5. Individuelle Ports
des Knotenkontrollers 600 haben ihre eigenen Warteschlangen,
um Befehle von den Mastern zu puffern, sobald die Befehle bei
den Knotenkontrollern eingehen. Ein Befehl kann eine nicht-
deterministische Verzögerung erfahren, während er in diesen
Puffern auf die progressive Auswahl zum Adressenschalter
wartet.
Der Knotenkontroller 600 weist zweiseitig gerichtete Busse
601-604 auf, die an Mastervorrichtungen angeschlossen sind.
Die Busse 601-604 liegen über Bus-Sender/Empfänger 605-608 an
Eingangsgrenzen-Zwischenspeichern 609-612 und
Ausgangsgrenzen-Zwischenspeichern 613-616. Die
Eingangsgrenzen-Zwischenspeicher 609-612 versorgen Puffer
617-620, die die Befehle von den Mastervorrichtungen
enthalten. Ein Befehl von einer Mastervorrichtung kann aus
einem Transaktions-Kennzeichen, Transaktionstyp, Ziel- oder
Quelladresse und sonstigen möglichen einschlägigen
Informationen bestehen. Puffer 617-620 enthalten
möglicherweise alle Informationen, die mit einem Befehl zu
tun haben, falls erforderlich, oder können alternativ auch
nur die Informationen enthalten, die für das Funktionieren
des Adressenwegs innerhalb des Knotenkontrollers nötig sind.
Die vom Eingangspuffer gehaltenen Informationen können
unterschiedlich sein, in Abhängigkeit von alternativen
Konfigurationen eines Knotenkontrollers. Puffer 617-620
speisen Steuereinheit/Multiplexer 621, die nur einen Befehl
auf einmal auswählen, um ihn über den Zwischenspeicher 622,
den Sender 623 und den Bus 624, auch AOutx genannt, an den
Adressenschalter zu schicken.
Der Knotenkontroller 600 erhält Befehle von den Mastern über
die Busse 601-604 für die schließliche Übertragung durch
einen Grenzen-Zwischenspeicher 622 und Sender 623 an den
Adressenschalter über den Bus 624, auch als Bus AOutx
bezeichnet. Auf eine entsprechende Weise empfängt der
Knotenkontroller 600 Befehle vom Adressenschalter über den
Bus 625, auch als Bus AInx bezeichnet, und den Empfänger 626
zum Aufnehmen in den Grenzenzwischenspeicher 627, auch als
FROM_ASX_BL bezeichnet. Diese Befehle folgen einem
Adressenweg durch eine feste Anzahl Zwischenspeicher, die
eine feste Verzögerung haben, wie Zwischen-Flipflop 628 und
Ausgangsgrenzen-Zwischenspeicher 613-616, bevor sie zu den
Bussen 601-604 gelangen. Zusätzlich passieren Befehle an die
Master-Vorrichtungen auch einen Multiplexer je Port, wie z. B.
Steuereinheiten/Multiplexer 629-632, die ebenfalls eine feste
Verzögerung haben. Auf diese Weise legen Befehle, die über
Bus 625 ankommen, einen Weg mit einer festen Verzögerung
einer deterministischen Anzahl Zyklen entlang ihres Wegs
zurück. Mit anderen Worten, zwischen dem Punkt, an dem ein
Befehl den Zwischenspeicher FROM_ASX_BL erreicht, bis zu dem
Punkt, ab dem jede Master-Vorrichtung, wie z. B. ein Satz
Prozessoren, die an den Knotenkontroller angeschlossen sind,
sich dem ankommenden Befehl gegenüber sieht, läuft immer eine
feste Zeitperiode ab.
Die Zuteiler für die Ports, die an die Master angeschlossen
sind, sind so ausgelegt, dass sie den Knotenkontrollern, die
die Port-Busse treiben, die höchste Priorität zuteilen. Wenn
ein Master eine Anforderung stellt, einen Bus zur gleichen
Zeit zu treiben, an der ihn der Knotenkontroller treiben
will, bekommt der Knotenkontroller die höchste Priorität. In
einer bevorzugten Ausführungsform wird vom Adressenschalter
zwecks Hilfe für dieses Zuteilungs-Szenario noch vor dem
Senden des Befehls durch den Adressenschalter ein Signal,
genannt "SnoopValid" (nicht dargestellt), angesteuert. Das
ermöglicht, dass die Zuteilung für den Bus zwischen einem
Knotenkontroller und seinen Mastern greift und früh genug
ausgeführt wird, um sicherzustellen, dass ein Befehl, der
über den AInx-Bus vom Adressenschalter herkommt, nicht stehen
bleibt, nicht einmal für einen Zyklus, solange er im Innern
des Knotenkontrollers ist. Das gewährleistet, dass die
Zeitperiode für die feste Anzahl der Zwischenspeicher entlang
dem AInx-zu-Px-Busweg wirklich eine deterministische Anzahl
Zyklen auflöst.
Die Steuerlogikeinheit 633 wird auch mit dem im FROM_ASX_BL-
Zwischenspeicher zwischengespeicherten ankommenden Befehl
versehen für die geeignete Bestimmung von Steuersignalen an
andere Einheiten oder Komponenten innerhalb des
Knotenkontrollers 600. Zum Beispiel kommuniziert die
Steuerlogik 633 mit den Puffern 617-620 über die
Steuersignale 634, Steuereinheit/Multiplexer 621 über die
Steuersignale 636 und Steuereinheiten/Multiplexer 629-632
durch Steuersignale 635 zum Auswählen von Befehlen, Lösen von
Kollisionen und Modifizieren von Befehlsfeldern,
einschließlich eines Befehlstyps, falls erforderlich, um den
kontinuierlichen Befehlsfluß innerhalb des Knotenkontrollers
600 sicherzustellen. Die Steuerlogikeinheit 633 erhält auch
ggf. weitere Steuersignale 637.
Nehmen wir jetzt Bezug auf Fig. 7; hier gibt ein Diagramm die
internen Adressenwege eines Adressenschalters wieder, der
Knotenkontroller und Speicherteilsysteme verschaltet. Der
Adressenschalter 700 verbindet einen Satz von vier
Knotenkontrollern und zwei Speicherteilsysteme. Befehle
kommen an Erst-Eingang/Erst-Ausgang-(FIFO)-Warteschlangen
721-724 von Bussen 701-704 an, die auch AOut0-AOut3 bezeichnet
sind, über die Empfänger 709-712 und Eingangsgrenzen-
Zwischenspeicher 713-716 an. Diese Befehle können in einem
FIFO resident sein, bevor sie vom Steuereinheit/Multiplexer
725 angewählt werden. Ein Befehl kann eine endliche, jedoch
nicht-deterministische Anzahl Verzögerungszyklen aufweisen,
während er im FIFO steht. Die Steuerlogikeinheit 726 kann mit
dem Steuereinheit/Multiplexer 725 und den FIFOs 721-724
kommunizieren, um die Auswahl der eingehenden Befehle zu
bestimmen. Die Steuerlogikeinheit 726 empfängt ggf. auch
andere Steuersignale 733.
Der Steuereinheit/Multiplexer 725 wählt nur einen Befehl auf
einmal an, der über Wege, die im Hinblick auf die Anzahl der
Verzögerungszyklen deterministisch sind, zum Knotenkontroller
und zum Speicherteilsystem gesendet wird. Im Beispiel der
Fig. 7 werden die Befehle über die Einrichtungsbusse 713 und
732, auch als Busse AIn4 und AIn5 bezeichnet, über
Ausgangsgrenzen-Zwischenspeicher 727 und 728 und Sender 729
und 730 an die Speicherteilsysteme gesendet. Befehle werden
über einseitig gerichtete Busse 705-708, auch bezeichnet als
Busse AIn0-AIn3, durch Ausgangsgrenzen-Zwischenspeicher 717-
720 und Sender 741-744 an Knotenkontroller gesendet. In
diesem Beispiel gibt es nur einen einzigen Verzögerungszyklus
an den Ausgangsgrenzen-Zwischenspeicher 717-720, 727 und 728.
Aus den Beschreibungen für die Fig. 4-7 wird verständlich,
dass eine Transaktion von einer Meistervorrichtung über ihren
Bus und Port zu ihrem Knotenkontroller ausgegeben wird. Der
Knotenkontroller wird eine Art unmittelbarer Reaktion über
den Bus an die Mastervorrichtung vorsehen und kann die
Transaktion für eine spätere Ausgabe an den Rest des Systems
in Warteschlange setzen. Sobald die Ausgabe der Transaktion
an den Rest des Systems erfolgt, stellt der Adressenschalter
sicher, dass die Transaktion mit einer bekannten
Stufenverzögerung an den Rest des Systems gesendet werden
kann, so dass die anderen Vorrichtungen die Transaktion
erfassen können.
Gemäß der verteilten Systemstruktur der vorliegenden
Erfindung würde jede Vorrichtung im System in der Lage sein,
die Transaktion im gleichen Zyklus zu sehen und eine
Kohärenz-Reaktion im gleichen Zyklus vorzusehen. Der
Adressenschalter ist in der Lage, eine Transaktion an alle
Knotenkontroller zu senden, einschließlich des
Knotenkontrollers des Knoten, der die Vorrichtung enthält,
die die Transaktion ausgegeben hat. Eine geeignete Logik ist
in jeden Knotenkontroller eingebaut, so dass der
Knotenkontroller bestimmen kann, ob die eingehende erfasste
Transaktion von einer Vorrichtung an einem seiner eigenen
Ports ausgegeben wurde. Wenn ja, dann stellt der
Knotenkontroller sicher, dass der Bus an dem Port, an dem er
die Transaktion ausgegeben hat, nicht mit einer Transaktion,
die von diesem Port her aufgenommen wurde, erfassen kann.
Sonst könnte die Vorrichtung "verwirrt" werden, wenn sie mit
ihrer eigenen Transaktion erfasst wird. Wenn die Vorrichtung
eine Erfassung ihrer eigenen Transaktion erhalten würde,
könnte die Vorrichtung eine Reaktion ausgeben, die eine
Kollision mit ihrer eigenen Transaktion anzeigen würde. Wenn
das der Fall wäre, weil die ursprüngliche Transaktion in
Wirklichkeit die gleiche Transaktion ist, die erfasst wird,
würde die "Kollision" nie aufgelöst werden und die
Transaktion würde nicht abgeschlossen werden.
Weitere Einzelheiten der Art, in der die Transaktionen
ausgegeben wurden, sind nachstehend vorgesehen.
Nehmen wir jetzt Bezug auf Fig. 8; ein Diagramm zeigt ein
Speicherteilsystem, das an den Adressenschalter des
verteilten Systems der vorliegenden Erfindung angeschlossen
ist. Fig. 8 zeigt das Speicherteilsystem 800, auch bezeichnet
als Speicherteilsystem MSx. Der Speicherkontroller 801 im
Speicherteilsystem 800 erhält einen Befehl vom
Adressenschalter über den einseitig gerichteten Bus 802, auch
bezeichnet als Bus AInx, über eine Anzahl Zwischenspeicher FD
803, die nur eine Festverzögerungsleitung bilden. Auf diese
Weise erfährt ein Befehl, der vom Adressenschalter gesendet
wird, eine Festanzahl Verzögerungszyklen, bevor der Befehl
für den Speicherkontroller verfügbar wird.
Wie bereits gezeigt, durchquert ein Befehl, der über den Bus
AInx an einem Knotenkontroller ankommt, einen
deterministischen Verzögerungsweg von einer Aufnahme im
FROM_ASX_BL-Zwischenspeicher zu seiner Vorlage an einer
Mastervorrichtung. Auf ähnliche Weise durchquert ein Befehl
einen deterministischen Verzögerungsweg vom
Steuereinheit/Multiplexer innerhalb des Adressenschalters zur
festen Verzögerungsleitung im Speicherteilsystem. Wenn die
Verzögerung der Zwischenspeicher FD 803 im Speicherteilsystem
an den richtigen Wert angeglichen wird, kann sichergestellt
werden, dass der Speicherkontroller einen Befehl zum gleichen
Zeitpunkt vorgelegt erhält, an dem die Master, die an Ports
der Knotenkontroller angeschlossen sind, den gleichen Befehl
vorgelegt erhalten. Es besteht also eine deterministische
Zyklenzahl zwischen dem Punkt, an dem der
Steuereinheit/Multiplexer im Adressenschalter eine
Transaktion sendet, und dem Punkt, an dem die Master und
Speicherkontroller den Befehl erhalten.
Da nur eine kleine Anzahl Master an jeden Port dieses
Knotenkontrollers angeschlossen sind, ist die
Geschwindigkeit, mit der jeder an diese Ports angeschlossene
Bus betrieben werden kann, unabhängig von der Gesamtanzahl
der Ports im System. Wenn z. B. ein einziger Master an jeden
Port angeschlossen ist, kann sein Bus im Punkt-zu-Punkt-Modus
mit der bestmöglichen Geschwindigkeit laufen. Daher ist die
verteilte Struktur der vorliegenden Erfindung in der Lage,
wohlverstandene und leicht zu überprüfende, Cache-kohärente
Protokolle auf Busbasis für Mehrfachprozessoren maßstäblich
zu verändern, um die Bandbreite des Systems zu vergrößern.
Nehmen wir jetzt Bezug auf Fig. 9; hier zeigt ein
Übersichtsschaltbild die Datenwege im Inneren eines
Knotenkontrollers. Der Knotenkontroller 900, auch als NCx
bezeichnet, ist ähnlich wie die Knotenkontroller 415 und 425
in Fig. 4 oder die Knotenkontroller 515 und 525 in Fig. 5.
Individuelle Ports des Knotenkontrollers 900 haben ihre
eigenen Warteschlangen, um Daten von den Mastern zu puffern,
wenn die Daten beim Knotenkontroller eintreffen. Die Daten
können eine nicht-deterministische Verzögerung erfahren
während sie in diesen Puffern auf die weiterführende Bewegung
zu ihren Zielorten warten.
Der Knotenkontroller 900 weist bidirektionale Busse 901-904
auf, auch als PxBus bezeichnet, die an die
Mastervorrichtungen angeschlossen sind. Die Busse 901-904
sind über Sender/Empfänger 905-908 mit Eingangsgrenzen-
Zwischenspeichern 909-912 und Ausgangsgrenzen-
Zwischenspeichern 909-912 verbunden. Eingangsgrenzen-
Zwischenspeicher 909-912 versorgen Datenpuffer 917-920, die
die Daten von den Mastervorrichtungen aufnehmen.
Von einem der Ports des Knotenkontrollers eingehende Daten
können zu einem Speicherteilsystem oder einem anderen Cache
geleitet werden. Im dargestellten Beispiel in Fig. 9, das das
in Fig. 6 gezeigte Beispiel fortsetzt, können die von einem
der Ports des Knotenkontrollers ankommenden Daten an eine der
folgenden vier Stellen geführt werden: Speicherteilsystem
MS0, Speicher-Teilsystem MSS-1, Cache-zu-Cache-FIFO (FIFO C2C)
zum Weiterleiten der Daten innerhalb des Knotens, oder zu
einer Prefetch-Maschine zum Vorabrufen von Datenwörtern. Mit
dem FIFO-C2C-Mechanismus ist jeder Knoten in der Lage, Daten
von einem seiner Ports zu einem anderen Port zu schicken und
damit den Datentransfer von einem Master zu einem anderen zu
ermöglichen. Puffer 917-920 speisen Multiplexer 925-927 und
914, die eine Datenquelle zum Weitersenden von Daten
auswählen. Die Steuerlogikeinheit 939 sieht Steuersignale für
den Multiplexer 925 vor zum Auswählen von Daten, die an das
Speicherteilsystem MS0 geschickt werden sollen, und für den
Multiplexer 926 zum Auswählen von Daten, die an das
Speicherteilsystem MSS-1 geschickt werden sollen. Der
Knotenkontroller 900 schickt Daten von den Multiplexern 925
und 926 über die Grenzen-Zwischenspeicher 931 und 933 und
Sender/Empfänger 935 und 936 durch die bidirektionalen Busse
937 und 938, auch als NxD0 und NxDS-1 gekennzeichnet, zum
Speicherteilsystem MS0 und zum Speicherteilsystem MSS-1.
Die Steuerlogikeinheit 939 liefert Steuersignale an den
Multiplexer 927 zum Auswählen von Daten, die innerhalb des
Knotens weitergeschickt werden sollen. Die Daten werden dann
in den FIFO 928 auf Warteschlange gesetzt. Die
Steuerlogikeinheit 939 sieht auch Steuersignale für den
Multiplexer 941 vor, um Daten zum Vorabrufen auszuwählen. Die
Prefetch-Maschine 942 generiert dann Vorabrufanforderungen
für die ausgewählten Daten.
Auf entsprechende Weise akzeptiert der Knotenkontroller 900
Daten über die Sender/Empfänger 935 und 936 und Grenzen-
Zwischenspeicher 932 und 934 vom Speicherteilsystem MS0 und
Speicherteilsystem MSS-1 über die bidirektionalen Busse 937 und
938. Die Daten werden dann in die richtigen FIFOs 929 und 930
auf Warteschlange gesetzt. Die Daten von den FIFOs 928-930
laufen durch je einen Multiplexer per Port, wie z. B.
Steuereinheiten/Multiplexer 921-924. Die Daten von den FIFOs
929-930 laufen durch den Multiplexer 941 zum Steuern und
Korrelieren von Vorabruf-Anforderungen. Die
Steuerlogikeinheit 939 schickt Steuersignale an die
Multiplexer 921-924, um Daten auszuwählen, die an die
Mastervorrichtungen geschickt werden müssen. Die
Steuerlogikeinheit 939 empfängt ggf. auch weitere
Steuersignale 940. Somit hat der Knotenkontroller eine
Entscheidungslogik für die Datenbusse und ist unabhängig beim
Steuern der Datentranfers in Parallelität. Auf diese Weise
ist die verteilte Systemstruktur der vorliegenden Erfindung
in der Lage, den Systemdatendurchsatz zu verbessern.
Nehmen wir jetzt Bezug auf die Fig. 10A-10B; hier zeigen
Übersichtsschaltbilder die Systemstruktur zum Bestimmen der
Busreaktionssignale für eine verteilte Systemstruktur,
ähnlich der in Fig. 4 und Fig. 5. Fig. 10A und Fig. 10B
zeigen die Anschlussflexibilität für Vorrichtungen in der
verteilten Systemstruktur der vorliegenden Erfindung mit
einem Steuerlogikblock zum Kombinieren von Bussignalen
(Reaktionen) AStat und AResp. Zwecks Klarheit werden die
Signale AStat und AResp getrennt gezeigt. Hier muss wieder
darauf hingewiesen werden, dass E/A-Agenten als Master-
Vorrichtungen handeln können, die gemäß Fig. 10A und Fig. 10B
an die Ports der Knotenkontroller angeschlossen sind.
Wie in Fig. 10A ersichtlich, haben die Prozessoren 1001-1004,
auch als Px bezeichnet, unidirektionale AStatOut Signale
1005-1008, auch mit PxNxAStOut, und AStatIn Signale 1009-1012,
auch mit PxNxAStIn bezeichnet, die die Prozessoren mit dem
Reaktionskombinationsblock (RCB) 1000 verbinden. Die Slave-
Vorrichungen, wie z. B. Speicherteilsysteme 1005 und 1006,
auch als MSx bezeichnet, sind verbunden mit dem RCB durch die
AStatOut Signale 1013 und 1014, bezeichnet auch als
Mx_AStOut, und die AStatIn Signale 1015 und 1016, auch als
Mx_AStIn bezeichnet, verbunden. Knotenkontroller 1017 und
1018, auch als NCx bezeichnet, sind mit dem RCB auch über
einen ähnlichen Satz unidirektionaler AStatOut Signale 1019-
1022, auch als NxPxAStOut bezeichnet, und AStatIn Signale
1023-1026, auch als NxPxAStIn bezeichnet, je Port verbunden.
Der Adressenschalter 1027, auch als ASX bezeichnet ist
beteiligt an der Bestimmung der richtigen Logik für das
Systemverarbeiten einer Transaktion durch Liefern des
Sendesignals 1028 und des Transaktionsquellen-ID 1029, der
eine Codierung eines Knoten-Identifikators zusammen mit einem
Port-Identifikator innerhalb des Knotens ist, durch den eine
Master-Vorrichtung eine Transaktion an das System ausgegeben
hat.
Wie in Fig. 10B gezeigt wird, haben die Prozessoren 1001-1004
unidirektionale ARespOut Signale 1055-1058, auch bezeichnet
als PxNxAReOut, und ARespIn Signale 1059-1062, auch als
PxNxAReIn bezeichnet, die die Prozessoren mit dem RCB 1000
verbinden. Speicherteilsysteme 1005 und 1006 verbinden den
RCB mit ARespIn Signalen 1065 und 1066, auch als Mx-AReIn
bezeichnet. Die Speicherteilsysteme 1005 und 1006 sind nicht
mit den ARespOut Leitungen verbunden, die nicht von diesen
Slave-Vorrichtungen getrieben werden. Knotenkontroller 1017
und 1018 sind ebenfalls an den RCB über einen ähnlichen Satz
unidirektionaler ARespOut Signale 1069-1072, auch bezeichnet
als NxPxAReOut, und ARespIn Signale 1073-1076, auch als
NxPxAReIn bezeichnet, verbunden. Wieder ist der
Adressenschalter 1027 an der Bestimmung der richtigen
Transaktionslogik beteiligt durch Vorsehen des Sendesignals
1028 und des Transaktionsport-ID 1029.
Wie aus den Fig. 10A-10B ersichtlich, wird ein Satz
AStatIn/AStatOut Signalen und ARespIn/ARespOut Signalen
an/von einer Master-Vorrichtung mit einem ähnlichen Satz
AStatIn/AStatOut Signalen und ARespIn/ARespOut Signalen
an/von seinen(m) Knotenkontroller gepaart. Diese Paarung wird
auf einer Per-Port-Basis gemacht. Wie bereits besprochen,
wird jeder Port im Beispiel mit einer einzigen Master-
Vorrichtung gezeigt, die mit jedem Port verbunden ist. Wenn
jedoch mehr als eine Master-Vorrichtung je Port angeschlossen
wäre, dann würden die Paare der AStatIn/AStatOut Signale und
der ARespIn/ARespOut Signale vom Satz der Master-
Vorrichtungen benutzt, die an diesem Port mit dem Bus wie in
einer Standard-Einbus-Konfiguration verbunden wären.
In der bevorzugten Ausführungsform kombiniert der RCB die
AStatOuts und ARespOuts aus verschiedenen
Quellenvorrichtungen und erzeugt AStatIn und ARespIn Signale
laut der 6XX Bus-Spezifikation, wie in der Beschreibung IBM
Server Group Power PC MP System Bus, Version 5.3, hier per
Querverweis angezogen, beschrieben wird. Der RCB erhält die
AStatOut und ARespOut Signale und gibt AStatIn bzw. ARespIn
Signale zurück. Nicht alle Vorrichtungen erhalten die
gleichen Reaktionen für eine bestimmte Transaktion. Die bei
den einzelnen Vorrichtungen eingegangenen Signale werden auf
einer Per-Zyklus-Basis bestimmt, wie nachstehend in näheren
Einzelheiten beschrieben wird.
Während eines gegebenen Systemzyklus kann eine Master-
Vorrichtung an einem Port eine Transaktion über den Bus ihres
Ports zum Empfang durch ihren Knotenkontroller ausgeben, oder
der Knotenkontroller kann der Mastervorrichtung eine
Transaktion vorlegen, die vom Adressenschalter geschickt
worden war, um die Transaktion zu erfassen. Wenn die Master-
Vorrichtung eine Transaktion ausgibt, wird dieser Zyklus als
"lokal" bezeichnet, wenn der Knotenkontroller eine
Transaktion vorlegt, wird der Zyklus als "global" bezeichnet.
Wie oben beschrieben, sendet der Adressenschalter jeweils nur
eine Transaktion an alle Knotenkontroller, und dort gibt es
eine feste Zeitverzögerung zwischen der Zeit, in der der
Adressenschalter eine Transaktion ausgibt, und der Zeit, bis
sie an den Ports jedes Knotenkontrollers erscheint. Unter
dieser Betriebsart wird, nachdem ein Knotenkontroller eine
Sendetransaktion vom Adressenschalter erhalten hat und dann
eine vorgegebene Anzahl Zyklenzeiten später die Transaktion
an die Vorrichtungen auf den Bussen der Ports des
Knotenkontroller während eines Zyklus vorstellt, führen alle
Knotenkontroller auf allen Ports während eines Zyklus die
gleiche Aktion durch, mit einer Ausnahme, wie oben erklärt.
Wenn es also einen globalen Zyklus gibt, der auf dem Bus
eines der Ports im System ausgeführt wird, werden globale
Zyklen in allen Ports des Systems ausgeführt. Alle restlichen
Zyklen sind lokale Zyklen.
Während lokaler Zyklen wird eine Aktivität an einem Port
nicht mit der Aktivität an anderen Ports im System
korreliert. In Abhängigkeit davon, ob eine Vorrichtung zur
Ausgabe einer Transaktion benötigt wird oder nicht, würde der
lokale Zyklus besetzt sein oder leerlaufen. Es findet also
ein globaler Zyklus statt, wenn eine Transaktion von allen
Vorrichtungen im System erfasst wird, und nur ein lokaler
Zyklus kann von einer Vorrichtung zur Ausgabe einer
Transaktion benutzt werden.
Nehmen wir an, die Zyklen des gesamten Systems sind entweder
lokal oder global "gefärbt", dann sind die
Reaktionsgenerierung, die Reaktionskombination und die
Reaktionsempfangszyklen, die eine feste Anzahl Zyklen nach
der Ausgabe einer Transaktion auftreten, ähnlich
gekennzeichnete lokale Reaktionsfenster oder globale
Reaktionsfenster. Aus diesem Grund wird die
Reaktionskombinationsfunktion des RCB während eines gegebenen
Zyklus entsprechend entweder als im lokalen oder im globalen
Modus stehend angesehen. Während lokaler Zyklen kombiniert
der RCB Reaktionen auf einer Per-Port-Grundlage. Das heißt,
der RBC kombiniert die Reaktion eines Ports und die Reaktion,
die der Knotenkontroller entsprechend diesem Port erzeugt.
Bei globalen Zyklen kombiniert der RCB Reaktionen von allen
Ports und Knotenkontrollern im System (wieder mit Ausnahme
jeweils eines Ports, wie nachstehend erklärt wird).
Zwecks richtigen Umschaltens zwischen lokalen und globalen
Kombinations-Modi ist der RCB mit einem Signal versehen, das
das Senden einer Transaktion durch den Adressenschalter an
die Knotenkontroller anzeigt, gezeigt als Sendesignal 1028 in
Fig. 10A, sowie das Transaktionsquellen-ID-Signal 1029. Im
RCB gespeicherte Konfigurationsinformationen zeigen den
genauen Zyklus an, in dem die Kombination der Reaktionen für
die gesendete Transaktion nach dem Eingang des
Sendetransaktionssignals ausgeführt werden müssen. Auf diese
Weise wird für jeden globalen Zyklus der RCB so ausgelegt,
dass er Reaktionen aus den richtigen Quellen kombiniert.
Ein Prozessor kann möglicherweise eine Transaktion nur
während lokaler Zyklen ausgeben. Bei bestimmten
Transaktionstypen gibt der Prozessor die Transaktion nur
einmal aus. Bei Bestimmten anderen Transaktionstypen kann der
Prozessor möglicherweise aufgefordert werden, die Transaktion
mehrmals auszugeben. Der Prozessor wird hinsichtlich der
durchzuführenden Aktionen von seinem Knotenkontroller
zusammen mit dem RCB, durch die Anwendung der
AStatIn/AStatOut-Signale und der ARespIn/ARespOut-Signale
hinsichtlich der durchzuführenden Aktionen angewiesen.
Aus der obigen Beschreibung sollte offensichtlich sein, dass
Prozessoren und Vorrichtungen Transaktionen von anderen
Prozessoren und Vorrichtungen während der Zyklen anders sehen
als in dem Zyklus, in dem sie an das System ausgegeben
wurden. Das ist anders als die Situation mit einem
Erfassungsprotokoll in einer Ein-Bus-Umgebung, in der alle
Vorrichtungen im System eine Transaktion zur gleichen Zeit
beobachten, in der sie ausgegeben wurde, und gleichzeitig
eine Kohärenzreaktion dafür erzeugen, und in der der
Verursacher der Transaktion die Reaktion an diesem gleichen
Zeitpunkt erhält. So wird im vorliegenden System das
Erreichen der Kohärenz sowohl in der Zeit als auch im Raum
verteilt, d. h. über mehrere Zyklen und mehrere Busse, die mit
mehreren Knotenkontrollern verbunden sind.
Bei der Anwendung der verteilten Systemstruktur ist es
bedeutsam, die globale Kohärenz auf effiziente Weise zu
erreichen. Zu diesem Zweck werden alle Transaktionen in zwei
Kategorien sortiert: (1) Transaktionen, für die es möglich
ist, die globale Kohärenzreaktion vorauszusagen und sie im
primären Reaktionsfenster anzuzeigen; und (2) Transaktionen,
für die es notwendig ist, eine globale Erfassung
durchzuführen, bevor die letztendliche Kohärenzreaktion
berechnet werden kann.
Im ersten Fall akzeptiert der Knotenkontroller die
Transaktion und gibt eine globale Kohärenzreaktion an die
Ausgabeeinheit im primären Reaktionsfenster aus. Der
Knotenkontroller übernimmt dann die volle Verantwortung für
die abschließende Durchführung der Transaktion im System und
für das Erreichen der globalen Reaktion zu einem späteren
Zeitpunkt.
Im zweiten Fall führt der Knotenkontroller drei Schritte aus.
Erstens, der Knotenkontroller akzeptiert die Transaktion und
liefert eine primäre Reaktion, die eine Verschiebung des
Erreichens und Lieferung der globalen Reaktion anzeigt. In
der 6XX Busarchitektur ist diese Reaktion die "Wiederanlauf"-
Reaktion. Zweitens, zu einem späteren Zeitpunkt, errechnet
der Knotenkontroller eine globale Kohärenzreaktion für diese
Transaktion. Und drittens, der Knotenkontroller fordert, dass
der Prozessor eine sekundäre Transaktion ausgibt, und schickt
die globale Reaktion zum sekundären Reaktionsfenster. In der
6XX Busarchitektur wird die Anforderung an den Prozessor zur
Ausgabe einer sekundären Transaktion gestellt durch Ausgabe
eines Wiederanlaufbefehls mit einem Vermerk entsprechend der
Original-Transaktion. Der Prozessor kann dann den Vermerk zur
Identifizierung benutzen, welche seiner Transaktionen
wiederanlaufen soll.
Wie oben angemerkt, wird eine von einer Vorrichtung
akzeptierte Transaktion für den Rest des Systems erfasst.
Beim Erfassen wird die Vorrichtung, die die Transaktion
ausgegeben hat, nicht selbst erfasst, so dass die Vorrichtung
nicht verwirrt wird durch das Erfassen ihrer eigenen
Transaktion.
Bei Transaktionen im ersten obigen Fall, d. i. Transaktionen,
in denen der Knotenkontroller die Transaktion akzeptiert und
eine globale Kohärenzreaktion an die ausgebende Einheit im
PrimärReaktionsfenster ausgibt, wird der Port, der der
Vorrichtung entspricht, die die Transaktion ausgegeben hat,
im Lokalmodus im Reaktionszyklus der Transaktion gehalten, so
dass der Prozessor eine andere Transaktion ausgeben kann. Wie
oben bereites gesagt, wird, während das Reaktionsfenster dem
Transaktions-Reaktionszyklus entspricht, der RCB so
konfiguriert, dass er Reaktionen aus allen Quellen außer dem
Port auf dem Knotenkontroller, der die Transaktion ausgegeben
hat, kombiniert. Dann ist der Knotenkontroller in der Lage,
eine Primär- oder Sekundär-Reaktion über den Port zu liefern,
falls der Prozessor eine Transaktion ausgeben will.
Für Transaktionen im zweiten obigen Fall, d. i. Transaktionen,
für die es erforderlich ist, global zu erfassen bevor die
letztendliche Kohärenzreaktion berechnet werden kann, hält
der Knotenkontroller den besonderen Port im Lokalmodus, gibt
aber eine Neuanlauftransaktion aus. Der
Steuereinheit/Multiplexer, der den ausgehenden
Grenzenzwischenspeicher am Port versorgt, ermöglicht, dass
der Knotenkontroller diese Funktionalität ausführt.
Alternativ dazu kann der Knotenkontroller wählen, nicht so
aggressiv zu sein, und anstatt die Vorrichtung eine
Transaktion ausgeben zu lassen kann der Knotenkontroller ggf.
selbst im Zyklus, in dem die Transaktion der Vorrichtung im
Rest des Systems erfasst wird, eine Null- oder
Wiederholungstransaktion an die Vorrichtung ausgeben.
Nehmen wir jetzt Bezug auf die Fig. 10C-10D; hier bezeichnen
Übersichtsschaltbilder die Komponenten, deren Signale an den
lokalen und globalen Zyklen beteiligt sind. Fig. 10C zeigt
die Signale, die vom RCB während eines Globalzyklus
berücksichtigt wurden. In gezeigten Beispiel nehmen die
Signale für eine einzige Mastervorrichtung, Prozessor 1001,
an der Bestimmung der geeigneten Signale für die anderen
Vorrichtungen, Knotenkontroller und Speicherteilsysteme zur
globalen Reaktion durch den RCB nicht teil. Die Signale für
den Prozessor 1001 sind gepaart mit den entsprechenden
Signalen von seinem Knotenkontroller, die ebenfalls für die
Globalreaktion nicht berücksichtigt werden. Aus der
Perspektive des Prozessors 1001 wird er in einem Lokalzyklus
gehalten, während eine vom Prozessor 1001 ausgegebene
Transaktion für den Rest des Systems erfasst wird. Wie
bereits bemerkt, wird zwar ein Prozessor dargestellt, aber
die Signale werden auf einer Per-Port-Basis betrachtet, und
der Bus eines bestimmten Ports wird in einem lokalen Zyklus
gehalten während der Rest des Systems in einem globalen
Zyklus steht.
Fig. 10D zeigt die Signale, die vom RCB während eines
Lokalzyklus in Betracht gezogen werden. Im gezeigten Beispiel
nehmen die Signale von einer einzigen Mastervorrichtung,
Prozessor 1001, an der Bestimmung der geeigneten Signale zum
Rücksenden an den Prozessor 1001 und seinen Knotenkontroller
durch den RCB teil. Signale von anderen Vorrichtungen,
Knotenkontrollern und Speicherteilsystemen können
gleichzeitig an der Reaktion für die Globalreaktion
teilnehmen. Die Signale für den Prozessor 1001 werden gepaart
mit den entsprechenden Signalen von seinem Knotenkontroller,
die auch die Globalreaktion nicht beeinflussen. Aus der
Perspektive des Prozessors 1001 kann er eine andere
Transaktion ausgeben, während seine andere Transaktion für
den Rest des Systems erfasst wird. Zwecks Klarheit werden
Signale vom Adressenschalter für den Lokalzyklus nicht
gezeigt, obwohl der RCB diese Signale zum Bestimmen benutzt,
welchen Port er in den Lokalzyklus setzen soll.
Für ein Computersystem müssen zum richtigen Ablauf der
Arbeiten bestimmte, von Mastervorrichtungen ausgegebene
Speicherzugriffs-Transaktionen und sonstige Transaktionstypen
in der richtigen und unverwechselbaren Reihenfolge geordnet
sein. In einem System mit einem einzigen Systembus ist diese
Aufgabe auf triviale Weise gelöst, weil die Reihenfolge, in
der die Transaktionen auf den Bus gelegt werden, die gleiche
ist, in der diese Transaktionen ablaufen müssen. In einem
verteilten System mit mehrfachen Bussen verlangt diese
Aufgabe jedoch, dass den durch das System auf Warteschlange
gesetzten Transaktionen eine bestimmte Reihenfolge zugeteilt
wird. Die verteilte Architektur der vorliegenden Erfindung
ermöglicht, dass eine richtige und unverwechselbare
Reihenfolge in einem Satz Transaktionen erzwungen wird. Die
Erfindung offenbart auch ein wirksames Mittel zum Erreichen
der Reihenfolge, so dass ein Erfassungsprotokoll mit
Hardware-Cache-Kohärenz unterstützt werden kann.
Wenn Vorrichtungen in einem Mehrprozessorsystem auf den
Speicher zugreifen, entweder unter dem Einfluß von Programmen
oder Steuersequenzen, geben sie Speichertransaktionen aus.
Die Vorrichtungen können auch andere Bustransaktionen zum
Erzielen von Kohärenz, Anordnen, Interrupts usw. im System
ausgeben. Diese Transaktionen können in der Regel parallel
ablaufen, ohne Störung anderer Transaktionen. Wenn sich aber
zwei Transaktionen zum Beispiel auf Adressen innerhalb des
gleichen Doppelworts beziehen, heißt das in der 6XX Bus-
Terminolgie, dass sie "kollidieren", und die zwei
Transaktionen müssen in irgend einer spezifischen Reihenfolge
abgeschlossen werden. In einige Fällen ist jede
Abschlussreihenfolge zulässig und in anderen Fällen liegt die
Reihenfolge fest und wird durch die Transaktionstypen
vorgegeben. Wenn zum Beispiel eine Lesetransaktion und eine
Schreibtransaktion versuchen, auf eine Adresse zuzugreifen,
die als 'Memory Coherence Not Required' (Speicherkohärenz
nicht erforderlich) deklariert ist, ist für diese beiden
Transaktionen jede beliebige Reihenfolge des Abschlusses
zulässig. Wenn sie sich jedoch auf eine in einen Cache-
Speicher zu setzende Adresse beziehen, der kohärent gehalten
werden muss, muss die Reihenfolge des Abschlusses der Regel
folgen, dass das Schreiben vorgeht und das Lesen nachfolgt.
In dem verteilten Mehrprozessorsystem laut Beschreibung in
den Fig. 4-10D können die mehrfachen Prozessoren und weitere
Vorrichtungen gleichzeitig Transaktionen über die mehrfachen
Busse im System ausgeben. Somit entsteht von Anfang an eine
Zweideutigkeit über die Reihenfolge der Transaktionen, schon
wenn sie ausgegeben werden. Bei ihrem Fluß durch das System
legt das System als ersten Schritt eine "heuristische
Reihenfolge der Ankunft" für sie fest, die vernünftig und
fair ist. Diese vorläufige Ordnung ist nicht notwendigerweise
die gleiche Reihenfolge, in der diese Transaktionen
schließlich im System ausgeführt werden. Wenn zwei
kollidierende Transaktionen im System gleichzeitig aktiv
sind, wird diejenige, die durch die heuristische Ordnung den
Rang der "früheren der zwei" hat, als erste zum Abschluss
vorgemerkt, falls es die Kohärenz nicht anders bestimmt.
Sobald Befehle im System eingehen, werden sie von den
Knotenkontrollern "registriert", d. h. sie werden von den
Knotenkontrollern gespeichert und stehen zur Analyse und zu
Kollisions-Prüfungen zur Verfügung. Knotenkontroller schicken
eine der registrierten Transaktionen auf einmal an den
Adressenschalter. Der Adressenschalter wählt jeweils
gleichzeitig nur eine Transaktion aus mit einem fairen
Zuteilungssystem unter den an ihn geschickten Transaktionen,
und sendet dann die ausgewählte Transaktion zurück an die
Knotenkontroller und an die Speicherteilsysteme. Der
Adressenteil der Transaktion, die vom Adressenspeicher
gesendet wird, wird als erstes im Knotenkontroller im
Grenzenzwischenspeicher FROM_ASX_BL zwischengespeichert. Wie
oben beschrieben wird in jedem Zyklus eine eindeutige
Transaktion im FROM_ASX_BL in allen Knotenkontrollern und
Speicherteilsystemen zwischengespeichert, und alle sonstigen
registrierten Transaktionen, die bis zu diesem Zyklus
eingegangen sind und die noch aktiv sind, einschließlich der
Transaktion, die augenblicklich im FROM_ASX_BL steht, können
diese Transaktion "sehen". Diese zwei Eigenschaften werden
benutzt zum Definieren der Reihenfolge der Ankunft der
Transaktionen unter Verwendung der folgenden vernünftigen und
fairen Heuristik: Die Reihenfolge der Ankunft einer
Transaktion im System ist die gleiche wie die Reihenfolge der
Ankunft im FROM_ASX_BL.
Wenn eine Transaktion zum ersten Mal im FROM_ASX_BL ankommt,
wird sie als "erfasst" markiert, um die Tatsache anzuzeigen,
dass in einer festen Anzahl Zyklen, die dem augenblicklichen
Zyklus folgen, die Transaktion zum ersten Mal bei allen
Vorrichtungen des Systems zum Erfassen vorgelegt wird. Die
folgende Regel wird befolgt, um einer Transaktion ihre
relative Stellung in der Reihenfolge der durchzuführenden
Transaktionen zuzuweisen, ungeachtet der wahren Zeit, in der
sie ins System eingegeben wurde: Eine registrierte
Transaktion, die bereits als erfasst markiert ist, wird
nominell als früher in das System eingegangen definiert als
die augenblickliche Transaktion im FROM_ASX_BL. Diejenigen,
die nicht als erfasst markiert sind, werden nominell als
später in das System eingegangen definiert als die
augenblickliche Transaktion im FROM_ASX_EL.
Die Transaktion im FROM_ASX_BL bleibt für einen Zyklus dort.
Während dieses Zyklus wird die Transaktion mit jeder anderen
Transaktion verglichen, die in diesem Augenblick im ganzen
System registriert ist, zwecks Erfassens der Kollision- und
Reihenfolge-Entscheidung. In jedem dieser paarweisen
Vergleiche könnte es zwei Ergebnissätze geben: Einen, der den
Abschluss der augenblicklich im FROM_ASX_BL befindlichen
Transaktion beeinflußt, und der zweite, der den Abschluss
irgendeiner anderen Transaktionen beeinflußt.
Jeder Vergleich führt zu einer Entscheidung, entweder die
augenblickliche Vorlage der Transaktion im FROM_ASX_BL zum
Erfassen zu ermöglichen, oder den Abschluss auf einen
späteren Zeitpunkt zu verschieben. Die Verschiebung wird über
die Berechnung eines AStat Retry Signals oder ggf. eines
AResp Retry Signals ausgeführt. Diese Signale aus
individuellen Vergleichen werden Knoten um Knoten innerhalb
des Knotenkontrollers kombiniert. Eine Entscheidung zum
Verschieben erhält die höchste Priorität, so dass sogar ein
einziger Vergleich, der eine Verschiebung erfordert, gewinnt
und dahin führt, dass der Knoten für das Verschieben der
Transaktion stimmt. Nur wenn alle Vergleiche innerhalb eines
Knotens dafür stimmen, die augenblickliche Erfassung
abzuschließen, entscheidet der Knoten, die Transaktion
abzuschließen.
Die kombinierten Signale AStat Retry und AResp Retry werden
vom Knotenkontroller in die AStat Retry und AResp Retry Codes
codiert und werden dem RCB zur Beteiligung am globalen AStat
und AResp Fenster der zu erfassenden Transaktion vorgelegt.
Während dieser Fenster werden Reaktionen von allen
Vorrichtungen, ausgenommen der Vorrichtung, die die
Transaktion ausgegeben hat, und Knotenkontrollern vom RCB
kombiniert, um eine globale Reaktion zu erzeugen, die an alle
Teilnehmer, wie im Hinblick auf die obigen Fig. 10A-10D
erklärt wird, zurückgegeben wird. Wieder hat auf dieser
globalen Ebene eine Neuversuchsreaktion die höchste Priorität
(ausgenommen ein Fehler-Code) und ist die letztendliche
Reaktion, wenn einer der Eingabereaktionen ein Neuversuch
war. Die Wirkung einer globalen Neuversuchsreaktion ist das
Streichen des augenblicklichen Erfassens der Transaktion.
Beim Erfassen einer globalen Neuversuchsreaktion für die
Transaktion, gibt der Knotenkontroller, in dem die
Transaktion registriert ist, entweder die Transaktion für das
globale Erfassen neu aus, oder versucht erneut die
ursprüngliche Transaktion von der diese Transaktion
abgeleitet war.
Diese globalen Neuversuche können wiederholt werden, bis die
korrekte Reihenfolge erzielt ist.
Wenn aus welchem Grund auch immer eine Transaktion eine
Neuversuchsreaktion erhält, wird ihre Erfassungsmarkierung
zurückgesetzt und sie verliert damit ihre augenblickliche
nominelle Position in der Transaktionsreihenfolge im System.
Wenn sie wieder zum Erfassen kommt, bekommt die Transaktion
eine neue Position gemäß den obigen Regeln. Der Mechanismus
verbietet nicht unbedingt die Möglichkeit, dass die
Neuausgabe der Transaktion hinter einer anderen Transaktion
eingeordnet wird, die erst nach ihr in das System gelangt
ist. Wenn andererseits die augenblickliche Transaktion
durchgeführt wird, kann das bewirken, dass andere
Transaktionen erneut versucht werden müssen.
Wie bereits erwähnt, können die Adressenwege und die
Datenwege eines Knotenkontrollers mit unterstützender
Funktionalität in physikalisch getrennten Komponenten, Chips
oder Schaltungen, wie z. B. ein Knotendaten-Kontroller oder
ein Knotenadressen-Kontroller, implementiert werden. Ein
pragmatischer Grund für diese Trennung der Funktionalität
wären physikalische Vorgaben wie z. B. Kontaktstift-
Einschränkungen. Wenn z. B. das verteilte, Multibus-
Mehrfachprozessorsystem breite Busse unterstützt, z. B. Busse,
die eine große Zahl Datenkontaktstifte unterstützen, könnte
eine Konstruktion eines Knotenkontrollers mit seiner gesamten
Funktionalität innerhalb einer einzigen physikalischen
Komponente zu Schwierigkeiten führen, wenn man versuchen
würde, mehr als zwei Ports auf einen einzigen
Knotenkontroller zu legen, wenn alle Bus-Signale an die
einzige physikalische Komponente angeschlossen wären. In
dieser Implementierung können Befehle von einem
Knotenadressen-Kontroller an seinen entsprechenden
Knotendaten-Kontroller geschickt werden, um den Datenfluß
durch einen Knoten zu steuern.
Nehmen wir jetzt Bezug auf Fig. 11; hier zeigt ein
Übersichtsschaltbild eine gesonderte Daten- und
Adressen/Steuerfunktionalität für einen einzigen Knoten in
einer Mehrknoten-Systemstruktur für ein verteiltes Multibus-
Mehrprozessorsystem. Fig. 11 ist ähnlich wie Fig. 4 und Fig.
5 und zeigt einige Signalleitungen, die auch in Fig. 4 und
Fig. 5 gezeigt werden.
Fig. 11 zeigt den Knoten 1100, der Gruppierungen von
Systemelementen enthält. Knoten 1100, auch bezeichnet als
Node0, wird unterstützt von zwei Knotenkontroller-
Komponenten, dem Knotenkontroller 'Daten' (NCD), 1101, und
dem Knotenkontroller 'Adressen' (NCA), 1102. Der Knoten 1100
enthält den Prozessor 1103 und den E/A-Agenten 1104, auch
bezeichnet als Prozessor P0 und E/A, die die Master für den
Knoten 1100 sind. Die Anzahl der Master im Knoten 1100 kann
variieren, in Abhängigkeit von der Konfiguration des Systems.
Jeder Knoten umfasst multiple bidirektionale Standard-
Prozessor/Adressen-Datenbusse, über die die Master zu dem
verteilten System zusammengeschlossen sind. Master-
Vorrichtungen 1103 und 1104 sind mit NCD 1101, auch als NC0
bezeichnet, verbunden über Busstücke 1105 und 1107, auch als
N0P0BuSData bzw. N0I/OBusData bezeichnet. Busstücke 1105 und 1107
sind der Datenteil, oder die Datensignale, der
bidirektionalen Standardbusse dieser Master-Vorrichtungen.
Master-Vorrichtungen 1103 und 1104 sind an NCA 1102, auch als
NCA0 bezeichnet, über die Busstücke 1106 und 1108, auch als
N0P0BusAddr/Ctrl bzw. N0I/OBusAddr/Ctrl bezeichnet, angeschlossen. Die
Busstücke 1106 und 1108 sind der Adressen- und Steuerteil,
oder die Adressen/Steuersignale, der bidirektionalen
Standardbusse dieser Master-Vorrichtungen.
NCD 1101 ist mit einem ersten Speicherteilsystem (nicht
dargestellt) über den Datenbus 1109, und mit einem zweiten
Speicherteilsystem (nicht dargestellt) über den Bus 1110,
auch bezeichnet als N0D0 bzw. N0DS-1, angeschlossen. NCA 1102
verbindet Knoten 1100 über Paare von unidirektionalen
Nuradressenbussen 1111 und 1112, auch als AOut0 bzw. AIn0
bezeichnet, mit dem Adressenschalter (nicht dargestellt).
Wie oben schon erwähnt kann ferner jeder Knotendaten-
Kontroller in mehrfache Knoten-Daten-Controller je Knoten
aufgeteilt sein, so dass jeder Knoten-Daten-Controller einen
Teil des Knotendatenwegs unterstützt. In diesem Fall sind die
Knotendatenwege über mehr als einen Knotendaten-Kontroller
aufgeteilt, was für den Knoten 1100 mehr als einen NCD
ergeben würde. Alle Adressen/Steuersignale von jeder
Mastervorrichtung im Knoten würden an den NCA des Knotens
angeschlossen sein, aber jeweils ein Teil jedes
Mastervorrichtungs-Datenbusses ist mit jedem NCD in diesem
Knoten verbunden. Zum Beispiel wäre bei vier Prozessoren und
zwei NCDs eine erste Hälfte des Datenbusses von jedem
Prozessor mit einer ersten Hälfte des Datenbusses von jedem
Prozessor mit einem ersten NCD, und die zweite Hälfte des
Datenbusses von jedem Prozessor mit dem zweiten NCD
verbunden.
NCA 1102 steuert die Aktionen des NCD 1101 durch Steuerbusse
1113 und 1114, auch als Node0Ctrl0 bzw. Node0CtrlJ bezeichnet.
Befehle werden vom Adressenchip (NCA) an den Slave-Datenchip
(NCD) für jede datenbezügliche Transaktion gesendet. Eine
zweckgebundene Befehlsschnittstelle ist vorgesehen für jeden
Datenport, einschließlich der Master-Vorrichtungen eines
Ports und des Speicherteilsystems, das an den Knoten
angeschlossen ist. Das ermöglicht die Fähigkeit, dass ein
unverwechselbarer Datentransfer gleichzeitig auf jedem
Datenport ablaufen kann. Somit sieht der Steuerbus 1113
Befehle für die Master-Vorrichtung 1103 vor, und der
Steuerbus 1114 besorgt die Befehle für die Master-Vorrichtung
1104.
In jedem Port werden die Befehle in zwei Typen aufgeteilt:
Nachgelagerte und vorgelagerte Befehle. Nachgelagerte Befehle
beinhalten das Führen ankommender Daten von einem
Mastervorrichtungsport zu einer Eingangswarteschlange oder
von einer Eingangswarteschlange entweder zur Cache-zu-Cache-
Warteschlange, einer Vorabruf-Warteschlange oder zum
Speicher. Vorgelagerte Befehle steuern das Führen der Daten
aus den Speicherports. Das beinhaltet Führen der
Eingangsdaten vom Speicher zu Speicherwarteschlangen, von den
Speicherwarteschlangen entweder zu den Vorabpuffern oder zu
den Mastervorrichtungsports, oder von der Cache-zu-Cache-
Warteschlange zurück zu den Mastervorrichtungsports.
Die Größe der Steuerbusse 1113 und 1114 und damit der Inhalt
der Befehlswarteschlange zwischen dem NCA und dem NCD kann
variieren in Abhängigkeit von der Systemimplementierung, und
kann abhängen vom Busprotokoll, das im verteilten
Multibussystem, unterstützt wird, dem Typ der
Datenstrukturen im NCA, dem Grad der
Datenführungsfunktionalität, die im NCD unterstützt werden
muss, usw. In einem typischen System werden in jedem Zyklus
Freigabeimpulse von einem Master-Chip an einen Slave-Chip
geschickt, um Datenpakete an ihren Bestimmungsort zu
übertragen. Das wäre in einem Kontaktstift-begrenzten System
undurchführbar. In der vorliegenden Erfindung genügt ein
einziger Befehl, um eine Transaktion durchzuführen,
einschließlich einer Mehrpaket-Datenübertragung. Deshalb
können die gleichen Befehlsleitungen benutzt werden, um in
jedem Zyklus einen neuen Steuerbefehl an den NCD zu schicken,
um eine andere Aufgabe auszuführen. Das ergibt die gewünschte
Parallelität zum Anlaufenlassen multipler Transaktionen
innerhalb eines einzigen Knotens unter Verwendung der
geringstmöglichen Anzahl Steuerkontaktstifte.
Nehmen wir wieder Bezug auf Fig. 9; dort werden Datenwege und
Datenstrukturen in einem Knotenkontroller gezeigt. Diese
Datenwege und Datenstrukturen können ähnlich oder identisch
mit den Datenwegen und Datenstrukturen sein, die in einem NCD
implementiert sind, der nur die Datentransfer-Funktionalität
des Knotens unterstützt. Fig. 9 zeigt eine einzige FIFO-
Warteschlange je Mastervorrichtungsport, FIFO-Warteschlangen
917-920, eine Cache-zu-Cache-FIFO-Warteschlange, FIFO-
Warteschlange 928, und eine einzige FIFO-Warteschlange je
Speicher-Teilsystem, FIFO-Warteschlangen 929 und 930. Jedoch
auch andere Datenstrukturen können in einem NCD implementiert
sein, in Abhängigkeit von der in einem Knotenkontroller
gewünschten Funktionalität.
Die Datenstrukturen in einem Knotenkontroller-Chipsatz
müssten die maximale Flexibilität und Leistung zum Führen von
Daten zu und von Mastervorrichtungen in einem verteilten
Multibus-Vielprozessorsystem zulassen. Wenn die
Knotenkontroller-Funktionalität auf zwei Chiptypen aufgeteilt
ist, um den Betrieb breiter Busse zu ermöglichen, von denen
einer den Adressenteil steuert während der andere die Daten
überträgt, kann eine Implementierung den NCA-Chip die im NCA-
Chip gefundenen Datenstrukturen nachahmen lassen, um die
durch den Knoten fließenden Daten zu verfolgen.
Unterschiedliche Warteschlangen können aufgebaut werden, um
die Daten zu führen, in Abhängigkeit vom Typ der ausgegebenen
Transaktionen. Anstatt alle Daten zu serialisieren,
ermöglicht es eine Warteschlangenstruktur, dass Transaktionen
höherer Priorität langsamere oder solche mit niederer
Priorität überholen. Sie bewirkt auch die Parallelität, die
erforderlich ist, die multiplen Transaktionen gleichzeitig
anlaufen zu lassen.
In einer bevorzugten Ausführungsform gibt es drei
Warteschlangen, hoch, nieder und E/A, für jeden Prozessorport
für ankommende Daten. Die Daten werden jeweils zu der
geeignetsten Warteschlange geführt, in Abhängigkeit vom
Transaktionstyp. Innerhalb der Warteschlange folgen die Daten
einer FIFO-Struktur. Alle vorhergehenden Transaktionen müssen
abgeschlossen sein, bevor die neue Transaktion bedient wird.
Das fördert die Fairneß innerhalb einer Priorität. Die erste
Vorzug wird der Hochprioritätswarteschlange gegeben, wenn der
gleiche Zielort aus Mehrfachquellen angesteuert wird. Die
zweite Präferenz wird der Niedrigprioritätswarteschlange
gegeben, gefolgt von der E/A-Warteschlange. Die beiden
letzteren Warteschlangen enthalten Transaktionen, für die die
Abschlusszeit für die Systemleistung nicht so kritisch ist
wie für die Hochprioritäts-Transaktionen.
Für Daten, die aus dem Speicherteilsystem kommen, gibt es
eine FIFO-Warteschlange für jeden Speicherkontroller. Daten,
die aus dem Speicher gelesen werden, und Eingriffsdaten haben
höchste Priorität beim Schicken der Daten an ihren Zielort.
Es sollte wenig oder keine Verzögerung auf dem vorgelagerten
Weg geben, weil Lesen dem Schreiben übergeordnet ist. Das
befreit den Speicherkontroller von der Konkurrenz. Unter
dieser Annahme sind gesonderte Warteschlangen für Lesedaten,
Vorabruf und Anforderung, und Eingriffsdaten nicht notwendig,
können aber implementiert werden.
Der NCA-Chip schickt Steuersignale zum NCD-Chip, um den
Datenverkehr aus beliebigen vier Prozessoren und von
beliebigen zwei Speicherteilsystemen zu lenken. Der NCA-Chip
kann die NCD-Datenstrukturen in seinen eigenen
Datenstrukturen im NCA nachahmen, wobei der Unterschied darin
besteht, dass nur ein Eintrag, oder eine Transaktionsmarke,
in den Warteschlangen des NCA-Chips für jede Transaktion
beibehalten wird. Sobald ein Datentransfer von einer Master-
Vorrichtung an den Knotenkontroller geschickt wird, werden
die Daten in die geeigneten Eingangs-Warteschlangen, genannt
"CPU Eingangs-Warteschlangen" übertragen. Zuteiler
entscheiden dann über die Priorität der Ausführung und den
endgültigen Zielort für die Daten. Das kann eine Übertragung
an den Cache-zu-Cache-Puffer (C2C), zum Vorabruf, zum
Ausscheidemechanismus, zu irgendeinem der Speicherports, oder
die Einleitung eines Kopierbefehls beinhalten, wobei eine
Kopie sowohl an den Speicher als auch an einen internen
Puffer (Vorabruf oder C2C) geschickt wird.
Wie bereits beschrieben werden Daten aus dem Speicher in eine
zweckgebundene Speicher-Warteschlange gesetzt. Gesonderte
Zuteiler für den vorgelagerten Weg können entweder die Daten
aus den Speicher-Warteschlangen zu einem Master-
Vorrichtungsport schicken, die Daten verwerfen, oder die
Daten in Vorabruf-Warteschlangen setzen. In Abhängigkeit vom
Zielort können gleichzeitig Mehrfachtransaktionen anlaufen.
In einer bevorzugten Implementierung kann der NCD-Chip Daten
zwischen zwei Speicherteilsystemen und bis zu vier
Prozessoren leiten. Der NCD enthält einen nichtblockierenden
Vier-Port-zu-Zwei-Port-Kreuzschienenschalter mit
08677 00070 552 001000280000000200012000285910856600040 0002010045915 00004 08558 Eingangspuffern an jedem Port, die so bemessen sind, dass sie
maximale Effizienz beim Datendurchsatz sicherstellen.
Zusätzliche Puffer sehen Speichermöglichkeiten für
Zwischenprozessortransfers und den Vorabruf von Daten aus dem
Speicher vor. Die Port-Eingangspuffer sowie die Prozessor-zu-
Prozessor-Puffer (oder Cache-zu-Cache-Puffer) sind FIFOs.
Für Daten, die zu einem Prozessor geleitet werden, haben die
Daten von einem Speicherport höchste Priorität. Das läßt das
Strömen von Daten zu wenn immer möglich. Die Cache-zu-Cache-
und die Vorabruf-Puffer haben nach den Speicher-
Warteschlangen die gleiche Priorität.
Für den Weg vom Prozessor zum Speicher werden mehrfache
Eingangspuffer benutzt, um eine gegenseitige Blockierung zu
verhindern, die auftreten kann, wenn ein
Hochprioritätstransfer durch einen Niedrigprioritäts- oder
E/A-Transfer blockiert wird. Auf diesem Weg hat ein Transfer
in die Hochprioritätspuffer Vorrang über die
Niedrigprioritäts- und E/A-Puffer.
Der Cache-zu-Cache-Puffer wird benutzt, wenn ein Prozessor
Daten anfordert, die im Cache eines der anderen Prozessoren
stehen. Ein Transfer dieser Art hat höchste Priorität, so
dass diese Daten immer über den Hochpriorität-Eingangspuffer
quellengeführt werden. Der Cache-zu-Cache-Puffer wird
gebraucht, damit es möglich wird, dass die unterschiedlichen
Steuerteile der Knotenkontroller etwas unabhängig agieren
können. Ohne dieselben müsste der Befehl vom NCA zum Senden
von Daten in den Speicher mit einem Befehl zum Senden von
Daten an den Prozessor synchronisiert werden.
Der Vorabrufpuffer ist ein volladressierbares Register,
bestehend aus vier gesonderten Vorabruf-Anordnungen, jeweils
eine reserviert für jeden Prozessor. Jede Anordnung enthält
vier Ströme, wobei jeder Strom in der Lage ist, zwei Cache-
Leitungen zu halten. Für einen Prozessor vorabgerufene Daten
können nur zu diesem Prozessor geschickt werden. Wenn ein
anderer Prozessor die gleichen Daten anfordert, wird eine
vorabgerufene Kopie ungültig gemacht und dann erneut
abgerufen.
Der NCA sieht alle Steuerungen für die Datenbewegung durch
den NCD vor. Jeder Datenport hat seinen eigenen Steuerport,
wenn also das System zwei Speicherteilsysteme aufweist und
ein Knoten vier Master-Vorrichtungen hat, dann können bis zu
sechs Datentransfers in dem Knoten jederzeit durch die Ports
des NCD unterwegs sein. Es kann auch noch eine Reihe
sonstiger Transaktionen geben, die in dem NCD ablaufen,
während die sechs Datentransfers durch die NCD-Ports laufen,
wie z. B. Transfers zwischen internen Warteschlangen. In
Abhängigkeit vom Transfer-Typ können in jedem Zyklus neue
Transfers eingeleitet werden. Da der NCD keine Transfers in
Warteschlangen setzt, abgesehen von den Transaktionen, die in
den obigen Warteschlangen stehen, wird erwartet, dass der NCA
einen Transfer nur dann anlaufen läßt, wenn die angeforderten
Vorrichtungen auf dem NCD frei sind.
Nehmen wir jetzt Bezug auf Fig. 12A-12B; die Tabellen zeigen
ein Codierschema für Datenführungsbefehle, die von einem NCA
an einen NCD geschickt werden. Dieses Codierschema sieht
Flexibilität vor, um eine optimale Leistung von einem
geteilten Transaktionsbussystem unter der Benutzung einer
Mindestanzahl Steuerleitungen zu erhalten. Da ein einziger
Befehl geschickt wird, auch für eine Mehrpaket-Transaktion,
kann ein Befehls-Port benutzt werden, mit jedem Zyklus einen
Führungsbefehl zu schicken. Befehle, die Eingabedaten
beinhalten, erhalten Priorität über andere Führungsbefehle,
da diese kritisch für die Vermeidung von Datenverlust sind.
In dieser Implementierung wird jeder Prozessor-Port mit
Eingangspuffern versehen, die so ausgelegt sind, dass sie
Hochprioritätsdaten, Niedrigprioritätsdaten und E/A-Daten
halten können. Transfers umfassen üblicherweise 1, 2, 4 oder
8 Wörter, obwohl Transfers zu und von Hochprioritätspuffern
vorzugsweise immer 8 Wörter betreffen.
Da Prozessor-Port-Datentransfers zu den Niedrigprioritäts-
und E/A-Puffern von Hochprioritätstransfers abgebrochen und
überschrieben werden können, zusätzlich zu Steuertransfers zu
und von Speicherports, sieht der Speicherport die Fähigkeit
vor, Daten aus dem Prozessor-Niedrigprioritäts- und E/A-
Puffer zu verwerfen. Da ein Transfer in jedem beliebigen
Zyklus abgebrochen werden kann, wäre ein Vorabruf-Adressenbit
mit einem dritten Transfergrößenbit überlastet, um
zuzulassen, das eine Verwerfungstransaktion von 1 bis 8
Wörtern unterstützt.
In der Implementierung, die in den Tabellen der Fig. 12A und
Fig. 12B gezeigt wird, ist jeder Satz Steuerleitungen 11 Bits
breit. Daher ist jeder Steuerbus zwischen NCA und NCD, wie
die Steuerbusse 1113 und 1114 in Fig. 11, 11 Signalleitungen
breit, mit insgesamt 44 Signalleitungen für die Ports der
Prozessoren oder Mastervorrichtungen, und 22 Signalleitungen
für die Ports des Speicherteilsystems.
Hier muss darauf hingewiesen werden, dass Knotenkontroller,
NCAs und NCDs, die Daten und Transaktionen steuern, innerhalb
des verteilten Multi-Bus-Systems der vorliegenden Erfindung
auf einen Bus gelegt werden können. Da die Organisation der
Master-Vorrichtungen in den Knoten nur eine bevorzugte
Ausführungsform ist, können die Master-Vorrichtungen auch
unter Verwendung alternativer Verbindungen organisiert
werden. Daher können in einer alternativen Organisation die
Knotenkontroller, NCAs und NCDs durch allgemeinere
Buszugriffskontroller (BACs), Adressen-BACs (ABACs) bzw.
Daten-BACs (DBACs) ersetzt werden, die analoge Trennung von
Bus-Adressen/Steuerung und Bus-Daten/Funktionalität innerhalb
einer allgemeineren Organisation vorsehen.
Die Vorteile der vorliegenden Erfindung werden anhand der
oben gegebenen detaillierten Beschreibung offensichtlich. Die
vorliegende Erfindung ermöglicht das Skalieren eines
standardisierten und leichter zu überprüfenden Cache-
Kohärenz-Protokols auf Busbasis zu einem Multi-Bus-
Mehrprozessorsystem großer Breite, dessen große Breite
physikalische Busse im Normalfall zu uneffizienten Medien bei
der Kommunikation zwischen Systemkomponenten, wie z. B.
Prozessoren, Speicherteilsystemen und E/A-Agenten machen
würde. Durch Benutzen der verteilten Systemstruktur der
vorliegenden Erfindung wird die Entwicklung komplizierterer,
auf Unterverzeichnissen beruhender Protokolle usw. unnötig.
Die vorliegende Erfindung ermöglicht auch, dass
Komponentenschnittstellen schneller getaktet werden als es
mit einem einzigen Bus möglich wäre, und verbreitert somit
die Bandbreiten der Komponentenschnittstellen und führt zu
einer größeren Gesamtsystembandbreite und -leistung. Die
vorliegende Erfindung unterstützt auch Mehrfachdatenbusse,
und vervielfacht damit die Datenbreite des Systems und
verbessert die Effizienz des Prozessors. Die
Datenübertragungsparallelität des vorliegenden Systems
verbessert ferner den Gesamtdatendurchsatz des Systems.
Ferner muss unbedingt darauf hingewiesen werden, dass zwar
die vorliegende Erfindung im Zusammenhang mit einem voll
funktionierenden Datenverarbeitungssystem beschrieben wurde,
jedoch dem Fachmann bewußt ist, dass die Prozesse der
vorliegenden Erfindung in der Form eines computerlesbaren
Mediums von Anweisungen und in verschiedenen Formen verteilt
werden können, und dass die vorliegende Erfindung
gleichermaßen anwendbar ist, unabhängig von dem besonderen
Typ der signalführenden Medien, die dann wirklich zur
Durchführung der Verteilung benutzt werden. Beispiele für
computerlesbare Medien sind u. a. beschreibbare Medien wie
eine Floppydisk, ein Festplattenlaufwerk, ein RAM und CD-
ROMs, sowie Medien vom Übertragungstyp, wie digitale und
analoge Kommunikationsverbindungen.
Die Beschreibung der vorliegenden Erfindung wurde nur für
Zwecke der Darstellung und Erläuterung gegeben, sie ist
jedoch nicht erschöpfend oder einschränkend für die Erfindung
in der geoffenbarten Form gedacht. Dem Fachmann sind
zahlreiche Modifikationen oder Änderungen offensichtlich. Die
Ausführungsform wurde gewählt und beschrieben, um die
Grundlagen der Erfindung und deren praktische Anwendung am
besten zu erklären und andere Fachleute in die Lage zu
versetzen, die Erfindung in unterschiedlichen
Ausführungsformen mit verschiedenen Modifikationen zu
verstehen, die für den jeweilig betrachteten besonderen Zweck
geeignet sind.
Claims (18)
1. Ein Datenverarbeitungssystem, enthaltend:
Eine Vielzahl Mastervorrichtungen;
eine Vielzahl bidirektionaler Mastervorrichtungsbusse, wobei ein Mastervorrichtungsbus eine oder mehrere Mastervorrichtungen an einen Buszugangskontroller anschließt; und
einen Buszugangskontroller (BAC), beinhaltend:
einen Adressen-BAC (ABAC), wobei der ABAC an jeden Mastervorrichtungsbus der Vielzahl Mastervorrichtungsbusse angeschlossen ist;
einen Daten-BAC (DBAC), wobei der DBAC an jeden Mastervorrichtungsbus der Vielzahl Mastervorrichtungsbusse angeschlossen ist; und
einen Satz Steuerleitungen zwischen dem ABAC und dem DBAC.
Eine Vielzahl Mastervorrichtungen;
eine Vielzahl bidirektionaler Mastervorrichtungsbusse, wobei ein Mastervorrichtungsbus eine oder mehrere Mastervorrichtungen an einen Buszugangskontroller anschließt; und
einen Buszugangskontroller (BAC), beinhaltend:
einen Adressen-BAC (ABAC), wobei der ABAC an jeden Mastervorrichtungsbus der Vielzahl Mastervorrichtungsbusse angeschlossen ist;
einen Daten-BAC (DBAC), wobei der DBAC an jeden Mastervorrichtungsbus der Vielzahl Mastervorrichtungsbusse angeschlossen ist; und
einen Satz Steuerleitungen zwischen dem ABAC und dem DBAC.
2. Das Datenverarbeitungssystem gemäß Anspruch 1, das
ferner enthält:
Eine Vielzahl ABAC-Ports, wobei jeder ABAC-Port mit Adressen/Steuerleitungen jedes Mastervorrichtungsbusses verbunden ist; und
Eine Vielzahl DBAC-Ports, wobei jeder DBAC-Port mit Datenleitungen jedes Mastervorrichtungsbusses verbunden ist.
Eine Vielzahl ABAC-Ports, wobei jeder ABAC-Port mit Adressen/Steuerleitungen jedes Mastervorrichtungsbusses verbunden ist; und
Eine Vielzahl DBAC-Ports, wobei jeder DBAC-Port mit Datenleitungen jedes Mastervorrichtungsbusses verbunden ist.
3. Das Datenverarbeitungssystem gemäß Anspruch 1, das
ferner enthält:
Steuermittel zum Generieren und Senden von
Datenflußbefehlen vom ABAC zum DBAC.
4. Das Datenverarbeitungssystem gemäß Anspruch 3, das
ferner enthält:
Befehlausführungsmittel zum Ausführen von
Transaktionsbefehlen.
5. Das Datenverarbeitungssystem gemäß Anspruch 3, in dem
die Befehle Mehrpaketdatentransaktionen sind.
6. Das Datenverarbeitungssystem gemäß Anspruch 3, in dem
das Steuermittel in der Lage ist, in jedem Zyklus einen
neuen Steuerbefehl an den DBAC zu schicken.
7. Das Datenverarbeitungssystem gemäß Anspruch 3, das
ferner enthält:
Eine Vielzahl von DBAC-Warteschlangen, wobei jeder DBAC-
Port mindestens eine DBAC-Warteschlange umfasst, um
parallel eine Datentransaktion auf jedem Port zu
ermöglichen.
8. Ein Buszugangskontroller (BAC), enthaltend:
Einen Adressen-BAC (ABAC), in dem der ABAC an eine Vielzahl Mastervorrichtungsbusse anschließbar ist;
einen Daten-BAC (DBAC), in dem der DBAC an eine Vielzahl Mastervorrichtungsbusse anschließbar ist; und
einen Satz Steuerleitungen zwischen dem ABAC und dem DBAC.
Einen Adressen-BAC (ABAC), in dem der ABAC an eine Vielzahl Mastervorrichtungsbusse anschließbar ist;
einen Daten-BAC (DBAC), in dem der DBAC an eine Vielzahl Mastervorrichtungsbusse anschließbar ist; und
einen Satz Steuerleitungen zwischen dem ABAC und dem DBAC.
9. Das Datenverarbeitungssystem gemäß Anspruch 8, das
ferner enthält:
Eine Vielzahl ABAC-Ports, wobei jeder ABAC-Port mit Adressen/Steuerleitungen jedes Mastervorrichtungsbusses verbunden ist; und
eine Vielzahl DBAC-Ports, wobei jeder DBAC-Port mit Datenleitungen jedes Mastervorrichtungsbusses verbunden ist.
Eine Vielzahl ABAC-Ports, wobei jeder ABAC-Port mit Adressen/Steuerleitungen jedes Mastervorrichtungsbusses verbunden ist; und
eine Vielzahl DBAC-Ports, wobei jeder DBAC-Port mit Datenleitungen jedes Mastervorrichtungsbusses verbunden ist.
10. Das Datenverarbeitungssystem gemäß Anspruch 8, das
ferner enthält:
Steuermittel zum Generieren und Senden von
Datenflußbefehlen vom ABAC an den DBAC.
11. Das Datenverarbeitungssystem gemäß Anspruch 8, in dem
die Befehle Mehrpaketdatentransaktionen sind.
12. Das Datenverarbeitungssystem gemäß Anspruch 8, in dem
das Steuermittel in der Lage ist, in jedem Zyklus einen
neuen Steuerbefehl an den DBAC zu schicken.
13. Eine Bussteuervorrichtung enthaltend:
Einen Satz eines oder mehrerer Knotendatenkontroller in denen jeder Knotendatenkontroller einen Teil des Datenwegs zwischen einem Speicherteilsystem und einer Mastervorrichtung vorsieht;
einen Knotenadressenkontroller; und
eine Befehlsschnittstelle zwischen dem Satz Knotendatenkontroller und dem Knotenadressenkontroller.
Einen Satz eines oder mehrerer Knotendatenkontroller in denen jeder Knotendatenkontroller einen Teil des Datenwegs zwischen einem Speicherteilsystem und einer Mastervorrichtung vorsieht;
einen Knotenadressenkontroller; und
eine Befehlsschnittstelle zwischen dem Satz Knotendatenkontroller und dem Knotenadressenkontroller.
14. Die Bussteuervorrichtung gemäß Anspruch 13, wobei eine
Mastervorrichtung ein Prozessor oder ein
Eingangs/Ausgangsagent oder ein kohärenter
Speicheradapter ist.
15. Die Bussteuervorrichtung gemäß Anspruch 13, wobei ein
Knotendatenkontroller beinhaltet:
Eine Vielzahl von Mastervorrichtungsdatenports, wobei jeder Mastervorrichtungsdatenport an einen Datenteil eines Mastervorrichtungsbusses anschließbar ist;
eine Vielzahl von Speicherteilsystemports, in dem jeder Speicherteilsystemport an einen bidirektionalen Speicherteilsystembus anschließbar ist, wobei ein Speicherteilsystembus Daten zwischen der Bussteuervorrichtung und einem der Speicherteilsysteme transportiert; und
einen Satz Datenwarteschlangen, wobei die Datenwarteschlangen die Übertragung von Daten auf einer gleichzeitigen, Per-Port-Basis unterstützen.
Eine Vielzahl von Mastervorrichtungsdatenports, wobei jeder Mastervorrichtungsdatenport an einen Datenteil eines Mastervorrichtungsbusses anschließbar ist;
eine Vielzahl von Speicherteilsystemports, in dem jeder Speicherteilsystemport an einen bidirektionalen Speicherteilsystembus anschließbar ist, wobei ein Speicherteilsystembus Daten zwischen der Bussteuervorrichtung und einem der Speicherteilsysteme transportiert; und
einen Satz Datenwarteschlangen, wobei die Datenwarteschlangen die Übertragung von Daten auf einer gleichzeitigen, Per-Port-Basis unterstützen.
16. Die Bussteuervorrichtung gemäß Anspruch 13, wobei ein
Knotendatenkontroller beinhaltet:
Eine Vielzahl von Mastervorrichtungsadressenports, wobei jeder Mastervorrichtungsadressenport mit einem Adressen/Steuerteil eines Mastervorrichtungsbusses verbunden ist;
ein Paar Adressenschalterports, wobei jeder Adressenschalterport mit einem eines Paars unidirektionaler Adressenschalterbusse verbunden ist, wobei einer des Paars Adressenschalterbusse eine Adresse von der Bussteuervorrichtung zum Adressenschalter, und einer des Paars Adressenschalterbusse eine Adresse vom Adressenschalter zur Bussteuervorrichtung übermittelt; und
einen Satz Steuerwarteschlangen, wobei die Steuerwarteschlangen die Übertragung von Daten durch Datenwarteschlangen zum Knotendatenkontroller unterstützen.
Eine Vielzahl von Mastervorrichtungsadressenports, wobei jeder Mastervorrichtungsadressenport mit einem Adressen/Steuerteil eines Mastervorrichtungsbusses verbunden ist;
ein Paar Adressenschalterports, wobei jeder Adressenschalterport mit einem eines Paars unidirektionaler Adressenschalterbusse verbunden ist, wobei einer des Paars Adressenschalterbusse eine Adresse von der Bussteuervorrichtung zum Adressenschalter, und einer des Paars Adressenschalterbusse eine Adresse vom Adressenschalter zur Bussteuervorrichtung übermittelt; und
einen Satz Steuerwarteschlangen, wobei die Steuerwarteschlangen die Übertragung von Daten durch Datenwarteschlangen zum Knotendatenkontroller unterstützen.
17. Die Bussteuervorrichtung gemäß Anspruch 13, wobei die
Befehlsschnittstelle einen Satz Steuersignale je
Datenport im Knotendatenkontroller enthält.
18. Die Bussteuervorrichtung gemäß Anspruch 13, wobei die
Befehlsschnittstelle in der Lage ist, einen
Datenübertragungsbefehl je Zyklus zu übertragen.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/404,280 US6725307B1 (en) | 1999-09-23 | 1999-09-23 | Method and system for controlling data transfers with physical separation of data functionality from address and control functionality in a distributed multi-bus multiprocessor system |
Publications (1)
Publication Number | Publication Date |
---|---|
DE10045915A1 true DE10045915A1 (de) | 2001-05-10 |
Family
ID=23598961
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE10045915A Ceased DE10045915A1 (de) | 1999-09-23 | 2000-09-16 | Verfahren und System zum Steuern von Datenübertragungen mit physikalischer Trennung der Datenfunktionalität von der Adressen- und Steuerfunktionalität in einem verteilten Multi-Bus-Mehrprozessorsystem |
Country Status (2)
Country | Link |
---|---|
US (1) | US6725307B1 (de) |
DE (1) | DE10045915A1 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004044762A2 (en) * | 2002-11-05 | 2004-05-27 | Newisys, Inc. | Transaction processing using multiple protocol engines in systems having multiple muti-processor clusters |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7996843B2 (en) * | 1999-08-25 | 2011-08-09 | Qnx Software Systems Gmbh & Co. Kg | Symmetric multi-processor system |
US6751698B1 (en) * | 1999-09-29 | 2004-06-15 | Silicon Graphics, Inc. | Multiprocessor node controller circuit and method |
US7529799B2 (en) * | 1999-11-08 | 2009-05-05 | International Business Machines Corporation | Method and apparatus for transaction tag assignment and maintenance in a distributed symmetric multiprocessor system |
US7594024B2 (en) * | 2001-02-13 | 2009-09-22 | Netapp, Inc. | Silicon-based storage virtualization |
US6865637B1 (en) * | 2001-06-26 | 2005-03-08 | Alcatel | Memory card and system for updating distributed memory |
US7043596B2 (en) * | 2001-08-17 | 2006-05-09 | Sun Microsystems, Inc. | Method and apparatus for simulation processor |
JP3759054B2 (ja) * | 2002-03-01 | 2006-03-22 | Necエレクトロニクス株式会社 | バスシステム |
US7200137B2 (en) * | 2002-07-29 | 2007-04-03 | Freescale Semiconductor, Inc. | On chip network that maximizes interconnect utilization between processing elements |
US7139860B2 (en) * | 2002-07-29 | 2006-11-21 | Freescale Semiconductor Inc. | On chip network with independent logical and physical layers |
US7051150B2 (en) * | 2002-07-29 | 2006-05-23 | Freescale Semiconductor, Inc. | Scalable on chip network |
US7277449B2 (en) * | 2002-07-29 | 2007-10-02 | Freescale Semiconductor, Inc. | On chip network |
US6996651B2 (en) * | 2002-07-29 | 2006-02-07 | Freescale Semiconductor, Inc. | On chip network with memory device address decoding |
US6907502B2 (en) * | 2002-10-03 | 2005-06-14 | International Business Machines Corporation | Method for moving snoop pushes to the front of a request queue |
KR100453821B1 (ko) * | 2002-10-09 | 2004-10-20 | 한국전자통신연구원 | 마이크로 컨트롤러를 위한 데이터 버스 시스템 |
US7451231B2 (en) * | 2005-02-10 | 2008-11-11 | International Business Machines Corporation | Data processing system, method and interconnect fabric for synchronized communication in a data processing system |
US7568063B2 (en) * | 2006-02-02 | 2009-07-28 | Hewlett-Packard Development Company, L.P. | System and method for a distributed crossbar network using a plurality of crossbars |
US20080059687A1 (en) * | 2006-08-31 | 2008-03-06 | Peter Mayer | System and method of connecting a processing unit with a memory unit |
US20080098178A1 (en) * | 2006-10-23 | 2008-04-24 | Veazey Judson E | Data storage on a switching system coupling multiple processors of a computer system |
JP2008118184A (ja) * | 2006-10-31 | 2008-05-22 | Fujitsu Ltd | 処理装置及び処理モジュール |
US20080270658A1 (en) * | 2007-04-27 | 2008-10-30 | Matsushita Electric Industrial Co., Ltd. | Processor system, bus controlling method, and semiconductor device |
US7783813B2 (en) * | 2007-06-14 | 2010-08-24 | International Business Machines Corporation | Multi-node configuration of processor cards connected via processor fabrics |
US8554967B2 (en) * | 2009-06-16 | 2013-10-08 | Freescale Semiconductor, Inc. | Flow control mechanisms for avoidance of retries and/or deadlocks in an interconnect |
US8364922B2 (en) * | 2009-12-21 | 2013-01-29 | International Business Machines Corporation | Aggregate symmetric multiprocessor system |
US8370595B2 (en) * | 2009-12-21 | 2013-02-05 | International Business Machines Corporation | Aggregate data processing system having multiple overlapping synthetic computers |
US10872291B2 (en) * | 2017-12-22 | 2020-12-22 | Alibaba Group Holding Limited | On-chip communication system for neural network processors |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4152764A (en) | 1977-03-16 | 1979-05-01 | International Business Machines Corporation | Floating-priority storage control for processors in a multi-processor system |
US4484270A (en) | 1982-07-07 | 1984-11-20 | Sperry Corporation | Centralized hardware control of multisystem access to shared and non-shared subsystems |
IT1184553B (it) | 1985-05-07 | 1987-10-28 | Honeywell Inf Systems | Architettura di sistema a piu' processori |
US6070003A (en) | 1989-11-17 | 2000-05-30 | Texas Instruments Incorporated | System and method of memory access in apparatus having plural processors and plural memories |
EP0429733B1 (de) | 1989-11-17 | 1999-04-28 | Texas Instruments Incorporated | Multiprozessor mit Koordinatenschalter zwischen Prozessoren und Speichern |
US5208914A (en) | 1989-12-29 | 1993-05-04 | Superconductor Systems Limited Partnership | Method and apparatus for non-sequential resource access |
US5555425A (en) * | 1990-03-07 | 1996-09-10 | Dell Usa, L.P. | Multi-master bus arbitration system in which the address and data lines of the bus may be separately granted to individual masters |
JP2770603B2 (ja) | 1991-03-14 | 1998-07-02 | 三菱電機株式会社 | 並列計算機 |
US5689657A (en) * | 1991-03-30 | 1997-11-18 | Deutsche Itt Industries Gmbh | Apparatus and methods for bus arbitration in a multimaster system |
US5440752A (en) | 1991-07-08 | 1995-08-08 | Seiko Epson Corporation | Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU |
US5327570A (en) | 1991-07-22 | 1994-07-05 | International Business Machines Corporation | Multiprocessor system having local write cache within each data processor node |
US5335335A (en) | 1991-08-30 | 1994-08-02 | Compaq Computer Corporation | Multiprocessor cache snoop access protocol wherein snoop means performs snooping operations after host bus cycle completion and delays subsequent host bus cycles until snooping operations are completed |
US5426765A (en) | 1991-08-30 | 1995-06-20 | Compaq Computer Corporation | Multiprocessor cache abitration |
US5325503A (en) | 1992-02-21 | 1994-06-28 | Compaq Computer Corporation | Cache memory system which snoops an operation to a first location in a cache line and does not snoop further operations to locations in the same line |
KR100294105B1 (ko) | 1992-04-29 | 2001-09-17 | 썬 마이크로시스템즈, 인코포레이티드 | 멀티 프로세서 컴퓨터 시스템의 일관성 카피-백 버퍼용 방법 및 장치 |
JP3057934B2 (ja) * | 1992-10-30 | 2000-07-04 | 日本電気株式会社 | 共有バス調停機構 |
JPH06231074A (ja) * | 1993-01-29 | 1994-08-19 | Nec Corp | システムバスの多重アクセス方式 |
CA2138263C (en) | 1993-09-27 | 2000-02-22 | Yukihiko Okumura | Multiprocessor |
US5577204A (en) * | 1993-12-15 | 1996-11-19 | Convex Computer Corporation | Parallel processing computer system interconnections utilizing unidirectional communication links with separate request and response lines for direct communication or using a crossbar switching device |
JP2778913B2 (ja) | 1994-04-26 | 1998-07-23 | 株式会社東芝 | マルチプロセッサシステム及びメモリアロケーション方法 |
US5566342A (en) | 1994-08-31 | 1996-10-15 | International Business Machines Corporation | Scalable switch wiring technique for large arrays of processors |
US6029217A (en) * | 1994-10-03 | 2000-02-22 | International Business Machines Corporation | Queued arbitration mechanism for data processing system |
JPH08235141A (ja) | 1995-02-28 | 1996-09-13 | Kofu Nippon Denki Kk | 情報処理システム |
US5794062A (en) * | 1995-04-17 | 1998-08-11 | Ricoh Company Ltd. | System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization |
US5704058A (en) * | 1995-04-21 | 1997-12-30 | Derrick; John E. | Cache bus snoop protocol for optimized multiprocessor computer system |
US6011791A (en) * | 1995-11-15 | 2000-01-04 | Hitachi, Ltd. | Multi-processor system and its network |
US5765196A (en) * | 1996-02-27 | 1998-06-09 | Sun Microsystems, Inc. | System and method for servicing copyback requests in a multiprocessor system with a shared memory |
US5872940A (en) * | 1996-04-01 | 1999-02-16 | Motorola, Inc. | Programmable read/write access signal and method therefor |
US5754877A (en) * | 1996-07-02 | 1998-05-19 | Sun Microsystems, Inc. | Extended symmetrical multiprocessor architecture |
US6092165A (en) * | 1996-08-16 | 2000-07-18 | Unisys Corporation | Memory control unit using a programmable shift register for generating timed control signals |
US5931938A (en) | 1996-12-12 | 1999-08-03 | Sun Microsystems, Inc. | Multiprocessor computer having configurable hardware system domains |
US5895495A (en) | 1997-03-13 | 1999-04-20 | International Business Machines Corporation | Demand-based larx-reserve protocol for SMP system buses |
US5901294A (en) * | 1997-09-18 | 1999-05-04 | International Business Machines Corporation | Method and system for bus arbitration in a multiprocessor system utilizing simultaneous variable-width bus access |
US6122714A (en) | 1997-10-24 | 2000-09-19 | Compaq Computer Corp. | Order supporting mechanisms for use in a switch-based multi-processor system |
US6154816A (en) | 1997-10-24 | 2000-11-28 | Compaq Computer Corp. | Low occupancy protocol for managing concurrent transactions with dependencies |
US6163835A (en) * | 1998-07-06 | 2000-12-19 | Motorola, Inc. | Method and apparatus for transferring data over a processor interface bus |
US6330656B1 (en) * | 1999-03-31 | 2001-12-11 | International Business Machines Corporation | PCI slot control apparatus with dynamic configuration for partitioned systems |
US6442597B1 (en) * | 1999-07-08 | 2002-08-27 | International Business Machines Corporation | Providing global coherence in SMP systems using response combination block coupled to address switch connecting node controllers to memory |
US6456676B1 (en) * | 1999-08-27 | 2002-09-24 | Intel Corporation | Clock signal distribution and synchronization |
-
1999
- 1999-09-23 US US09/404,280 patent/US6725307B1/en not_active Expired - Fee Related
-
2000
- 2000-09-16 DE DE10045915A patent/DE10045915A1/de not_active Ceased
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004044762A2 (en) * | 2002-11-05 | 2004-05-27 | Newisys, Inc. | Transaction processing using multiple protocol engines in systems having multiple muti-processor clusters |
WO2004044762A3 (en) * | 2002-11-05 | 2006-02-09 | Newisys Inc | Transaction processing using multiple protocol engines in systems having multiple muti-processor clusters |
US8185602B2 (en) | 2002-11-05 | 2012-05-22 | Newisys, Inc. | Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters |
US8572206B2 (en) | 2002-11-05 | 2013-10-29 | Memory Integrity, Llc | Transaction processing using multiple protocol engines |
US8898254B2 (en) | 2002-11-05 | 2014-11-25 | Memory Integrity, Llc | Transaction processing using multiple protocol engines |
Also Published As
Publication number | Publication date |
---|---|
US6725307B1 (en) | 2004-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE10045915A1 (de) | Verfahren und System zum Steuern von Datenübertragungen mit physikalischer Trennung der Datenfunktionalität von der Adressen- und Steuerfunktionalität in einem verteilten Multi-Bus-Mehrprozessorsystem | |
DE69130106T2 (de) | Arbitrierung von paketvermittelten Bussen, einschliesslich Bussen von Multiprozessoren mit gemeinsam genutztem Speicher | |
DE69832943T2 (de) | Sequenzsteuerungsmechanismus für ein switch-basiertes Mehrprozessorsystem | |
DE60219436T2 (de) | System mit adressbasierter Intraknotenkohärenz und datenbasierter Interknotenkohärenz | |
DE69529381T2 (de) | Warteschlangen-Arbitrierungsmechanismus für Datenverarbeitungssystem | |
DE69729243T2 (de) | Multiprozessorsystem mit Vorrichtung zur Optimierung von Spin-Lock-Operationen | |
DE60203469T2 (de) | System mit Schnittstellen und einem Schalter für die Trennung von kohärentem und nichtkohärentem Datenpaketverkehr | |
DE60207210T2 (de) | System mit Schnittstellen, einem Schalter und einer Speicherbrücke mit cc-numa (cache-coherent non-uniform memory access) | |
DE69727856T2 (de) | Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren | |
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 | |
DE60204213T2 (de) | Level 2 Cache mit lokaler Beibehaltung von Kohärenzblöcken | |
DE60217221T2 (de) | Ein-Chip System zur Paketverarbeitung | |
DE69904758T2 (de) | Flexible sondierungsbefehl/sondierungrespons-leitweglenkung zur aufrechterhaltung der speicherkohärenz | |
DE69130203T2 (de) | Folgerichtiger paketvermittelter Speicherbus für Multiprozessoren mit gemeinsam genutztem Speicher | |
DE102009023898B4 (de) | Optimierung von gleichzeitigen Zugriffen in einem verzeichnisbasierten Kohärenzprotokoll | |
DE69721643T2 (de) | Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen | |
DE69724355T2 (de) | Erweiterte symmetrische Multiprozessorarchitektur | |
DE69722079T2 (de) | Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen | |
DE60202926T2 (de) | Multicomputersystem mit konfigurierbaren Schnittstellen für flexible Systemkonfigurationen | |
DE68927375T2 (de) | Arbitrierung von Übertragungsanforderungen in einem Multiprozessor-Rechnersystem | |
DE69722512T2 (de) | Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll | |
DE3689226T2 (de) | Multiprozessorsystem mit multihierarchischen Ebenen. | |
DE60006842T2 (de) | Multiprozessor-Node-Controller-Schaltung und Verfahren | |
DE69724353T2 (de) | Mehrrechnersystem mit einem Drei-Sprung-Kommunikationsprotokoll |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8120 | Willingness to grant licences paragraph 23 | ||
R016 | Response to examination communication | ||
R002 | Refusal decision in examination/registration proceedings | ||
R003 | Refusal decision now final |
Effective date: 20120727 |