DE69734129T2 - Hierarchisches Datenverarbeitungssystem mit symetrischen Multiprozessoren - Google Patents

Hierarchisches Datenverarbeitungssystem mit symetrischen Multiprozessoren Download PDF

Info

Publication number
DE69734129T2
DE69734129T2 DE69734129T DE69734129T DE69734129T2 DE 69734129 T2 DE69734129 T2 DE 69734129T2 DE 69734129 T DE69734129 T DE 69734129T DE 69734129 T DE69734129 T DE 69734129T DE 69734129 T2 DE69734129 T2 DE 69734129T2
Authority
DE
Germany
Prior art keywords
transaction
repeater
partition
read
local
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
DE69734129T
Other languages
English (en)
Other versions
DE69734129D1 (de
Inventor
Erik E. Palo Alto Hagersten
Mark D. Hill
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems 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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Application granted granted Critical
Publication of DE69734129D1 publication Critical patent/DE69734129D1/de
Publication of DE69734129T2 publication Critical patent/DE69734129T2/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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0692Multiconfiguration, e.g. local and global addressing
    • 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

Description

  • Die vorliegende Erfindung bezieht sich auf das Gebiet der symmetrischen Parallelverarbeitungssysteme und insbesondere auf ein symmetrisches Parallelverarbeitungssystem mit einer hierarchischen Architektur.
  • Computersysteme mit Parallelverarbeitung enthalten zwei oder mehrere Prozessoren, die verwendet werden können, um Berechnungsaufgaben durchzuführen. Eine besondere Berechnungsaufgabe kann auf einem Prozessor durchgeführt werden, während andere Prozessoren damit nicht zusammenhängende Berechnungsaufgaben durchführen. Alternativ können Bestandteile einer bestimmten Berechnungsaufgabe auf mehrere Prozessoren verteilt werden, um die Zeit, die benötigt wird, eine Berechnungsaufgabe als Ganzes auszuführen, zu verkürzen. Allgemein gesprochen ist ein Prozessor eine Einrichtung, die dafür ausgelegt ist, eine Operation auf einem oder mehreren Operanden auszuführen um ein Ergebnis zu erzeugen. Die Operation wird durchgeführt als Antwort auf einen Befehl der von dem Prozessor ausgeführt wird.
  • Eine gängige Architektur in handelsüblichen Computersystemen mit Parallelverarbeitung ist die symmetrische Mehrprozessor-(SMP)Architektur. Typischerweise weist ein SMP-Computersystem mehrere Prozessoren auf, die über eine Cache-Hierarchie an einen gemeinsam verwendeten Bus angeschlossen sind. Zusätzlich ist an den Bus ein Speicher angeschlossen, der von den Prozessoren in dem System gemeinsam verwendet wird. Der Zugriff auf eine beliebige bestimmte Speicherstelle innerhalb des Speichers erfolgt in einem ähnlichen Zeitumfang wie der Zugriff auf eine andere beliebige Speicherstelle. Da auf jede Stelle in dem Speicher auf die gleiche Weise zugegriffen werden kann, wird diese Struktur häufig als eine gleichförmige Speicher-Architektur(UMA) bezeichnet.
  • Prozessoren sind häufig mit internen Caches ausgestaltet und einer oder mehrere Caches sind üblicherweise in der Cache-Hierarchie zwischen den Prozessoren und dem gemeinsam verwendeten Bus in einem SMP-Computersystem enthalten. Mehrfache Kopien von Daten, die auf einer bestimmten Hauptspeicheradresse angesiedelt sind, können in diesen Caches gespeichert werden. Um das Modell des gemeinsam verwendeten Speichers aufrecht zu erhalten, in dem zu irgendeinem gegebenen Zeitpunkt eine bestimmte Adresse genau einen Datenwert speichert, verwenden Computersysteme mit gemeinsam verwendetem Bus Cachekohärenz. Allgemein gesprochen ist eine Operation kohärent, wenn die Auswirkungen der Operation auf die an einer bestimmten Speicheradresse gespeicherten Daten sich in jeder Kopie der Daten innerhalb der Cache-Hierarchie wieder finden. Wenn beispielsweise Daten, die an einer bestimmten Speicheradresse gespeichert sind, aktualisiert werden, kann die Aktualisierung den Caches, die die Kopien der vorhergehenden Daten speichern, zugeführt werden. Alternativ können die Kopien der vorhergehenden Daten in den Caches ungültig gemacht werden, so daß ein nachträglicher Zugriff auf bestimmte Speicheradressen bewirkt, daß die aktualisierte Kopie von dem Hauptspeicher übertragen wird. Für Systeme mit gemeinsam verwendetem Bus wird üblicherweise ein Nachforschungs-Bus-Protokoll eingesetzt. Jede kohärente Transaktion, die über einen gemeinsam verwendeten Bus ausgeführt wird, wird geprüft (oder „ausspioniert") gegenüber Daten in den Caches. Wenn eine Kopie der betroffenen Datei gefunden wird, kann der Status der Cachezeile, die die Daten enthält, als Antwort auf die kohärente Transaktion aktualisiert werden.
  • Unglücklicherweise leiden Architekturen mit gemeinsam verwendetem Bus an verschiedenen Nachteilen, die ihre Brauchbarkeit für Computersysteme mit Parallelverarbeitung einschränken. Ein Bus ist ausgelegt für eine Spitzenbandbreite (zum Beispiel die Anzahl an Bytes/Sekunde, die über den Bus übertragen werden können). Wenn zusätzliche Prozessoren an dem Bus angeschlossen werden, kann die Bandbreite, die benötigt wird um die Prozessoren mit Daten und Befehlen zu versorgen, die maximale Bandbreite des Busses überschreiten. Da einige Prozessoren gezwungen sind auf eine verfügbare Busbandbreite zu warten, leidet die Leistungsfähigkeit des Computersystems, wenn der Bedarf der Prozessoren an Bandbreite die verfügbare Busbandbreite übersteigt.
  • Zusätzlich kann das Anschließen von mehreren Prozessoren an einen gemeinsam verwendeten Bus die kapazitive Last erhöhen und sogar dazu führen, daß die physikalische Länge des Busses größer gemacht werden muß. Die erhöhte kapazitive Last und die vergrößerte Länge des Busses erhöhen die Verzögerung beim Durchlauf eines Signals über den Bus. Aufgrund der erhöhten Durchlaufverzögerung kann es länger dauern, die Transaktionen durchzuführen. Deswegen kann die maximale Bandbreite des Busses abnehmen, wenn mehr Prozessoren angeschlossen werden.
  • Diese Probleme vergrößern sich weiter bei der fortschreitenden Erhöhung der Betriebsfrequenz und Leistung der Prozessoren. Die erhöhte Leistung, die durch die höhere Frequenz und weiter fortgeschrittene Prozessor-Mikroarchitekturen ermöglicht wird, resultieren in höheren Bandbreitenanforderungen als bei früheren Prozessorgenerationen, selbst bei der gleichen Anzahl an Prozessoren. Deswegen könnten Busse, die früher mit einer ausreichenden Bandbreite für Computersysteme mit Parallelverarbeitung ausgestattet waren, für ein vergleichbares Computersystem, das Hochleistungsprozessoren verwendet, unzureichend sein.
  • Was gewünscht ist, ist ein Busaufbau, der die Bandbreitenanforderungen eines Multiprozessorensystems mit vielen Hochleistungsprozessoren und einem relativ großem räumlichen Abstand, der die mehreren Prozessoren trennt, unterstützt.
  • Ein Artikel von Savo Savic et al. mit dem Titel „Improved RMS for the PC Environment", veröffentlicht in Microprocessors and Microsystems, Bd. 19, Nr. 10, Dec 1995, Seiten 609–619, beschreibt ein Computersystem mit reflective Memory (RM), in dem eine Vielzahl von Knoten über einen RM-Bus verbunden sind. Jeder Knoten enthält einen Prozessor, einen Cache und eine RM-Platine mit einem lokalen Speicher, der über einen Systembus verbunden ist. Der lokale Speicher besteht aus 8-kbyte-Segmenten. Jedes Segment kann auf einem reflektiven, gemeinsam verwendeten Raum abgebildet sein oder nicht abgebildet sein (privat). Daten innerhalb gemeinsam verwendeter Segmente eines lokalen Speichers eines gegebenen Knotens, werden in einem gemeinsam verwendeten Segment eines lokalen Speichers anderer Knoten reflektiert (das heißt dupliziert). Bei Empfang eines Befehls zum Schreiben in reflektivem, gemeinsam verwendetem Raum ist die RM- Platine so betreibbar, daß sie den Schreibbefehl über den RM-Bus verbreitet. Der RM-Bus ist zur Verbreitung von Aktualisierungen auf die gemeinsam verwendeten Segmente bestimmt. Der RM-Bus ist ein nur-Schreibe Bus und es gibt keine Lese-Anforderungen auf diesem Bus. Der Artikel beschreibt nicht die Bereitstellung von Segmenten, die auf einem nur lesbaren, entfernt liegendem Raum abgebildet sind.
  • Verschiedene Aspekte der Erfindung werden in den beigefügten Ansprüchen definiert.
  • Die oben aufgezeigten Probleme werden zum großen Teil durch eine Ausführungsform der Erfindung gelöst, die einen hierarchischen Bus mit einer Mehrzahl von Adreßpartitionen bereitstellen kann. Jede physikalische Speicherstelle wird auf mehrere Adressen abgebildet. Damit kann unter Verwendung von einer Vielzahl von Aliasadressen auf jede physikalische Speicherstelle zugegriffen werden. Die Eigenschaften jeder Adreßpartition werden von der hierarchischen Busstruktur verwendet, um zu bestimmen, welche Transaktionen global und welche Transaktionen lokal übertragen werden. Auf diese Weise eliminiert die hierarchische Busstruktur globale Übertragungen von lokalen Transaktionen.
  • Eine Ausführungsform der Erfindung kann ein Multiprozessorenarchitektur bereitstellen, die eine Mehrzahl von Verarbeitungsknoten, eine Mehrzahl von Bussen einer niedrigen Ebene, wobei jeder Verarbeitungsknoten an einen der Mehrzahl von Bussen der niedrigen Ebene gekoppelt ist, eine Mehrzahl von Repeatern, wobei jeder Repeater an einen der Mehrzahl von Bussen der niedrigen Ebene gekoppelt ist, einen Bus der höchsten Ebene und einen Systemspeicher enthält. Der Bus der höchsten Ebene kann mit einer Mehrzahl von Repeatern verbunden sein und die Repeater kontrollieren den Datentransfer zwischen den Bussen der niedrigen Ebene und dem Bus der höchsten Ebene. Der Systemspeicher enthält eine Mehrzahl von Speicherstellen. Jeder Prozessorknoten kann so ausgestaltet sein, daß er auf alle Speicherstellen zugreifen kann. Die Systemspeicherstellen können auf eine Mehrzahl von Adreßpartitionen abgebildet sein, wodurch die Systemspeicherstellen durch eine Mehrzahl von Aliasadressen adressiert werden. Die Eigenschaften der Adreßpartitionen schreiben die Steuerung des Datentransfers der Busse niedriger Ebene und dem Bus höchster Ebene durch den Repeater vor.
  • Eine Ausführungsform der Erfindung kann weiter ein gemeinsam verwendetes Speichersystem bereitstellen, welches eine Mehrzahl von Speicherstellen enthält, wobei die Speicherstellen einem aus der Mehrzahl von Verarbeitungsknoten zugeordnet sind. Die Speicherstellen können so ausgelegt sein, daß von der Mehrzahl von Verarbeitungsknoten darauf zugegriffen wird. Die Systemspeicherstellen können auf eine Mehrzahl von Adreßpartitionen abgebildet sein, wodurch die Systemspeicherstellen von einer Mehrzahl von Aliasadressen adressiert werden, und die Eigenschaften der Adreßpartitionen schreiben vor, welcher der Verarbeitungsknoten Zugriff auf eine Datenanforderung hat.
  • Eine Ausführungsform der Erfindung kann weiterhin ein Verfahren für ortsspezifische Datentransfers auf einen hierarchischen Bus bereitstellen. Das Verfahren kann folgende Schritte beinhalten: Zuweisen eines virtuellen Adreßbereichs für einen Prozeß, der auf einem Knoten des hierarchischen Busses abläuft, Ausführen einer Datenanforderung an eine Adresse innerhalb des virtuellen Adreßbereichs, Übersetzen der virtuellen Adresse in eine physikalische Adresse und Bestimmen, ob die physikalische Adresse sich innerhalb eines Speicherbereichs befindet, als global oder lokal bezeichnet ist. Wenn die physikalische Adresse sich innerhalb eines Speicherbereichs befindet, der als global bezeichnet ist, findet der Speicherzugriff unter Verwendung einer globalen Adresse statt. Wenn die physikalische Adresse sich innerhalb eines Abschnitts des Speichers befindet, der als lokal bezeichnet ist, wird festgestellt, daß die physikalische Adresse innerhalb des lokalen Speichers ist. Wenn die physikalische Adresse sich innerhalb des lokalen Speichers befindet, findet der Zugriff auf die physikalische Adresse unter Benutzung einer lokalen Adreßpartition statt. Wenn die physikalische Adresse sich nicht innerhalb des lokalen Speichers befindet, findet ein Abfangvorgang in dem Betriebssystem statt. Das Betriebssystem kann das Abfangen auf zahlreiche Arten korrigieren. Zum Beispiel können Daten von der physikalischen Adresse in den lokalen Speicher verschoben werden. Alternativ kann die physikalische Adresse als globale Adresse neu zugeordnet werden.
  • Im Folgenden werden beispielhafte Ausführungsformen der Erfindung beschrieben, und zwar nur als Beispiel und unter Bezug auf die beigefügten Zeichnungen, wobei:
  • 1 ein Blockdiagramm eines Computersystems ist, daß einen hierarchischen Busaufbau implementiert.
  • 2 die Aufteilung eines physikalischen Speichers auf die Knoten eines hierarchischen Busses zeigt.
  • 3 das Abbilden eines physikalischen Speichers auf mehrere Adressenräume zeigt.
  • 4 ein Flußdiagramm der Betriebsweise eines Betriebssystems gemäß einer Ausführungsform der vorliegenden Erfindung ist.
  • 5 ein Flußdiagramm der Betriebsweise eines Repeaters gemäß einer Ausführungsform der vorliegenden Erfindung ist.
  • Ein hierarchischer Bus enthält eine Mehrzahl von Busebenen und Knoten. Eine Teilmenge der Gesamtanzahl von Knoten ist jeweils an einen aus der Mehrzahl von Bussen niedriger Ebene angeschlossen. Die Busse niedriger Ebene sind über Repeater an Busse eines Levels um Eins höher angeschlossen. Die Busse der höheren Levels sind mit Bussen noch höheren Levels über noch mehr Repeater verbunden. Dieses Konzept erweitert sich natürlich selbst auf so viele Ebenen der Bushierarchie wie nötig. Auf der höchsten Stufe sind die Repeater über einen Bus der höchsten Ebene verbunden.
  • 1 zeigt eine Bushierarchie mit zwei Ebenen. 1 enthält die Knoten 130 bis 134 und den Bus 128 der höchsten Ebene. Der Knoten 130 enthält die Prozessoren 102 bis 106, den Bus 116 niedriger Ebene, den Speicher 136 und den Repeater 122. Die Prozessoren 102 bis 106, der Repeater 122 und der Speicher 136 sind an den Bus 116 niedriger Ebene angeschlossen. Die Prozessoren 102 bis 106 enthalten einen Übersetzungs-Nachschlage-Puffer (TLB) (auch als "Übersetzungsvorgriffs-Puffer" bezeichnet). Ein TLB ist eine Einrichtung, die die zuletzt aufgerufenen Übersetzungen virtueller in physikalischer Adressen speichert. Der Knoten 132 enthält die Prozessoren 108 bis 110, den Bus 118 einer niedrigen Ebene, den Repeater 124 und den Speicher 138. Die Pro zessoren 108 bis 110, der Speicher 138 und der Repeater 124 sind an den Bus 118 einer niedrigen Ebene angeschlossen. Die Prozessoren 108 bis 110 enthalten einen Übersetzungs-Nachschlage-Puffer (TLB). Der Knoten 134 enthält die Prozessoren 112 bis 114, den Bus 120 einer niedrigen Ebene, den Speicher 140 und den Repeater 126. Die Prozessoren 112 bis 114, der Speicher 140 und der Repeater 126 sind an den Bus 120 einer niedrigen Ebene angeschlossen. Die Prozessoren 112 bis 114 enthalten einen Übersetzungs-Nachschlage-Puffer (TLB).
  • Transaktionen von jedem Prozessor werden auf dem Bus der niedrigen Ebene geleitet und von den Repeatern über den Bus der höchsten Ebene zurück übertragen. Die Repeater, die eine zurück übertragene Transaktion empfangen, übertragen die Transaktion weiter auf den angeschlossenen Bus der niedrigeren Ebene, die von den angeschlossenen Prozessoren empfangen wird. Zum Beispiel sendet Prozessor 102 eine Transaktion auf dem Bus 116 niedriger Ebene. Der Repeater 122 überträgt die Transaktion an die Repeater 124 und 126 zurück. Die Repeater 124 und 126 empfangen die Transaktion über den Bus 128 der höchsten Ebene und übertragen die Transaktion zurück auf den Bussen 118 und 120 der niedrigen Ebene. Die Prozessoren 108 bis 114 empfangen die Transaktion über die Busse 118 und 120 der niedrigen Ebene.
  • In einer Ausführungsform wird eine lokale Transaktion zwischen zwei Einrichtungen in den selben Knoten (zum Beispiel ein Prozessor und einem Speicher) nicht global übertragen (das heißt nicht zu allen Knoten auf dem hierarchischen Bus). Die globale Übertragung von lokalen Transaktionen reduziert unnötigerweise den Datendurchsatz des Busses. Es ist offensichtlich, daß eine lokale Transaktion auf andere Weise bestimmt werden kann als eine Transaktion zwischen zwei Einrichtungen in dem selben Knoten. Beispielsweise können mehrere Knoten zu einem Cluster zusammengefügt werden. Eine lokale Transaktion in dieser Konfiguration würde irgendeine Transaktion zwischen Knoten in dem selben Cluster von Knoten sein. Eine globale Transaktion würde eine Transaktion zwischen Clustern von Knoten sein. Die Cluster von Knoten bilden eine „lokale Domäne", über die lokale Transaktionen gesendet werden, während der Satz aus Clustern eine "globale Domäne" bildet, über die globale Transaktionen gesendet werden. Beispielsweise kann eine Punkt zu Punkt-Verbindung zwischen den Repeatern 122 bis 126 und einem höchsten Repeater (nicht gezeigt) verwendet werden, um die Transaktion aus dem höchsten Repeater zu übertragen. Der höchste Repeater kann dann bestimmen, welcher Repeater 122 bis 126 die Transaktion empfängt, basierend auf der lokal/globalen Natur der Transaktion.
  • Indem lokale Transaktionen nicht global versendet werden, können die Transaktionen in einer effizienteren Weise abgeschlossen werden, als wenn diese Transaktionen rundgesendet werden. Die lokalen Transaktionen hängen nur von den Reaktionen der anderen Prozessoren innerhalb der „lokalen Domäne" ab, während globale Transaktionen von allen Prozessoren innerhalb des Computersystems, wie in 1 gezeigt, abhängig sind. Beispielsweise können die Busse 116 bis 129 niedriger Ebene Nachforschungsprotokolle verwenden, um die Cachekohärenz aufrecht zu erhalten. Das Rundsenden einer Transaktion an einen nicht-lokalen Bus einer niedrigen Ebene, kann eine Transaktion auf einem Bus 128 einer höheren Ebene mit sich bringen, gefolgt von einem Rundsenden an Busse 115 bis 120 einer niedrigen Ebene, gefolgt von einer anderen Transaktion auf dem Bus 128 einer hohen Ebene um die Nachforschungsantwort auf einen auslösenden Bus einer niedrigen Ebene weiterzuleiten. Auf der anderen Seite sammelt eine lokale Transaktion einfach Antworten der Busse niedriger Ebenen, an die sie gekoppelt ist. Weiterhin können lokale Transaktionen innerhalb der mehrfachen lokalen Domänen gleichzeitig ausgeführt werden. Zusätzlich bleibt Bandbreite auf dem Bus 128 einer hohen Ebene erhalten.
  • Gemäß 2 ist ein Diagramm dargestellt, welches die Zuweisung des physikalischen Speichers oder Systemspeichers entlang der Knoten des Systems mit Parallelverarbeitung zeigt. In einer Ausführungsform wird der physikalische Speicher gleichmäßig unter den Prozessorenknoten aufgeteilt. Dadurch erhält jeder der n Prozessoren den (1/n)ten Teil der gesamten physikalischen Speicherstellen. Wie in 2 dargestellt, wird der physikalische Speicher 202 in einem Mehrprozessorensystem mit drei Knoten in drei lokale Speicher aufgeteilt. Der Speicher 136, ein Drittel des physikalischen Speichers, ist dem Knoten 130 zugeordnet. Der Speicher 138, ebenfalls ein Drittel des physikalischen Speichers 202, ist dem Knoten 132 zugeordnet. Der Speicher 140 ist dem Knoten 134 zugeordnet. Es ist offensichtlich, daß ein System mit Parallelverarbeitung den Speicher in verschiedenen Größenverhältnissen zwischen den Knoten zuweisen kann. Genauer gesagt könnte Knoten 130 einen ersten Speicherumfang enthalten, der von einem zweiten Speicherumfang in Knoten 132 und einem dritten Speicherumfang in Knoten 134 verschieden ist, etc.
  • Gemäß 3 ist jeder lokale Speicher (das heißt der Speicher der einem Prozessorenknoten zugewiesen ist) auf mehrere Stellen innerhalb des Adreßraums 302 abgebildet. Der Adreßraum 302 besteht aus mehreren Adreßpartitionen. Auf jede physikalische Speicherstelle kann zugegriffen werden, indem eine Vielzahl von Aliasadressen verwendet wird (das heißt eine von jeder Partition). In einer Ausführungsform enthält der Adreßraum 302 vier Adreßpartitionen: den SMP-Raum 304 (SS), den lokalen Raum 306 (LS), den lesbaren, entfernt gelegenen Raum 308 (RR) und den entfernt gelegenen Raum 310 (RS). Jeder Adreßpartition sind Eigenschaften zugewiesen, die die Repeater 122 bis 126 verwenden, um den Datentransfer in dem hierarchischen Busaufbau zu steuern.
  • Die Eigenschaften jeder Adreßpartition werden nachstehend noch genauer erläutert. SS 304 ist der globale Adreßraum, oder die globale Partition. Die Aliasadressen in dieser Adreßpartition werden global auf dem hierarchischen Bus versendet. Deswegen sollten Zugriffe auf eine physikalische Speicherstelle, die nicht innerhalb des lokalen Adreßraumes eines Knotens liegt, eine SS-Aliasadresse benutzten, um auf solche Speicherstellen zuzugreifen. Zusätzlich sollten Zugriffe auf einen lokalen Speicherraum, ausgewiesen als globaler Speicher, eine SS-Aliasadresse benutzten. Ein lokaler Speicher kann als globaler Speicher ausgezeichnet sein, wenn ein Prozeß auf einem anderen Knoten Zugriff auf diesen Speicher erfordert.
  • Die Adreßpartition LS 306 ist die lokale Adreßpartition. Die Knoten können nur Aliasadressen von LS 306 verwenden, um auf den Abschnitt des Speichers zuzugreifen, der diesem Knoten zugewiesen ist (das heißt den lokalen Speicher). Im Allgemeinen kann die LS Adreßpartition benutzt werden, um auf Adressen innerhalb der lokalen Domäne des Knotens, die andere Knoten enthalten kann, zuzugreifen. Ein Zugriff auf eine physikalische Speicherstelle, die nicht auf dem Knoten liegt und die eine Aliasadresse verwendet, bewirkt ein Abfangen (trap), wenn eine Seitentabelle durchge sehen wird oder ein TLB Zugriff ausgeführt wird. Das Abfangen kann erreicht werden, wenn das System eine Struktur mit einer Seitentabelle pro Prozessor oder einer Seitentabelle pro Knoten hat. LS-Adressen werden für eine Übersetzung nur in den Seitentabellen für den lokalen Knoten oder den lokalen Prozessoren bereitgestellt. Deswegen gibt es keine Übersetzung in der Übersetzungsstruktur eines entfernt gelegenen Prozessors.
  • Die Adreßpartition RR 308 wird benutzt um Daten von einer entfernt gelegenen Adresse zu lesen. In einer Ausführungsform könnten Prozesse, die auf einem Knoten laufen, RR 308 benutzen um eine Lesestromtransaktion von einer entfernt gelegenen Adresse auszuführen. Der Lesestrom ist eine Transaktion, die als Antwort auf eine Anweisung verarbeitet wird, die von der SPARC-Architektur definiert wird, um Daten in den Prozessor zu übertragen, ohne die Daten in den Cachespeicher aufzunehmen. In ähnlicher Weise wird die Adreßpartition RS 310 benutzt, um die Lesestrom- und Schreibstromanweisungen an einen entlegenen Speicher auszuführen. Der Schreibstrom ist eine Anweisung, die von der SPARC-Architektur definiert wird um Daten von dem Prozessor zu übertragen ohne die Daten in den Cachespeicher aufzunehmen.
  • Die Adreßpartitionen werden verwendet, um den Datenfluß in einem Computersystem mit hierarchischem Bus zu beschränken und zu kontrollieren. Die Repeater entscheiden, ob eine Transaktion auf einen Bus einer höheren Ebene gesendet wird oder ob er auf eine niedrige Ebene, basierend auf der Adreßpartition der Transaktion, beschränkt wird. Wenn zum Beispiel Knoten 130 versuchen würde Daten, die in einer Speicherstelle gespeichert sind, die dem Knoten 134 zugewiesen ist, zu adressieren bzw. anzusprechen, sollte eine SS Aliasadresse verwendet werden, um auf die Daten zuzugreifen. Wenn der Repeater 122 eine Transaktion mit einer SS Aliasadresse empfängt, sendet er die Transaktion auf den Bus 128 der höchsten Ebene. Wenn Knoten 130 im Gegensatz dazu versucht auf eine Speicherstelle zuzugreifen, die auf dem Knoten 130 angesiedelt ist, der nicht mit anderen Knoten gemeinsam verwendet wird, sollte eine LS Aliasadresse benutzt werden. Wenn der Repeater 122 eine LS Aliasadresse empfängt, sendet er die Daten nicht an den Bus 128 der höchsten Ebene. Daher sind der Bus 128 der höchsten Ebene und die lokalen Busse 118 und 120 frei, um andere Transaktionen zu verarbeiten. Auf diese Weise wird der Datendurchfluß des hierarchischen Bus gesteigert.
  • Ein Problem ergibt sich, wenn ein Prozeß von einem Knoten in der Multiprozessorenarchitektur zu einem anderen Knoten migriert. Prozeßmigration tritt auf, wenn ein Prozeß, der ursprünglich einem Knoten zugewiesen ist, ausgesetzt und später einem anderen Knoten wieder zugewiesen wird. Der Speicher, der für den Prozeß lokal war, als er ursprünglich zugewiesen wurde, ist möglicherweise kein lokaler Speicher mehr. Wenn zum Beispiel ein Prozeß ursprünglich dem Knoten 130 zugewiesen wurde und später dem Knoten 134 wieder zugewiesen wird, ist das, was ursprünglich der lokale Speicher des Prozesses war, nunmehr entfernt gelegen (das heißt einem anderen Knoten zugeordnet). Der Prozeß jedoch weiß nicht, daß die Speicherstelle nicht mehr lokal ist. Wenn der Prozeß versucht auf eine lokale Speicherstelle auf Knoten 130 zuzugreifen, indem er eine LS Aliasadresse benutzt, erfolgt ein Abfangen. Das Abfangen wird bewirkt durch den Versuch, eine virtuelle Adresse unter Verwendung der Seitentabellenstruktur des Knotens zu übersetzen, dem der Prozeß nunmehr zugeordnet ist. Die Seitentabellenstruktur enthält jedoch keine Übersetzungen, die für Adressen in dem LS Raum innerhalb eines anderen Knotens vorgesehen sind. Ein Abfangen überträgt die Kontrolle an das Betriebssystem. Das Betriebssystem verschiebt die Daten, auf die ein Zugriff versucht wurde, von dem Knoten 130 auf den Knoten 134, unter Verwendung der RR 308 Aliasadressen und lokaler (LS) Schreibvorgänge. Auf den Speicher kann dann unter der Verwendung einer LS Aliasadresse zugegriffen werden. Die Verwendung eines hierarchischen Affinitätsplaners, der die Migration von Prozessen von einem Knoten zu einem anderen verringert, kann das Auftreten der Verschiebungen von Datenblöcken von einem Knoten zu einem anderen minimieren.
  • Eine Alternative zu dem Kopieren der Daten von einem Knoten zu einem anderen besteht darin, die Übersetzung der Adresse von lokal zu global zu ändern. Beispielsweise können die folgenden Prozesse verwendet werden:
    • (1) Ungültig machen der lokalen Übersetzungen in allen Übersetzungstabellen;
    • (2) Ungültig machen der Übersetzungen in den TLBs (zum Beispiel Ausführen eines TLB-Shootdowns);
    • (3) Spülen aller Cachezeilen innerhalb der Seite für alle Prozessoren in dem lokalen Knoten; und
    • (4) Erstellen einer neuen, globalen Übersetzung für die Seite.
  • Gemäß 4 ist ein Flußdiagram dargestellt, welches einen Teil der Betriebsweise des Betriebssystems gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Der in 4 gezeigte Abschnitt stellt die Aktivitäten dar, die ausgeführt werden, wenn eine Seite des Speichers einem Prozeß zugewiesen wird. Eine Seite kann durch eine ausdrückliche Anforderung des ausgeführten Prozesses zugeordnet werden. Alternativ kann eine bestimmte Anzahl von Seiten automatisch durch die Initiation eines Prozesses zugeordnet werden.
  • Während eines Schritts 400 wählt das Betriebssystem eine Seite für die Zuordnung zu dem Prozeß aus. Allgemein führt das Betriebssystem eine Liste von „freien" Seiten (das heißt solche Seiten, die aktuell keinem Prozeß zugeordnet sind). Eine der freien Seiten wird dem Prozeß zugeordnet. Wenn keine Seiten frei sind, sucht das Betriebssystem eine aktuell zugeordnete Seite aus, hebt die Zuordnung dieser Seite zu dem Prozeß auf, welchem sie zugeordnet war (einschließlich dem Speichern der Daten innerhalb der Seite auf das Laufwerk und dem Ungültig machen der Übersetzung der Seite), und weist die Seite dem anforderndem Prozeß zu. Viele Algorithmen sind wohlbekannt für das Auswählen der zugeordneten Seiten für die Neuzuordnung zu einem neuen Prozeß, allgemein bekannt als Algorithmus mit Seitenzuweisung nach Bedarf.
  • Nach der Auswahl einer Seite, um sie dem Prozeß zuzuweisen, bestimmt das Betriebssystem, ob die Seite als global oder lokal zugewiesen wird (Schritt 402). Es kann eine Vielfalt an Algorithmen verwendet werden, um lokal oder global auszuwählen. Wie unten genauer beschrieben, bezieht ein Schema die zugewiesenen Seiten als anfangs lokal mit ein und wechselt dann die Zuweisung auf global, aufgrund des Auftauchens eines Abfangens während des Versuchs, auf diese Seite zuzugreifen. Ein anderes Schema verwendet die Zuordnung von Seiten anfänglich als global und bestimmt später, welche Seiten nach lokal zu ändern sind, basierend auf der Verwendung der Seite in verschiedenen Knoten. Es ist darauf hinzuweisen, daß jedes passende bzw. geeignete Schema eingesetzt werden kann.
  • Wenn eine Seite als global bestimmt ist, dann erzeugt (wie in Schritt 404 gezeigt) das Betriebssystem eine globale Adreßübersetzung (das heißt eine Übersetzung in eine Adresse innerhalb des SS Raums 304, des RR Raums 308 oder des RS Raums 310). Wenn die Struktur der Seitentabelle, die von dem Computersystem verwendet wird, derart ist, daß jeder Prozessor oder jeder Knoten seine eigene Seitentabellenstruktur hat, wird die Übersetzung in alle Seitentabellenstrukturen plaziert. Alternativ kann das Betriebssystem bestimmen, daß die Seite lokal sein soll. Wie in Schritt 406 gezeigt, erzeugt das Betriebssystem eine lokale Übersetzung die nur innerhalb der lokalen Domäne verfügbar ist. In der beispielhaften Seitentabellenstruktur die oben beschriebenen wurde, ist die Übersetzung nur in der Seitentabellenstruktur des Knotens, der den Speicher enthält, angeordnet. Wenn die Prozessoren in anderen Knoten versuchen, auf die Adresse zuzugreifen, wird in ihren Seitentabellenstrukturen keine Übersetzung zu finden sein und es wird ein Abfangen auftreten.
  • Gemäß 5 ist ein Flußdiagram dargestellt, daß die Betriebsweise eines Repeaters 122 bis 126 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Während eines Schritts 500 erfaßt der Repeater eine Adresse einer Transaktion, die auf dem korrespondierenden Bus einer niedrigen Ebene vorgelegt wird. Wie in Schritt 502 dargestellt, bestimmt der Repeater ob die Adresse lokal oder global ist, indem er feststellt, welche der in 3 gezeigten Adreßpartitionen die Adresse enthält.
  • Wenn die Adresse innerhalb einer lokalen Adreßpartition ist (zum Beispiel der LS Adreßpartition 306 für den Adreßraum, der in 3 gezeigt ist), dann überträgt der Repeater die Transaktion nicht auf andere Repeater. Wie in Schritt 504 dargestellt schließt der Repeater die Transaktion innerhalb des lokalen Knotens ab. Alternativ kann die Adresse innerhalb einer globalen Adreßpartition liegen (z.B. der SS Adreßpartition 304, der RR Adreßpartition 308 oder der RS Adreßpartition 310 für den Adreßraum, der in 3 gezeigt ist). Wie in Schritt 506 dargestellt, sendet der Repeater die Transaktion an andere Knoten. Die Transaktion wird anschließend, basierend auf den Antworten von allen Knoten, nicht nur von dem lokalen Knoten, abgeschlossen (Schritt 508).
  • Ein hierarchischer Bus, der die vorliegende Erfindung implementiert, hat das Potential, einen höheren Durchsatz zu erreichen, weil das Zugreifen auf die Daten unter Benutzung einer LS Aliasadresse nur lokalen Busverkehr verursacht. Der hierarchische Bus realisiert einen echten gemeinsam verwendeten Speicher und erhöht potentiell den Datendurchsatz des Systems um einige Faktoren.
  • Es ist von Vorteil, die Bestimmung des Speichers als global oder lokal zu ändern. Wenn zum Beispiel zwei Prozesse beide auf eine Seite von Daten zugreifen, die als lokaler Speicher bezeichnet ist, wird die Seite unter Verwendung einer RR Aliasadresse von einem Knoten auf einen anderen Knoten verschoben, und zwar jedes Mal, wenn ein anderer Prozeß auf sie zugreift. In diesem Fall wäre es von Vorteil, diese Seite von Daten als global zu bezeichnen. Zusätzlich verschwendet eine Seite, auf die von einem Prozeß zugegriffen wird und die nur als ein globaler Speicher ausgezeichnet ist, überflüssigerweise Bandbreite. Da die Anzahl von Prozessen, die auf einen Speicherblock zugreifen sich ändert, ist ein Verfahren zum dynamischen Verändern der Bezeichnung von Speicherblöcken wünschenswert.
  • Verschiedene Algorithmen können für den dynamischen Wechsel der Bezeichnung von Speichern benutzt werden. In einer Ausführungsform sind alle Seiten ursprüngliche als lokal bestimmt und ein Zähler verfolgt, wie oft eine Seite verschoben wurde, aufgrund der ungeeigneten Zugriffe unter Verwendung der LS Aliasadressen. Wenn ein Schwellwert erreicht wurde, wird die Seite nach global konvertiert und es sind keine Blockverschiebungen mehr erforderlich. In einer anderen Ausführungsform startet jede Seite mit einer globalen Bestimmung. Die Seiten werden nacheinander individuell auf lokal umgestellt. Die Seiten werden dann zurück nach global konvertiert, indem der oben beschriebene Algorithmus verwendet wird. In einer anderen Alternative können die Seiten anfänglich auf lokal gesetzt werden und in global geändert werden, wenn ein Abfangen auftritt.
  • In einer speziellen Ausführungsform werden Adreßpartitionen verwendet, um zu verhindern, daß ein Software Bug in einem Knoten Daten in einem anderen Knoten beschädigt. In dieser Ausführungsform werden nur LS 306 und RR 308 Adreßpartitionen verwendet. Dies wird umgesetzt in dem die Repeater 122 bis 124 so konfiguriert werden, daß nur RR Aliasadressen gesendet werden. Jeder Knoten betreibt seinen eigenen Kernel des Betriebssystems. Ein Kernel ist ein Abschnitt des Betriebssystems der einen Kern der grundlegenden Funktionen des Betriebssystems umfaßt. Jeder Kernel ist in dem lokalen Speicher des betreffenden Knotens ansässig und ist als ein lokaler Speicherraum bestimmt. Dadurch können Knoten auf den Kernel eines anderen Knotens nur unter Verwendung von Nur-Lese-Befehlen zugreifen. Wenn ein Prozeß auf einem Knoten versucht auf den Kernel eines anderen Knotens zuzugreifen, sendet der Repeater die Datenanforderung nicht. Auf den Kernel kann von fern gelegenen Knoten nur unter Verwendung von RR(Nur-Lese-)Aliasadressen zugegriffen werden. Auf diese Weise kann ein Software Bug, der auf einem Knoten abläuft, nicht den Kernel oder irgendwelche Anwendungen, die auf anderen Knoten ablaufen, zerstören.
  • Jegliche Kommunikation zwischen den Knoten wird in einer abfragegestützten Weise ausgeführt. Jeder Knoten benennt eine Speicherstelle, um Statusbits zu speichern, die anzeigen, daß der Knoten Daten für einen Prozeß hat, der auf einem anderen Knoten abläuft. Die anderen Prozesse fragen diese Statusbits regelmäßig ab unter der Verwendung von RR Aliasadressen, die nur gelesen werden. Wenn ein Prozeß erkennt, daß ein anderer Knoten Daten für diesen Prozeß hat, werden die Daten unter Verwendung RR Aliasbezeichnungen gelesen. Auf diese Weise werden die Daten zwischen den Knoten übertragen, ohne daß ein Knoten Schreibzugriff auf einen anderen Knoten hat. Dadurch ist beschädigte Software in einem Knoten nicht in der Lage, Daten in anderen Knoten in dem hierarchischem Bus zu schreiben, und beschädigte Software auf einem Knoten kann die Software in anderen Knoten nicht beschädigen. Alternativ können, anstelle des Schemas auf Abfragebasis, globale Interrupts zwischen den Prozessoren unterstützt werden.

Claims (9)

  1. Computersystem mit Mehrfachverarbeitung (Parallelverarbeitung), mit: einem ersten Verarbeitungsknoten (138), der einen ersten Repeater (122), einen ersten Speicher (136) und eine erste Mehrzahl von Prozessoren (102, 104, 106) aufweist, wobei der erste Repeater, die erste Mehrzahl von Prozessoren und der erste Speicher an einen ersten gemeinsam verwendeten Bus (116) einer niedrigen Ebene angeschlossen sind, und einem zweiten Verarbeitungsknoten (136), welcher einen zweiten Repeater (124), einen zweiten Speicher (138) und eine zweite Mehrzahl von Prozessoren (108, 110) aufweist, wobei der zweite Repeater über einen Bus (128) höherer Ebene mit dem ersten Repeater verbunden ist, und wobei der zweite Repeater, die zweite Mehrzahl von Prozessoren und der zweite Speicher mit einem zweiten, gemeinsamen Bus (118) auf niedriger Ebene verbunden sind, wobei die ersten und zweiten Speicher auf einer Mehrzahl von Stellen innerhalb eines Adreßraumes (302) abgebildet sind, welcher von dem System verwendet wird, wobei der Adreßraum aufgeteilt ist in eine Mehrzahl von Partitionen, einschließlich zumindest einer lokalen Partition (306), einer globalen Partition (304) und einer nur lesbaren, entfernt gelegenen Partition (308), und wobei auf jede physikalische Speicherstelle innerhalb des ersten Speichers unter Verwendung einer entsprechenden Aliasadresse von jeder Partition aus zugegriffen werden kann, wobei der erste Repeater bei Empfang einer Transaktion von einem aus der ersten Mehrzahl von Prozessoren so ausgestaltet ist, daß er die Transaktion an den zweiten Repeater weiterleitet, wenn die Transaktion eine Aliasadresse innerhalb der globalen Partition hat, welche einer globalen Transaktion entspricht, die Transaktion von dem zweiten Repeater isoliert, wenn die Transaktion eine Aliasadresse innerhalb der lokalen Partition hat, was einer lokalen Transaktion entspricht, und wobei die Transaktion eine Aliasadresse innerhalb der entfernt gelegenen, nur lesbaren Partition hat, um die Aliasadresse über den Bus höherer Ebene rundzusenden, wobei die Transaktion, welche eine Aliasadresse innerhalb der fern gelegenen, nur lesbaren Partition hat, eine Lesestromtransaktion ist.
  2. Mehrprozessorcomputersystem nach Anspruch 1, wobei der Adreßraum weiterhin eine entfernt gelegene Lese/Schreibe-Partition hat und wobei eine Transaktion, welche eine Aliasadresse innerhalb der entfernt gelegenen Lese/Schreibe-Partition hat, entweder eine Lesestromtransaktion oder eine Schreibstromtransaktion ist.
  3. System nach einem der vorstehenden Ansprüche, wobei jeder gemeinsam verwendete Bus niedriger Ebene ein Protokoll auf Nachforschungsbasis (snoop-based protocol) verwendet.
  4. System nach einem der vorstehenden Ansprüche, wobei der erste Repeater bei Empfang einer Schreibetransaktion von einem aus der ersten Mehrzahl von Prozessoren so ausgestaltet ist, daß er die Schreibetransaktion an den zweiten Repeater weiterleitet, wenn die Schreibetransaktion eine Aliasadresse innerhalb der globalen Partition hat, was einer globalen Transaktion entspricht, und die Schreibetransaktion von dem zweiten Repeater isoliert, wenn die Schreibetransaktion eine Aliasadresse innerhalb der lokalen Partition hat, was einer lokalen Transaktion entspricht.
  5. System nach einem der vorstehenden Ansprüche, wobei der erste Repeater nach Empfang einer Lesetransaktion von einem aus der ersten Mehrzahl von Prozessoren so ausgestaltet ist, daß er die Lesetransaktion an den zweiten Repeater weiterleitet, wenn die Lesetransaktion eine Aliasadresse innerhalb der globalen Partition hat, was einer globalen Transaktion entspricht, und die Lesetransaktion von dem zweiten Repeater isoliert, wenn die Lesetransaktion eine Aliasadresse innerhalb der lokalen Partition hat, was einer lokalen Transaktion entspricht.
  6. Verfahren zum Betreiben eines parallelverarbeitenden Computersystems (Mehrprozessor-Computersystem) mit: einem ersten Verarbeitungsknoten (138), welcher einen ersten Repeater (122), einen ersten Speicher (136) und eine erste Mehrzahl von Prozessoren (102, 104, 106) aufweist, wobei der erste Repeater, die erste Mehrzahl von Prozessoren und der erste Speicher an einen ersten, gemeinsam verwendeten Bus (116) auf niedriger Ebene angeschlossen sind, und einem zweiten Verarbeitungsknoten (136), welcher einen zweiten Repeater (124), einen zweiten Speicher (138) und eine zweite Mehrzahl von Prozessoren (108, 110) aufweist, wobei der zweite Repeater mit dem ersten Repeater über einen Bus (128) auf höherer Ebene verbunden ist und wobei der zweite Repeater, die zweite Mehrzahl von Prozessoren und der zweite Speicher mit einem zweiten, gemeinsam verwendeten Bus (118) auf niedrigerer Ebene verbunden sind, wobei die ersten und zweiten Speicher auf mehrere Orte innerhalb eines Adreßraumes (302) abgebildet sind, welcher von dem System verwendet wird, wobei der Adreßraum in eine Mehrzahl von Partitionen aufgeteilt ist, einschließlich zumindest einer lokalen Partition (306), einer globalen Partition (304) und einer entfernt gelegenen, nur lesbaren Partition (308), und wobei auf jede physikalische Speicherstelle innerhalb des ersten Speichers unter Verwendung einer entsprechenden Aliasadresse von jeder der Partitionen aus zugegriffen werden kann, wobei das Verfahren aufweist: Auslösen einer Transaktion durch einen ersten Prozessor innerhalb des ersten Verarbeitungsknotens, Empfang der Transaktion in dem ersten Repeater innerhalb des ersten Verarbeitungsknotens, Weiterleiten (506) der Transaktion von dem ersten Repeater zu dem zweiten Repeater (124), wenn (502) die Transaktion eine Aliasadresse innerhalb der globalen Partition hat, was einer globalen Transaktion entspricht, Isolieren der Transaktion von dem zweiten Repeater, wenn die Transaktion eine Aliasadresse innerhalb der lokalen Partition hat, was einer lokalen Partition entspricht, und falls die Transaktion eine Aliasadresse innerhalb der entfernt gelegenen, nur lesbaren Partition hat, Rundsenden der Aliasadresse über den Bus auf höherem Niveau, wobei die Transaktion, welche eine Aliasadresse innerhalb der fern gelegenen, nur lesbaren Partition hat, eine Lesestromtransaktion ist.
  7. Verfahren nach Anspruch 6, wobei der Adreßraum weiterhin eine entfernt gelegene Lese/Schreibe-Partition hat, und wobei eine Transaktion, die eine Aliasadresse aus der entfernt gelegenen Lese/Schreibe-Partition hat, entweder eine Lesestromstransaktion oder eine Schreibestromtransaktion ist.
  8. Verfahren nach Anspruch 6 oder 7, welches weiterhin aufweist: Auslösen einer Schreibetransaktion durch einen ersten Prozessor innerhalb des ersten Verarbeitungsknotens, Empfangen der Schreibetransaktion in dem ersten Repeater innerhalb des ersten Verarbeitungsknotens, Weiterleiten der Schreibetransaktion von dem ersten Repeater an den zweiten Repeater, wenn die Schreibetransaktion eine Aliasadresse innerhalb der globalen Partition hat, was einer globalen Transaktion entspricht, und Isolieren der Schreibetransaktion von dem zweiten Repeater, wenn die Schreibetransaktion eine Aliasadresse innerhalb der lokalen Partition hat, was einer lokalen Transaktion entspricht.
  9. Verfahren nach einem der Ansprüche 6 bis 8, welches weiterhin aufweist: Auslösen einer Lesetransaktion durch einen ersten Prozessor innerhalb des ersten Verarbeitungsknotens, Empfangen der Lesetransaktion in dem ersten Repeater innerhalb des ersten Verarbeitungsknotens, Weiterleiten der Lesetransaktion von dem ersten Repeater an den zweiten Repeater, wenn die Lesetransaktion eine Aliasadresse innerhalb der globalen Partition hat, was einer globalen Transaktion entspricht, und Isolieren der Lesetransaktion von dem zweiten Repeater, wenn die Lesetransaktion eine Aliasadresse innerhalb der lokalen Partition hat, was einer lokalen Transaktion entspricht.
DE69734129T 1996-07-02 1997-06-27 Hierarchisches Datenverarbeitungssystem mit symetrischen Multiprozessoren Expired - Lifetime DE69734129T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US674688 1984-11-26
US08/674,688 US5862357A (en) 1996-07-02 1996-07-02 Hierarchical SMP computer system

Publications (2)

Publication Number Publication Date
DE69734129D1 DE69734129D1 (de) 2005-10-13
DE69734129T2 true DE69734129T2 (de) 2006-07-06

Family

ID=24707549

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69734129T Expired - Lifetime DE69734129T2 (de) 1996-07-02 1997-06-27 Hierarchisches Datenverarbeitungssystem mit symetrischen Multiprozessoren

Country Status (4)

Country Link
US (4) US5862357A (de)
EP (1) EP0817060B1 (de)
JP (1) JPH10187630A (de)
DE (1) DE69734129T2 (de)

Families Citing this family (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5862357A (en) * 1996-07-02 1999-01-19 Sun Microsystems, Inc. Hierarchical SMP computer system
US7035906B1 (en) 1996-11-29 2006-04-25 Ellis Iii Frampton E Global network computers
US7926097B2 (en) * 1996-11-29 2011-04-12 Ellis Iii Frampton E Computer or microchip protected from the internet by internal hardware
US7634529B2 (en) 1996-11-29 2009-12-15 Ellis Iii Frampton E Personal and server computers having microchips with multiple processing units and internal firewalls
US6725250B1 (en) 1996-11-29 2004-04-20 Ellis, Iii Frampton E. Global network computers
US20050180095A1 (en) * 1996-11-29 2005-08-18 Ellis Frampton E. Global network computers
US7024449B1 (en) 1996-11-29 2006-04-04 Ellis Iii Frampton E Global network computers
US7506020B2 (en) 1996-11-29 2009-03-17 Frampton E Ellis Global network computers
US8225003B2 (en) 1996-11-29 2012-07-17 Ellis Iii Frampton E Computers and microchips with a portion protected by an internal hardware firewall
US8312529B2 (en) 1996-11-29 2012-11-13 Ellis Frampton E Global network computers
US7805756B2 (en) * 1996-11-29 2010-09-28 Frampton E Ellis Microchips with inner firewalls, faraday cages, and/or photovoltaic cells
US6167428A (en) * 1996-11-29 2000-12-26 Ellis; Frampton E. Personal computer microprocessor firewalls for internet distributed processing
ATE247299T1 (de) 1997-09-05 2003-08-15 Sun Microsystems Inc Mehrprozessorrechnersystem mit verwendung eines gruppenschutzmechanismus
US6360303B1 (en) * 1997-09-30 2002-03-19 Compaq Computer Corporation Partitioning memory shared by multiple processors of a distributed processing system
US6094710A (en) * 1997-12-17 2000-07-25 International Business Machines Corporation Method and system for increasing system memory bandwidth within a symmetric multiprocessor data-processing system
EP1042435B1 (de) * 1997-12-19 2002-07-24 Unilever N.V. Olivenöl enthaltende nahrungsmittelzusammensetzung
US6542928B1 (en) * 1998-06-02 2003-04-01 Micron Technology, Inc. Automatic configuration of testers and hosts on a computer network
US6263414B1 (en) * 1998-07-17 2001-07-17 Technion Research And Development Foundation, Ltd. Memory for accomplishing lowered granularity of a distributed shared memory
US6591355B2 (en) 1998-09-28 2003-07-08 Technion Research And Development Foundation Ltd. Distributed shared memory system with variable granularity
JP2000155751A (ja) * 1998-11-18 2000-06-06 Mitsubishi Electric Corp システムlsi
JP4123621B2 (ja) * 1999-02-16 2008-07-23 株式会社日立製作所 主記憶共有型マルチプロセッサシステム及びその共有領域設定方法
US6442597B1 (en) * 1999-07-08 2002-08-27 International Business Machines Corporation Providing global coherence in SMP systems using response combination block coupled to address switch connecting node controllers to memory
US6738889B2 (en) * 1999-07-12 2004-05-18 International Business Machines Corporation Apparatus and method for providing simultaneous local and global addressing with hardware address translation
US7152165B1 (en) * 1999-07-16 2006-12-19 Intertrust Technologies Corp. Trusted storage systems and methods
AU6104800A (en) 1999-07-16 2001-02-05 Intertrust Technologies Corp. Trusted storage systems and methods
US6567885B1 (en) 1999-08-16 2003-05-20 Sun Microsystems, Inc. System and method for address broadcast synchronization using a plurality of switches
US7996843B2 (en) * 1999-08-25 2011-08-09 Qnx Software Systems Gmbh & Co. Kg Symmetric multi-processor system
US6574721B1 (en) * 1999-08-31 2003-06-03 International Business Machines Corporation Apparatus and method for providing simultaneous local and global addressing using software to distinguish between local and global addresses
JP2003515808A (ja) * 1999-11-22 2003-05-07 マイクロソフト コーポレイション 敏捷オブジェクトおよびコンテキストバウンドオブジェクトの間の通信
US6766435B1 (en) * 2000-05-31 2004-07-20 Hewlett-Packard Development Company, L.P. Processor with a general register set that includes address translation registers
US6598130B2 (en) * 2000-07-31 2003-07-22 Hewlett-Packard Development Company, L.P. Technique for referencing distributed shared memory locally rather than remotely
US6889343B2 (en) * 2001-03-19 2005-05-03 Sun Microsystems, Inc. Method and apparatus for verifying consistency between a first address repeater and a second address repeater
US6877055B2 (en) * 2001-03-19 2005-04-05 Sun Microsystems, Inc. Method and apparatus for efficiently broadcasting transactions between a first address repeater and a second address repeater
US20020133652A1 (en) * 2001-03-19 2002-09-19 Tai Quan Apparatus for avoiding starvation in hierarchical computer systems that prioritize transactions
US6993566B2 (en) * 2001-09-13 2006-01-31 International Business Machines Corporation Entity self-clustering and host-entity communication such as via shared memory
US7085866B1 (en) * 2002-02-19 2006-08-01 Hobson Richard F Hierarchical bus structure and memory access protocol for multiprocessor systems
US6959372B1 (en) * 2002-02-19 2005-10-25 Cogent Chipware Inc. Processor cluster architecture and associated parallel processing methods
US7185341B2 (en) * 2002-03-28 2007-02-27 International Business Machines Corporation System and method for sharing PCI bus devices
US7103636B2 (en) * 2002-05-28 2006-09-05 Newisys, Inc. Methods and apparatus for speculative probing of a remote cluster
US7281055B2 (en) * 2002-05-28 2007-10-09 Newisys, Inc. Routing mechanisms in systems having multiple multi-processor clusters
US7251698B2 (en) * 2002-05-28 2007-07-31 Newisys, Inc. Address space management in systems having multiple multi-processor clusters
US7155525B2 (en) * 2002-05-28 2006-12-26 Newisys, Inc. Transaction management in systems having multiple multi-processor clusters
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7577755B2 (en) * 2002-11-19 2009-08-18 Newisys, Inc. Methods and apparatus for distributing system management signals
US7047372B2 (en) * 2003-04-15 2006-05-16 Newisys, Inc. Managing I/O accesses in multiprocessor systems
US7386626B2 (en) * 2003-06-23 2008-06-10 Newisys, Inc. Bandwidth, framing and error detection in communications between multi-processor clusters of multi-cluster computer systems
US7577727B2 (en) * 2003-06-27 2009-08-18 Newisys, Inc. Dynamic multiple cluster system reconfiguration
US7657781B1 (en) 2003-07-25 2010-02-02 Cisco Technology, Inc. System and method for providing redundant data load sharing in a distributed network
US7117419B2 (en) * 2003-08-05 2006-10-03 Newisys, Inc. Reliable communication between multi-processor clusters of multi-cluster computer systems
US7159137B2 (en) * 2003-08-05 2007-01-02 Newisys, Inc. Synchronized communication between multi-processor clusters of multi-cluster computer systems
US7103823B2 (en) 2003-08-05 2006-09-05 Newisys, Inc. Communication between multi-processor clusters of multi-cluster computer systems
US7395347B2 (en) * 2003-08-05 2008-07-01 Newisys, Inc, Communication between and within multi-processor clusters of multi-cluster computer systems
US7117334B2 (en) * 2004-05-14 2006-10-03 International Business Machines Corporation Dynamic node partitioning utilizing sleep state
US7606995B2 (en) * 2004-07-23 2009-10-20 Hewlett-Packard Development Company, L.P. Allocating resources to partitions in a partitionable computer
JP4695367B2 (ja) 2004-08-31 2011-06-08 富士通株式会社 情報処理装置,制御装置及び情報処理装置の制御方法
US8510491B1 (en) * 2005-04-05 2013-08-13 Oracle America, Inc. Method and apparatus for efficient interrupt event notification for a scalable input/output device
US7395376B2 (en) * 2005-07-19 2008-07-01 International Business Machines Corporation Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of shared memory blocks
US7865570B2 (en) * 2005-08-30 2011-01-04 Illinois Institute Of Technology Memory server
US20070136499A1 (en) * 2005-12-12 2007-06-14 Sykes Charles E Method for designing a completely decentralized computer architecture
US20070226456A1 (en) * 2006-03-21 2007-09-27 Mark Shaw System and method for employing multiple processors in a computer system
US7958329B2 (en) * 2006-10-05 2011-06-07 Waratek Pty Ltd Hybrid replicated shared memory
US7721064B1 (en) * 2007-07-02 2010-05-18 Oracle America, Inc. Memory allocation in memory constrained devices
US8125796B2 (en) 2007-11-21 2012-02-28 Frampton E. Ellis Devices with faraday cages and internal flexibility sipes
US20090158276A1 (en) * 2007-12-12 2009-06-18 Eric Lawrence Barsness Dynamic distribution of nodes on a multi-node computer system
US7873879B2 (en) * 2008-02-01 2011-01-18 International Business Machines Corporation Mechanism to perform debugging of global shared memory (GSM) operations
US8146094B2 (en) * 2008-02-01 2012-03-27 International Business Machines Corporation Guaranteeing delivery of multi-packet GSM messages
US8200910B2 (en) * 2008-02-01 2012-06-12 International Business Machines Corporation Generating and issuing global shared memory operations via a send FIFO
US8214604B2 (en) * 2008-02-01 2012-07-03 International Business Machines Corporation Mechanisms to order global shared memory operations
US8484307B2 (en) * 2008-02-01 2013-07-09 International Business Machines Corporation Host fabric interface (HFI) to perform global shared memory (GSM) operations
US8255913B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Notification to task of completion of GSM operations by initiator node
US8239879B2 (en) * 2008-02-01 2012-08-07 International Business Machines Corporation Notification by task of completion of GSM operations at target node
US8275947B2 (en) * 2008-02-01 2012-09-25 International Business Machines Corporation Mechanism to prevent illegal access to task address space by unauthorized tasks
JP5321203B2 (ja) * 2009-03-31 2013-10-23 富士通株式会社 システム制御装置、情報処理システムおよびアクセス処理方法
US20110145837A1 (en) * 2009-12-14 2011-06-16 Bower Kenneth S Filtering Broadcast Recipients In A Multiprocessing Environment
US8364922B2 (en) * 2009-12-21 2013-01-29 International Business Machines Corporation Aggregate symmetric multiprocessor system
US8370595B2 (en) * 2009-12-21 2013-02-05 International Business Machines Corporation Aggregate data processing system having multiple overlapping synthetic computers
US8429735B2 (en) 2010-01-26 2013-04-23 Frampton E. Ellis Method of using one or more secure private networks to actively configure the hardware of a computer or microchip
US8417912B2 (en) * 2010-09-03 2013-04-09 International Business Machines Corporation Management of low-paging space conditions in an operating system
US8935475B2 (en) * 2012-03-30 2015-01-13 Ati Technologies Ulc Cache management for memory operations
US9384153B2 (en) * 2012-08-31 2016-07-05 Freescale Semiconductor, Inc. Virtualized local storage
US9454378B2 (en) 2013-09-30 2016-09-27 Apple Inc. Global configuration broadcast
TWI668570B (zh) * 2018-08-09 2019-08-11 群聯電子股份有限公司 資料整併方法、記憶體儲存裝置及記憶體控制電路單元
US10628312B2 (en) * 2018-09-26 2020-04-21 Nxp Usa, Inc. Producer/consumer paced data transfer within a data processing system having a cache which implements different cache coherency protocols
US11567803B2 (en) * 2019-11-04 2023-01-31 Rambus Inc. Inter-server memory pooling
US11687243B2 (en) * 2021-07-22 2023-06-27 EMC IP Holding Company LLC Data deduplication latency reduction
US20220066923A1 (en) * 2021-11-10 2022-03-03 Intel Corporation Dynamically configurable multi-mode memory allocation in an accelerator multi-core system on chip

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4398176A (en) * 1980-08-15 1983-08-09 Environmental Research Institute Of Michigan Image analyzer with common data/instruction bus
US5038386A (en) * 1986-08-29 1991-08-06 International Business Machines Corporation Polymorphic mesh network image processing system
US5117350A (en) * 1988-12-15 1992-05-26 Flashpoint Computer Corporation Memory address mechanism in a distributed memory architecture
IT1228728B (it) * 1989-03-15 1991-07-03 Bull Hn Information Syst Sistema multiprocessore con replicazione di dati globali e due livelli di unita' di traduzione indirizzi.
US5280621A (en) * 1989-12-29 1994-01-18 Zenith Data Systems Corporation Personal computer having dedicated processors for peripheral devices interconnected to the CPU by way of a system control processor
US5542074A (en) * 1992-10-22 1996-07-30 Maspar Computer Corporation Parallel processor system with highly flexible local control capability, including selective inversion of instruction signal and control of bit shift amount
JP2974526B2 (ja) * 1992-12-18 1999-11-10 富士通株式会社 データ転送処理方法及びデータ転送処理装置
JP3098344B2 (ja) * 1992-12-18 2000-10-16 富士通株式会社 データ転送処理方法及びデータ転送処理装置
EP0681777A1 (de) * 1993-01-29 1995-11-15 The Boeing Company Verfahren und system zur verbindungsherstellung
US5566321A (en) 1993-12-13 1996-10-15 Cray Research, Inc. Method of managing distributed memory within a massively parallel processing system
US5613071A (en) * 1995-07-14 1997-03-18 Intel Corporation Method and apparatus for providing remote memory access in a distributed memory multiprocessor system
US5940870A (en) 1996-05-21 1999-08-17 Industrial Technology Research Institute Address translation for shared-memory multiprocessor clustering
US5923847A (en) * 1996-07-02 1999-07-13 Sun Microsystems, Inc. Split-SMP computer system configured to operate in a protected mode having repeater which inhibits transaction to local address partiton
US5862357A (en) * 1996-07-02 1999-01-19 Sun Microsystems, Inc. Hierarchical SMP computer system
US6092155A (en) 1997-07-10 2000-07-18 International Business Machines Corporation Cache coherent network adapter for scalable shared memory processing systems
US6574721B1 (en) * 1999-08-31 2003-06-03 International Business Machines Corporation Apparatus and method for providing simultaneous local and global addressing using software to distinguish between local and global addresses

Also Published As

Publication number Publication date
US6578071B2 (en) 2003-06-10
EP0817060A3 (de) 1999-02-24
US6226671B1 (en) 2001-05-01
EP0817060B1 (de) 2005-09-07
US20010054079A1 (en) 2001-12-20
EP0817060A2 (de) 1998-01-07
US5862357A (en) 1999-01-19
US20020073164A1 (en) 2002-06-13
DE69734129D1 (de) 2005-10-13
US6826660B2 (en) 2004-11-30
JPH10187630A (ja) 1998-07-21

Similar Documents

Publication Publication Date Title
DE69734129T2 (de) Hierarchisches Datenverarbeitungssystem mit symetrischen Multiprozessoren
DE2226382C3 (de) Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE69822534T2 (de) Gemeinsame Speicherbenutzung mit variablen Blockgrössen für symmetrische Multiporzessor-Gruppen
DE102005029852B4 (de) Steueranordnung zum Freigeben einer oder mehrerer virtueller Speicherseiten nach Beendigung eines Programms in einem Multiprozessorcomputersystem
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE60030767T2 (de) Datenzuweisung zu threads in einem multi-threaded netzwerkprozessor
DE60015395T2 (de) Speicher, der zwischen verarbeitenden threads geteilt ist
DE69721640T2 (de) Multiprozessor-Rechnersystem und Verfahren zur Steuerung des Verkehrsflusses
DE69819686T2 (de) Objekt und verfahren zum bereitstellen eines effizienten mehrbenutzerzugriff auf verteilten betriebssystemkernkode durch instanzierung
DE102009023898B4 (de) Optimierung von gleichzeitigen Zugriffen in einem verzeichnisbasierten Kohärenzprotokoll
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE69729243T2 (de) Multiprozessorsystem mit Vorrichtung zur Optimierung von Spin-Lock-Operationen
DE102008048630B4 (de) Speicheranordnung und Speichersystem
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE69724353T2 (de) Mehrrechnersystem mit einem Drei-Sprung-Kommunikationsprotokoll
DE69635865T2 (de) Adressentransformation in einem cluster-computersystem
DE3621321A1 (de) Cache-speicher- bzw. multiprozessor-system und betriebsverfahren
DE112008002019T5 (de) Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor
DE102006032832A1 (de) Netzwerksystem und Verfahren zur Steuerung verteilter Speicher
DE102013017509A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE102013017511A1 (de) Effiziente speichervirtualisierung in mehrsträngigen verarbeitungseinheiten
DE3724730A1 (de) Cache-steuereinrichtung
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition