DE69635865T2 - Adressentransformation in einem cluster-computersystem - Google Patents

Adressentransformation in einem cluster-computersystem Download PDF

Info

Publication number
DE69635865T2
DE69635865T2 DE69635865T DE69635865T DE69635865T2 DE 69635865 T2 DE69635865 T2 DE 69635865T2 DE 69635865 T DE69635865 T DE 69635865T DE 69635865 T DE69635865 T DE 69635865T DE 69635865 T2 DE69635865 T2 DE 69635865T2
Authority
DE
Germany
Prior art keywords
address field
bits
cluster
processor
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69635865T
Other languages
English (en)
Other versions
DE69635865D1 (de
Inventor
W. Russell Glendale GUENTHNER
Leonard Scottsdale RABINS
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bull HN Information Systems Inc
Original Assignee
Bull HN Information Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bull HN Information Systems Inc filed Critical Bull HN Information Systems Inc
Publication of DE69635865D1 publication Critical patent/DE69635865D1/de
Application granted granted Critical
Publication of DE69635865T2 publication Critical patent/DE69635865T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache

Description

  • 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.

Claims (6)

  1. Cluster-Computersystem, umfassend: A) eine Mehrzahl von Clustern (14), jeder der Cluster einschließend: 1) eine Mehrzahl von Prozessoren (1114), jeder der Prozessoren hat inhärente Begrenzungen bezüglich des Speicherbereichs, der direkt adressierbar ist durch ein Prozessoradressfeld, das Prozessoradressfeld ist aufgeteilt in Segmente höherer und niedrigerer Ordnung, jeder der Prozessoren schließt ein: a) einen primären Cache (11C14C); und b) einen Adressübersetzter (11A14A); und 2) einen sekundären Cache (7); B) einen Speicher (8), der eine Kapazität aufweist, die den Bereich überschreitet, den jeder der Prozessoren inhärent in der Lage ist direkt zu adressieren, der Speicher ist adressierbar durch ein Speicheradressfeld, das Speicheradressfeld ist größer als das Prozessoradressfeld, das Speicheradressfeld ist aufgeteilt in Segmente höherer und niedrigerer Ordnung; C) Mittel zum Herstellen einer Cluster-Nummer für jeden der Cluster; D) Mittel (5, 9), die die Mehrzahl von Clustern über dem sekundären Cache an den Speicher (8) koppeln; und E) jeder der Adressübersetzter (11A14A) in jedem der Prozessoren (1114) in jedem der Cluster (14) ist gekoppelt zwischen dem primären Cache (11C14C) seines Prozessors und dem sekundären Cache seines Clusters, der Adressübersetzter schließt erste Adress umsetzungslogik ein, reagierend auf Prozessoradressfeld und Cluster-Nummerninformation in dem primären Cache seines Prozessors, die erste Übersetzungslogik umfasst Mittel, die reagieren auf den digitalen Zustand eines ersten vorbestimmten Indikatorbits in dem Segment höherer Ordnung des Prozessoradressfeldes durch Ausführen einer von zwei Adresstransformationen; 1) wenn das erste vorbestimmte Indikatorbit ein erster digitaler Wert ist: a) Zwingen der beiden Bits niedrigster Ordnung des Segments höherer Ordnung des Speicheradressfeldes zu einem ersten Logikniveau; b) Kopieren der beiden Bits niedrigster Ordnung des Segments höherer Ordnung des Prozessoradressfeldes zu zwei Bits höherer Ordnung des Segments höherer Ordnung des Speicheradressfeldes; und c) Kopieren des Inhalts des Segments niedrigerer Ordnung des Prozessoradressfeldes zu dem Segment niedrigerer Ordnung des Speicheradressfeldes; hierdurch spezifizierend ein Speichergebiet, das durch all die Cluster adressierbar ist; und 2) wenn das erste vorbestimmte Indikatorbit ein zweiter digitaler Wert ist: a) Kopieren der beiden Bits niedrigster Ordnung des Segments höherer Ordnung des Prozessoradressfeldes zu den beiden Bits niedrigster Ordnung des Segments höherer Ordnung des Speicheradressfeldes; b) Kopieren der Cluster-Nummer zu zwei Bits höherer Ordnung des Segments höherer Ordnung des Speicheradressfeldes; und c) Kopieren des Inhalts des Segments niedrigerer Ordnung des Prozessoradressfeldes zu dem Segment niedrigerer Ordnung des Speicheradressfeldes; hierdurch spezifizierend ein Speichergebiet, das nur durch das Cluster adressierbar ist, das durch die Cluster-Nummer identifiziert ist.
  2. Cluster-Computersystem, umfassend: A) eine Mehrzahl von Clustern (14), jeder der Cluster einschließend: 1) eine Mehrzahl von Prozessoren (1114), jeder der Prozessoren hat inhärente Begrenzungen bezüglich des Speicherbereichs, der direkt adressierbar ist durch ein Prozessoradressfeld, das Prozessoradressfeld ist aufgeteilt in Segmente höherer und niedrigerer Ordnung, jeder der Prozessoren schließt ein: a) einen primären Cache (11C14C); und b) einen Adressübersetzter (11A14A); und 2) einen sekundären Cache (7); B) einen Speicher (8), der eine Kapazität aufweist, die den Bereich überschreitet, den jeder der Prozessoren inhärent in der Lage ist direkt zu adressieren, der Speicher ist adressierbar durch ein Speicheradressfeld, das Speicheradressfeld ist größer als das Prozessoradressfeld, das Speicheradressfeld ist aufgeteilt in Segmente höherer und niedrigerer Ordnung; C) Mittel zum Herstellen einer Cluster-Nummer für jeden der Cluster; D) Mittel (5, 9), die die Mehrzahl von Clustern über dem sekundären Cache an den Speicher (8) koppeln; und E) jeder der Adressübersetzter (11A14A) in jedem der Prozessoren (1114) in jedem der Cluster (14) ist gekoppelt zwischen dem primären Cache (11C14C) seines Prozessors und dem sekundären Cache seines Clusters, der Adressübersetzter schließt zweite Ad ressübersetzungslogik ein, die reagiert auf Speicheradressfeldinformation, die zweite Übersetzungslogik umfasst Mittel, die auf den digitalen Zustand eines vorbestimmten Indikatorbits in dem Speicheradressfeld reagieren, welche vorbestimmte Indikatorbits von einer niedrigeren Ordnung sind als das signifikanteste Bit davon, durch Ausführen von einer von zwei Adresstransformationen; 1) wenn die vorbestimmten Indikatorbits ein erster digitaler Wert sind: a) Zwingen eines vorbestimmten Bits des Segments höherer Ordnung des Prozessoradressfeldes zu einem ersten Logikniveau; b) Kopieren von zwei Bits höherer Ordnung zu dem Segment höherer Ordnung des Speicheradressadressfeldes zu den zwei Bits niedrigster Ordnung des Segments höherer Ordnung des Prozessoradressfeldes; und c) Kopieren des Inhalts des Segments niedrigerer Ordnung des Speicheradressfeldes zu dem Segment niedrigerer Ordnung des Prozessoradressfeldes; hierdurch spezifizierend ein Speichergebiet, das Informationen umfasst, die für alle Cluster zugänglich sind; und 2) wenn eines der vorbestimmten Indikatorbits einen zweiten digitalen Wert aufweist: a) Kopieren der beiden Bits niedrigster Ordnung des Segments höherer Ordnung des Speicheradressfeldes zu den beiden Bits niedrigster Ordnung des Segments höherer Ordnung des Prozessoradressfeldes; b) Kopieren von Bits höherer Ordnung, die eine Cluster-Nummer repräsentieren, in dem Gebiet höherer Ordnung des Speicheradressfeldes zu der Cluster-Nummer der gemeinsamen Cluster-Schnittstelle; und c) Kopieren des Inhalts des Segments niedrigerer Ordnung des Speicheradressfeldes zu dem Segment niedrigerer Ordnung des Prozessoradressfeldes; hierdurch spezifizierend ein Speichergebiet, das Informationen beinhaltet, die nur zugänglich sind für den Cluster, der durch die Cluster-Nummer spezifiziert ist.
  3. Cluster-Computersystem nach Anspruch 1, worin: der Adressübersetzer weiter zweite Adressübersetzungslogik einschließt, die reagiert auf Speicheradressfeldinformation, die zweite Übersetzungslogikmittel umfasst, die reagieren auf den digitalen Zustand von zweitem und drittem vorbestimmten Indikatorbits in dem Speicheradressfeld, welche zweiten und dritten vorbestimmten Indikatorbits von einer niedrigeren Ordnung sind als das signifikanteste Bit davon, durch Ausführen von einer von zwei Adresstransformationen; 1) wenn eines von den zweiten und dritten vorbestimmten Indikatorbits einen ersten digitalen Wert aufweist: a) Zwingen eines vorbestimmten Bits des Segments höherer Ordnung des Prozessoradressfeldes auf ein erstes Logikniveau; b) Kopieren von zwei Bits höherer Ordnung von dem Segment höherer Ordnung des Speicheradressfeldes zu den zwei Bits niedrigster Ordnung des Segments höherer Ordnung des Prozessoradressfeldes; und c) Kopieren des Inhalts des Segments niedrigerer Ordnung des Speicheradressfeldes zu dem Segment niedrigerer Ordnung des Prozessoradressfeldes; 2) wenn eines von den zweiten und dritten vorbestimmten Indikatorbits einen zweiten digitalen Wert aufweist: a) Kopieren der beiden Bits niedrigster Ordnung des Segments höherer Ordnung des Speicheradressfeldes zu den beiden Bits niedrigster Ordnung des Segments höherer Ordnung des Prozessoradressfeldes; b) Kopieren von Bits höherer Ordnung, die eine Cluster-Nummer repräsentieren, in dem Gebiet höherer Ordnung des Speicheradressfeldes zu der Cluster-Nummer der gemeinsamen Cluster-Schnittstelle; und c) Kopieren des Inhalts des Segments niedrigerer Ordnung des Speicheradressfeldes zu dem Segment niedrigerer Ordnung des Prozessoradressfeldes; hierdurch spezifizierend ein Speichergebiet, das Informationen beinhaltet, die nur zugänglich sind für den Cluster, der durch die Cluster-Nummer spezifiziert ist.
  4. Cluster-Computersystem nach einem der Ansprüche 1 bis 3, in dem das Segment höherer Ordnung des Prozessoradressfeldes drei Bits umfasst und in dem das Segment höherer Ordnung im Speicheradressfeld zumindest fünf Bits umfasst.
  5. Cluster-Computersystem nach Anspruch 3, in dem das signifikanteste Bit des Segments höherer Ordnung des Prozessoradressfeldes eingesetzt wird als das erste vorbestimmte Indikatorbit, und in dem die zwei am wenigstens signifikanten Bits des Segments höherer Ordnung des Speicheradressfeldes eingesetzt werden als das zweite und dritte vorbestimmte Indikatorbit.
  6. Cluster-Computersystem nach Anspruch 5, welches weiter Mittel zur Herstellung einer Cluster-Teilnehmernummer für jeden Prozessor in jedem Cluster umfasst, und in dem die Cluster-Teilnehmernummer eines gegebe nen Prozessors gesendet wird an den sekundären Cache im Cluster, in dem der gegebene Prozessor anwesend ist, wenn eine gegebene Speicheranfrage durch den gegebenen Prozessor gemacht wird, derart, dass der zweite Cache in dem Cluster, in dem der gegebene Prozessor zugegen ist, identifizieren kann, welcher von den Prozessoren in seinem Cluster eine Antwort auf die gegebene Speicheranfrage zu machen hat.
DE69635865T 1995-10-06 1996-10-04 Adressentransformation in einem cluster-computersystem Expired - Lifetime DE69635865T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/540,106 US5590301A (en) 1995-10-06 1995-10-06 Address transformation in a cluster computer system
US540106 1995-10-06
PCT/US1996/015937 WO1997013191A1 (en) 1995-10-06 1996-10-04 Address transformation in a cluster computer system

Publications (2)

Publication Number Publication Date
DE69635865D1 DE69635865D1 (de) 2006-04-27
DE69635865T2 true DE69635865T2 (de) 2006-09-14

Family

ID=24154013

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69635865T Expired - Lifetime DE69635865T2 (de) 1995-10-06 1996-10-04 Adressentransformation in einem cluster-computersystem

Country Status (6)

Country Link
US (1) US5590301A (de)
EP (1) EP0855057B1 (de)
JP (1) JPH11512857A (de)
CA (1) CA2211083C (de)
DE (1) DE69635865T2 (de)
WO (1) WO1997013191A1 (de)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08235141A (ja) * 1995-02-28 1996-09-13 Kofu Nippon Denki Kk 情報処理システム
US5884098A (en) * 1996-04-18 1999-03-16 Emc Corporation RAID controller system utilizing front end and back end caching systems including communication path connecting two caching systems and synchronizing allocation of blocks in caching systems
US5940870A (en) * 1996-05-21 1999-08-17 Industrial Technology Research Institute Address translation for shared-memory multiprocessor clustering
US5933857A (en) * 1997-04-25 1999-08-03 Hewlett-Packard Co. Accessing multiple independent microkernels existing in a globally shared memory system
AU8181198A (en) * 1997-07-02 1999-01-25 Creative Technology Ltd Audio effects processor having decoupled instruction execution and audio data sequencing
JP3866426B2 (ja) * 1998-11-05 2007-01-10 日本電気株式会社 クラスタ計算機におけるメモリ障害処理方法及びクラスタ計算機
US6314501B1 (en) * 1998-07-23 2001-11-06 Unisys Corporation Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory
JP3976432B2 (ja) * 1998-12-09 2007-09-19 エヌイーシーコンピュータテクノ株式会社 データ処理装置およびデータ処理方法
US6801937B1 (en) 2000-05-31 2004-10-05 International Business Machines Corporation Method, system and program products for defining nodes to a cluster
US7769823B2 (en) * 2001-09-28 2010-08-03 F5 Networks, Inc. Method and system for distributing requests for content
US6868483B2 (en) * 2002-09-26 2005-03-15 Bull Hn Information Systems Inc. Balanced access to prevent gateword dominance in a multiprocessor write-into-cache environment
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7664909B2 (en) 2003-04-18 2010-02-16 Nextio, Inc. Method and apparatus for a shared I/O serial ATA controller
US7836211B2 (en) 2003-01-21 2010-11-16 Emulex Design And Manufacturing Corporation Shared input/output load-store architecture
US7698483B2 (en) 2003-01-21 2010-04-13 Nextio, Inc. Switching apparatus and method for link initialization in a shared I/O environment
US7617333B2 (en) 2003-01-21 2009-11-10 Nextio Inc. Fibre channel controller shareable by a plurality of operating system domains within a load-store architecture
US8032659B2 (en) * 2003-01-21 2011-10-04 Nextio Inc. Method and apparatus for a shared I/O network interface controller
US7953074B2 (en) 2003-01-21 2011-05-31 Emulex Design And Manufacturing Corporation Apparatus and method for port polarity initialization in a shared I/O device
US7046668B2 (en) * 2003-01-21 2006-05-16 Pettey Christopher J Method and apparatus for shared I/O in a load/store fabric
US7917658B2 (en) 2003-01-21 2011-03-29 Emulex Design And Manufacturing Corporation Switching apparatus and method for link initialization in a shared I/O environment
US8346884B2 (en) 2003-01-21 2013-01-01 Nextio Inc. Method and apparatus for a shared I/O network interface controller
US8102843B2 (en) 2003-01-21 2012-01-24 Emulex Design And Manufacturing Corporation Switching apparatus and method for providing shared I/O within a load-store fabric
US7103064B2 (en) * 2003-01-21 2006-09-05 Nextio Inc. Method and apparatus for shared I/O in a load/store fabric
JP2007115223A (ja) * 2005-09-20 2007-05-10 Sharp Corp プロセッサおよびマルチプロセッサ構成方法
TWI301270B (en) * 2006-06-30 2008-09-21 Winbond Electronics Corp Semiconductor memory and circuit and method of decoding address for the same
CN103608792B (zh) * 2013-05-28 2016-03-09 华为技术有限公司 支持多核架构下资源隔离的方法及系统
WO2016159765A1 (en) * 2015-03-27 2016-10-06 Recore Systems B.V. Many-core processor architecture and many-core operating system
US20170031601A1 (en) * 2015-07-30 2017-02-02 Kabushiki Kaisha Toshiba Memory system and storage system
CN112804335B (zh) * 2021-01-18 2022-11-22 中国邮政储蓄银行股份有限公司 数据处理方法、装置、计算机可读存储介质和处理器

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5197130A (en) * 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US5265235A (en) * 1990-11-30 1993-11-23 Xerox Corporation Consistency protocols for shared memory multiprocessors
JPH04246745A (ja) * 1991-02-01 1992-09-02 Canon Inc 情報処理装置及びその方法
US5394555A (en) * 1992-12-23 1995-02-28 Bull Hn Information Systems Inc. Multi-node cluster computer system incorporating an external coherency unit at each node to insure integrity of information stored in a shared, distributed memory
WO1995025306A2 (en) * 1994-03-14 1995-09-21 Stanford University Distributed shared-cache for multi-processors

Also Published As

Publication number Publication date
EP0855057A1 (de) 1998-07-29
DE69635865D1 (de) 2006-04-27
JPH11512857A (ja) 1999-11-02
EP0855057A4 (de) 1999-12-08
EP0855057B1 (de) 2006-03-01
CA2211083C (en) 2003-05-20
US5590301A (en) 1996-12-31
CA2211083A1 (en) 1997-04-10
WO1997013191A1 (en) 1997-04-10

Similar Documents

Publication Publication Date Title
DE69635865T2 (de) Adressentransformation in einem cluster-computersystem
DE2226382C3 (de) Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern
DE2227882C2 (de) Virtuelle Speicheranordnung
DE3932675C2 (de)
DE602005003987T2 (de) Verfahren zur Programmierung einer System auf Chip DMA Steuerung, sowie ein System auf Chip dafür.
DE2807476C2 (de) Speichereinrichtung mit mehreren virtuellen Adreßräumen
DE2235841C2 (de) Datenverarbeitungsanlage mit Speichersteuerung für mindestens einen Prozessor und diesen zugeordneten Pufferspeichern
DE2350884C2 (de) Adreßumsetzungseinheit
DE69734129T2 (de) Hierarchisches Datenverarbeitungssystem mit symetrischen Multiprozessoren
DE2556661A1 (de) Steuerschaltung mit adressenerweiterung
DE102006032832A1 (de) Netzwerksystem und Verfahren zur Steuerung verteilter Speicher
DE3224034A1 (de) Mehrprozessorensystem
DE2241257B2 (de) Datenverarbeitende Anlage
DE10232926A1 (de) Cachesystem mit Leitungsgruppen und mit Kohärenz sowohl für einzelne Leitungen als auch Gruppen von Leitungen
DE10002120A1 (de) Logikstruktur eines Adressumsetzpuffers
DE2758829A1 (de) Multiprozessor-datenverarbeitungssystem
DE2710477C2 (de)
DE3043012A1 (de) Einrichtung zum unabhaengigen betrieb mehrerer untereinheiten in einem informationsverarbeitungssystem durch verschiedene benutzer
DE102021108478A1 (de) System und Verfahren zur Cache-Verzeichnis-TCAM-Fehlererkennung und - Korrektur
EP0265636A1 (de) Multiprozessor mit mehreren mit Cache-Speichern ausgerüsteten Prozessoren und einem gemeinsamen Speicher
CH495584A (de) Datenverarbeitungsanlage
DE19905541B4 (de) Verfahren zum Steuern des Speicherzugriffs in einer Maschine mit einem Speicher mit ungleichmäßigem Zugriff und Maschine zur Ausführung eines solchen Verfahrens
DE2717700C2 (de) Speicherzugriffsanordnung
DE2847737C2 (de) Schaltung zur Umsetzung virtueller Adressen in eine reelle Adresse von größerer Länge
EP1675010A2 (de) Verfahren zur Aktualisierung von Einträgen von Adressumsetzpuffern in einem Mehrprozessor-Computersystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition