-
Gebiet der
Erfindung
-
Diese
Erfindung bezieht sich auf ein Cluster-Computersystem gemäß Anspruch
1 oder 2 und genauer auf Adressierung in einem Cluster-Computersystem,
das mehrere Cluster verwendet, wobei jeder Cluster mehrere Prozessoren
aufweist, wobei jeder Prozessor unfähig ist, direkt alle Information
zu adressieren, die in dem gesamten Hauptspeicher gespeichert ist.
-
Hintergrund der Erfindung
-
Bei
dem Design von zentralen Verarbeitungseinheiten (CPUs), die in modernen
Computersystemen verwendet werden, müssen Verbesserungen die Kommandostruktur
und die Wortlänge
berücksichtigen,
welche oft die gleiche bleiben muss wie diejenige, die in den Vorgängern zu
einer „neuen" CPU verwendet wird.
Dies ist insbesondere wahr in Fällen
von Systemen, die mit proprietären
Software-Betriebssystemen
laufen. Der fundamentale Grund für
diese Beschränkung
ist die oft enorme Investition in Software, die ein Benutzer haben
kann. In einigen Fällen
mögen dort
drei Dekaden von Software-Entwicklung in einem gegebenen Benutzersystem repräsentiert
sein, und ein Benutzer wünscht
typischerweise, nur seine alte Software auf ein neues, verbessertes
Hardware-System zu laden und direkt höhere Leistungsresultate zu
erfahren. Als ein Resultat gehen CPU-Entwickler zu großen Längen, um Kompatibilität mit früheren CPUs
in einer gegebenen Betriebssystemfamilie beizubehalten.
-
Daher
würden
bei CPU-Entwicklung basierend auf existierenden Systemen selbst
begrenzte Modifikationen der Adressbereichsfähigkeit (d.h. Zuordnung von
Adressfeldern in einem CPU-Anweisungswort) von jeder CPU einen großen Einfluss
auf Hardware-Entwicklung und spezifischer auf die Software haben,
die wiederverwendet werden kann oder muss. Diesem Dilemma wird gegenübergestanden
in Anbetracht der fortschreitenden Zunahme in Dichte und Kapazität von Speicherchips
und anderen Technologien, die in der Verfügbarkeit von Massenspeichern
resultiert haben, die in der Lage sind, Informationen zu speichern,
die ein bis zwei Mal größer sind als
sie es zu der Zeit waren, als die Adressfeldlängen/Wortlängen ursprünglich in dem Betriebssystem/der
CPU-Familie etabliert wurden.
-
Ein
anderer Faktor, der die Entwicklung von CPUs betrifft, insbesondere
CPUs, die zum Funktionieren unter einem lang etablierten, proprietären Betriebssystem
gedacht sind, ist die Tatsache, dass immer neue Technologie einen
existierenden CPU-Entwurf ermöglicht,
physikalisch in einen viel kleineren Raum implementiert zu werden.
Wiederum jedoch leiten die Vorteile des Anhaftens an die fundamentalen
Spezifikationen existierender Betriebssystem-Software (um die Wiederbenutzung
von existierender Anwendungssoftware zu erlauben) die Haltbarkeit
des Betriebssystems ungeachtet seiner begrenzenden Auswirkungen
auf den CPU-Entwurf. Schließlich und
vielleicht am wichtigsten sind sich diejenigen, die in der Technik
bewandert sind, den Ineffizienzen bewusst, die auftreten, wenn zu
viele CPUs in einer einzigen Betriebssystemumgebung betrieben werden.
-
All
diese Faktoren sind verschlimmert in einer Multiprozessor-Cluster-Umgebung, in der
mehrere Gruppen von mehreren CPUs in ein großes Computersystem inkorporiert
sind, welches einen großen Hauptspeicher
einschließt,
der gespeicherte Information an mehrere Adressen enthält als durch
die individuellen CPUs direkt adressiert werden können, mit der
Adressierungsbeschränkung,
die auferlegt ist aufgrund der Adressfeld-/Wortlängeneigenschaften, die ein
natürliches
Erbe der historischen Hardware und Betriebssystem-/Anwendungssoftware einer
gegebenen Computer-systemfamilie sind. Der Gegenstand der Erfindung
ist gerichtet auf die Lösung
dieses Dilemmas.
-
WO
95/25306 betrifft einen verteilten-geteilten Cache, der arbeitet
als ein Niveau eines zweiten Niveauspeichercache bei dem dritten
Niveau des Speichersystems und bei dem nur software-gemanagten Page-Cache-Niveau.
-
Es
ist daher eine weitere Aufgabe dieser Erfindung, ein verbessertes
Multiprozessor-Computer-system bereitzustellen, das erweiterte Speicheradressierung
einschließt
mit einem Gesamtsystemspeicher jenseits demjenigen, der durch eine
einzige CPU oder ein Betriebssystem gesehen wird.
-
Es
ist eine spezifischere Aufgabe dieser Erfindung, ein verbessertes
Multiprozessorsystem bereitzustellen, das eine Cluster-Architektur
verwendet, in dem ein erweiterter Speicherraum, der größer ist als
der inhärent
direkt adressierbare durch die verwendeten Prozessoren, aufgeteilt
ist in Privaträume für jeden
Multiprozessor-Cluster und geteilte Räume, die durch alle Cluster
gemäß einer
Adresstransformation direkt zugänglich
sind, die Cluster-Element-Nummerinformation einschließt zum Identifizieren
jedes Clusters und jedes Elements davon.
-
Diese
Aufgaben werden erreicht durch das Cluster-Computersystem gemäß Anspruch
1 oder 2, weitere Ausführungsformen
der Erfindung sind in den abhängigen
Ansprüchen
definiert.
-
Ein
beispielhaftes System schließt
einen externen Speicherraum ein (z.B. Hauptspeicher), der eine Zweierpotenz
größer ist
als der initiale Speicherraum, der inhärent direkt adressierbar ist
durch ein Adressfeld, das erzeugt/interpretiert wird durch die individuellen
Prozessoren, durch Aufteilen der Prozessoren in mehrere Cluster
mit mehreren Prozessoren in jedem Punkt. Jeder CPU in einem Cluster
von Prozessoren, vier auf einer einzigen Multiprozessorplatine in
dem Beispiel, wird eine Cluster-Nummer zugeordnet, die z.B. gesetzt
wird durch eine Zwei-Bit- Nummer
(daher vier Cluster identifizierend). Zusätzlich wird jeder CPU eine
Zwei-Bit-Nummer zugeordnet (so vier CPUs identifizierend), wobei
gesetzt wird, welche CPU es in ihrem Cluster ist. In dem Beispiel
sind die zwei Zwei-Bit-Nummern
verkettet, um jede CPU mit einer einzigartigen Vier-Bit-Identifikationsnummer
in dem System zu versehen.
-
In
einem Intern-zu-extern-Adresstransformationsmodus wird die Cluster-Nummer
gesendet zusammen mit einer internen Adresse, die ein Indikatorbit
einschließt
zum Spezifizieren von privater/geteilter Modifikation, von einem
anfordernden Cluster zu einem Adressübersetzer. In dem Adressübersetzer wird
das Indikatorbit verwendet zum Steuern der Einstellung der Transformation.
-
In
dem beispielhaften System, in dem jede CPU inhärent direkt ein Gigabyte adressieren
kann (30-Bit-Adressfeld, identifiziert als Bits 0-29, mit Bit 0 als
das signifikanteste Bit), ist der verfügbare externe Raum zwei Gigabytes,
und die Länge
des externen Raumadressfelds ist 32 Bits (Bits 0-31, die in der Lage
sind, vier Gigabytes zu spezifizieren), Bit 0 der internen Adresse
wird verwendet als der Indikator. Wenn Bit 0 eine „0" ist, fordert das
Cluster-Element Information von seinem privaten Gebiet des externen Speichers
an; umgekehrt, wenn es eine „1" ist, adressiert
das Cluster-Element Information in dem geteilten Gebiet des externen
Raums.
-
Wenn
das Indikatorbit eine „0" ist, wird die Cluster-Nummer
kopiert in Bits 1, 2 der externen Adresse, Bits 1, 2 der internen
Adresse werden kopiert in Bits 3, 4 der externen Adresse, und die Adressbits
niedrigerer Ordnung 3-29 der internen Adresse werden direkt kopiert
zu Bits 5-31 der externen Adresse. Die resultierende externe Adresse zeigt
auf das spezifizierte private Gebiet im externen Raum.
-
Wenn
jedoch das Indikatorbit 0 in der internen Adresse eine „1" ist, die einen Ruf
an ein geteiltes Gebiet des externen Raums anzeigt, dann findet eine
andere Transformation statt. CN0, CN1 werden ignoriert. Bit 1 der
internen Adresse wird ko piert zu Bit 1 der externen Adresse, während Bits
2, 3 der externen Adresse jeweils auf logisch „1" gezwungen werden. Die resultierende
externe Adresse zeigt auf das spezifizierte geteilte Gebiet im externen
Raum.
-
In
einem Extern-zu-intern-Adresstransformationsmodus werden die Bits
1, 2 der externen Adresse in Positionen CN0, CN1 der internen Adresse
kopiert. Die externen Adressindikatorbits sind Bits 3, 4. Wenn eines
oder das andere oder beide „0" sind, dann wird
eine Adresse von dem privaten Raum eines der Cluster angezeigt.
Bit 0 der internen Adresse wird auf „0" gezwungen, und Bits 3, 4 der externen Adresse
werden zu Bits 1 kopiert von der internen Adresse. Die Bits niedrigerer
Ordnung 5-31 der externen Adresse werden direkt zu Bits 3-29 der
internen Adresse kopiert. Daher identifiziert die entwickelte interne
Adresse völlig
einen Informationsblock im externen Speicher als den des privaten
Raums, der reserviert ist für
den Cluster, der durch CN0, CN1 identifiziert ist.
-
Wenn
beide Bits 3, 4 der externen Adresse „1" sind, dann ist bekannt, dass der externe
Raum zu teilen ist. Bit 0 der internen Adresse wird auf „1" gezwungen, Bits
1, 2 der externen Adresse werden kopiert zu Bits 1, 2 der internen
Adresse, und die Adressbits niedrigerer Ordnung werden wie zuvor
kopiert. Die resultierende interne Adresse identifiziert einen Informationsblock
im externen Speicher, der verfügbar
ist für
all die Cluster.
-
Beschreibung
der Zeichnung
-
Der
Gegenstand der Erfindung ist insbesondere in dem abschließenden Teil
der Spezifikation ausgedrückt
und klar beansprucht. Die Erfindung kann jedoch sowohl bezüglich der
Organisation und des Verfahrens des Betriebs am besten verstanden werden
durch Bezugnahme auf die folgende Beschreibung, genommen in Zusammenhang
mit den unten angefügten
Ansprüchen
und den beigefügten Zeichnungen,
von denen:
-
1 ein
Blockdiagramm hoher Ebene eines Cluster-Computersystems ist, in
dem die vorliegende Erfindung ausgeführt werden kann;
-
2 ein
Blockdiagramm des Computersystems ist, das in 1 gezeigt
ist, wobei der individuelle Cluster und CPUs mehr im Detail illustriert
sind;
-
3 eine
beispielhafte Repräsentation
der Zuordnung internen Adressraums ist, wie er den individuellen
Multiprozessor-Clustern zugeordnet ist, und externen Raums, der
den Adressraum eines Hauptspeichergeräts repräsentiert;
-
4 ein
beispielhaftes Transformationsdiagramm ist, das eine Ausführungsform
der Erfindung illustriert, bei der jede CPU inhärent in der Lage ist, ein Gigabyte
von Information zu adressieren, und ein Hauptspeichergerät, kommunizierend
mit all den CPUs, in der Lage ist, zwei Gigabyte von Information zu
speichern;
-
5 eine
Repräsentation
der zwei Typen von Adressen, intern und extern, ist, die transformiert werden
gemäß der Erfindung;
-
6 ein
simplifiziertes Logikdiagramm ist, das die Vorrichtung illustriert
innerhalb einer Adressübersetzerkomponente
in jeder CPU, die in einem Intern-zu-extern-Modus operiert; und
-
7 ein
simplifiziertes Logikdiagramm eines Adressübersetzers ist, der in einem
Extern-zu-intern-Modus operiert.
-
Beschreibung der bevorzugten
Ausführungsform(en)
-
Bezugnehmend
zuerst auf das beispielhafte Cluster-Computersystem von 1 wird
es festgestellt werden, dass das System erste 1, zweite 2,
dritte 3 und vierte 4 Multiprozessorschaltungsplatinen einschließt, wobei
jede Multiprozessorplatine vier CPUs einschließt, die ein Cluster bewirken,
wobei jede Multiprozessorplatine zu einem Systembus 5 über einen
internen sekundären
Cache 7 verbunden ist. Der Systembus 5 koppelt
die Multiprozessorplatinen 1, 2, 3, 4 aneinander
und zu unterschiedlichen anderen Systemkomponenten (einschließlich eines Dienstprozessors „SP"), die durch den
Block 6 repräsentiert
werden. Zusätzlich
koppelt der Systembus 5 die Multiprozessorplatinen 1, 2, 3, 4 an
einen Speichercontroller 10, der wiederum über einen
Speicherbus 9 an einen Hauptspeicher 8 anschließt, der
repräsentativ
ist für
ein oder mehrere Hauptspeichergeräte.
-
Wie
für die
Multiprozessorplatine 1 illustriert, schließt jede
Multiprozessorplatine 1, 2, 3, 4 vier CPUs 11, 12, 13, 14 ein.
Die vier CPUs 11, 12, 13, 14 sind
versehen mit jeweiligen primären
Caches 11C, 12C, 13C, 14C. In
dem beispielhaften System sind die primären Caches auf jeder Multiprozessorplatine jeweils
angeordnet zwischen ihren direkt zugeordneten CPUs und einem gemeinsamen
sekundären
Cache 7 und nutzen eine klassische „Speicher-in-Cache"-Konfiguration. Der
sekundäre
Cache 7 koppelt mit dem Systembus 5. Angeordnet
zwischen jedem der primären
Caches 11C, 12C, 13C, 14C und
dem gemeinsamen (für
den Cluster) sekundären
Cache 7 sind Adressübersetzer 11A, 12A, 13A, 14A,
welche ebenfalls Bestandteile ihrer jeweiligen Prozessoren 11, 12, 13, 14 sind.
-
In Übereinstimmung
mit einem bevorzugten Aspekt der Erfindung bildet jede der Multiprozessorplatinen 1, 2, 3, 4 einen
Cluster, und jeder Cluster betreibt sein eigenes Betriebssystem,
um die Systemeffizient zu verbessern.
-
Nun
wird 2 Aufmerksamkeit gewidmet, die die Umgebung der
betroffenen Erfindung detaillierter zeigt. Daher wird gesehen werden,
dass die CPU 11 auf der Multiprozessorplatine 1 (Platine „0") mit dem Systembus 5 über ein
Adressregister 15, den Adressübersetzer 18 und den
sekundären
Cache 7 kommuniziert. Das Register 15 ist nur
eine bequeme Repräsentation
einer Adressschnittstellenschaltung in dem primären Cache der CPU 11,
durch die eine Adresse, die durch die CPU 11 erzeugt wird, übertragen
werden kann, transformiert in dem Adressübersetzer 18, als
eine Anforderung durch den sekundären Cache 7. Dieser
Zustand tritt auf, wenn Information, die durch die CPU 11 benötigt wird,
nicht zugegen ist in zumindest einem der primären Caches der CPUs 11, 12, 13, 14 auf
der Multiprozessorplatine 1. (Diejenigen, die in der Technik
bewandert sind, werden ver stehen, dass es in vielen solchen Multiprozessorkonfigurationen
für eine
CPU möglich
ist, Information von primären
Caches anderer CPUs „abzusaugen".) Entsprechende
CPUs 21, 22, 23, 24 sind zugegen
auf der Multiprozessorplatine 2 (Platine „1"). Ähnlich sind
entsprechende CPUs 31, 32, 33, 34 und 41, 42, 43, 44 jeweils
auf den Multiprozessorplatinen 3 (Platine „2"), 4 (Platine „3") zugegen. Zusätzlich sind
jeweils Register 25, 35, 45 entsprechend
zu dem Register 15 zugegen auf den Multiprozessorplatinen 2, 3, 4.
Ebenfalls sind Adressübersetzer 28, 38, 48,
entsprechend zu dem Adressübersetzer 18,
jeweils zugegen CPU0 auf jedem der Multiprozessorplatine 2, 3, 4.
-
Wie
gezeigt, sind jeweils in dem primären Cache von der CPU 11 auf
der Multiprozessorplatine 1 ein erstes und ein zweites
Zwei-Bit-Identifikationsregister 16, 17 inkorporiert.
(Es wird verstanden werden, dass die Register 16, 17 repräsentativ
sind für
irgendein geeignetes Mittel zum Etablieren einer Zwei-Bit-Cluster-Identifikation für die Multiprozessorplatine 1 und
eine Zwei-Bit-Cluster-Elementidentifikation
für die
CPU 11. Zum Beispiel kann eine Cluster/Cluster-Elementidentifikation
hartverdrahtet sein oder existieren als vier Schalter, die zu einer
kompletten Cluster-Elementnummer gesetzt werden können.) In
dem Fall von der CPU 11 in dem Multiprozessor 1 sind
die vier Stufen der Register 16, 17 jeweils auf
die logische „0"-Position gesetzt,
wodurch eine Cluster-Identifikation von „00" (Platine „0") und eine Cluster-Elementidentifikation
von „00" (CPU „0") bereitgestellt
wird. Als eine praktische Sache können die Register 16, 17 hintereinandergeschaltet
werden und können
gesetzt werden nach Systeminitialisierung unter Steuerung des Dienstprozessors
SP wie repräsentiert
durch die gestrichelte Linie 20.
-
Entsprechende
Registerpaare 26, 27; 36, 37; und 46, 47 sind
bereitgestellt auf den Multiprozessorplatinen 2, 3, 4 für jeweilige
CPU0s 21, 31, 41 und werden jeweils gesetzt,
um Cluster-Identifikationen von „01", „10" und „11" und in jedem Fall
Cluster-Elementidentifikation von „00" bereitzustellen.
-
In
der folgenden Diskussion wird die Beschreibung auf die Multiprozessorplatine 1 gerichtet sein
(Platine „0"), wobei es verstanden
wird, dass die Multiprozessorplatinen 2, 3, 4 identisch
operieren, wobei ihre abweichenden Cluster-Nummeridentifikationen berücksichtigt
werden, wie gespeichert in den Registern 26, 36, 46.
Das heißt,
die Cluster-Elementnummer für
die CPU2 33 auf der Multiprozessorplatine 3 ist „1010" (Platine „2"/CPU „2").
-
Das
30-Bit-Register 15 in dem primären Cache von der CPU 11 kann
ein Gigabyte von Adressorten spezifizieren, welches die Familiengrenze
der beispielhaften CPUs ist. Dort ist ein Wert im Reservieren eines
Teils des adressierbaren Raums im Hauptspeicher 8 für die private
Verwendung der CPUs auf jeder Multiprozessorplatine, um, unter anderem,
jeder Multiprozessorplatine zu erlauben, unter einem unabhängigen Betriebssystem
zu operieren. (Diese unabhängigen
Betriebssysteme können das
gleiche oder unterschiedliche Betriebssysteme sein.) Auf der anderen
Seite ist dort ein Bedarf zum Etablieren direkter Kommunikation
unter den Clustern und CPUs, die unter den unterschiedlichen Betriebssystemen
operieren, damit sie mit der vollen Leistung einer Cluster-Systemarchitektur
funktionieren können.
Ein Weg, wie dieses Merkmal erreicht werden kann, ist durch Bereitstellen
geteilten Speicherraums um Hauptspeicher 8.
-
Die
vorliegende Erfindung stellt den Genuss all dieser Merkmale bereit,
während
sie dem Kollektiv ebenfalls direktes und indirektes Adressieren
von mehr Speicherraum um Hauptspeicher erlaubt als die CPUs in dem
System individuell inhärent
in der Lage sind.
-
In
der folgenden Diskussion bedeutet der Ausdruck „interner Raum" den Raum, der adressierbar
ist durch die CPUs auf jeder Multiprozessorplatine, während der
Ausdruck „externer
Raum" den gesamtadressierbaren
Speicher bedeutet; d.h. den Speicherraum, der im Hauptspeicher 8 verfügbar ist. Diese
zwei Typen von Räumen
existieren bei zwei Schnittstellen des und werden abgestimmt durch
den Ad ressübersetzer 18,
der im beispielhaften System angeordnet ist in dem primären Cache
jeder CPU.
-
Das
Konzept von internen und externen Räumen und privatem und geteiltem
Speicher in dem gegenwärtigen
Kontext mag besser verstanden werden mit Bezug auf die 3.
In diesem Beispiel mag angenommen werden, dass jede CPU ein 30-Bit-Adressfeld
aufweist und daher direkt ein Gigabyte adressieren kann. Es kann
weiterhin angenommen werden, dass der verfügbare externe Raum in dem beispielhaften
Hauptspeicher 2 Gigabyte ist und dass das externe Adressfeld 32
Bit lang ist; d.h. in der Lage ist, vier Gigabytes zu adressieren.
-
Ein
Schlüsselaspekt
der vorliegenden Erfindung ist die Weise, in welcher adressierbarer
Speicher für
jede Multiprozessorplatine zugeordnet wird. Für den zugänglichen externen Speicherraum
sind als ein Resultat von Adresstransformation durch jede Multiprozessorplatine 1, 2, 3, 4 drei
Achtel des inhärent
adressierbaren internen Raums privat und eine Hälfte geteilt. Bemerkung bezüglich des
offensichtlich verbleibenden einen Achtels wird reserviert für nachstehende
Diskussion.
-
Unter
diesen Umständen
mag die Speicherzuordnung gewürdigt
werden durch Begutachtung von 3. Die Multiprozessorplatine 1 genießt 3/8 Gigabyte
Privatspeicherraum, identifiziert als 1/8-Gigabyte-Segmente P11,
P12, P13. Zusätzlich
hat die Multiprozessorplatine 1 Zugriff auf 1/2 Gigabyte
geteilten Speicherraum in 1/8-Gigabyte-Segmenten SA, SB, SC, SD. Ähnlich genießt die Multiprozessorplatine 2 3/8
Gigabyte Privatspeicherraum, identifiziert als 1/8-Gigabyte-Segmente P21, P22,
P23. Zusätzlich
hat die Multiprozessorplatine 2 Zugriff auf ½ Gigabyte
geteilten Speicherraum in 1/8-Gigabyte-Segmenten SA, SB, SC, SD.
Die internen Räume
für die
Multiprozessorplatinen 3 und 4 sind entsprechend
zugeordnet, wie gezeigt in 3.
-
Diese
interne Raumadressinformation ist an den Adressübersetzungsblock bereitgestellt,
der, wie zuvor beschrieben, in dem primären Cache jeder CPU zugegen
ist, aber zur Klarheit in 3 als ein einziger
Block separat gezeigt ist. In dem Adressübersetzungsblock ist diese
Adressinformation transformierbar gemäß der Erfindung, um externe
Raumadresssegmente zu erhalten, die verteilt sind, wie schematisch
gezeigt in 3.
-
Man
bedenke nun eine Implementierung dieses Beispiels mit Bezug auf
die 2, 4, 5, 6 und 7. 4 zeigt
die Adressbitverteilung höherer
Ordnung für
die vier Multiprozessorplatinen, für sowohl die internen als auch
die externen Raumadressen, wie sie transformiert werden durch den Adressübersetzungsblock
(z.B. den Adressübersetzer 18 in 2).
In jedem Fall sind dort drei Spalten, die jeweils die Cluster-Nummer
(bereits gesetzt durch die Register 16, 26, 36, 46; 2),
die drei signifikantesten Bits der 30-Bit-internen Adresse und die
zweiten, dritten, vierten und fünften
meist signifikanten Bits der 32-Bit-transformierten Adresse repräsentieren.
Wie detaillierter unten besprochen werden wird, ist das signifikanteste
Bit der 32-Bit-transformierten Adresse in diesem Beispiel immer
eine „0".
-
Bezugnehmend
ebenfalls auf 5 und begutachtend zuerst das
interne Adressmuster der Multiprozessorplatine 1 ist die
Cluster-Nummer vorgesetzt auf „00", die drei signifikantesten
Bits des privaten Raums sind „000", „001" und „010", und die drei signifikantesten
Bits des geteilten Raums sind „100", „101", „110" und „111 ". Es wird bemerkt
werden, dass in diesem Beispiel die Kombination „011" für
die drei signifikantesten Bits reserviert ist. Die drei internen Adressbits
höchster
Ordnung können
gehalten werden für
das Segment höherer
Ordnung des Prozessoradressfelds, und die verbleibenden Bits 3-29
können
gehalten werden für
das Segment niedrigerer Ordnung davon.
-
Da
das Adressfeld für
externe Adressen 32 Bits aufweist und der Hauptspeicher nur 2 Gigabyte speichert,
ist das signifikanteste Bit in den externen Adressen immer „0" in diesem Beispiel.
(Es kann jedoch bemerkt werden, dass dieses signifi kanteste Bit zur
Verfügung
steht, um eines von zwei kompletten Systemen zu bezeichnen, dem
Zugriff zu gewähren ist
auf einen geteilten Hauptspeicher.) Daher sind die entsprechenden
Adressen, die transformiert sind in die fünf signifikantesten Bits der
privaten externen Raumadressen, die zu transformieren sind (d.h.
Bits 1, 2, 3, 4) jeweils „00000", „00001", „00010" (oder P11, P12,
P13), und diejenigen für
die geteilten externen Raumadressen sind jeweils „00011 ", „00011 ", „01011" und „01111" (oder SA, SB, SC,
SD). Die fünf internen
Adressbits höherer
Ordnung können
gehalten werden für
das Segment höherer
Ordnung des Speicheradressfelds, und die verbleibenden Bits 5-31
können
gehalten werden für
das Segment niedrigerer Ordnung davon.
-
Für die Multiprozessorplatine 2 ist
die Cluster-Nummer vorgesetzt auf „01 ", die drei signifikantesten Bits des
privaten Raums sind wiederum „000", „001" und „010", und die drei signifikantesten
Bits des geteilten Raums sind wiederum „100", „101 ", „110" und „111 ". (Mit Ausnahme der
Cluster-Nummer ist dort kein Unterschied, und dies ist ebenfalls
wahr für die
Multiprozessorplatinen 3, 4, die jeweilige Cluster-Nummern
von „10" und „11" haben.) Die entsprechenden
Adressen, die transformiert sind in Bits 1, 2, 3, 4 der privaten
externen Raumadressen, sind jeweils „00100", „00101", „00110" (oder P21, P22, P23),
und diejenigen der geteilten externen Raumadressen sind jeweils „00011", „00011", „01011" und „01111" (oder wiederum SA,
SB, SC, SD).
-
Ähnlich werden
die internen Adressen der Multiprozessorplatine 3 und 4 jeweils
transformiert zu externen Adressen „01000" (P31), „01001" (P32), „01010" (P33) „00011" (SA), „00011" (SB), „01011" (SC), „01111" (SD) und „01100" (P41), „01101" (P42), „01110" (P43) „00011" (SA), „00011" (SB), „01011" (SC), „01111" (SD).
-
Die
Basis für
diese Transformation, die unterschiedlich ist von den privaten und
geteilten Adressen, ist nicht unmittelbar evident und benötigt weitere Erläuterung.
Zuerst wird bemerkt werden, dass das signifikanteste Bit jeder internen
privaten Adresse „0" ist, während das
signifikanteste Bit jeder internen geteilten Adresse „1" ist. In dem Fall
der privaten Adressen wird das CN jeder Mikroprozessorplatine (Cluster)
verwendet als Bits 1 und 2 der externen Adresse. Bit 1, das bekanntlich „0" ist, wird nicht
direkt verwendet in der Transformation. Bits 2 und 3 der internen Adresse
werden jeweils verwendet als Bits 3 und 4 der externen Adresse.
-
In
dem Fall der geteilten Adressen wird Bit 1 der internen Adresse,
das bekanntlich eine „1" ist, nicht direkt
in der Transformation verwendet. Bits 1 und 2 der internen Adresse
werden verwendet als Bits 1 und 2 der externen Adresse. Schließlich werden
Bits 3 und 4 der externen Adresse auf „11" gesetzt.
-
In
der obigen Diskussion soll der Ausdruck „verwendet als" nur verstanden werden
als repräsentativ
für den
Intern-zu-extern-Transformationsprozess. Die Extern-zu-intern-Transformation
kehrt den Prozess natürlich
um.
-
Es
wird nun verstanden sein, warum die „011 "-interne Adresse nicht verwendet wird
mit diesem bestimmten Adressierungsschema; es würde resultieren in doppelten
externen Adressräumen
für privaten
und geteilten Raum gemäß dem Transformationsprozess.
-
Eine
beispielhafte Transformationsvorrichtung für den Adressübersetzer 18 von
der CPU0 11 ist gezeigt in 6 und 7. 6 illustriert
diese Vorrichtung, die in dem Intern-zu-extern-Transformationsmodus
operiert, in dem eine interne Adresse, die in einer Cluster-Nummer
enthalten ist, gesendet wird an den Adressübersetzer 18 als eine
Anforderung von dem primären
Cache, gerichtet an den sekundären
Cache 7 (welcher die Anforderung natürlich an den Hauptspeicher
weiterleiten wird, wenn die angeforderte Information zu der Zeit
der Anforderung in dem sekundären
Cache nicht zugegen ist). Die interne Adresse ist daher zugegen
in dem Register 15, um als eine Eingabe an den Adressübersetzer
zu dienen in Verbindung mit der Cluster-Nummer in dem Register 16.
-
Für diese
Transformation ist Bit 0 der internen Adresse Schlüssel. Wenn
es eine „0" ist, wird die Adresse
für die
anfordernde Multiprozessorplatine als privat identifiziert, die
selbst identifiziert ist durch CN0, CN1 in dem Register 16.
Bit 0 wird durch den Inverter 55 zu einer „1" invertiert, und
der Ausgang des Inverters 55 ermöglicht daher einen Eingang
jedes der UND-Gatter 61, 63, 65, 67.
Der andere Eingang zum UND-Gatter 61 ist CN0, das daher
kopiert wird durch das ODER-Gatter 56 in Bit 1 der
externen Adresse im beispielhaften Adressübersetzerausgangsregister 54.
Der andere Eingang zum UND-Gatter 63 ist CN1, welches daher
kopiert wird durch das ODER-Gatter 57 in Bit 2 der
externen Adresse. Der andere Eingang zum UND-Gatter 65 ist Bit
1 der internen Adresse, welches daher kopiert wird über das
ODER-Gatter 58 zu Bit 3 der externen Adresse in Register 54. Ähnlich ist
der andere Eingang zum UND-Gatter 67 Bit 2 der internen
Adresse, welches daher kopiert wird über das ODER-Gatter 59 zu
Bit 4 der externen Adresse in Register 54. Die Adressbits
3-29 niedrigerer Ordnung der internen Adresse in Register 18 werden
direkt kopiert zu Bits 5-31 der externen Adresse in Register 54.
Bit 0 der externen Adresse in Register 54 ist gezwungen
auf logisch „0", da externer Raum
in dem Beispiel auf zwei Gigabytes begrenzt ist. Wie zuvor bemerkt,
ist dieses Bit verfügbar
zum Beherbergen zweier separater Systeme, die Zugriff auf den Hauptspeicher
haben.
-
Beispielhaft
annehmend, dass die Adresse, die transformiert wurde, durch den
primären
Cache von CPU0 11 geliefert wurde; d.h. CN0, CN1 sind gesetzt
auf „00" und dass Bits 0,
1, 2 der internen Adresse „010" sind. In diesem
Beispiel wird der externe Raum, der nach der Transformation durch
die Adressbits höherer
Ordnung „00010" adressiert wird, der
private 1/8-Gigablock-Privatblock sein, der in 3 als
P13 identifiziert ist.
-
In
einem anderen Beispiel sei angenommen, dass Bit 0 einer internen
Adresse, das gesendet wird an den Adressübersetzer 18, eine
logische „1" ist, die einen Ruf
an geteilten Raum anzeigt. Da Bit 0 in diesem Fall durch den Inverter 55 zu
einer logischen „0" invertiert werden
wird, werden die UND-Gatter 61, 63, 65, 67 deak tiviert.
Stattdessen werden die UND-Gatter 60, 62, 64, 66 jeweils
einen Eingang aktiviert haben als ein Resultat der logischen „1 ", die in Bit 0 des
Registers 53 zugegen ist. Der andere Eingang zu UND-Gatter 60 kommt
von Bit 1 des Registers 53, so dass das Logikniveau von
Bit 1 in der internen Adresse kopiert wird über das ODER-Gatter 56 in
Bit 1 der externen Adresse in Register 54. Der andere Eingang
zum UND-Gatter 62 kommt von Bit 2 von Register 53,
so dass das Logikniveau von Bit 2 in der internen Adresse
kopiert wird über
das ODER-Gatter 57 in
Bit 2 der externen Adresse in Register 54.
-
Die
anderen Eingänge
jeder der UND-Gatter 64, 66 sind direkt gebunden
an logisch „1 ", so dass Bits 3
und 4 der externen Adresse in Register 54 gesetzt werden
auf „1" jeweils über die
ODER-Gatter 58, 59. Wiederum wird Bit 0 der externen
Adresse in Register 54 auf „0" gezwungen aufgrund der zwei Gigabyte-Begrenzung des externen
Raums in dem Beispiel. Adressbits 3-29 niedrigerer Ordnung in der
internen Adresse werden wie zuvor direkt kopiert in Bits 5-31 der
externen Adresse.
-
Nun
sei angenommen, dass Bits 0, 1, 2 der internen Adresse, die durch
die Multiprozessorplatine 1 geliefert werden, „111" sind. In diesem
Beispiel wird der externe Raum, der nach der Transformation durch
die Adressbits höherer
Ordnung „01111" adressiert wird,
der 1/8-Gigabyte-geteilte Block sein, der in 3 als SD
identifiziert ist.
-
In
dem Beispiel wird die CPU auf einer gegebenen Multiprozessorplatine,
die eine Anforderung an den sekundären Cache 7 macht,
konventionell verfolgt durch den sekundären Cache. Daher wird der Inhalt
des Registers 17, der die Cluster-Elementnummer enthält für diesen Zweck an den sekundären Cache
gesendet.
-
7 illustriert
den Adressübersetzer 18, der
in dem Extern-zu-intern-Adresstransformationsmodus
operiert. Eine externe Adresse von dem sekundären Cache wird platziert in
Register 68, das repräsentativ
ist für
jede geeignete Logik für
diesen Zweck. Bit 0 der externen Adresse wird nicht verwendet aufgrund
der Zwei-Gigabyte-Kapazität
des Hauptspeichers. Bits 1 und 2 werden angelegt an entsprechende
Eingänge
zum Multiplexerpaar 84, 85, das selektiv Eingaben
zu Register 86 treibt, welches repräsentativ ist für irgendeine
geeignete Logik zum Koppeln des primären Caches mit dem Adressübersetzer.
Zusätzlich
werden Bits 1 und 2 in dem Register 68 angelegt als jeweilige
Eingänge
zu Vergleichern 81, 82, die CN0 und CN1 in Register 16 als ihre
jeweiligen zweiten Eingänge
haben. Wenn dort eine Übereinstimmung
in beiden Vergleichern 81, 82 ist, bestätigt dieser
Zustand, dass die Cluster-Nummer „00" das Ziel der externen Adresse ist,
die identifiziert ist als privater Raum, der reserviert ist für eine von
Multiprozessorplatine 1 (Platine „0"), wie definiert durch den Zustand von
Bits 3 und 4 der externen Adresse; d.h. wenn eines oder beide der
Bits 3 und 4 logisch „0" sind. Mit beiden
Vergleichern 81, 82, anzeigend einen Vergleichszustand,
werden zwei der drei Eingänge
zu dem UND-Gatter 83 aktiviert. Der dritte Eingang zum
UND-Gatter 83 wird
durch den Ausgang vom UND-Gatter 89 getrieben, das wiederum
getrieben wird durch die zwei Ausgänge von Vergleichern 87, 88.
Erste jeweilige Eingänge
zu den Vergleichern 87, 88 sind CM0, CM1 von Register 17, während die
zweiten jeweiligen Eingänge
dazu die Cluster-Elementnummer sind, die empfangen wird von dem
sekundären
Cache, der zuvor konventionell aufgezeichnet hat, dass die CPU0
in dem lokalen Cluster die ursprüngliche
Anforderung gemacht hat zum Zugreifen auf den Speicherblock, der
durch die externe Adresse identifiziert ist. Daher, wenn dort ein Vergleichzustand
in all den Vergleichern 81, 82, 87, 88 ist,
ist das UND-Gatter 83 voll aktiviert, um dem Multiplexer 84 zu
ermöglichen,
die transformierte Extern-zu-intern-Adresse zum Register 86 zu übeitragen.
-
Da
in dem Beispiel privater Raum angezeigt wird, ist das eine oder
das andere der Bits 3 und 4 im Register 68 „0", und das UND-Gatter 70 ist
deaktiviert, so dass sein Ausgang „0" ist, und der Ausgang des Inverters 71 ist „1 ". Dieser Zustand
aktiviert das UND-Gatter 72 zum Transferieren einer logischen „0", die an einem ihrer
Eingänge
zugegen ist, durch ODER-Gatter 78, durch Multiplexer 84 und
in Bit 0 von Register 86. Ahnlich aktiviert der Ausgang
vom Inverter 71 das UND-Gatter 74 zum
Transferieren von Bit 3 in Register 68 durch das ODER-Gatter 79, den
Multiplexer 84 und in Bit 1 von Register 86. Der Ausgang
vom Inverter 71 aktiviert ebenfalls das UND-Gatter 76 zum
Transferieren von Bit 4 in Register 68 durch das ODER-Gatter 80,
den Multiplexer 84 und in Bit 2 von Register 86.
Schließlich
werden Bits 5-31 in Register 86 transferiert durch Multiplexer 84 zu
Bits 3-29 in Register 86, um die Extern-zu-intern-Transformation
der Adressinformation zu vervollständigen und die Auswahl der
richtigen CPU in dem richtigen Cluster zum Empfang angeforderter
Information in dem privaten Speichergebiet des Massenspeichers.
-
Wenn
beide Bits 3 und 4 der externen Adresse „1" sind, ist eine geteilte Adresse angezeigt,
und das UND-Gatter 70 ist voll aktiviert. Die resultierende „1" an dem Ausgang vom
UND-Gatter 70 aktiviert einen Eingang jedes der UND-Gatter 73, 75, 77, 90.
Da der Hinweis ist, dass die Information nicht privat ist, gibt
es dort keinen Bedarf, die Cluster-Nummer zu betrachten. Daher,
wenn die Cluster-Elementnummer
von dem sekundären
Cache wie zuvor beschrieben CPU0 identifiziert, aktiviert der Ausgang
vom UND-Gatter 89 voll das UND-Gatter 90 zum Aktivieren
des Multiplexers 85 zum Transferieren von Eingängen dazu
in das Register 86.
-
Da
der andere Eingang zum UND-Gatter 73 getrieben wird durch
eine logische „1 ", wird eine „1" kopiert in Bit 0
von Register 86 über
das ODER-Gatter 78 und den Multiplexer 85 zum
Bereitstellen des internen Adressindikators für geteilten Raum. Die anderen
Eingänge
zu den UND-Gattern 75, 76 sind jeweils von Bits
1, 2 in Register 68. Als ein Resultat werden die Inhalte
von Bits 1, 2 in Register 68 kopiert in Bits 1, 2 von Register 86 jeweils über die ODER-Gatter 79, 80 und
den Multiplexierer 85. Bits 5-31 der externen Adresse in
Register 68 werden kopiert über den Multiplexer 85 in
Bits 3-29 der internen Adresse in Register 86 als die Adressbits
niedrigerer Ordnung, die den internen und externen Adressen gemein
sind.
-
Es
wird nun verstanden werden in der beispielhaften Ausführungsform
der Erfindung, die in den 6 und 7 gezeigt
ist, dass jede Multiprozessorplatine (Cluster) die Kapazität verliert,
1/8 Gigabyte des einen Gigabytes zu adressieren, das inhärent adressierbar
ist durch ein 30-Bit-Adressfeld. Was jedoch gewonnen wird, ist die
Fähigkeit,
direkt zu kommunizieren unter all den Multiprozessorplatinen über den
geteilten Raum. Weiterhin wird dort die Fähigkeit jeder Multiprozessorplatine
erreicht, indirekt den privaten Raum einer anderen Multiprozessorplatine
zu adressieren durch Senden einer geeigneten Anforderung über geteilten
Raum, was darin resultiert, dass die gewünschte Information verschoben
wird von privatem Raum in geteilten Raum. Zusätzliche wird der zuvor besprochene
Vorteil erreicht, dass jeder Multiprozessorplatine erlaubt wird,
unter ihrem eigenen Betriebssystem zu operieren. Immer noch weiter
wird die Fähigkeit
erleichtert und verbessert, die Vorteile des Betreibens separater
Betriebssysteme in jedem Cluster zu genießen.
-
Das
Beispiel von 3-7 inklusive
ist nur eines von vielen Adresstransformationen, die gemäß der vorliegenden
Erfindung eingerichtet werden können.
Man bedenke z.B. kurz ein System, in dem jede Multiprozessorplatine
wie zuvor inhärent
direkt ein Gigabyte adressieren kann, während der Hauptspeicher 4 Gigabyte
speichern kann. Dann würde
Bit 0 der externen Adresse ins Spiel kommen, und die Logik von 6 und 7 würde dementsprechend angepasst
und erweitert werden. In einer einfachen Konfiguration kann die
Cluster-Nummer jeder Multiprozessorplatine erweitern werden auf
drei Bits, mit dem signifikantesten Cluster-Nummerbit kopiert zu und von Bit 0 der
externen Adresse. Diese Anordnung wird die Nummer von vier Multiprozessor-Clustern
erweitern, die beherbergt werden können, wie auch den direkt und
indirekt adressierbaren externen Speicher. Alternativ können die
Cluster auf zwei Multiprozessoren pro Cluster reduziert werden (d.h.
zwei Cluster pro Multiprozessorplatine in jedem beispielhaften System).
Das Resultat wird sein, mehr externen Raum als privaten Raum zu
benutzen, wobei jeder private Raumblock durch weniger Prozessoren verwendet
wird. Daher wird es verstanden werden, dass die Adresstransformationen,
die gemäß der Erfindung verfügbar sind,
viele sind und dass das vorhergehende Beispiel, das im Detail behandelt
wurde, nur repräsentativ
ist für
eine, die gefunden wurde besonders geeignet zu sein für ein spezifisches
System, in dem der verfügbare
externe Raum zwei Gigabyte war, während die Prozessoren beschränkt sind, direkt
ein Gigabyte zu adressieren. Es wurde ebenfalls zuvor erwähnt, dass
Bit 0 der externen Adresse verwendet werden kann als ein Schalter
zwischen zwei separaten Multi-Cluster-Systemen, die auf einen gemeinsamen
Massenspeicher zugreifen.