DE60006842T2 - Multiprozessor-Node-Controller-Schaltung und Verfahren - Google Patents

Multiprozessor-Node-Controller-Schaltung und Verfahren Download PDF

Info

Publication number
DE60006842T2
DE60006842T2 DE60006842T DE60006842T DE60006842T2 DE 60006842 T2 DE60006842 T2 DE 60006842T2 DE 60006842 T DE60006842 T DE 60006842T DE 60006842 T DE60006842 T DE 60006842T DE 60006842 T2 DE60006842 T2 DE 60006842T2
Authority
DE
Germany
Prior art keywords
port
memory
unit
data
node controller
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 - Fee Related
Application number
DE60006842T
Other languages
English (en)
Other versions
DE60006842D1 (de
Inventor
M. Martin DENEROFF
G. Givargis KALDANI
Yuval Koren
Edward David MCCRACKEN
Swaminathan Venkataraman
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.)
Graphics Properties Holdings Inc
Original Assignee
Silicon Graphics 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 Silicon Graphics Inc filed Critical Silicon Graphics Inc
Publication of DE60006842D1 publication Critical patent/DE60006842D1/de
Application granted granted Critical
Publication of DE60006842T2 publication Critical patent/DE60006842T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17381Two dimensional, e.g. mesh, torus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks
    • G06F15/17343Direct connection machines, e.g. completely connected computers, point to point communication networks wherein the interconnection is dynamically configurable, e.g. having loosely coupled nearest neighbor architecture

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Bus Control (AREA)

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft Verfahren und eine Vorrichtung für parallele Multiprozessor-Computersysteme und insbesondere eine Multiprozessor-Node-Controller-Schaltung und ein entsprechendes Verfahren.
  • Hintergrund der Erfindung
  • Multiprozessorsysteme (MP-Systeme) sind Rechensysteme, die aus einigen oder Hunderten oder Tausenden von Verarbeitungselementen (PEs) bestehen. Wenngleich die Leistungsfähigkeit eines MP-Computersystems mit zahlreichen Befehlen und zahlreichen Daten ("Multiple-Instruction Multiple-Data (MIMD)") in seiner Fähigkeit liegt, unabhängige Code-Threads gleichzeitig auszuführen, erschweren es die inhärent asynchronen Zustände der PEs (in bezug zueinander) in einem solchen System, eine deterministische Ereignisreihenfolge zu erzwingen, wenn diese erforderlich ist. Programmfolgen, die eine Interaktion zwischen mehreren PEs in der Art einer koordinierten Kommunikation, eines sequentiellen Zugriffs auf geteilte Ressourcen, gesteuerter Übergänge zwischen parallelen Bereichen usw. einschließen, können eine Synchronisation (in der Art einer Grenzen- und/oder Eureka-Synchronisation) der PEs erfordern, um eine geeignete Ausführung zu gewährleisten. Eine solche Erfindung, die Router, Netzwerke und eine Synchronisationsvorrichtung und -verfahren einschließt, ist in WO-A-99/26148 näher beschrieben.
  • Einige MP-Systeme, die symmetrisch verteilte Mikroprozessoren aufweisen, verwenden ein kohärentes Modell eines Cache-Speichers. Ein solches System ist in WO-A-99/26144 beschrieben.
  • Es besteht auf dem Fachgebiet ein Bedarf an einer verbesserten Node-Controller-Vorrichtung und einem Verfahren zum Verbessern der Kommunikation zwischen verschiedenen Abschnitten eines MP-Systems. Es besteht weiterhin ein Bedarf an einem Node-Controller, der "gut skaliert", wodurch für kleine und große Systeme ausgezeichnete Vorteile in Hinblick auf die, Leistungsfähigkeit in bezug auf Kosten erzielt werden. Es besteht weiterhin ein Bedarf an einem Node-Controller, der eine sehr hohe Flexibilität, Leistungsfähigkeit und Geschwindigkeit aufweist.
  • Gemäß einem ersten Aspekt sieht die vorliegende Erfindung ein Multiprozessor-Computersystem vor mit:
    mehreren Node-Clustern, wobei jeder Node-Cluster einen Node-Controller umfaßt, und
    einem Interprozessor-Kommunikationsnetzwerk, das eine Verbindung zwischen den mehreren Node-Controllern schafft,
    wobei jeder Node-Controller umfaßt:
    eine Crossbar-Einheit,
    mehrere Ports, die jeweils mit der Crossbar-Einheit in Wirkverbindung stehen und derart angeordnet sind, daß sie mit jeweils entweder einem der mehreren Prozessoren, einem Speicher, einem Input/Outputsystem oder dem Interprozessor-Netzwerk verbunden sind, wobei die mehreren Ports einen ersten, einen zweiten und einen dritten Port aufweisen, wobei der erste und der zweite Port von einem ersten, und der dritte Port von einem zweiten Port-Typ sind, wobei der erste und der zweite Port-Typ unterschiedliche Funktionen ausführen.
  • Gemäß einem zweiten Aspekt sieht die vorliegende Erfindung einen Node-Controller in einem Multiprozessor-Computersystem mit mehreren Nodes, die zu einem Node-Cluster verbunden sind und über ein Interprozessor-Kommunikationsnetzwerk verbunden sind, vor, wobei der Node-Controller mit dem Interprozessor-Kommunikationsnetzwerk in Wirkverbindung steht und umfaßt:
    eine Crossbar-Einheit,
    mehrere Ports, die jeweils mit der Crossbar-Einheit in Wirkverbindung stehen, wobei die mehreren Ports einen ersten, einen zweiten und einen dritten Port aufweisen, wobei der erste und der zweite Port von einem ersten, und der dritte Port von einem zweiten Port-Typ sind, wobei der erste und der zweite Port-Typ unterschiedliche Funktionen ausführen.
  • Gemäß einem dritten Aspekt sieht die vorliegende Erfindung vor: ein Verfahren zum Verbinden von Einheiten in einem Multiprozessor-Computersystem, das mindestens einen ersten Node-Controller, einen zweiten Node-Controller, eine erste Vielzahl an in Wirkverbindung mit dem ersten Node-Controller stehenden Prozessoren, eine zweite Vielzahl an mit dem zweiten Node-Controller in Wirkverbindung stehenden Prozessoren, einen ersten mit dem ersten Node-Controller in Wirkverbindung stehenden Speicher, ein erstes in Wirkverbindung mit dem ersten Node-Controller stehendes Input/Outputsystem, und ein Interprozessor-Kommunikationsnetzwerk aufweist, das eine Wirkverbindung zwischen dem ersten Node-Controller und dem zweiten Node-Controller schafft, wobei der erste Node-Controller aufweist: einen mit dem ersten Speicher verbundenen Speicherport, einen mit dem Input/Outputsystem verbundenen Input/Outputport, mehrere unabhängige Prozessorports mit einem ersten Prozessorport, der in Wirkverbindung mit einem ersten Teilsatz der ersten Vielzahl von Prozessoren steht, und einem zweiten Prozessorport, der in Wirkverbindung mit einem zweiten Teilsatz der ersten Vielzahl von Prozessoren steht, mit folgenden Schritten:
    Übertragen von Daten zwischen dem Speicherport und dem ersten Prozessorport über eine Crossbar-Einheit,
    Übertragen von Daten zwischen dem Speicherport und dem zweiten Prozessorport über die Crossbar-Einheit,
    Übertragen von Daten zwischen dem Speicherport und dem Input/Outputport über die Crossbar-Einheit, und
    Übertragen von Daten zwischen dem Speicherport und einem Netzwerkport über die Crossbar-Einheit.
  • Gemäß einem anderen Aspekt sieht die vorliegende Erfindung vor: einen Node-Controller für die Benutzung in einem Multiprozessor-Computersystem gemäß dem ersten Aspekt, wobei der Node-Controller umfaßt: eine Crossbar-Einheit, und mehrere Ports, die jeweils in Wirkverbindung mit der Crossbar-Einheit stehen und dazu ausgelegt sind, mit jeweils entweder einem der mehreren Prozessoren, einem Speicher, einem Input/Outputsystem oder dem Interprozessor-Kommunikationsnetzwerk verbunden zu werden, wobei die mehreren Ports einen ersten, einen zweiten und einen dritten Port aufweisen, wobei der erste und der zweite Port von einem ersten Port-Typ, und der dritte Port von einem zweiten Port-Typ sind, wobei der erste und der zweite Port-Typ dazu ausgelegt sind, unterschiedliche Funktionen auszuführen.
  • Eine Ausführungsform der vorliegenden Erfindung sieht ein Verfahren und eine Vorrichtung vor, wodurch eine hochparallele Verarbeitung mit einem Node-Controller ermöglicht wird, der sowohl in kleinen als auch in großen Multiprozessorsystemen verwendbar ist, und wodurch über einen großen Bereich von Systempreisen und -fähigkeiten ausgezeichnete Vorteile in Hinblick auf die Leistungsfähigkeit im Verhältnis zu den Kosten ermöglicht werden. Gemäß manchen Ausführungsformen ist dieser Node-Controller auf einem Einzelchip implementiert, der zwei oder mehr Prozessorports, die jeweils Einzelprozessor- und/oder Multiprozessor-Untersysteme (die jeweils optional lokale Cache-Speicher aufweisen) unterstützen, sowie einen oder mehrere der folgenden Port-Typen: Ein-/Ausgabe-(I/O)-Port, Speicherport, Verzeichnisport und Netzwerkschnittstellen-Port bereitstellt.
  • Traditionell werden verteilte Mikroprozessoren unter Verwendung eines getrennten Verzeichnis-Controllers zusammen mit einem Speicher-Controller aufgebaut, die mit dem Netzwerk-Controller, der Ein-/Ausgabeschnittstelle und Prozessoren verbunden sind. Gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung befinden sich der Speicher- Controller (der wahlweise einen Verzeichnis-Controller aufweist, der Cache-Kohärenzfunktionen bereitstellt) und der I/O-Controller und der Netzwerk-Controller alle auf einem Chip, der eine Anzahl von Prozessorports aufweist. Hierdurch wird eine Anzahl von Vorteilen erzielt. Erstens sind Übertragungen zwischen beliebigen der Nodes direkt, erfolgen auf dem Chip und werden unter Verwendung eines einzigen Protokolls implementiert, so daß die Übertragungen nicht so viele Chip-Grenzen überqueren müssen. Zweitens wird durch Einbetten von all diesem auf einem Einzelchip innerhalb des Chips ein vollständiger Crossbar-Entwurf verwendet. Hierdurch wird eine nicht blockierende Kommunikation bereitgestellt, wodurch ein ferner Node direkt mit dem Speicher des lokalen Nodes kommunizieren kann, während der lokale Node mit seinem I/O-System kommuniziert, ohne daß zwischen diesen Kommunikationen Warteschlangen auftreten. Dagegen würde bei einem Bussystem eine der Kommunikationen auf den Abschluß der anderen warten müssen. Diese können bei Ausführungsformen der vorliegenden Erfindung, bei denen eine Crossbar-Einheit verwendet wird, gleichzeitig ausgeführt werden. Weiterhin ist es beim Einbauen aller dieser Einheiten in einen Einzelchip kostenwirksamer, mit derselben Architektur ein kleineres System aufzubauen, weil kein Zusatzaufwand dadurch auftritt, daß eine große Anzahl zusätzlicher Chips vorhanden ist, um eine große Systemkonfiguration zu unterstützen, wenn kein großes System aufgebaut wird.
  • Ausführungsformen der vorliegenden Erfindung sehen ein Multiprozessor-Computersystem vor (beispielsweise ein kleines Multiprozessorsystem mit nur zwei miteinander verbundenen Node-Controllern oder ein Multiprozessorsystem mit bis zu Hunderten oder Tausenden von Node-Controllern, die über ein Router-Netzwerk miteinander verbunden sind). Eine solche Ausführungsform des Systems umfaßt einen ersten Node-Controller, einen zweiten Node-Controller, eine erste Anzahl von Prozessoren, die wirkungsmäßig mit dem ersten Node-Controller gekoppelt sind, eine zweite Anzahl von Prozessoren, die wirkungsmäßig mit dem zweiten Node-Controller gekoppelt sind, einen ersten Speicher, der wirkungsmäßig mit dem ersten Node-Controller gekoppelt ist, ein erstes Ein-/Ausgabesystem, das wirkungsmäßig mit dem ersten Node-Controller gekoppelt ist, und ein Interprozessor-Kommunikationsnetzwerk, das wirkungsmäßig zwischen den ersten Node-Controller und den zweiten Node-Controller geschaltet ist. Gemäß dieser Ausführungsform umfaßt der erste Node-Controller: eine Crossbar-Einheit, einen Speicherport, der wirkungsmäßig zwischen die Crossbar-Einheit und den ersten Speicher geschaltet ist, einen Ein-/Ausgabeport, der wirkungsmäßig zwischen die Crossbar-Einheit und das erste Ein-/Ausgabesystem geschaltet ist, einen Netzwerkport, der wirkungsmäßig zwischen die Crossbar-Einheit und das Interprozessor-Kommunikationsnetzwerk geschaltet ist, und eine Anzahl unabhängiger Prozessorports einschließlich eines ersten Prozessorports, der wirkungsmäßig zwischen die Crossbar-Einheit und einen ersten Teilsatz der ersten Anzahl von Prozessoren geschaltet ist, und eines zweiten Prozessorports, der wirkungsmäßig zwischen die Crossbar-Einheit und einen zweiten Teilsatz der ersten Anzahl von Prozessoren geschaltet ist. Gemäß manchen Ausführungsformen des Systems ist der erste Node-Controller auf einem einzigen integrierten Schaltungschip hergestellt.
  • Gemäß manchen Ausführungsformen des Systems ist der Speicher auf einer Anzahl einsteckbarer Speicher/Verzeichniskarten gepackt, wobei jede Karte eine Anzahl von Speicherchips einschließlich eines ersten Teilsatzes von Speicherchips, die dafür vorgesehen sind, Speicherdaten zu halten, und eines zweiten Teilsatzes von Speicherchips, die dafür vorgesehen sind, Verzeichnisdaten zu halten, aufweist. Weiterhin umfaßt der Speicherport einen Speicherdatenport einschließlich eines Speicherdatenbusses und eines Speicheradreßbusses, die mit dem ersten Teilsatz von Speicherchips gekoppelt sind, und einen Verzeichnisdatenport einschließlich eines Verzeichnisdatenbusses und eines Verzeichnis adreßbusses, die mit dem zweiten Teilsatz von Speicherchips gekoppelt sind. Gemäß manchen dieser Ausführungsformen ist das Verhältnis zwischen (Datenplatz im ersten Teilsatz von Speicherchips) und (Datenplatz im zweiten Teilsatz von Speicherchips) auf jeder der Speicher/Verzeichniskarten auf einen Wert gelegt, der auf der Größe des Multiprozessor-Computersystems beruht.
  • Gemäß manchen Ausführungsformen des Systems kombiniert die Crossbar-Einheit selektiv zwei seriell empfangene Daten-Doppelwörter zu einem einzigen Vierwort-Mikropaket zur Übertragung über die Crossbar-Einheit, wobei jedes Doppelwort wenigstens 64 Datenbits enthält und das einzige Vierfachwort wenigstens 128 Datenbits enthält.
  • Eine andere Ausführungsform der vorliegenden Erfindung sieht ein Verfahren vor, das zusammen mit einem oder mehreren der vorstehend beschriebenen Systeme verwendbar ist. Das Verfahren beinhaltet das Übertragen von Daten zwischen dem Speicherport und dem ersten Prozessorport, zwischen dem Speicherport und dem zweiten Prozessorport, zwischen dem Speicherport und dem Ein-/Ausgabeport und zwischen dem Speicherport und dem Netzwerkport.
  • Manche Ausführungsformen des Verfahrens umfassen weiterhin das direkte Übertragen von Daten zwischen dem ersten Node-Controller und dem zweiten Node-Controller, die über das Interprozessor-Kommunikationsnetzwerk direkt miteinander verbunden sind.
  • Manche Ausführungsformen des Verfahrens umfassen weiterhin das indirekte Übertragen von Daten zwischen dem ersten Node-Controller und dem zweiten Node-Controller über einen Router-Chip, der mit einem oder mehreren anderen Node-Controllern verbunden ist.
  • Kurzbeschreibung der Zeichnung
  • 1 zeigt eine Ausführungsform des Multiprozessorsystems 100 gemäß der vorliegenden Erfindung.
  • 2 zeigt eine Ausführungsform eines Node-Clusters 170 mit einem Router 76 mit sechs Router-Verbindungen 72 und acht Prozessoren 74, wobei vier Prozessoren 74 mit jedem der zwei Node-Controller 75 verbunden sind.
  • 3 zeigt eine Ausführungsform eines Multiprozessorsystems 300 mit einem einzigen Router 76.
  • 4 zeigt eine Ausführungsform eines Multiprozessorsystems 400 ohne Router-Chips, jedoch mit zwei Node-Controllern, die miteinander verbunden sind.
  • 5 zeigt eine Ausführungsform eines Multiprozessorsystems 500 gemäß der vorliegenden Erfindung.
  • 6A zeigt ein DIMM-Modul 600.
  • 6B zeigt eine DIMM-Führung 673 mit vier DIMM-Modulen 600.
  • 7A zeigt den Node-Controller 75 gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 7B zeigt eine Ausführungsform des Node-Controllers 75, wobei weiterhin Hinweise zum Datenfluß in den Node-Controller 75 und innerhalb von diesem enthalten sind. 7B zeigt auch den Node-Controller 75, der innerhalb eines Einzelchips 475 implementiert ist.
  • 7C zeigt ein Diagramm des Node-Controllers 75 innerhalb eines Nodes 370, worin die verschiedenen Schnittstellenbreiten und Taktgeschwindigkeiten für eine Ausführungsform der vorliegenden Erfindung dargestellt sind.
  • 7D zeigt Kopfteil- und Datenformate für Nachrichten gemäß einer Ausführungsform des Node-Controllers 75.
  • 7E zeigt das Feldformat für Quellen- und Ergänzungsfelder.
  • 7F zeigt eine Tabelle von Steuersignalverwendungen für das Steuerfeld 741 oder das Steuerfeld 747.
  • 7G zeigt eine Vorrichtungskennungscodierung für das Feld 743.
  • 7H zeigt die Terminologie, die zum Beschreiben des Inhalts des Quellenfelds im Kopfteil von Nachrichten für die XB-Einheit 279 verwendet wird.
  • Die 7I, 7J, 7K, 7L, 7M und 7N zeigen eine mehrteilige Tabelle (Tabelle 3), die interne Bedrock-Nachrichtenquellen- und Ergänzungsfelder beschreibt.
  • 7O ist eine Tabelle (Tabelle 4) der Xsel-Auswahlcodierungen für die XB-Einheit 279.
  • 8 ist ein Blockdiagramm gemäß einer Ausführungsform der XB-Einheit 279.
  • 8A zeigt eine Tabelle von POQ/PI-Schnittstellensignalen.
  • 8B zeigt eine Tabelle von PIQ/PI-Schnittstellensignalen.
  • 9 zeigt ein Zeitablaufdiagramm 900 für die PIQ-Einheit.
  • 9A zeigt eine Tabelle von MOQ/MD-Schnittstellensignalen.
  • 10 zeigt ein Zeitablaufdiagramm 1000 von MD/MOQ-Schnittstellensignalen.
  • 10A zeigt eine Tabelle von XB/MD-Schnittstellensignalen.
  • 11 zeigt ein Zeitablaufdiagramm 1100 für die NOQ-Schnittstelle.
  • 11A zeigt eine Tabelle von NOQ/NI-Schnittstellensignalen.
  • 11B zeigt eine Tabelle von XB/NI-Schnittstellensignalen.
  • 12 zeigt ein Protokoll für Zugriffsfehler (AE).
  • 12A zeigt eine Tabelle von LOQ/LB-Schnittstellensignalen.
  • 12B zeigt eine Tabelle von LIQ/LB-Schnittstellensignalen.
  • 12C zeigt eine Tabelle von IOQ/II-Schnittstellensignalen.
  • 12D zeigt eine Tabelle von IIQ/II-Schnittstellensignalen.
  • 13 zeigt eine Tabelle von Abtast-Bypass-Zuteiler-Schnittstellensignalen.
  • 14 zeigt ein Diagramm des XB-Zuteilerfilters 1400 für die XB-Einheit 279, wobei das MOQ-Filter als ein Beispiel dargestellt ist.
  • 15 zeigt ein Diagramm einer Wellenfront-Zuteilerstruktur 1500 (dieses Diagramm zeigt nur einen von sechs Zuteilern fester Priorität).
  • 15A zeigt eine Tabelle von Abtastwellenfront-Zuteiler-Schnittstellensignalen.
  • 16 zeigt ein Zeitablaufdiagramm der Ablaufsteuerung in der XB-Einheit 279.
  • 16A zeigt eine Tabelle von Kanälen zum Anfordern von Eingangswarteschlangen.
  • 17 zeigt ein Blockdiagramm von MOQ-Datenpuffern.
  • 17A zeigt eine Tabelle von Signalen zum Anfordern von Eingangswarteschlangen.
  • 18 zeigt ein Blockdiagramm von NOQ-Puffern.
  • 19 zeigt ein Blockdiagramm von IOQ-Puffern.
  • 20 zeigt ein Blockdiagramm von MIQ-Puffern.
  • 21 zeigt ein Blockdiagramm von LIQ-Puffern.
  • 22 zeigt Zellenzählwerte für eine Ausführungsform der XB-Einheit 279, worin die Organisation und die Größen verschiedener Register und Strukturen in der XB-Einheit 279 dargestellt sind.
  • 23 zeigt ein Blockdiagramm der PI-Einheit 270.
  • 23A zeigt Geschwindigkeiten für SYSAD-Schnittstellen für einige T-Rex-Geschwindigkeiten und Taktteiler.
  • 24 zeigt ein Blockdiagramm für den Adreß- und Datenweg für die PI-Einheit 270.
  • 25 zeigt ein Datenstrukturdiagramm eines RRB-Elements.
  • 25A zeigt verschiedene RRB-Statusbits.
  • 26 zeigt ein Blockdiagramm einer RRB-Einheit.
  • 27 zeigt ein Datenstrukturdiagramm eines WRB-Elements.
  • 27A ist eine Tabelle (Tabelle 35) von WRB-Statusbits.
  • 28 zeigt eine Datenstruktur gemäß einer Ausführungsform eines IRB-Elements.
  • 29 zeigt ein Diagramm von Funktionen, die von einer PI-Einheit 270 gemäß einer Ausführungsform der vorliegenden Erfindung bereitgestellt werden.
  • 29A ist eine Tabelle (Tabelle 36) von T-Rex erzeugter Anforderungen.
  • 29B ist eine Tabelle (Tabelle 37) von RRB-Anforderungen für WRB-Konflikte.
  • 29C ist eine Tabelle (Tabelle 38), in der das Datenformat für auswärts gerichtete Anforderungen dargestellt ist.
  • 29D ist eine Tabelle (Tabelle 39), in der das Datenformat für einwärts gerichtete Antwortaktionen dargestellt ist.
  • 30 ist ein Zeitablaufdiagramm für die SYSAD-Zuteilung für eine externe T-Rex-Blockdatenantwort.
  • 31 ist ein Blockdiagramm einer Ausführungsform der MD-Einheit 275.
  • 32 ist ein Blockdiagramm einer Ausführungsform eines Speicher-DIMMs 600.
  • 32A ist eine Tabelle (Tabelle 58) von DIMM-Konfigurationen.
  • 33 ist ein Blockdiagramm einer Ausführungsform eines Paars von "Standard"-Speicher-DIMMs 680.
  • 34 ist ein Blockdiagramm einer Ausführungsform eines Paars von "Premium"-Speicher-DIMMs 690 (wobei eine Hälfte des Paars dargestellt ist).
  • 34A ist eine Tabelle (Tabelle 59) der verwendeten Adreßübersetzung.
  • 34B ist eine Tabelle (Tabelle 60) einwärts gerichteter Nachrichten für die MD-Einheit 275.
  • 34C ist eine Tabelle (Tabelle 61) auswärts gerichteter Nachrichten für die MD-Einheit 275.
  • 35 ist ein Blockdiagramm einer Ausführungsform der Warteschlangen der MD-Einheit 275.
  • 36 ist ein Blockdiagramm einer Ausführungsform der Schnittstelle zwischen der MD-Einheit 279 und einem externen EPROM-, UART-, LED- und Synergie-Brückenchip.
  • 37 zeigt eine Ausführungsform eines Speicherblock-Datenwegs.
  • 38 zeigt eine Ausführungsform eines Abruf-und-Operations-Cache-Datenwegs.
  • 39 ist ein Blockdiagramm der Haupt-Adreß- und Datenwege der NI-Einheit 274.
  • 40 zeigt eine Nachrichten-Seitenbandcodierung.
  • 41 zeigt ein Blockdiagramm der Verbindungen zwischen dem Node-Controller 75 und dem Router 76 gemäß einer Ausführungsform.
  • 42 zeigt ein Diagramm hoher Ebene der IO-Einheit und ihre Position in bezug auf den Rest des Node-Controllers 75 und des Ein-/Ausgabeports 79.
  • Beschreibung der bevorzugten Ausführungsformen
  • In der folgenden detaillierten Beschreibung der bevorzugten Ausführungsformen wird auf die anliegende Zeichnung Bezug genommen, die zu dieser Beschreibung gehört, worin zur Veranschaulichung spezifische Ausführungsformen dargestellt sind, in denen die Erfindung verwirklicht werden kann. Es ist zu verstehen, daß auch andere Ausführungsformen verwendet werden können und daß strukturelle Änderungen vorgenommen werden können, ohne vom Schutzumfang der in den anliegenden Ansprüchen definierten Erfindung abzuweichen.
  • Einige Ausführungsformen der vorliegenden Erfindung betreffen Router, Netzwerke und Synchronisationsvorrichtungen und -verfahren, wie weiter in WO-A-99/26148 beschrieben ist.
  • Einige Ausführungsformen implementieren Multiprozessorsysteme, die im allgemeinen kein kohärentes Cache-Modell verwenden. Andere Ausführungsformen schließen Cache-Kohärenzmechanismen und -verfahren ein, wie in WO-A-99/26144 beschrieben ist. Insbesondere sieht die vorliegende Erfindung einen Node-Controller vor, der kostengünstig ist und eine ausgezeichnete Funktionsweise bereitstellt, sowohl wenn er herunterskaliert wird, als auch wenn er heraufskaliert wird (d.h. zu einer großen Anzahl von Prozessoren).
  • 1 zeigt eine Ausführungsform eines Multiprozessor-Computersystems 100 gemäß der vorliegenden Erfindung mit einem oder mehreren Node-Clustern 170, wobei jeder Node-Cluster 170 null bis N Prozessoren 74, null bis M Speicher 77 und null bis I Ein-/Ausgabe-(I/O)-Teilsysteme 79 aufweist. Abhängig von den Anforderungen eines Benutzers kann das Verbindungsnetzwerk 175 als ein dreidimensionaler Torus, ein N-dimensionaler Hyperwürfel oder ein anderes geeignetes Verbindungsnetzwerk zwischen Routern 76 eingerichtet werden. Gemäß einer Ausführungsform weist jeder Router 76 acht Ports 211 auf, wobei jeder Port 211 verwendet werden kann, um entweder mit anderen Routern 76 zu verbinden oder um mit einem bis N Node-Controllern 75 zu verbinden, die jeweils null oder mehr Prozessorelemente (PEs) 74 aufweisen. Demgemäß kann ein Router 76 bei manchen Ausführungsformen lediglich als ein Verbindungs-Node in dem Netzwerk 175 (d.h. eine Schaltung innerhalb des Blocks 175 statt innerhalb des Node-Clusters 170) ohne PEs 74 oder einem Speicher 77 oder I/O-Teilsysteme 79 verwendet werden, und alle seine Ports werden zum Verbinden mit anderen Routern 76 verwendet.
  • Bei anderen Ausführungsformen werden, wie in 1 dargestellt ist, einige der Ports 211 zum Verbinden mit anderen Routern 76 über das Netzwerk 175 verwendet, und andere Ports 211 werden zum Verbinden über einen Node-Controller 75 mit einer Anzahl 141 von PEs 74, mit Speichern 77 und mit I/O-Teilsystemen 79 verwendet.
  • 2 zeigt Einzelheiten einer solchen Ausführungsform eines Node-Clusters 170 mit einem Router 76, der sechs Router-Verbindungen 72 (d.h. Verbindungen mit anderen Routern 76) und zwei Node-Controller-Verbindungen 73 (auch als Kanal 73 bezeichnet) (d.h. Verbindungen mit den zwei Node-Controllern 75, welche wiederum gemeinsam mit acht Prozessorelementen 74 verbunden sind) aufweist. Ein bis vier PEs 74 sind mit jedem Node-Controller 75 verbunden, und sie teilen sich einen einzigen Speicher 77 mit einer oder mehreren Speicherbänken. Bei manchen Ausführungsformen weist jede Bank zwei oder mehr Speicherkarten auf, auf die parallel zugegriffen wird. Bei manchen Ausführungsformen weist jede Speicherkarte getrennte Teilsätze von Speicherchips auf, wobei ein Teilsatz Speicherdaten zugewiesen ist und ein anderer Verzeichnisdaten zugewiesen ist (solche Karten werden manchmal als Speicher/Verzeichnis-Karten bezeichnet). Jeder Node-Controller 75 ist optional mit einem I/O-Teilsystem 79 verbunden, das Verbindungen zu herkömmlichen Hochgeschwindigkeits-I/O-Ports und Vorrichtungen, wie Workstations, Plattensystemen und Bandsystemen usw. bereitstellt.
  • Bei einer Ausführungsform weist jeder Node-Controller 75 bis zu fünf Schnittstellenports, d.h. PI0 271, PI1 272, II 273, NI 274 und MI 275 auf. Die Prozessorportschnittstelle 0 (PI0) 271 ist mit einem ersten Teilsatz 241 von Prozessoren 74 verbunden, die Prozessorportschnittstelle 1 (PI1) 272 ist mit einem zweiten Teilsatz 242 von Prozessoren 74 verbunden und die Ein-/Ausgabe-Portschnittstelle (II) 273 ist mit einem Ein-/Ausgabesystem 79 verbunden, die Netzwerkportschnittstelle (NI) 274 ist entweder mit einem Router 76 verbunden, wie in 2 dargestellt ist, oder mit einem anderen Node-Controller 75 verbunden, wie in der nachstehenden 4 dargestellt ist. Die Speicherschnittstelle (MI) 275 ist mit dem Speicher 77 verbunden.
  • 3 zeigt eine andere Ausführungsform, in der ein Multiprozessorsystem 300 mit einem einzigen Node-Cluster 170 mit einem einzigen Router 76 dargestellt ist, der keine Routerverbindungen 72 und acht Node-Controller-Verbindungen (Kanäle) 73 (d.h. Verbindungen mit den acht Node-Controllern 75, die wiederum gemeinsam mit zweiunddreißig Prozessoren 74 verbunden sind) aufweist. Jeder Port 211 verbindet mit bis zu einem Prozessor-Cluster 370, und jeder Prozessor-Cluster 370 weist bis zu vier PEs 74, einen gemeinsamen Speicher 77 für die PEs 74 und ein gemeinsames I/O-Teilsystem 79 auf, die alle über einen Node-Controller 75 verbunden sind. Bei dieser Ausführungsform ist der Router 76 mit keinem anderen Router 76 verbunden. Natürlich brauchen bei anderen Konfigurationen nicht alle Ports 211 verwendet zu werden, und nicht alle Prozessor-Cluster 370 müssen mit vier PEs 74 voll belegt werden.
  • 4 zeigt eine Ausführungsform eines Multiprozessorsystems 400 ohne Router-Chips, jedoch mit zwei Node-Controllern 75, die unter Verwendung eines einzigen Interprozessor-Kommunikationskanals 73 miteinander verbunden sind. Diese Ausführungsform läßt bis zu acht Prozessoren 74 zu. Dies ist die maximale Anzahl von PEs 74 für diese Ausführungsform eines Node-Controllers 75 (von denen jeder mit bis zu vier PEs 74 verbinden kann). Jeder Node-Controller 75 verbindet mit bis zu einem anderen Prozessor-Cluster 370, und jeder Prozessor-Cluster 370 hat bis zu vier PEs 74, einen gemeinsamen Speicher 77 für die PEs 74 und ein gemeinsames I/O-Teilsystem 79, die alle über einen Node-Controller 75 verbunden sind. Natürlich brauchen bei anderen Konfigurationen nicht alle Prozessor-Cluster 370 vollständig mit vier PEs 74 belegt sein, und es werden bei wieder anderen Ausführungsformen mehr als acht Prozessoren unterstützt.
  • Systemarchitektur
  • Die Systemarchitektur gemäß der vorliegenden Erfindung (manchmal als "SN1" bezeichnet), die in 5 dargestellt ist, weist einen oder mehrere Prozessor/Speicher-Nodes 370 auf, die mit einem allgemeinen Verbindungsnetzwerk (auch als ein Interprozessor-Kommunikationsnetz bezeichnet) 575 verbunden sind, dessen Bandbreite mit der Anzahl der Prozessoren skaliert. Bei verschiedenen Ausführungsformen kann das Interprozessor-Kommunikationsnetz 575 einfach ein einziger Interprozessor-Kommunikationskanal 73 sein, der direkt mit zwei Node-Controllern 75 gekoppelt ist, wie in 4 dargestellt ist, oder es kann ein umfangreiches Netzwerk aufweisen, das viele Node-Controller 75 verbindet. Ein solches umfangreiches Netzwerk schließt ein Netzwerk miteinander verbundener Router 76 ein, wie es in 1 dargestellt ist, andere Ausführungsformen schließen jedoch andere Verbindungsnetzwerke ein, wie auf dem Fachgebiet wohlbekannt ist.
  • Organisation hoher Ebene des SN1-Systems
  • Der globale gemeinsame Speicher 577 im SN1 ist unterteilt, wobei ein Abschnitt des Speichers 77 auf jede Gruppe von vier Prozessoren 74 verteilt ist (also lokal damit verbunden ist). Dieses Unterteilen bietet eine sehr geringe Latenz für Speicher, der dicht beim Prozessor 74 angeordnet ist, während die allgemeine Verbindung einen globalen Zugriff auf den gesamten Speicher 577 von jedem Prozessor 74 ermöglicht. Ein verzeichnisbasiertes Protokoll wird zum Aufrechterhalten der Cache-Kohärenz über den gesamten globalen Speicher 577 verwendet. Die Ein-/Ausgabe (I/O) 579 innerhalb des SN1-Systems ist auch mit einem I/O-Schnittstellen-Verbindungspunkt (II-Port) 273 auf jedem CPU/Speicher-Node 370 unterteilt. Wie beim verteilten Speicher 577 ist jeder I/O-Port 273 von jedem Prozessor 74 adressierbar.
  • Gemäß einer Ausführungsform ist jeder CPU/Speicher-Node 370 in ein "Kastenmodul" gepackt. Große CPU-Konfigurationen können unter Verwendung mehrerer Node-Module aufgebaut werden. Diese Nodes 370 sind mit Verbindungsstrecken über Router 76, die jeweils auch in einem Kasten gepackt sind, verbunden. Bei verschiedenen Ausführungsformen enthält jeder Node 370 bis zu vier T-Rex- oder Merced-Prozessoren, Speicher-Verzeichnis-Bänke 77, die jeweils ein gewisses Maß an Hauptspeicher und ein zugeordnetes Maß an Verzeichnisspeicher aufweisen, einen Anbringungsport 274 zur Multinode-Verbindung über das Verbindungsnetzwerk (manchmal als CrayLink2 bezeichnet) und einen II-Anbringungsport 273 für das I/O-Teilsystem 79. Der Verbindungsnetzwerk-Anbringungsport ist in jeder Richtung bei 1600 MB/s voll duplexfähig.
  • Der I/O-Anbringungsport (manchmal als "XTOWN2" bezeichnet) ist bei 1200 MB/s voll duplexfähig, kann jedoch auf 800 MB/s verlangsamt werden, um eine Verbindung mit älteren I/O-Vorrichtungen oder Graphikkomponenten von älteren SN0-Systemen herzustellen.
  • Der Anbringungsport für die CrayLink2 verbindet mit dem Routing-Netzwerk 175. Das Routing-Netzwerk 175 ist aus Router-Chips 76 mit acht Ports aufgebaut, die unter Verwendung von Kabeln mit Nodes und miteinander verbinden. Die in der SN1-Familie verwendete Verbindungstopologie ist im nächsten Abschnitt beschrieben.
  • DIMM-Modul 600
  • Das DIMM-Modul 600 (siehe 6A) ist eine vertikal eingesteckte PCB (gedruckte Leiterplatte) mit 294 Stiftpositionen, die Teile für Hauptspeicher und für Verzeichnisspeicher enthält.
  • DIMM-Führungssockel 671 und Hebel 672
  • 6B zeigt eine DIMM-Führung 673 mit vier DIMM-Modulen 600. Weil das DIMM-Modul 600 extra lang ist, ist ein externes Führungs-/Tragteil 673 erforderlich. Die Führung 673 trägt vier Module 600, ermöglicht eine Luftströmung und stellt Merkmale für einen Einführungs-/Entnahmemechanismus bereit. Gemäß einer Ausführungsform wird ein Führungsentwurf an beiden Enden des DIMMs verwendet, wie in 6B dargestellt ist.
  • Hebel 672 befinden sich am oberen Teil der Führung 671. Diese Hebel 672 bieten einen mechanischen Vorteil beim Einführen, Herausnehmen und Festhalten der DIMM-Module 600.
  • In 6B sind am nahen Ende angeordnete DIMM-Riegel geschlossen dargestellt. Am fernen Ende angeordnete Riegel sind im offenen Zustand dargestellt.
  • Gemäß manchen Ausführungsformen ist der Node-Controller 75 auf einem einzigen IC-Chip 475 implementiert (siehe 7B), und gemäß einer speziellen Ausführungsform ist er auf einem als "Bedrock" bezeichneten Einzelchip implementiert. Bezüge auf Bedrock sollen diese spezielle Ausführungsform des Node-Controllers 75 bedeuten, es wird jedoch auch an andere Ausführungsformen der Erfindung gedacht. Insbesondere sind bei manchen erwogenen Ausführungsformen bestimmte der nachstehend beschriebenen Merkmale fortgelassen, und andere Ausführungsformen replizieren beschriebene Merkmale oder fügen bestimmte Kombinationen von Merkmalen hinzu und nehmen diese fort.
  • Überblick über das System
  • Gemäß einer Ausführungsform spezifiziert die vorliegende Erfindung einen Multiprozessor mit einem verteilten gemeinsamen Speicher mit 1 bis 4096 Prozessoren (wenngleich die Bedrock-SN1-Node-Implementation gemäß einer Ausführungsform maximal 1024 Prozessoren unterstützt). SN1 unterstützt vollständig einen einzigen Adreßraum und bietet eine Cache-Kohärenz über die gesamte Maschine. SN1 ist zu einer Anzahl von Nodes organisiert, wobei jeder Node den lokalen Speicher mit den Prozessoren verbindet und einen Port zum Router-Netzwerk und einen Port zum I/O-Teilsystem bereitstellt. Bedrock ist die erste Implementation eines SN1-Nodes. Jeder Bedrock unterstützt bis zu 4 T-Rex+-Prozessoren, einen Abschnitt des globalen Speichers, ein Verzeichnis zum Aufrechterhalten der Cache-Kohärenz, eine Schnittstelle zum Crosstalk-IO-Teilsystem und eine Schnittstelle zum SN1-(SN1Net)-Router-Netzwerk, wie in 7A dargestellt ist.
  • Überblick über den Node-Controller 275 (Bedrock)
  • Der Bedrock-Chip bietet eine Verbindbarkeit zwischen vier Typen externer Schnittstellen und einer Schnittstelle für lokale Chip-Ressourcen. Jede der Schnittstellen wird durch eine als Einheit bekannte Unterabteilung des Bedrocks verwaltet. Die Einheitsnamen sind von den Schnittstellen abgeleitet, die sie verwalten, nämlich der IO-Schnittstelleneinheit (II), der Netzwerk-Schnittstellen einheit (NI), der Speicher/Verzeichnis-Schnittstelleneinheit (MD), der zwei Prozessorschnittstelleneinheiten (PI0 und PI1) und dem lokalen Block (LB). Die Einheiten sind mit einem zentralen Crossbar (XB) verbunden, wie in 7B dargestellt ist. Bedrock unterstützt geteilte Speichersysteme mit bis zu 256 SN1Net-Nodes (1024 Prozessoren).
  • Die verschiedenen internen Bedrock-Schnittstellen kommunizieren durch Senden von Nachrichten über die XB-Einheit. Wie in der SN1-Cache-Kohärenz-Protokoll-Spezifikation erklärt wird, werden Nachrichten in zwei Gruppen, nämlich Anforderungen und Antworten, unterteilt, um eine Systemblockierung zu verhindern. Wenn eine Nachricht über den I/O-Port (Crosstalk-Protokoll) oder den Netzwerk-Port (SN1Net-Protokoll) ankommt, wird die Nachricht in das interne Bedrock-Format umgewandelt. Das Umgekehrte geschieht, wenn eine Nachricht einen dieser Ports verläßt.
  • 7A zeigt den Node-Controller 75 gemäß einer Ausführungsform der vorliegenden Erfindung. 7B zeigt den Node-Controller 75 gemäß einer Ausführungsform, der weiter Angaben zum Datenfluß in den Node-Controller 75 und innerhalb von diesem aufweist. 7B zeigt auch den innerhalb eines Einzelchips 475 implementierten Node-Controller 75. 7C zeigt ein Diagramm des Node-Controllers 75 innerhalb eines Nodes 370, worin die verschiedenen Schnittstellenbreiten und Taktgeschwindigkeiten für eine Ausführungsform der vorliegenden Erfindung beschrieben sind. 7D zeigt Kopfteil- und Datenformate für Nachrichten gemäß einer Ausführungsform des Node-Controllers 75.
  • Internes Nachrichtenformat von Bedrock
  • Die interne Nachricht von Bedrock (eine Ausführungsform des Node-Controllers 75) (siehe 7D) weist einen Kopfrahmen auf (ein Rahmen ist eine Bitgruppe, die konzeptuell oder logisch eine einzige Einheit ist. Der Begriff bezieht sich nicht auf die Anzahl der zum Verarbeiten der Informa tionen erforderlichen Taktzyklen und auch nicht auf die Einheitsgröße der gleichzeitig "auf die Leitung" gegebenen Bits (entweder durch den Bedrock-XB oder über das Router-Netzwerk oder Crosstalk-Schnittstellen)), und es folgen (optional) ein oder mehrere Datenrahmen, die insgesamt 64 bis 1024 Datenbits für die Nachricht aufweisen. Das Format für jeden der Bedrock-Rahmen (der Kopfteil, die Doppelwortdaten und die Vierwortdaten) ist in 4 dargestellt. Einem Kopfrahmen können 0, 1, 2 oder 16 Doppelwortdatenrahmen oder an der MD-Schnittstelle 0, 1 oder 8 Vierwortdatenrahmen folgen (jede bestimmte Bedrock-MD-Schnittstelle verwendet nur eines dieser Datenformate). Die meisten Schnittstellen an der Bedrock-Crossbar-Einheit akzeptieren/übertragen ein 160-Bit-Mikropaket-Flit (das entweder einen Kopfteil, ein Daten-Doppelwort oder ein Daten-Vierfachwort aufweist) in einem einzigen Taktzyklus. Die Crossbar-Einheit von Bedrock verarbeitet jedes Mikropaket (vom Eingabeport zum Ausgabeport) in zwei Taktzyklen. Wenn immer möglich, kombiniert die Crossbar-Einheit 2 empfangene Doppelwörter zu einem einzigen Vierwort-Mikropaket.
  • Wenn jeder Rahmen in die Bedrock-XB-Einheit eintritt oder aus dieser austritt, geben die Steuersignale (in 4 definiert und in Tabelle 1 detailliert beschrieben) alle oder einige der folgenden Informationen an:
    • – für welche lokale Bedrock-Einheit (d.h. für welchen XB-Port) der Rahmen bestimmt ist (Xsel)
    • – ob der Rahmen eine Anforderung oder eine Antwort ist (d.h. die Klasse, die den verwendeten virtuellen Kanal definiert)
    • – ob dieser Rahmen die aktuelle Nachricht abschließt (Endteil). Es sei bemerkt, daß das Xsel-Feld nur für Kopfteile gültig ist und daß Datenrahmen dem Kopfteil immer zur Zieleinheit folgen.
  • 7E zeigt das Feldformat für Quellen- und Zusatzfelder. 7F zeigt eine Tabelle von Steuersignalverwendungen für das Steuerfeld 741 oder das Steuerfeld 747.
  • 7G zeigt eine Vorrichtungskennungscodierung für das Feld 743. 7H zeigt die zum Beschreiben des Inhalts des Quellenfelds im Kopfteil der Nachrichten für XB 279 verwendete Terminologie.
  • Die 7I, 7J, 7K, 7L, 7M und 7N zeigen eine mehrteilige Tabelle (Tabelle 3), die interne Bedrock-Nachrichtenquellen- und Zusatzfelder beschreibt. 7O ist eine Tabelle (Tabelle 4) der Xsel-Auswahlcodierungen für XB 279.
  • Der Kopfrahmen enthält die Quellen- und Zusatzfelder, das Nachrichtentypfeld (Befehlsfeld) und 37 Bits (39 : 3) der gültigen Adresse. Nachfolgende Datenrahmen enthalten 64 oder 128 Datenbits zuzüglich eines Bits zum Angeben eines unkorrigierbaren Datenfehlers (UCE). Das UCE-Bit wird gesetzt, falls für dieses Datenwort ein unkorrigierbarer Fehler in der Art eines Doppelbitfehlers im Speicher gefunden wurde. Es sei bemerkt, daß das Vierwort-Datenformat explizit in DataEven- und DataOdd-Doppelwörter unterteilt ist. Immer dann, wenn Vierfachwörter zur Übertragung entlang einer schmaleren Schnittstelle in Doppelwörter aufgeteilt werden müssen, wird zuerst DataEven übertragen. Falls ein Doppelwort mit gültigen Daten über die Vierwortschnittstelle gesendet wird, wird angenommen, daß es in DataEven vorhanden ist.
  • 7G (Tabelle 2) spezifiziert die Werte, die in den Quellen- und Zusatzfeldern des Kopfrahmens enthalten sind. Das allgemeine Format der in diesen Feldern verwendeten Bezeichner ist in 5 dargestellt. Die Node-Kennung entspricht der Router-Netzwerkadresse [39 : 32] (wenn das System in seinem Standard-M-Modus arbeitet). Der Node-Adreßraum (der gesamte in einem Node adressierbare Speicher) ist daher die Adresse [31 : 0], wodurch bis zu 8 Gigabytes an adressierbarem Speicher je Node zugelassen werden. In 7H "Terminologie zum Beschreiben des Inhalts des Quellenfelds im Kopfteil" bezeichnet das Quellenfeld (in 7E dargestellt) eines der folgenden:
    • – Es bezeichnet für Verzeichnisrevisionsnachrichten (wie XFER oder SHWB), die von der Netzwerkschnittstelle ausgegeben werden, einen Kohärenzanforderungsinitiator (d.h. eine Quelle).
    • – Für andere Nachrichten, die in die Netzwerkschnittstelle eingegeben werden, bezeichnet das Quellenfeld an der weitergeleiteten Anforderung die Zieladresse der dritten Partei (in 6 dargestellt) bei der Kohärenztransaktion.
    • – Es bezeichnet bei allen anderen Nachrichten einen Kohärenzanforderungsinitiator (also eine Quelle).
  • Es gibt zwei Typen von Ungültigmachern innerhalb des Bedrocks:
    • – ein Ungültigmacher-Plus-Bitvektor, der nur zum LB gesendet wird, wird als ein lokaler Ungültigmacher (LINVAL) bezeichnet,
    • – der normale Ungültigmacher, der zu einer PI (lokal oder fern) gesendet wird, wird als ein Ungültigmacher (INVAL) bezeichnet.
  • Die in den 7I7N dargestellte Tabelle beschreibt detailliert Quellen- und Zusatzfeldinhalte für alle Bedrock-Transaktionen. Einige der in dieser Tabelle verwendeten Abkürzungen werden folgendermaßen beschrieben:
    • – Init – Initiator der ursprünglichen Transaktion. 3-Bit-Feldpunkte für eine Vorrichtungskennungscodierung, wie in Tabelle 2 detailliert angegeben ist.
    • – Abs – Absender, 8-Bit-Node-Kennung des die aktuelle Nachricht sendenden Nodes. 1 Eigentümer – der Eigentümer der Cache-Leitung, auf die sich die Adresse in diesem Kopfteil bezieht. Wird zum Wiederherstellen von Revisionsnachrichten verwendet. Der Eigentümer ist entweder der Initiator oder der Absender.
    • – Priorität – die Prioritätsebene der Kohärenzanforderung.
    • – AckCnt – Bestätigungszählwert, der als das Ergebnis gesendeter Ungültigmacher erwartet wird. Diese Zahl ist die Gesamtzahl der gesendeten Ungültigmacher minus 1. 1 WRB – Schreibanforderungs-Pufferressourcen-Tag-Nummer der aktuellen Schreibtransaktion.
    • – Ziel – Bezeichner des Interventionsziels.
    • – T-Rex/BCast – Zweibitfeld, das spezifiziert, zu welchem TRex ein Ungültigmacher zu senden ist. Kann auch eine Übertragung zu beiden TRexs spezifizieren.
  • Überblick über XB 279
  • 8 ist ein Blockdiagramm einer Ausführungsform von XB 279. Die Crossbar-Einheit (XB) 279 des Node-Controllers 75 bietet eine Verbindbarkeit zwischen den zwei PI-Einheiten 270, der MD-Einheit 275, der II-Einheit 273, der LB-Einheit 278 und der NI-Einheit 274 in einer guten und wirksamen Weise. Die XB-Einheit 279 unterstützt den Nachrichtenfluß im internen Bedrock-Format entlang zwei virtuellen Kanälen, die über die physikalischen Kanäle multiplexiert sind, welche jede Einheit mit der XB-Einheit 279 verbinden. Die XB-Einheit 279 ist durch Puffer/Warteschlangen-Bypasswege und Zuteilungshinweise für eine minimale Latenz unter leichten Belastungen ausgelegt und durch Zuteilungsanforderungen für jeden virtuellen Kanal und einen Wellenfrontzuteiler für starke Belastungen ausgelegt. Die Nachrichtenzuordnung zwischen jedem Einheitspaar wird innerhalb jedes virtuellen Kanals aufrechterhalten. Nachrichten, die von einem einzigen virtuellen Quellenkanal auf verschiedene Zieleinheiten abzielen, können in jeder beliebigen Reihenfolge übertragen werden. Nachrichten entlang verschiedenen virtuellen Kanälen können über eine Schnittstelle oder entlang eines physikalischen Kanals auf der Flit-Ebene verschachtelt werden.
  • Dieser Abschnitt verwendet die folgenden einheitszentrierten (nicht XB-zentrierten) Akronyme:
    • • xIQ = Eingangswarteschlange der x-Einheit, die Nachrichten von der XB-Einheit 279 empfängt (beispielsweise PIQ = Eingangswarteschlange der Prozessorschnittstelle)
    • • xOQ = Ausgangswarteschlange der x-Einheit, die Nachrichten enthält, die auf die Übertragung zur XB-Einheit 279 warten (beispielsweise NOQ = Ausgangswarteschlange der Netzwerkschnittstelle).
  • Gemäß einer Ausführungsform befindet sich die XB-Einheit 279 physikalisch in etwa in der Mitte des Node-Controllers 75, weil sie direkt mit jeder der Funktionseinheiten (MD 275, II 273, LB 278, NI 274 und zwei PIs 271 und 272) kommunizieren muß. Die XB-Einheit 279 ist in einen Satz von Modulen, die jeweils direkt mit einer Funktionseinheit gekoppelt sind, und einen Satz, der eine zentrale Verbindbarkeit und Zuteilung bereitstellt, unterteilt.
  • 7O ist ein Blockdiagramm der XB-Architektur. In der in der Figur dargestellten Notation bezeichnet ein Doppel-FIFO zwei Virtualkanal-FIFOs innerhalb einer Einzelpuffer-Speicherstruktur, wobei ein Vierfach-FIFO vier virtuelle Kanäle in einer analogen Struktur bezeichnet. Eine Doppelbank bezeichnet die Breite des FIFO-Schreibports. Die Speicher-Ausgangswarteschlange (MOQ) benötigt zwei doppelbänkige FIFOs zum Unterstützen einer Bandbreite von 3,2 GB/s.
  • Datenweg-Crossbar
  • Dieses lokal angeordnete Modul enthält einen Crossbar mit 8 Eingängen und 6 Ausgängen. Der Crossbar-Datenweg ist für alle Eingänge und Ausgänge 67 Bits breit, wodurch 1,6 GB/s an Datenbandbreite je Port bei einem 5-ns-Takt bereitgestellt wird. Ein einziger Zyklus wird für das Durchlaufen des Crossbar-Datenwegs aufgewandt, wobei Daten registriert werden, bevor sie auf den Crossbar-Datenweg gegeben werden, und hinter dem Ausgangsmultiplexer in ein Register fließen.
  • Datenübertragungen werden durch die Einheits-Ausgangswarteschlangen und den Zuteiler, die zusammenarbeiten, gesteuert. Daten-, Gültigkeits- und Flit-Tag-Informationen werden durch die Ausgangswarteschlange der Quelle bereitgestellt. Crossbar-Auswahlleitungen werden durch den Zuteiler gesteuert und als Heißbusse registriert, um die Durchfallslatenz zu minimieren.
  • Einheits-Ausgangswarteschlangen
  • Die Einheits-Ausgangswarteschlangen (die "OQs") stellen das Puffern für Ausgangseinheitsnachrichten (für die XB-Einheit 279 bestimmt) bereit, während sie Datenwegressourcen zuteilen. (Bemerkung: Die XB-Nomenklatur ist Einheitszentriert, nicht XB-zentriert.) In bestimmten Fällen werden sie auch verwendet, um eine Ratenanpassung zwischen abweichenden XB- und Einheitsbandbreiten (MOQ, NOQ , IOQ) bereitzustellen, sowie als ein Synchronisationspunkt für mit dem Kern (POQ, IOQ) asynchrone Einheiten verwendet.
  • Die OQs weisen zwei Hauptschnittstellen auf, nämlich eine Einheitsschnittstelle und eine Zuteiler/Datenweg-Schnittstelle. Die Einheitsschnittstellen sind für die einzigartigen Anforderungen jeder Einheit eigens ausgelegt und werden in den folgenden Abschnitten detailliert angegeben. Die Zuteiler/Datenweg-Schnittstelle ist über die OQs gleichmäßig.
  • Über alle OQ-Schnittstellen werden Nachrichtenziele unter Verwendung des Xsel, das der Zieleinheit zugeordnet ist, spezifiziert. Diese Codierung, die in Tabelle 4 beschrieben ist (in 8 dargestellt), ist mit dem Router-Netzwerkkopfformat konsistent (gemäß einer Ausführungsform verwendet die vorliegende Erfindung ein Router-Netzwerk, wie in WO-A-99/26148, WO-A-99/26429, WO-A-99/26163, WO-A-99/26144 und WO-A-99/2616 beschrieben ist), wodurch der Umfang der an der Netzwerkschnittstelle erforderlichen Formatübersetzung minimiert wird. Es sei bemerkt, daß die XB-279-Einheit einen Übersatz der Router-Netzwerkcodierungen zum Adressieren Bedrock-interner nur für Nachrichten vorgesehener Ziele unterstützt.
  • Es sei bemerkt, daß die Gültig-Nachricht (von der Einheit zur Ausgangswarteschlange) außer bei NI 274, wo sie entweder einem Kopfteil oder zwei aufeinanderfolgenden Daten-Flits entspricht, einem Einzelzyklus-Flit entspricht. Der Endteil kommt, außer bei NI, wo er mit der Gültig-Nachricht kommt, mit dem letzten Flit der Nachricht. Es sei auf 7O verwiesen, worin Tabelle 4 dargestellt ist. Es sei bemerkt, daß das Setzen von Xsel[2] auf 0 zu vier SN0-kompatiblen Codierungen führt (wobei der lokale Block NI 274 als das Ziel für Vektoren und NI-Register-PIOs ersetzt). Xsel[2] kann als ein "Unter-Node"-Auswahlbit angesehen werden.
  • Zum Verringern der Latenz durch eine leere OQ können die Nachrichtenpuffer vollständig umgangen werden, oder die Daten können im selben Zyklus in die Puffer geschrieben und aus diesen ausgelesen werden. Die Einzelheiten der Crossbar-Zuteilung sind vor der Einheit verborgen, die sich nur um die richtige Datenübertragung und die Flußsteuerung auf der OQ-Schnittstelle kümmern muß.
  • Einheits-Eingangswarteschlangen
  • Die Einheits-Eingangswarteschlangen (die "IQs") ermöglichen ein Puffern für Daten, die durch die XB-Einheit 279 gelaufen sind, jedoch noch nicht von ihrer Zieleinheit verarbeitet worden sind. Die primäre Rolle besteht darin, eine Ratenanpassung und Synchronisation zwischen der XB-Einheit 279 und der Empfangseinheit bereitzustellen. Falls sie eine geeignete Größe aufweisen, isolieren sie den XB-Nachrichtenfluß von den Wirkungen von Einheiten geringerer Bandbreite und ermöglichen es, daß Einheiten höherer Bandbreite ankommende Pakete akkumulieren, bis eine Übertragung bei der höheren Rate möglich ist.
  • Weil die NI-Einheit 274 mit der XB-Einheit 279 synchron ist und in der Bandbreite mit dieser übereinstimmt, weist die NI-Einheit 274 keine IQ auf. Füllniveauinformationen von den IQs werden vom Zuteiler für Flußsteuerinformationen von den OQs verwendet. Im Fall der NI-Einheit 274 werden SN1Net-Flußsteuerinformationen verwendet, um einen Staudruck über die XB-Einheit 279 bereitzustellen.
  • Die MD-Einheit 275 benötigt Eingabepuffer zum Bereitstellen einer Ratenanpassung zwischen der XB-Einheit 279 und der Speicherschnittstelle mit einer höheren Bandbreite. Zum Ermöglichen einer engeren Kopplung zwischen der MD-Einheit 275 und den Eingabepuffern werden die Puffer in der MD-Einheit 279 statt in einer XB-IQ angeordnet. Die MD-Einheit 275 führt dem Zuteiler auch Flußsteuersignale zu.
  • Es sei bemerkt, daß die Gültig-Nachricht (von der XB-Einheit 279 zur IQ oder zur Einheit) über alle Warteschlangen konsistent ist, in denen sie einem Einzelzyklus-Flit entspricht. Der Endteil entspricht, abgesehen von NI 274, wo er im ersten Zyklus der Zweizyklenübertragung aktiviert ist, dem letzten Flit der Nachricht.
  • Zuteiler
  • Der Zuteiler liefert eine Zuteilung geringer Latenz für konkurrenzfreie Ports über eine Bypass-Zuteilung und eine wirksame hohe Auslastung über eine Wellenfrontzuteilung, wenn die Ressourcen gesättigt werden. Der Zuteiler muß auch die Gerechtigkeit für alle Einheiten und die Richtigkeit gewährleisten, indem er eine Nachrichtenfragmentierung innerhalb eines virtuellen Kanals verbietet.
  • Die Grundeinheit für die vom Zuteiler unterstützte Datenübertragung ist eine Zweitakteinheit, die entweder aus einem Einzeltaktkopf, dem ein unbenutzter Zyklus folgt, einem Einzeltakt von Daten, dem ein unbenutzter Zyklus folgt, oder zwei Datentakten besteht. Es sei bemerkt, daß Einzeltakt-Datenübertragungen nur für die letzte Übertragung einer Datenlast ungerader Länge verwendet wird. Der Zuteiler empfängt in jedem zweiten Zyklus Anforderungen für zwei Zyklen der XB-Bandbreite von den Einheiten und gewährt im selben Zyklus Bandbreite für ein bestimmtes Ziel.
  • Fehlerbehandlung
  • Die XB-Einheit 279 findet bei manchen Ausführungsformen Fehler mit einigen der folgenden Grundursachen:
    • • Entwurfsfehler im Bedrock (in den Einheiten oder in der XB-Einheit 279 selbst).
    • • Fehler externer Komponenten, deren Wirkungen nicht von den Einheiten gefiltert werden, bevor sie die XB-Einheit 279 erreichen.
    • • Systemkonfigurationsfehler.
  • Wenngleich sich diese Fehler in vielen Weisen zeigen können, erkennt die Crossbar-Einheit nur Fehler der folgenden Typen:
    • • Ungültige Xsel-Zielcodierungen von einer Einheit zur OQ (BAD_XSEL).
    • • Einen Warteschlangenüberlauf von der Einheit zur OQ oder von der OQ zur IQ.
    • • Einen Warteschlangenunterlauf infolge einer OQ-Gewährung oder eines IQ-Lesens einer leeren Warteschlange.
    • • Das Fehlen einer Weiterleitung von einer IQ zu einer Leitung (DEADLOCK_TIMEOUT).
    • • Das Fehlen eines Endteils von einer Einheit zu einer OQ (TAIL_TIMEOUT).
  • Rückwurf-Modus
  • Der Crossbar stellt einen Fehlersuchmodus bereit, in dem alle eine bestimmte OQ verlassenden Daten oder alle in eine bestimmte IQ eintretenden Daten zur NI-Einheit 274 zurückgeführt ("zurückgeworfen") werden können. Sobald die NI-Einheit 274 erreicht wird, werden die Daten in das Netzwerkformat umgewandelt und vom SN1Net-Port (wie normal) ausgesendet, um über einen geeigneten Testchip (einen, der eine Untersuchung der Signale auf der Verbindungsstrecke ermöglicht), der in die Verbindungsstrecke eingebettet ist, eingefangen zu werden. Es sei bemerkt, daß dieser Modus nur für eine Einzel-Node-System-Fehlersuche verwendbar ist, weil der Port der NI-Einheit 274 nicht von zurückgeworfenem Verkehr und normalem Verkehr geteilt verwendet werden kann.
  • POQ
  • Gemäß einer Ausführungsform gibt es zwei Ausprägungen, nämlich POQ0 812 und POQ1 816 der Prozessorschnittstellen-Ausgangswarteschlange, wobei eine für jede PI-Einheit 270 vorgesehen ist. Gemäß anderen Ausführungsformen werden sogar noch mehr Ausprägungen des PI-Ports oder eine Anzahl von Ausprägungen von einem oder mehreren der anderen Ports verwendet.
  • Jede POQ akzeptiert Anforderungs- und Antwortnachrichten für eine PI-Einheit 271 oder 272 bei der PI-Taktfrequenz. Die POQ weist intern einen Synchronisierer auf, um die PI-Daten in den Kerntaktbereich zu bringen. Im Kerntaktbereich bietet die PI-Einheit dem Zuteiler und dem Datenweg der XB-Einheit PI-Anforderungen und Antworten dar. Es gibt einen Synchronmodus (Stift), der gesetzt werden kann, wenn die PI-Einheit 270 und der Kern synchron arbeiten. Hierdurch wird bewirkt, daß die POQ den Synchronisierer umgeht und 1,5 Zyklen spart.
  • Die PI-Einheit 271 oder 272 wird von der POQ 812 bzw. 816 flußgesteuert. Die POQ gibt die Anzahl der für neue Daten in den Anforderungs- und Antwortwarteschlangen verfügbaren freien Einträge an. Wenn die Anzahl der freien Einträge 0 erreicht, ist es nicht mehr zulässig, daß die PI-Einheit 270 Daten zur POQ sendet.
  • Die PI-Einheit 270 muß die Anzahl der Einträge kennen, so daß sie die Steuerung in geeigneter Weise an den T-Rex+-Prozessor übergeben kann (ein einfaches Voll-Hinweiszeichen ist hierfür nicht ausreichend).
  • Weil mit jeder PI-Einheit 270 zwei Prozessoren verbunden sind, ist die verwendete Namenskonvention beispielsweise PI_POQ_RgValid_P0, PI_POQ_RgValid_P1.
  • Der kernseitige Taktbereich der POQ hat eine spezielle Logik zum Erzeugen von Revisionsnachrichten im Antwortkanal. Einige Interventionsantworten von T-Rex+ machen es erforderlich, daß Revisionsnachrichten mit oder ohne Daten, abhängig vom Befehlstyp und von zusätzlichen Feldern zum Speicher des Heim-Nodes gesendet werden. In der folgenden Gleichung sind Revisionsnachrichtentypen detailliert angegeben:
    Wenn das Revisionsbit (Bit 55) gesetzt ist, ist der Revisionsnachrichtenbefehl einer von
    ('BR_CMD_UACK | 'BR_CMD_SACK | 'BR_CMD_BACK | 'BR_CMD_RACK | 'BR_CMD_URESP | 'BR_CMD_SRESP | 'BR_CMD_ERESP)
    Die Revision ist vom Typ LongLong, falls (RevCmd == 'BR_CMD_SXWB) | (RevCmd == 'BR_CMD_SHWB);
    Die Revisionskennung ist LongShort, falls (MsgCmd == 'BR_CMD_ERESP) & (RevCmd == 'BR_CMD_XFER).
    RpFree wird aktiviert, wenn ein Eintrag vom Antwortpuffer befreit wird, RgWrFree wird jedoch nur aktiviert, wenn die Pakete länger sind als zwei Flits.
    Kein RgWrFree wird für das Lesen aktiviert, weil die Leseanforderung nicht länger als zwei Flits ist, während 15 RgWrFree-Impulse für ein Blockschreiben (Flits 3–17) aktiviert werden, weil PI 270 die zwei Einträge reservieren muß, um im Fall eines Fehlers ein teilweises Schreiben auszuführen. Für eine Graphikanforderung (ohne daß ein Fehler erwartet wird) wird RgWrFree immer dann aktiviert, wenn ein Eintrag freigelegt wird.
  • PIQ
  • Die Prozessorschnittstellen-Eingangswarteschlange (PIQ) ist ein FIFO-Paar mit getrennten Anforderungs- und Antwortkanälen. Die XB-Seite der PIQ arbeitet bei der Kerntaktgeschwindigkeit, während die PI-Seite der PIQ bei der PI-Taktgeschwindigkeit arbeitet. Auf diese Weise implementiert die PIQ eine asynchrone Grenze. Wenn auf der PI-Seite der PIQ gültige Daten auftreten, werden Gültig-Leitungen aktiviert, bis die PI-Einheit 270 Daten von der PIQ liest.
  • MOQ
  • Zum Aufrechterhalten der vollen Speicherbandbreite weist der Ausgangswarteschlangenblock der Speichereinheit (MOQ-Block) drei replizierte Warteschlangenstrukturen (MP0, MP1, MMQ) auf, die an drei getrennte Ports der XB-Einheit 279 angehängt sind. Die MD-Einheit 275 sendet Nachrichten auf der Grundlage ihres Ziels in jede Warteschlange. Jeder PI 270 ist eine einzige Warteschlange (MP0 und MP1) zugewiesen, und es gibt eine dritte Warteschlange, innerhalb derer LB-, NI- und II-Nachrichten gehalten werden (MMQ).
  • Jede MOQ-Struktur besteht aus getrennten Kopfteil-(MOQH)- und Daten-(MOQD)-FIFOs. MOQH und MOQD haben getrennte Schnittstellen, um die Verbindung zum MD-275-Datenweg wirksam zu gestalten. Die MOQH-Einheit ist ungleichmäßig in Anforderungs- und Antwortkanäle (hauptsächlich Antwortkanäle) eingeteilt, weil der größte Teil des auswärts gerichteten Verkehrs auf dem Antwortkanal auftritt. Die MOQH- und die MOQD-Einheit haben auch Bypass-Wege. Der begrenzte Satz Daten tragender Anforderungen vom MD 275 läuft vollständig über die MOQH-Einheit, wodurch ein Anforderungskanal auf der MOQD-Einheit überflüssig wird. Zum Akzeptieren der 3,2-GB/s-Datenrate von der MD-Einheit 275 weist die MOQD-Einheit Dualpuffer auf, in die gleichzeitig von der MD-Einheit 275 geschrieben wird und die abwechselnd durch die XB-Einheit 279 gelesen werden.
  • Wenn ein Doppel-Datenwort übertragen wird, kann die MD-Einheit 275 die Daten auf beiden Seiten der Vierwortschnittstelle darstellen. Das DwOffset-Signal gibt an, ob DataEven oder DataOdd verwendet wird.
  • Zum Verringern der Fernleselatenz präsentiert die MD-Einheit 275 der MOQ-Einheit gelegentlich einen Kopfteil, bevor alle Prüfungen abgeschlossen sind. Es gibt zwei Szenarien, bei denen dies auftritt:
    • 1. Hdr{Rq, Rp}dst ist aktiviert, und im nächsten Zyklus, während dessen der Kopfteil selbst übertragen wird, findet die MD-Einheit 275 einen ECC-Fehler und muß die Nachricht aufheben. Die MD-Einheit 275 aktiviert das Abbrechsignal in diesem zweiten Zyklus, wodurch angegeben wird, daß der Kopfteil fallengelassen werden sollte und daß alle dieser Nachricht zugeordneten Zustände gelöscht werden. Im selben (zweiten) Zyklus kann ein anderes Hdr{Rq, Rp}Valid (auf demselben Kanal) aktiviert werden, und diese Nachricht muß auch aufgehoben werden.
    • 2. Für Nachrichten, die zur NI-Einheit 274 gerichtet sind (auf ihrem Weg zu einem fernen Node), kann in dem Zyklus ein Zugriffsfehler erkannt werden, nachdem der Kopfteil zur MOQ-Einheit übertragen worden ist. In diesen Fällen aktiviert die MD-Einheit 275 das AE-Signal auf dem dritten Übertragungszyklus, und die MOQ-Einheit und die NI-Einheit 274 wirken zusammen, um zu gewährleisten, daß der Kopfteil fallengelassen wird. Infolge dieser aufgehobenen Übertragung kann in der XB-Einheit 279 ein Restnachricht-in-Verlauf-Zustand verblieben sein. Die MD-Einheit 275 garantiert, daß sie wieder eine Nachricht entlang demselben Kanal zur NI-Einheit 274 sendet, wodurch jeder ausstehende XB-Zustand gelöscht wird. Es sei bemerkt, daß das ursprüngliche Hdr{Rq, Rp}Valid möglicherweise im zweiten Zyklus nicht abgebrochen worden ist und im dritten Zyklus ein Zugriffsfehler vorgefunden wurde. Es sei auch bemerkt, daß jeder Kopfteil, der einem Kopfteil unmittelbar folgt (auf demselben Kanal), der als letzter einen Zugriffsfehler vorgefunden hat, verworfen werden muß. Ein einziger Verzögerungszyklus nach dem AE-Kopfteil ist ausreichend, um wieder eine gültige Übertragung zu ermöglichen. Falls AE im dritten Zyklus aktiviert ist, garantiert die MD- Einheit 275, daß im zweiten und im dritten Zyklus kein Hdr{Rq, Rp}Valid auftritt.
  • Die Ablaufsteuerung zwischen der MD-Einheit 275 und jeder der MOQ-Einheiten ist guthabenbasiert. Beim Rücksetzen nimmt die MD-Einheit 275 an, daß der folgende Platz in jeder MOQ-Einheit vorhanden ist:
    • • 4 Anforderungsköpfe/DW-Dateneinträge in der MOQH-Einheit
    • • 12 Antwort/DW-Dateneinträge in der MOQH-Einheit
    • • 24 QW-Datenantworteinträge in der MOQD-Einheit
  • Die MD-Einheit 275 muß für jede MOQ-Einheit einen Zählwert für den verfügbaren Pufferplatz aufrechterhalten. Beim Übertragen eines Kopfteils oder Datenzyklus zu einer bestimmten MOQ-Einheit muß die MD-Einheit 275 den entsprechenden Guthabenzählwert dekrementieren. Die HdrRq/RpFree-Ausgaben von jeder MOQ-Einheit geben an, daß in der MOQH ein Einzelzyklus-Kopfteil/Doppelwort-Dateneintrag verfügbar geworden ist. DataFree gibt an, daß ein Vierworteintrag oder als Vierfachwort ausgerichteter Doppelworteintrag in der MOQD-Einheit verfügbar geworden ist.
  • 10 und Tabelle 20 (in 9A dargestellt) liefern eine detaillierte Liste der MD/MOQ-Schnittstellensignale.
  • MIQ
  • Es gibt in der XB-Einheit 279 keine MIQ-Einheit. Die XB-Einheit 279 fügt direkt an den Eingangsdatenweg der MD-Einheit 275 an, wodurch ermöglicht wird, daß die MD-Einheit 275 in einer Warteschlange angeordnete Nachrichten besser verwalten kann. Der 1,6-GB/s-Port der XB-Einheit kann nur die Hälfte der Spitzenbandbreite des Speichers bereitstellen.
  • Die MD-Einheit 275 liefert eine getrennte Ablaufsteuerung für mehrere XB-Quellen, wodurch ermöglicht wird, daß Anforderungen von bestimmten Quellen Fortschritt machen, während andere aufgeschoben sind, bis ihre Puffer befreit werden.
  • Zum Verbessern der Latenz ferner Lesevorgänge leitet die NI-Einheit 274 Fernleseanforderungen an die MIQ-Einheit weiter, sobald sie empfangen werden, wodurch die XB-Einheit 279 vollkommen umgangen wird. Lesevorgänge, die vom schnellen NI-Weg empfangen werden, sind spekulativer Natur, und sie werden nur dann über die Schnittstelle der MD-Einheit 275 weitergeleitet, wenn die MIQ-Einheit die Schnittstelle nicht auf andere Weise verwenden kann. Die spekulativen Kopfteile werden nur für einen Einzelzyklus präsentiert, und sie werden durch das HdrAvail zugeordnete HdrSpec-Signal identifiziert.
  • Es sei bemerkt, daß die von der NI-Einheit 274 zur MD-Einheit 275 gesendeten spekulativen Hinweise den Betrieb der NI->NOQ-Schnittstelle in keiner Weise beeinflussen. Tabelle 21 (in 10A dargestellt) listet die Schnittstellensignale zwischen der XB-Einheit 279 und der MD-Einheit 275 detailliert auf.
  • NOQ
  • Die Ausgangswarteschlange (NOQ) der Netzwerkeinheit weist vier Kanäle auf, die direkt den vier virtuellen Kanälen des Router-Netzwerks (175) entsprechen. Jeder einzelne Kanal wird als ein FIFO behandelt und liefert Anforderungen an den Zuteiler. Durch Steuern der zur NOQ-Einheit zurückgegebenen Gewährungen gewährleistet der Zuteiler, daß die vier virtuellen Kanäle in geeigneter Weise in die zwei virtuellen Kanäle eingefügt werden, die vom Rest der Bedrock-Einheit unterstützt werden.
  • Daten werden in analoger Weise wie diejenige, die zwischen OQs und IQs innerhalb der XB-Einheit 279 verwendet wurde, in 2-Zyklus-Flits über die NI-NOQ-Schnittstelle übertragen. Der NOQ-Einheit kann nicht in nachfolgenden Zyklen eine Gültigkeit zugewiesen werden. Jedes Setzen von Gültig bzw. Valid stellt entweder einen Einzelzyklus-Bedrock-Kopfteil gefolgt von einem unbenutzten Zyklus, einen einzelnen Datenzyklus gefolgt von einem unbenutzten Zyklus oder zwei Datenzyklen dar. Nutzlasten gleicher Länge werden als eine Reihe von Zweizyklus-Datenflits gesendet, wobei die letzte Übertragung einer Nutzlast ungerader Länge ein gültiger einzelner Datenzyklus gefolgt von einem Blindzyklus ist.
  • Es gibt auf der NI-NOQ-Schnittstelle keine explizite Unterscheidung zwischen einem Einzelzyklus- und einem Doppelzyklus-Daten-Flit. Die NOQ-Einheit verwendet das mit dem Valid-Impuls des Kopfteils bereitgestellte Größenfeld, um die beiden zu unterscheiden. Die NOQ-Einheit decodiert die Befehlsgrößenbits des Kopfteils und tastet nur das erste Daten-Doppelwort im letzten Flit der Nachricht ab. Es sei auch bemerkt, daß, wenngleich das UCE-Bit für jedes Daten-Doppelwort im Crossbar-Format definiert ist, es nur im ersten Zyklus eines Daten-Flits von der NI-Einheit 274 zur NOQ-Einheit gültig ist.
  • Die NI-Einheit 274 leitet Flits zur NOQ-Einheit weiter, bevor die Verbindungsniveauprüfung abgeschlossen wird. In Fällen, in denen ein Flit infolge eines Verbindungsniveaufehlers fallengelassen werden muß, aktiviert die NI-Einheit 274 nach dem Setzen von Valid eine Squashoperation eines Zyklus.
  • Die NOQ-NI-Schnittstellen-Ablaufsteuerung fordert, daß die NI-Einheit 274 die NOQ-Puffertiefe kennt. Die NI-Einheit 274 muß alle verbrauchten Puffer (durch gültige Übertragungen) und alle befreiten Puffer (durch einen Frei-Impuls bzw. Free-Impuls von der NOQ-Einheit angegeben) verfolgen. Die Puffertiefe wird als die Anzahl der 2-Zyklus-Flits gemessen, die gespeichert werden können, und ein Frei- bzw. Free-Impuls gibt die Freigabe eines 2-Zyklus-Flit-Puffers an. Ein Valid gefolgt von einem Squash wird von der NOQ-Einheit fallengelassen und führt daher nicht zu einem Free-Impuls.
  • Es sei auf 11 für ein NOQ-Zeitablaufdiagramm verwiesen. Es sei bemerkt, daß die Figur SN1Net LLP und interne Crossbar-Signale einschließt. Diese helfen dabei, die erwartete Ausfallatenz von der SN1Net-Einheit auf die Crossbar-Einheit darzustellen, sie beeinflussen die NI-NOQ- Schnittstelle jedoch nicht direkt. Die Schnittstellensignale sind in Tabelle 22 aufgelistet (in 11A dargestellt).
  • NIQ-Funktionalität
  • Die NI-Einheit 274 hat keine Eingangswarteschlange für einwärts gerichteten XB-Verkehr. Die direkte Verbindung zwischen der NI-Einheit 274 und der XB-Einheit 279 schreibt vor, daß Nachrichten im von der XB-Einheit 279 unterstützten 2-Zyklus-Flit-Format über die Schnittstelle übertragen werden. Jedes Aktivieren von DataValid signalisiert, daß der erste Zyklus eines Flits übertragen wird. Der unbenutzte Zyklus nach jedem Kopfteil ermöglicht, daß die NI-Einheit 274 Bedrock-Kopfteile in 2-Zyklus-Router-Netzwerk-Kopfteile bei der vollen Rate erweitert. Um zu ermöglichen, daß die NI-Einheit 274 auswärts gerichtete Nachrichten mit einer minimalen Latenz formatiert, ist am ersten Zyklus des 2-Zyklus-Flits das DataTail-Tag bereitgestellt. Es gibt keine Unterscheidung zwischen Einzel- und Doppel-Datenzyklus-Flits auf der Schnittstelle.
  • Die zwei Kanäle des von der XB-Einheit unterstützten Verkehrs (Anforderung/Antwort) sind durch die NI-Einheit 274 in einer für die Crossbar-Einheit unsichtbaren Weise auf die vier Router-Netzwerkkanäle demultiplexiert. Die NI-Einheit 274 kombiniert Ablaufsteuerinformationen von den vier virtuellen Netzwerkkanälen, um einen Staudruck auf die von der Crossbar-Einheit gesehenen zwei Kanäle auszuüben.
  • Das XB->NI-Protokoll ist durch eine latenzverringernde Optimierung vom Speichersystem kompliziert. Zum Unterstützen von Antworten minimaler Latenz auf Fernspeicheranforderungen sendet die MD-Einheit 275 Antwortkopfteile zur XB-Einheit (an die NI-Einheit 274 gerichtet), bevor das Prüfen von Zugriffsrechten abgeschlossen ist. Wenn die Zugriffsprüfung zu einem Fehler führt, aktiviert die MD-Einheit 275 das Zugriffsfehlersignal (AE-Signal) für die MOQ-Einheit und die NI-Einheit 274. Falls der Antwortkopfteil einer minimalen Latenz durch die MOQ-Einheit und die Crossbar-Einheit läuft, kommt der Kopfteil DataValid gleichzeitig mit dem AE-Signal an. Das AEValid-Signal von der MOQ-Einheit zur NI-Einheit 274 wird immer dann aktiviert, wenn dieser Weg minimaler Latenz genommen wird. An der NI-Einheit 274 wird das Zugriffsfehlerbit (AE-Bit) von der MD-Einheit 275 mit dem AEValid-Bit von der MOQ-Einheit kombiniert, um XB-DataValid zu schalten, wie in 12 dargestellt ist. Es sei auf Tabelle 23 (in 11B) für eine Beschreibung des vollständigen Satzes von XB/NI-Schnittstellensignalen verwiesen.
  • LOQ
  • Die Ausgangswarteschlange des lokalen Blocks (LOQ) ist ein FIFO-Paar. Es braucht nur groß genug zu sein, um zu gewährleisten, daß auswärts gerichtete Ungültigmacher bei der vollen Netzwerkbandbreite gesendet werden können. Die LOQ-Warteschlange weist keinen Bypass-Weg auf.
  • Die LOQ-Schnittstellensignale sind in Tabelle 24 (in 12A dargestellt) detailliert angegeben. Ein Kopfteil oder ein einzelner Datenzyklus wird als übertragen angesehen, falls
    (RgAvail && RgReady) || (RpAvail && RpReady)
    Rq und RpReady können gemeinsam aktiviert werden. Rq, RpAvail schließen einander aus.
  • LIQ
  • Die Eingangswarteschlange des lokalen Blocks (LIQ) stellt unabhängige Anforderungs- und Antwortschnittstellen für den lokalen Block dar. Der Anforderungs-FIFO puffert Ungültigmachungsanforderungen (sowie andere Anforderungen an den lokalen Block) und sollte groß genug sein, um alle Grob-Ungültigmacher aufzunehmen, die von den vier Prozessoren am lokalen Node ausgegeben werden können.
  • Wenn die LIQ-Einheit an die LB-Einheit zu übergebende Anforderungs-Flits aufweist, aktiviert sie das RgAvail-Signal. Die LB-Einheit aktiviert RgReady unabhängig, wenn sie ein Anforderungs-Flit akzeptieren kann. Wenn sowohl RgAvail als auch RgReady im selben Zyklus aktiviert werden, wird festgelegt, daß eine Datenübertragung aufgetreten ist. Die LB-Einheit kann mehrere Flits im selben Zyklus durch Aktivieren mehrerer Ready-Signale bzw. Bereit-Signale bei Vorhandensein mehrerer Avail-Signale in Anspruch nehmen.
  • Die einzigen Antwortnachrichten, die durch die LIQ-Einheit fließen, sind Vektorantworten. Die LB-Einheit garantiert, daß Vektorantworten immer bei der vollen Rate verbraucht werden können. Die LB-Einheit garantiert auch, daß alle Antwortnachrichten, die fälschlicherweise an der LB-Einheit ankommen, bei der vollen Rate verbraucht werden. Daher wird ein Valid-Signal an Stelle eines Ready/Avail-Protokolls von der LIQ-Einheit verwendet, um eine Antwortübertragung anzugeben, und es wird der LIQ-Einheit kein Antwortspeicher zugewiesen.
  • Die LIQ/LB-Schnittstellensignale sind in Tabelle 25 detailliert angegeben (in 12B dargestellt).
  • IOQ
  • Die Ausgangswarteschlange der IO-Schnittstelle (IOQ) ist ein FIFO-Paar mit getrennten Anforderungs- und Antwortkanälen. Daten von der II-Einheit 273 werden bei der Geschwindigkeit der II-Einheit 273 in die IOQ-Einheit geschrieben, die in bezug auf den Bedrock-Kerntakt asynchron ist. Daten werden von der XB-Einheit 279 bei der Bedrock-Kerngeschwindigkeit gelesen.
  • Zur einfachen Implementation werden die IOQ-Einheit und die POQ-Einheit von derselben Quellenlogik instantiiert. Das heißt, daß sie logisch identisch sind. Bei verschiedenen Ausführungsformen werden spezielle Merkmale, abhängig davon, ob die Logik der II-Einheit 273 oder der PI-Einheit 270 dient, aktiviert oder deaktiviert.
  • Die Ausnahme ist der Zuteilungsauslöser in der IOQ-Einheit. Der Zuteilungsauslöser in der IOQ-Einheit ermöglicht es der IOQ-Einheit, eine programmierbare Anzahl von Zyklen nach dem Sehen eines Kopfteils zu warten, bevor sie mit dem Zuteilen beginnt. Hierdurch wird der IOQ-Einheit eine Chance gegeben, daß sie ausreichend Einträge aufweist, damit sie den Zuteiler und den Bus ohne einen unbenutzten Zyklus optimal verwenden kann. Das Zuteilungsauslöseregister kann auf II-Frequenz/Kernfrequenz × Anzahl der Zyklen zur Übertragung einer Cache-Leitung gesetzt werden.
  • IIQ
  • Die Eingangswarteschlange der IO-Schnittstelle (IIQ) ist ein FIFO-Paar mit getrennten Anforderungs- und Antwortkanälen. Daten von der XB-Einheit 279 werden bei der Geschwindigkeit des Bedrock-Kerns in die IOQ-Einheit geschrieben, die in bezug auf den II-Takt asynchron ist. Sie werden durch getrennte Anforderungs- und Antwortregister zur II-Einheit 273 übertragen.
  • Zur einfachen Implementation werden die IIQ- und die PIQ-Einheit von derselben Quellenlogik instantiiert. Das heißt, daß sie mit Ausnahme des Zuteilungsauslösers in der IOQ-Einheit logisch identisch sind. Der Zuteilungsauslöser in der IOQ-Einheit ermöglicht es, daß die IOQ eine programmierbare Anzahl von Zyklen nach dem Sehen eines Kopfteils wartet, bevor sie mit dem Zuteilen beginnt. Hierdurch wird der IOQ-Einheit eine Möglichkeit gegeben, damit sie ausreichend Einträge aufweist, so daß sie die XB-Bandbreite (den Zuteiler und den Bus) optimal ohne einen unbenutzten Zyklus verwenden kann. Das Zuteilungsauslöseregister kann auf II-Frequenz/Kernfrequenz × Anzahl der Zyklen zum Übertragen einer Cache-Leitung gesetzt werden. Falls der Endteil einer Nachricht gesehen wird, kann sofort eine Zuteilung vorgenommen werden, ohne daß auf die programmierte Anzahl von Zyklen gewartet wird.
  • Zuteiler- und Datenwegschnittstelle
  • Der Zuteiler kombiniert virtuelle Kanalanforderungen und Nachrichtenrahmeninformationen von den OQ-Einheiten mit Ablaufsteuerinformationen von den Ziel-IQs/Einheiten zum gerechten und wirksamen Zuteilen von Crossbar-Bandbreite. Zum Bereitstellen einer geringen Latenz unter leichten Lasten und eine hohe Ausnutzung unter hohen Lasten unterstützt der Zuteiler zwei Bandbreiteanforderungsschnittstellen, nämlich die Bypass-Zuteilerschnittstelle und die Wellenfront-Zuteilerschnittstelle, die jeweils nach der Zuteilerimplementation benannt sind, die sie behandeln.
  • Der Schalter überträgt die Daten zusammen mit einem virtuellen Kanal-Tag-Endbit von der OQ-Quelle zum IQ- oder Einheitsziel.
  • Bypass-Zuteilung
  • Der Zuteiler unterstützt eine Bypass-Zuteilung als Mittel einer Zuteilung mit einer geringen Latenz und einer festen Priorität. Wenn eine OQ-Einheit leer und unbenutzt ist, kann sie eine Bypass-Zuteilung für neue Anforderungen verwenden, um die Latenz zu minimieren. Zum Einleiten einer Bypass-Zuteilung aktiviert die OQ-Einheit ihre geeignete Anforderungsleitung zu Beginn eines Taktzyklus (für eine Zusammenfassung aller Anforderungsleitungen sei auf den nachstehenden Abschnitt XB-Schnittstelle verwiesen). Falls die angeforderte IQ-Einheit frei ist und keine in Konflikt stehende virtuellen Nachrichten ablaufen ("MIPs"), gewährt der Bypass-Zuteiler die IQ-Einheit der anfordernden OQ-Einheit. Beim nächsten Takt muß die OQ-Einheit, ausgehend vom Anfang des Zyklus, Daten auf den XB-Datenweg geben. Weil dieser Prozeß der OQ-Einheit nicht genügend Zeit bietet, einen FIFO-Lesevorgang abzuschließen, muß die OQ-Einheit die FIFO-Lesestufe umgehen und die Daten zur sofortigen Übertragung zur XB-Einheit 279 anordnen.
  • Zum Vereinfachen der Implementation gibt es in der Hinsicht Einschränkungen, wann eine OQ-Einheit Bandbreite vom Bypass-Zuteiler anfordern kann. Bypass-Anforderungen können von einer leeren Warteschlange ausgeführt werden, solange auf anderen Kanälen keine MIPs ausstehen.
  • Um n Zyklen früh anfordern zu können, müssen die Einheiten möglicherweise spekulieren, daß sie die XB-Bandbreite benötigen, sie sind jedoch möglicherweise schließlich nicht in der Lage, sie zu verwenden. Zum Lösen dieses Problems unterstützt der Zuteiler spekulative Bypass-Anforderungen. Sobald eine Bypass-Gewährung empfangen wird, werden Daten mit dem virtuellen Kanal und dem Xsel der Daten auf den XB-Datenweg gegeben. Falls diese mit den registrierten gewährten Werten übereinstimmen, werden die Daten an der Ziel-IQ-Einheit als gültig angesehen, und die Anforderung wird andernfalls als spekulativ angesehen und ignoriert.
  • Der Bypass-Zuteiler kann über ein XB_BYPASS_EN-Register deaktiviert werden. Wenn er deaktiviert ist, wird bypGnt nie aktiviert, und alle Nachrichtenübertragungen werden durch den Wellenfrontzuteiler 1500 gesteuert.
  • Wellenfrontzuteilen
  • Der Zuteiler unterstützt auch eine Wellenfrontzuteilung, welche die XB-Bandbreite wirksamer verwendet, indem die Anzahl der Gewährungen je Zuteilung maximiert wird, und bietet OQ-Anforderern Gerechtigkeit durch den Altersmechanismus. Eine OQ-Einheit kann immer eine Wellenfrontzuteilung anfordern und sollte Wellenfrontzuteilungs-Anforderungen für alle Ziele aktivieren, für die sie am Kopf eines FIFOs ein gültiges Paket hat. Der Wellenfrontzuteiler kann Gewährungen wirksamer zuweisen, wenn ihm mehrere Anforderungen übergeben werden.
  • Die OQ-Einheit muß ihre Wellenfrontzuteilungs-Anforderung(en) zu Beginn eines Zyklus festlegen. Gegen Ende desselben Zyklus gibt der Zuteiler der OQ-Einheit eine Gewährung. Die OQ-Einheit hat dann einen vollen Zyklus zum Fertigstellen ihres FIFO-Lesens, und sie muß dann auf dem nächsten Zyklus Daten für die XB-Einheit 279 bereitstellen.
  • 14 ist ein Blockdiagramm einer Ausführungsform eines XB-Zuteilungsfilters 1400 (das MOQ-Filter ist dargestellt). Bevor Zuteilungsanforderungen den Wellenfrontzuteiler erreichen, werden sie durch den Filterblock 1400 gesendet. Der Filterblock verhindert das Mischen von zwei Nachrichtenströmen auf einem virtuellen Kanal. Falls es keine anderen virtuellen Kanal-MIPs gibt, die auf dasselbe Ziel einer OQ-Anforderung abzielen, wird diese Anforderung vom Filterblock zum Wellenfrontzuteiler 1500 gesendet (siehe 15).
  • Der Wellenfrontzuteiler ist in Matrixform eingerichtet, wenngleich er zur Seite geneigt ist, um im schlimmsten Fall auftretende Zeitwege zu minimieren. Zeilen in der Wellenfrontmatrix stellen OQ-Quellen dar, während Spalten IQ-Ziele darstellen. Jeder Abschnitt des Wellenfrontzuteilers ist das Ende einer gefilterten Zuteilungsanforderungsleitung und stellt eine bestimmte OQ-Einheit dar, die eine bestimmte IQ-Einheit anfordert. OQ-Einheiten können mehrere IQs in einem Zuteilungsdurchgang anfordern. OQ-Einheiten wird maximal eine IQ-Einheit je Durchgang gewährt. Es sei bemerkt, daß der Wellenfrontzuteiler die MOQ-Einheit als 3 OQ-Einheiten behandelt, weil die MOQ-Einheit 3 Datenströme gleichzeitig bereitstellen kann. Demgemäß kann die MOQ-Einheit bis zu 3 Gewährungen in einem Zuteilungsdurchgang empfangen.
  • Wellenfrontzuteilungsabschnitte, die der oberen linken Ecke in 15 am nächsten liegen, werden zuerst beurteilt, und sie haben daher die höchste Priorität. Falls eine Anforderung an einem bestimmten Abschnitt gewährt wird, werden diese Informationen nach rechts weitergeleitet, weil der zuteilende Abschnitt seine Row-Free-Leitungen (RFree-Leitungen) bzw. Zeile-Frei-Leitungen und Column-Free-Leitungen (CFree-Leitungen) bzw. Spalte-Frei-Leitungen deaktiviert. Innerhalb eines individuellen Abschnitts kann eine Anforderung nur gewährt werden, falls die RFree- und die CFree-Leitungen beide aktiviert sind.
  • Es gibt insgesamt 6 Wellenfrontzuteiler in der XB-Einheit 279, wobei jede einen anderen Prioritätssatz aufweist. Es sei bemerkt, daß die in 15 dargestellte Wellenfrontzuteilerstruktur eine feste Priorität aufweist, wobei POQ0 die höchste Priorität für PIQ0 aufweist, POQ1 die höchste Priorität für LIQ aufweist usw. Jeder der 6 Wellenfrontzuteiler in der XB-Einheit 279 stellt eine andere Prioritätsreihenfolge dar, und abhängig davon, welche OQ-Einheit das älteste Paket aufweist, das für eine bestimmte IQ-Einheit bestimmt ist, wählt der Zuteiler einen der Wellenfrontzuteiler für die Verwendung aus.
  • Die arb/gnt-Schnittstelle zwischen dem Zuteiler und den OQ-Einheiten
  • XB-Anforderungen und Gewährungen werden zwei Takte vor den Daten in die Pipeline gegeben, um zu ermöglichen, daß ein voller Zyklus des OQ-Pufferspeichers gelesen wird, bevor die Daten dem Datenweg präsentiert werden. 15A zeigt eine Tabelle (Tabelle 29) von Wellenfrontzuteilersignalen als ein Beispiel.
  • Crossbar-Zuteilungsgerechtigkeit
  • Zum Gewährleisten einer Gerechtigkeit und des Weiterleitungsfortschritts versucht der Zuteiler, wenn immer möglich, die "älteste" Zuteilung auf dem Chip zu gewähren. "Älteste" ist durch ein Alterungsprotokoll definiert, das an den OQ-Einheiten implementiert ist und zum Zuteiler weitergeleitet wird. Ein neuer Kopfteil, der am Kopf einer virtuellen Kanalwarteschlange ankommt, empfängt ein Alter von 0. Bis die Nachricht vollständig ist, wird das Alter bei einer Rate inkrementiert, die durch den Zuteiler bestimmt ist. Die vom Zuteiler erzwungene Alterungsrate ist über das XB_AGE_WRAP-Register programmierbar. Es sei bemerkt, daß die Bypass-Zuteilung nicht gerecht ist, daß jedoch jede Nachricht, die keine Bypass-Gewährung empfängt, sofort zu einer Wellenfrontzuteilung geht, die gerecht ist.
  • Wellenfrontanforderungen haben eine höhere Priorität als Bypass-Anforderungen.
  • Das Zuteiler-Prioritätsmodul vergleicht ständig die Alter von jeder OQ-Einheit. Das größte Alter wird stets ausgewählt, und ihm wird entsprechend seinem bevorzugten ageXsel-Feld Priorität gegeben. Im Fall eines Gleichstands wählt der Prioritätsblock den Gewinner entsprechend einem Umlaufzeiger. Der Zeiger läuft in jedem Gewährungszyklus, unabhängig von den Gewährungsergebnissen, weiter. Um zu verhindern, daß virtuelle Nachrichten abgeschnitten werden, bevor Alter auf hohe Niveaus fortgeschritten sind, läuft der Umlaufzähler nicht weiter, bevor wenigstens eine der OQ-Einheiten ein Alter von Acht oder mehr aufweist (die Hälfte seines Maximalwerts).
  • Das Prioritätsmodul benötigt einen wollen Taktzyklus zum Abschließen des Altersvergleichs zwischen allen OQs. Wegen dieser Verzögerung eilen Prioritätsinformationen Gewährungsentscheidungen immer um 1 Zyklus nach. Um zu verhindern, daß neue Nachrichten das Alter der vorhergehenden Nachricht infolge dieser Verzögerung erben, wird der nächste Anfordernde von dieser OQ-Einheit so behandelt, als ob er ein Alter von 0 für einen Anforderungszyklus hätte, falls der Endteil-Flit einer Nachricht eine Gewährung empfängt.
  • Im Fall von Altersgleichheiten verwendet der Zuteiler eine pseudozufällige Auflösungsfunktion zum Wählen eines Gewinners. Dies ist wichtig, wenn Alter beim Maximalwert von 0 × f sättigen oder wenn die Zuteileraltersfunktion deaktiviert ist. Wenn ein Gleichstand auftritt, wird ein Gewinner zufällig aus dem Pool oder aus zuteilenden OQ-Einheiten ausgewählt. Die Pseudozufallszahl wird unter Verwendung eines linearen 15-Bit-Rückkopplungsschieberegisters (LFSR) erzeugt. Das LFSR wird durch das Polynom X15 + X + 1 getrieben, das in sich nicht wiederholender Weise alle 215 Takte ein Gleichgewicht von Nullen und Einsen bereitstellt.
  • Crossbar-Ablaufsteuerung
  • Es werden von jeder IQ-Einheit (oder der Einheit, an der keine IQ-Einheit vorhanden ist) mehrere Ablaufsteuersignale bereitgestellt, um die Pipelinetiefe des Zuteilers zu behandeln. Die Full- und FullIn1-Signale müssen auf der Grundlage des Warteschlangen-Füllniveaus aktiviert werden. Das Warteschlangen-Füllniveau muß in dem Zyklus nach einer gültigen Übertragung von der Crossbar-Einheit aktualisiert werden.
  • FullIn1 muß immer dann aktiviert werden, wenn für ein oder weniger Crossbar-Flits, die aus einem Kopfteil oder bis zu zwei Datenzyklen bestehen, Platz vorhanden ist. Full muß immer dann aktiviert werden, wenn nicht genug Platz vorhanden ist, um einen einzigen Crossbar-Flit zu behandeln. In Warteschlangen, in denen Kopfteile und Daten getrennt gespeichert sind, muß der Platzmangel für beide bewirken, daß Full/FullIn1 aktiviert wird.
  • Es sei auf 16 für ein Zeitablaufdiagramm verwiesen, in dem die Beziehung zwischen Crossbar-DataV(alid)-Signalen und den Full-, FullIn1-Signalen dargestellt ist.
  • Zuteiler-Verbindbarkeit
  • Signale innerhalb des Zuteilers werden mit zwei Großbuchstaben, welche die Quelleneinheit (P0, P1, M0, M1, NO, IO oder LO) spezifizieren, gefolgt von einer Tätigkeit (arb, gnt, mip), gefolgt von zwei Großbuchstaben, welche die Zieleingabeeinheit (PI, MI, NI, II, LI) spezifizieren, benannt. Tabelle 30 (siehe 16A) faßt die virtuellen Kanäle zusammen, die jede Warteschlange zum Anfordern von Eingangswarteschlangen verwenden kann. Tabelle 31 (siehe 17) faßt die virtuellen Kanäle zusammen, die jede Warteschlange verwenden kann, um Eingangswarteschlangen anzufordern.
  • Datenweg-Crossbar-Schnittstelle
  • Datenübertragungen entlang dem Crossbar-Datenweg werden mit einem DataValid-(DataV)-Steuersignal qualifiziert und sie werden mit Virtualkanal-(DataVch)- und Nachrichtenende-(DataT)-Informationen versehen. Es wird ein einziger Zyklus aufgewandt, um sie zu durchlaufen. Dabei werden Daten registriert, bevor sie auf den Crossbar-Datenweg gegeben werden, und sie fließen nach dem Ausgangsmultiplexer in ein Register. Crossbar-Auswahlleitungen werden durch den Zuteiler gesteuert und als One-Hot-Busse registriert, um die Ausfalllatenz zu minimieren.
  • XB-Strukturen
  • Die folgenden Abschnitte beschreiben jede XB-Warteschlangenstruktur getrennt.
  • POQ-Struktur
  • Die POQ-Struktur ähnelt der nachstehend beschriebenen IOQ-Struktur.
  • MOQ-Struktur
  • Die MOQ-Struktur ist in getrennte Kopfteil-(MOQH)- und Daten-(MOQD)-Warteschlangen aufgeteilt. Die MOQH-Einheit enthält zwei unabhängige FIFOs (Durchlaufregister), wobei einer für jeden virtuellen Kanal vorgesehen ist. Die Daten-MOQD-Einheit ist ein Nur-Antwort-Daten-FIFO. Es wurde für die MOQ-Einheit ein FIFO-Entwurf einem DAMQ-Entwurf (Entwurf mit einem dynamisch zugeordneten Mehrfachwarteschlangenspeicher) vorgezogen, weil leistungsempfindlicher Verkehr von der MD-Einheit 275 vorhersehbar ist und nicht erheblich von einer DAMQ-Steuerstruktur profitieren würde. Der FIFO verringert den Steuerlogik-Zusatzaufwand, und getrennte unabhängige FIFOs ermöglichen das beliebige Verschachteln von Anforderungs- und Antwortverkehr.
  • MOQ-Datenpuffer
  • 17 zeigt ein Blockdiagramm von MOQ-Datenpuffern 1700.
  • Anforderungsnachrichtendaten laufen vollständig über die MOQH-Einheit. Kurze Datenantworten können auf der Grundlage davon, welcher Abschnitt der MD-Einheit 275 (Kopfteil/Verzeichnis gegenüber Daten/Speicher) sie erzeugt hat, über beide Warteschlangen laufen. Lange (Cache-Leitungs-) Datenantworten laufen immer über MOQD.
  • Die MOQ-Anforderungs- und Antwort-FIFOs sind mit geeigneten FIFO-Speichern versehen. Die MOQD-Einheit verwendet Doppelbank-FIFOs zum Akzeptieren von Vollbandbreiteverkehr von der MD-Einheit 275, während die Bänke abwechselnd gelesen werden, um eine Übereinstimmung mit der Bandbreite der XB-Einheit 279 bereitzustellen. Der MOQH-FIFO wird zwischen Anforderungs- und Antwort-FIFOs geteilt, um Multiplexniveaus im Datenweg zu reduzieren und an FIFO-Zusatzaufwand zu sparen.
  • Die Doppelbank-MOQD-Einheit wird als ein Satz von Viertel-Cache-Leitungs-(QCL)-Antwortpuffern verwaltet (ein QCL = zwei Takte in jeder Bank). Cache-Leitungs-Antworten von der MD-Einheit 275 bestehen aus vier QCL-Schreibvorgängen, und alle Teilantworten (einschließlich F&OP) nehmen einen vollständigen QCL in Anspruch. Die MOQH-Einheit enthält Einzeltakt-Kopfteile sowie Kopfteile zuzüglich einzelner Datenpakete. Die MOQH-Antwortkopfteile werden decodiert, wenn sie die MOQ-Einheit verlassen, um zu bestimmen, wie viele MOQD-Einträge dem Kopfteil zugeordnet sind.
  • Weil die MD-Einheit 275 MOQ-Platz reservieren muß, bevor sie eine Anforderung an den Speicher ausgibt, behält die MD-Einheit 275 eine Schattenkopie der Füllniveaus von den MOQD- und MOQH-Einheiten bei. Eine Ablaufsteuerung wird durch ein Signal je Warteschlange erreicht, das angibt, daß ein Eintrag (einzelner Kopfteil oder QCL von Daten) abgezogen worden ist.
  • NOQ-Struktur
  • Die NOQ-Einheit enthält die virtuellen SN1Net-Netzwerkkanal-Empfangspuffer. Jeder der vier virtuellen Kanalpuffer ist 16 Einträge tief, wobei jeder Eintrag einem Router-Netzwerk-Flit – einem Kopfteil oder 128 Datenbits – entspricht. Jeder Kanal kann eine beliebige Mischung von Kopfteilen und Daten enthalten. Die NOQ-Puffer sind als vier unabhängige FIFOs strukturiert.
  • NOQ-Puffer
  • FIFOs wurden DAMQs für die NOQ-Einheit vorgezogen, um den Steuerstruktur-Zusatzaufwand zu verringern. Leistungskritische Nachrichten sind gewöhnlich Leseanforderungen für die MD-Einheit 275 und Leseantworten für die PI-Einheit 270, und weil diese Nachrichtentypen auf getrennten virtuellen Kanälen laufen, stören sie einander nicht. Wiedereinschreibnachrichten in die MD-Einheit 275 teilen sich den Anforderungskanal mit Lesenachrichten für die MD-Einheit 275, diesem Effekt wird jedoch in gewissem Maße dadurch entgegengewirkt, daß die Anforderungsverarbeitung der MD-Einheit 275 Lesevorgänge bevorzugt, und ihm wird auch dadurch entgegengewirkt, daß die virtuelle Kanalanpassung im Netzwerk nahelegt, daß Lesevorgänge leerere Kanäle verwenden. Weil jeder der vier virtuellen Kanäle ein unabhängiges FIFO-Kabel zur XB-Zuteilung aufweist, werden die Wirkungen der virtuellen Kanalanpassung des Netzwerks zur Bedrock-XB-Einheit 279 weitergeleitet.
  • Die vier logischen FIFOs in der NOQ-Einheit sind über eine Doppelbank-FIFO-Struktur implementiert. Diese Struktur ermöglicht es, daß jeder FIFO 65 Bits breit ist, und sie erfordert, daß Kopfteile über beide Bänke geschrieben und ausgelesen werden.
  • IOQ-Struktur
  • Die IOQ-Struktur muß Verkehr synchronisieren, der von der II-Einheit 273 zum Hub-Kern-Taktbereich fließt. Dies erfolgt dadurch, daß ein Standard-Doppelsynchronisierer auf einen Gray-Code-Zähler angewendet wird. Wenn die POQ-Einheit eine Nachricht auf der Hub-Kernseite empfängt, führt sie eine Zuteilung für die XB-Einheit 279 aus, sobald die ganze Nachricht empfangen worden ist. Dies wird für Blocklängennachrichten ausgeführt, um zu verhindern, daß die XB-Einheit 279 höherer Bandbreite den IOQ-FIFO unterläuft. Die IOQ-Einheit ist in unabhängige Anforderungs- und Antwort-FIFOs unterteilt, wenngleich sie sich nicht denselben Pufferspeicher-FIFO teilen.
  • PIQ-Struktur
  • Die PIQ-Einheit empfängt Daten von der XB-Einheit 279 und schreibt sie in einen FIFO, der von der PI-Einheit 270 auszulesen ist. Es gibt für jeden der Anforderungs- und Antwortkanäle 64 Einträge. Im synchronen Modus können die Daten von der XB-Einheit 279 zur PI-Einheit 270 umgeleitet werden.
  • MIQ-Struktur
  • Die MIQ-Einheit ist in vier logische FIFOs unterteilt, die in 3 FIFOs implementiert sind. Kopfteile werden in einer einzigen Bank, nämlich der Anforderungs/Antwort-MIQH, gepuffert, und eine Doppelbank-Anforderungs/Antwort-MIQD-Einheit enthält zugeordnete Daten. Die MIQD-Puffer werden in 3 Blockanforderungseinträge und 1 Blockantworteintrag unterteilt, weil Anforderungsdaten für die MD-Einheit 275 üblicher sind als Antwortdaten.
  • Die MIQ-Einheit präsentiert der MD-Einheit 275 stets einen einzigen Kopfteil. Falls nur ein virtueller Kanal einen gültigen Kopfteil enthält, präsentiert die MIQ-Einheit den gültigen Kopfteil und gibt eine Anforderung oder eine Antwort an. Falls die MIQ-Einheit in beiden Kanälen einen gültigen Kopfteil aufweist, präsentiert sie der MD-Einheit 275 stets den Antwortkanal, solange die MD-Einheit 275 nicht ihr Antwortkanal-Voll-Signal aktiviert. Wenn die MD-Einheit 275 bereit ist, einen Kopfteil zu verbrauchen, aktiviert sie das HeaderRead-Signal, das diesen Eintrag aus der Warteschlange entfernt.
  • IIQ-Struktur
  • Die IIQ-Einheit empfängt Daten bei der Kerndatenrate von 1,6 GB/s von der XB-Einheit 279 und schreibt sie entweder in den Anforderungs- oder den Antwort-FIFO in der GRA-Einheit. Nachdem der Schreibzeiger mit dem IO-Taktbereich synchronisiert wurde, kann er bei 0,8 GB/s von der II-Einheit 273 ausgelesen werden. Es gibt in den II-Warteschlangen keinen Bypass-Datenweg.
  • LIQ-Struktur
  • Die LIQ-Einheit bietet eine zweckgebundene Warteschlange für eine PIO-Anforderung von der NI-Einheit 274. Die PIO-Anforderung tritt selten auf, weist jedoch eine höhere Priorität auf, um einen Anforderungs-Anforderungs-PIO-Stau zu vermeiden. Wenngleich sie LINVAL dient, muß die LB-Einheit in der Lage sein, eine einwärts gerichtete Fern-PIO-Anforderung von der NI-Einheit 274 zu bedienen. Die einzige Anforderung, die die NI-Einheit 274 an die LB-Einheit stellen kann, ist eine PIO-Anforderung. Anforderungen können den FIFO umgehen, und Antworten werden in das Ausgaberegister geschrieben und treten nie in den FIFO ein. Das Antwortregister ist freilaufend, weil die LB-Einheit eine Antwort in jedem Zyklus verzögerungsfrei verarbeiten kann.
  • Warteschlangengrößen und -typen
  • Gemäß einer Ausführungsform ist die XB-Warteschlangenstruktur mit IBM-CMOS-6s-Niederleistungs-Registerfeldern (FIFOs) (von IBM Corp. aus Burlington, VT erhältlich) oder mit Standardregistern, bei denen die Warteschlangengröße den Zusatzaufwand von FIFO-Gates nicht rechtfertigt, implementiert. Tabelle 32 (in 21A dargestellt) faßt die Größen und den Typ jeder Warteschlange in der XB-Einheit 279 zusammen.
  • 8 zeigt detailliert die Aufteilung der XB-Funktionseinheiten in logische Module für den physikalischen Entwurf.
  • Speicher-/Verzeichnisschnittstelle
  • Die Bedrock-(eine Ausführungsform des Node-Controllers 75)-Speicher-/Verzeichnisschnittstelle (MD) 275 steuert den Zugriff auf alle Speicher im Bedrock-System. Zusätzlich zum Ausführen der Standard-Speichersteuerungsvorgänge, wie das Lesen aus dem Speicher und das Schreiben in diesen, verfolgt die Bedrock-MD-Einheit 275 genau, welche Prozessoren und welche IO-Schnittstellen gegenwärtig jede Cache-Leitung in dem System verwenden. Bei jedem Zugriff prüft die Bedrock-MD-Einheit 275 diese Tabelle (als das Verzeichnis bezeichnet) und erzeugt die erforderlichen Nachrichten, um die Cache-Kohärenz aufrechtzuerhalten.
  • Die Bedrock-Einheit MD 275 stellt genug Bandbreite bereit, um jede einzelne Anforderungsklasse zufriedenzustellen. Mit anderen Worten können alle vier Prozessoren oder beide Richtungen des SN1-Netzes oder beide Richtungen auf der IO-Schnittstelle bei der vollen Bandbreite auf den Speicher zugreifen. Die Bedrock-MD-Einheit 275 liefert auch die Zuteilungsstrukturen, die erforderlich sind, um Bandbreite gerecht und wirksam zuzuweisen, wenn mehrere Anfordernde auf den Speicher zugreifen. Der "Architekturabschnitt" enthält einen Architekturebenen-Überblick über die MD-Einheit 275, der die folgenden Themen abdeckt:
    • • Speicheradressierung
    • • Seitenbehandlung
    • • Schnittstellen
    • • Nachrichtentypen
    • • Schutzmodell
    • • Seitenzähler
    • • Abrufen und Operationen
    • • Backdoor-ECC
    • • Backdoor-Verzeichnis
    • • Junk-Bus
    • • SDRAM-Initialisierung
    • • DDR-SDRAM-Initialisierung
    • • Refresh bzw. Auffrischung
    • • Eingebauter Selbsttest
    • • SN0-Kompatibilität
  • Nachfolgend werden die wesentlichen Architekturblöcke beschrieben, von denen es drei gibt (in 31 dargestellt):
    • • Ausgabe-Block (IB) 3110: Nimmt alle neuen Nachrichten auf und gibt sie in wirksamer und gerechter Ordnung an den Rest des Speichersystems aus. Gibt Adressen- und Steuersignale an den DRAM aus.
    • • Speicherblock (MB) 3118: Überträgt Daten vom DRAM in die XBAR-Einheit oder aus der XBAR-Einheit in den DRAM.
    • • Verzeichnisblock (DB) 3116: Liest die Verzeichnisdaten, erzeugt erforderliche Nachrichtenköpfe, berechnet die neuen Verzeichnisdaten und schreibt sie zurück.
  • Anschließend werden Implementationsinformationen erörtert, die mehrere Architekturblöcke kreuzen:
    • • DDR-Synchronisation
    • • Zeitablaufdiagramme
  • Architektur
  • Dieser Abschnitt gibt zuerst eine detaillierte Beschreibung des Gesamt-Speichersystementwurfs. Die folgenden Unterabschnitte erklären dann die Architekturmerkmale höherer Ebene, die auf das Speichersystem aufbauen.
  • Speichersystem
  • Das Bedrock-Speichersystem weist einen Bedrock-Chip, einige Taktpuffer, einen Flash-PROM, eine UART-Einheit, vier LED-Bänke und zwei, vier, sechs oder acht DIMMs (Doppelreihen-Speichermodule – "Dual Inline Memory Modules") auf. Jeder Bedrock-DIMM besteht aus einer oder zwei 72-Bit-DRAM- Speicherunterbänken und einer oder zwei 16-Bit-Verzeichnis-DRAM-Unterbänken. 42 zeigt ein Diagramm des Vorderteils eines Bedrock-DIMMs. In einem Zweibank-DIMM würde die Rückseite des DIMMs seiner Vorderseite gleichen.
  • DIMMs können in Zweiergruppen belegt (oder nicht belegt) sein, woraus sich ein 128-Bit-breites Speichersystem (plus 16 ECC-Bits und 32 Verzeichnis-Bits) ergibt. Um verschiedenen Systemanwendungen Rechnung zu tragen, unterstützt die Bedrock-MD-Einheit 275 viele verschiedene DIMM-Größen. Jeder Satz von zwei DIMMs muß die gleiche Größe aufweisen.
  • Die Bedrock-MD-Einheit 275 unterstützt die folgenden DIMM-Größen: 32 MBs, 64 MBs, 128 MBs, 256 MBs, 512 MBs und 1 GB. Tabelle 58 (siehe 32A) zeigt Informationen zu jeder potentiellen DIMM-Konfiguration (schraffierte Zeilen sind die wahrscheinlichsten DIMMs, die das SN1-System tatsächlich verwendet).
  • Die Bedrock-MD-Einheit 275 unterstützt zwei verschiedene DIMM-Typen, nämlich DDR-SDRAM-std und DDR-SDRAM-prm. DDR-SDRAMs sind spezielle Versionen von SDRAM, welche Daten zweimal so schnell ausgeben wie sie Adressen empfangen. Alle Produktions-Bedrock-Systeme verwenden DDR-SDRAM.
  • Standard-(std)-DIMMs enthalten eine Verzeichnis-DRAM-Bank für jeweils zwei Speicher-DRAM-Bänke. Premium-(prm)-DIMMs enthalten eine Verzeichnis-DRAM-Bank für jede Speicher-DRAM-Bank. Systeme mit bis zu 128 Prozessoren können Standard-DIMMs verwenden. Premium-DIMMs arbeiten in jedem System (bis zu maximal 1024 Prozessoren).
  • Der Adreßbus vom Bedrock-Chip zu den DIMMs läuft immer bei 100 MHz. Der Datenbus zwischen dem Bedrock-Chip und den DIMMs läuft bei 200 MHz. Die maximalen Bandbreiten betragen daher 3,2 GB/s.
  • Verzeichnisorganisation
  • Die Bedrock-MD-Einheit 275 unterhält die System-Cache-Kohärenz durch Prüfen eines Verzeichnisspeichers bei jedem kohärenten Zugriff des Speichersystems. Weil jeder Zugriff den Zustand ändert, muß die Bedrock-MD-Einheit 275 ein Lesen-Modifizieren-Schreiben des Verzeichnisspeichers parallel mit jedem Lesen oder Schreiben des Datenspeichers ausführen.
  • In einem mit DDR-SDRAM-std-DIMMs belegten System gibt es eine Verzeichnis-DRAM-Bank für jeweils zwei DRAM-Speicherbänke. Weil DIMMs in Zweiergruppen angeordnet sind, kann die Bedrock-MD-Einheit 275 die zwei Verzeichnis-DRAM-Bänke (eine auf jedem DIMM) zwischen den zwei Speicher-DRAM-Bänken (über die beiden DIMMs verteilt) teilen. Dies führt zu einem im wesentlichen 16 Bit breiten Datenweg, der auf beiden Seiten des 32-Bit-Verzeichnis-Datenwegs in die Bedrock-MD-Einheit 275 eintreten könnte. Weil der Standard-Verzeichniseintrag 32 Bits aufweist, wird er über zwei Zyklen gelesen und geschrieben. 43 zeigt eine schematische Darstellung eines Standard-Verzeichnissystems (mit zwei DRAM-Speicherbänken und einer Verzeichnis-DRAM-Bank je DIMM).
  • In einem mit DDR-SDRAM-prm-DIMMs belegten System gibt es eine Verzeichnis-DRAM-Bank für jede Speicher-DRAM-Bank. In diesem Fall sind die Verzeichnisbänke so wie die Daten über die beiden DIMMs ausgebreitet, wodurch ermöglicht wird, daß der volle 32-Bit-Verzeichnisdatenweg verwendet wird. Weil der Premium-Verzeichniseintrag 64 Bits aufweist, wird er über zwei Zyklen gelesen und geschrieben. 44 zeigt eine schematische Darstellung eines einzigen Premium-DIMMs in einem Premium-Verzeichnissystem (mit zwei Speicher-DRAM-Bänken und zwei Verzeichnis-DRAM-Bänken).
  • Speicheradressierung
  • Eine maximale Speicherkonfiguration im M-Modus von acht 1-GB-DIMMs führt zu einem Adreßraum von 8 GB. Eine maximale Konfiguration im N-Modus von vier 1-GB-DIMMs führt zu einem Adreßraum von 4 GB. Die Bedrock-MD-Einheit 275 ordnet jedem Satz von zwei DIMMs zwei 1-GB-Blöcke zu. Die DIMMs mit zwei physikalischen Bänken verwenden beide Blöcke, während DIMMs mit einer Bank nur einen einzigen Block verwenden. Falls ein Satz von DIMMs den 2-GB-Raum nicht vollständig ausfüllt, wird erwartet, daß das Betriebssystem um die verbleibenden Lücken im Speicher herum anordnet. Die minimale Speicherkonfiguration würde aus zwei 32-MB-DIMMs oder 64 MBs bestehen.
  • Alle DDR-SDRAMs, die von der Bedrock-MD-Einheit 275 unterstützt werden, enthalten vier interne (logische) Bänke. Die Bedrock-MD-Einheit 275 verschachtelt diese vier logischen Bänke unter Verwendung der niedrigstmöglichen Adreßbits (direkt über der Cache-Leitungsgröße von 128 Bytes). Tabelle 59 (siehe 34A) zeigt, wie jedes Adreßbit verwendet wird. Die Bedrock-MD-Einheit 275 steuert alle dargestellten Anschlußstifte, selbst wenn die kleineren DIMMs möglicherweise nicht jedes Bit empfangen oder interpretieren.
  • Speicher- und Verzeichnisadressierung
  • Bei jeder kohärenten Transaktion führt die Bedrock-MD-Einheit 275 ein Lesen-Modifizieren-Schreiben des Verzeichniseintrags aus. Zusätzlich könnte sie ein Lesen des Schutzeintrags und/oder ein Lesen-Modifizieren-Schreiben des Seitenzählereintrags ausführen. Der Verzeichniseintrag, der Schutzeintrag und der Seitenzählereintrag werden alle im Verzeichnis gespeichert. Die DIMM-, physikalischen, logischen und RAS-Adressen, die in Tabelle 59 dargestellt sind, sind für Speicher- und Verzeichnisadressen gleich. Die Verzeichnis-CAS-Adressen sind jedoch für jeden Eintragstyp verschieden. In den CASDir-, CASProt- und CASCount-Feldern sind die Konstanten folgendermaßen definiert: D = 0, P = 1, C = 0, x = 0 und Rgn beziehen sich auf die Bits 4:0 des Schutzbereichs.
  • Seitenbehandlung
  • Die SDRAMs und die DDR-SDRAMs, die im Bedrock verwendet werden, werden wie alle DRAMs unter Verwendung einer Zeilenadresse und einer Spaltenadresse angesteuert. Mehrere Spaltenadressen können ohne eine zusätzliche Verzögerung sequentiell gelesen werden. Um Zeilen (auch als Seiten bezeichnet) zu ändern, muß der DRAM die alte Zeile schließen und darf erst dann die neue Zeile öffnen. Aus diesem Grund ist ein Zugriff auf eine neue Zeile viel kostspieliger als ein Zugriff auf eine neue Spalte.
  • Trotz dieser Tatsache schließt die Bedrock-MD-Einheit 275 immer die Zeile (Seite) unmittelbar nach Abschluß einer Transaktion (unabhängig von der Adresse der nachfolgenden Transaktionen). Diese Entscheidung wurde aus einer Reihe von Gründen getroffen:
    • • Durch Ausführen einer 4-Wege-Verschachtelung an der Cache-Leitungsadresse und durch Unterstützen eines vollständigen Pipeline-Betriebs von vier Anforderungen kann die Bedrock-MD-Einheit 275 noch die volle Bandbreite erreichen.
    • • Wenn mehrere Schnittstellen (und daher mehrere Ströme) auf den Speicher zugreifen (die einzige Zeit, zu der die Speicherschnittstelle die volle Bandbreite erreichen kann), geht viel von der Wirksamkeit verloren, wenn Seiten offengelassen werden.
    • • Wenn ein einziger Strom auf den Speicher zugreift, können die zusätzliche Bandbreite und die Umordnungsfähigkeit der Zuteilungslogik den größten Teil der Leistungsfähigkeitsdifferenz in bezug auf das Offenhalten der Seite abmildern oder diese möglicherweise sogar vollständig aufheben.
  • Transaktionsgruppierung
  • Ein vollständiger Cache-Leitungs-Lesevorgang kann sich in acht 5-ns-Zyklen über die 128 Bit breite Speicherschnittstelle bewegen. Leider sind zwölf 5-ns-Zyklen erforderlich, um das Lesen-Modifizieren-Schreiben des Verzeichnisses auszuführen, das zum Aufrechterhalten der Cache-Kohärenz notwendig ist. Aus diesem Grund gruppiert die Bedrock-MD-Einheit 275 alle Transaktionen (wenn möglich) zu Paaren. Auf diese Weise können zwei Lesevorgänge, zwei Modifiziervorgänge und zwei Schreibvorgänge unter zwei Daten lese- oder -schreibvorgängen auftreten, ohne daß Bandbreite verlorengeht. Die Bedrock-MD-Einheit 275 kann beliebige zwei kohärente oder vollständige Cache-Leitungs-Transaktionen gruppieren. Alle Teiltransaktionen müssen selbständig ausgeführt werden.
  • Schnittstellen
  • Die Bedrock-MD-Einheit 275 ist über die Bedrock-Crossbar-Einheit mit dem Rest des Bedrock-Systems verbunden. Eine einzige 1,6-GB/s-Verbindung behandelt Daten und Kopfteile, die von der Crossbar-Einheit in die MD-Einheit 275 eintreten. Drei 1,6-GB/s-Verbindungen behandeln Daten und Kopfteile, die von der MD-Einheit 275 in die Crossbar-Einheit eintreten.
  • Um das Speichersystem besser verwenden zu können, behandelt die Bedrock-MD-Einheit 275 Anforderungen von PI0, von PI1, von NI oder II und Antworten als getrennte virtuelle Kanäle. Hierdurch verhindert die MD-Einheit 275 Engpässe, die auftreten würden, wenn ein Strom auf das Leerwerden eines konkurrierenden Stroms warten müßte, bevor fortgesetzt wird. Wenn Nachrichten in der MD-Einheit 275 (im IB-Block) ankommen, werden sie auf der Grundlage ihres virtuellen Kanals in getrennte Eingangswarteschlangen geschrieben. Wenn Nachrichten die MD-Einheit 275 verlassen (in die MOQ-Einheit 3113, siehe 31), werden sie auf der Grundlage ihres virtuellen Kanals (Antworten auf PI0, PI1, NI oder II und Anforderungen) in getrennte Ausgangswarteschlangen geschrieben. Die Zuteilungsmaschine im IB-Block gewährleistet, daß die MD-Einheit 275 Bandbreite zwischen den Kanälen gerecht zuordnet.
  • Nachrichtentypen
  • Auf der hohen Ebene empfängt die Bedrock-MD-Einheit 275 lediglich Nachrichten von der Crossbar-Einheit und erzeugt Antworten, die in die Crossbar-Einheit zurückübertragen werden. Zur Referenz zeigen die Tabelle 60 (siehe 34B) und die Tabelle 61 (siehe 34C) alle von der Bedrock-MD-Einheit 275 empfangenen und erzeugten Nachrichten. Die Verzeichnistabelle (in der SN1-Cache-Kohärenz-Protokollspezifikation beschrieben) bestimmt genau, welcher Satz auswärts gerichteter Nachrichten ansprechend auf eine bestimmte einwärts gerichtete Nachricht empfangen wird.
  • Schutzmodell
  • Ein Bedrock-System kann bis zu 1024 Prozessoren skaliert werden. Es wäre fast unmöglich, ein einziges Betriebsystem mit einem geteilt verwendeten Speicher auf einem so großen System zu verwenden. Um solche Systeme verwendbar zu machen, muß das Bedrock-System eine Unterstützung für mehrere Betriebssysteme aufweisen, die auf derselben Basis eines geteilt verwendeten Speichers arbeiten. Im allgemeinen steuert jedes Betriebssystem seine eigene Umgebung und kann unabhängig zum Rest des Systems zurückgesetzt oder neu gebootet werden. Um zu verhindern, daß ein einziges solches Betriebssystem das ganze System herunterfährt, verhindert die Bedrock-MD-Einheit 275, das bestimmte Prozessoren oder IO-Einheiten auf bestimmte Speicherbereiche zugreifen. Die Informationen, die verwendet werden, um einen Zugriff zu verhindern, werden in einem speziellen Schutzbereich des Speicherverzeichnisses gespeichert und zusammen mit dem Verzeichnis bei jedem Zugriff ausgelesen.
  • Um die Menge der erforderlichen Informationen zu begrenzen, speichert das Bedrock-System Schutzinformationen auf der Grundlage des Bereichs des anfordernden Prozessors oder der IO-Einrichtung. Es gibt in einem System nie mehr als 64 Bereiche. Für kleinere Systeme (weniger oder gleich 64 Bedrock-Chips) gleicht ein Bedrock-Chip einem Bereich. Für Systeme zwischen 65 und 128 Bedrock-Chips gleichen zwei Bedrock-Chips einem Bereich. Für große Systeme (bis zu 256 Bedrock-Chips oder 1024 Prozessoren) gleichen vier Bedrock-Chips einem Bereich.
  • Zum größten Teil weisen alle Prozessoren und IO-Einrichtungen innerhalb desselben Betriebssystems (auch als Zelle bezeichnet) denselben Schutz auf. Aus diesem Grund verwendet die Bedrock-MD-Einheit 275 ein als CurrentCell bezeichnetes lokales 64-Bit-Register, um zu spezifizieren, welche Bereiche sich innerhalb desselben Betriebssystems wie der Bedrock-Chip befinden. Für Anforderungen von diesen "lokalen" Bereichen prüft die Bedrock-MD-Einheit 275 ein einziges Bit innerhalb des Verzeichniseintrags. Für alle anderen Anforderungen liest die Bedrock-MD-Einheit 275 einen getrennten Teil des Verzeichnisspeichers, der vier Bits für jeden Bereich in dem System enthält (eines für Prozessor-Lesevorgänge, Aktualisierungen und Schreib-Ungültigmachungen, eines für Prozessor-Wiedereinschreibvorgänge und Antworten, eines für IO-Lesevorgänge und Schreib-Ungültigmachungen und eines für IO-Wiedereinschreibvorgänge und Antworten). Der Prozessor- und der IO-Schutz sind getrennt, um eine DMA über Zellen hinweg zu ermöglichen, ohne die Firewalls abzusenken. Lesevorgänge, Aktualisierungen und Schreib-Ungültigmachungen sind von Wiedereinschreibvorgängen und Antworten getrennt, um einen zweistufigen Zellenentfernungsprozeß zu ermöglichen (zuerst werden Lesevorgänge verboten, dann werden die Cache-Leitungen zum Heim-Node gezogen und es werden schließlich Schreibvorgänge und Antworten verboten). Für Einzelheiten dazu, wie auf die Schutzeinträge zuzugreifen ist, sei auf das SN1-Programmierhandbuch verwiesen.
  • Falls eine READ-, RDSH-, RDEX-, REXU- oder UPGRD-Anforderung auf eine Leitung trifft, für die sie keinen Zugriff hat, gibt die Bedrock-MD-Einheit 275 einen AERR (Zugriffsfehler) an Stelle einer normalen Antwort zurück. Falls eine WINV-Anforderung auf eine Leitung trifft, für die sie keinen Zugriff hat, schreibt sie nicht in den Speicher und gibt einen WERR (Schreibfehler) zurück. Falls eine WB-Anforderung oder eine SHWB-, SXWB- oder PGWB-Antwort auf eine Leitung trifft, für die sie keinen Zugriff hat, wirkt die Bedrock-MD-Einheit 275 anders, falls sich der Anfordernde innerhalb oder außerhalb der aktuellen Zelle befindet. Für Anforderungen oder Antworten von innerhalb der Zelle werden die Daten unabhängig vom Schutzwert in den Speicher geschrieben. Falls die Firewall durchbrochen worden ist, gibt die MD-Einheit 275 eine WERR-Nachricht (im Fall einer WB-Anforderung) zurück, speichert Fehlerinformationen im MISC_ERROR-Register und sendet eine Unterbrechung zu beiden lokalen PIs. Für Anforderungen und Antworten von außerhalb der Zelle behandelt die Bedrock-MD-Einheit 275 WB, SHWB, SXWB oder PGWB ebenso wie eine WINV-Anforderung und schreibt nicht in den Speicher, es sei denn, daß der Schutz gültig ist.
  • Nichtkohärente Leseanforderungen (RSHU und PRDU) prüfen den Schutz nicht und können daher zum Erzeugen einer sicheren Kommunikation zwischen Zellen verwendet werden. PWRU-Anforderungen prüfen den Schutz und werden ebenso behandelt wie eine WINV-Anforderung. PRDM- und PWRM-Anforderungen prüfen beide den Schutz, wenn sie im Abruf-und-Operations-Cache fehlschlagen. Sie verwenden beide ein getrenntes 64-Bit-Schutzfeld, das zusammen mit der Abruf-und-Operations-Variable für Cache-Treffer gespeichert wird. PRDH-Anforderungen prüfen den Schutz nicht. PWRH-Anforderungen verwenden das CurrentCell-Register als ihr Schutzregister (wodurch verhindert wird, daß ein Prozessor außerhalb der Zelle in den HSPEC-Raum schreibt). Der UAlias-Abschnitt des HSPEC-Raums (ein nichtkohärenter Leseabschnitt, der sich aus internen R10000-Gründen im HSPEC-Raum befindet) wird hier als Teil einer USPEC-Spezifikation behandelt. Für weitere Informationen zum USPEC-, MSPEC- und HSPEC-Raum sei auf das SN1-Programmierhandbuch verwiesen.
  • Seitenzähler
  • Bei einer NUMA-Maschine (Maschine mit einer ungleichmäßigen Speicherarchitektur – "Non-Uniform Memory Architecture Machine") in der Art von Bedrock ändert sich die Programmleistungsfähigkeit auf der Grundlage der Anordnung wichtiger Datenstrukturen. Im allgemeinen sollten sich Daten dicht bei den Prozessoren befinden, die auf sie zugreifen. Es ist jedoch ein nichttriviales Problem zu gewährleisten, daß die Daten immer richtig angeordnet sind, und dies kann nicht immer garantiert werden. Der Bedrock-Chip unterstützt eine Seitenmigration, um die Situation zu verbessern, in der das Betriebssystem und die Anwendung Daten nicht richtig anordnen.
  • Jede Betriebssystemseite (16 kBits) enthält vier Sätze von zwei Zählern. Jeder Zählersatz bezieht sich auf eine Verschachtelung des Speichers. Daher bezieht sich der Satz 0 auf die Cache-Leitungen 0, 4, 8, 12 usw., der Satz 1 auf die Cache-Leitungen 1, 5, 9, 13 usw., der Satz 2 auf die Cache-Leitungen 2, 6, 10, 14 usw. und der Satz 3 auf die Cache-Leitungen 3, 7, 11, 15 usw. Wenngleich dies keine intuitive Zuordnung von Zählern zu Adressen ist, wird sie durch die Entscheidung, an Cache-Leitungsgrenzen eine Verschachtelung vorzunehmen, notwendig.
  • Die zwei Zähler, die jeden Satz bilden, sind ein lokaler Zähler und ein ferner Zähler. Lokal und fern sind durch ein lokales Register innerhalb der Bedrock-MD-Einheit 275 bestimmt. Dieses Register (als die MigNodeMask bezeichnet) enthält eine 9-Bit-Chipkennungsmaske (die bis zu 512 Bedrock-Chips unterstützt). Falls für jeden gegebenen Zugriff die mit der Maske durch eine UND-Verknüpfung verbundene Quellen-Chipkennung der mit der Maske durch eine UND-Verknüpfung verbundenen MD-275-Chipkennung gleicht, wird der Zugriff als lokal angesehen. Andernfalls wird der Zugriff als fern angesehen.
  • Die Zähler selbst werden zusammen mit den Verzeichniseinträgen und den Schutzinformationen im Verzeichnisspeicher gespeichert (für eine vollständige Zuordnung des Verzeichnisspeichers sei auf das SN1-Programmierhandbuch verwiesen). Um zu verhindern, daß der Verzeichniszugriff die Speicherbandbreite beeinflußt, inkrementiert die Bedrock-MD-Einheit 275 diese Seitenzähler nur bei jedem n-ten Zugriff und prüft diese dabei. Der Wert von n kann im lokalen MigIntervalCount-Register gesetzt werden.
  • Bei einem Zugriff, der zu einer Zählerprüfung führt, werden beide Zähler in die Bedrock-MD-Einheit 275 gelesen. Falls der Zugriff lokal war (durch die Maske bestimmt), wird der lokale Zähler inkrementiert. Falls der Zugriff fern war, wird der ferne Zähler inkrementiert. Nach dem Inkrementieren wird der inkrementierte Zähler mit einem Schwellenwert (im MigValueThresh-Register festgelegt) verglichen, und die Differenz zwischen den beiden Zählern wird mit einem Schwellenwert (im MigDiffThresh-Register festgelegt) verglichen. Zwei Steuerbits (ValueInterrupt und DiffInterrupt) werden zusammen mit dem Zähler aus dem Verzeichnis ausgelesen. Falls das ValueInterrupt-Bit gesetzt ist, sendet die MD-Einheit 275 eine Unterbrechung aus, falls die MigValueThresh überschritten wurde. Falls das DiffInterrupt-Bit gesetzt ist, sendet die MD-Einheit 275 eine Unterbrechung aus, falls das MigDiffThresh-Register gesetzt ist. Für eine vollständige Beschreibung von MD-Unterbrechungen sei auf das SN1-Programmierhandbuch verwiesen. Selbst dann, wenn das entsprechende Unterbrechungsbit nicht gesetzt ist, wird durch das Überschreiten eines Zählers bewirkt, daß die Adresse und die Quelle des Zugriffs im MigCandidate-Register gespeichert werden. Falls einer der Zähler bei der Inkrementierung sättigt, werden beide Zähler um eins nach rechts verschoben.
  • Abrufen und Oprationen
  • Bei einem geteilten Speichersystem verbringen sowohl das Betriebssystem als auch Benutzerprogramme viel Zeit damit, Sperren zu erwerben und aufzuheben. Leider skalieren die meisten einfachen Synchronisationsalgorithmen nicht gut über einige Prozessoren hinaus. Um dieses Problem zu umgehen, bietet die Bedrock-MD-Einheit 275 einen speziellen nichtkohärenten Synchronisationsmechanismus, der sehr gut bis zu großen Prozessoranzahlen skaliert.
  • Die Bedrock-MD-Einheit 275 enthält einen Cache-Speicher (zwei 64-Bit-Einträge oder vier 32-Bit-Einträge) der Synchronisationsvariablen, auf die vor kurzem zugegriffen wurde. Jeder nicht gespeicherte Lese- oder Schreibvorgang, der auf den MSPEC-Platz (PRDM oder PWRM) gerichtet ist, prüft zuerst, ob er den Cache trifft. Falls dies der Fall ist, wird die Operation (nachstehend erörtert) sofort ausgeführt, und die Daten oder eine Bestätigung werden zurückgegeben. Falls der Lese- oder Schreibvorgang den Cache nicht trifft, wird der älteste Cache-Eintrag zurückgeschrieben, werden die neuen Daten eingelesen, wird die Operation ausgeführt und werden die Daten oder eine Bestätigung zurückgegeben.
  • Operationen werden am Cache ausgeführt, indem die Bits fünf bis drei der Adresse auf spezifische Werte gelegt werden. Weil diese Adreßbits nicht mehr zum Adressieren von Speicher verwendet werden, können sie höchstens zwei 64-Bit-(oder vier 32-Bit-) Abruf-und-Operationsvariablen je Cache-Leitung sein. Bei einer PRDM-Anforderung können die folgenden Operationen ausgeführt werden: ein direktes Abrufen des Cache-Werts, ein Abrufen gefolgt von einem Inkrementieren, ein Abrufen gefolgt von einem Dekrementieren, ein Abrufen gefolgt von einem Löschen und ein Cache-Räumen. Bei einer PWRM-Anforderung können die folgenden Operationen ausgeführt werden: ein direktes Schreiben des Cache-Werts, ein einfaches Inkrementieren (wobei der mit der PWRM-Anforderung gesendete Wert ignoriert wird), ein einfaches Dekrementieren (wobei der mit der PWRM-Anforderung gesendete Wert ignoriert wird), eine UND-Verknüpfung des Cache-Werts mit dem PWRM-Wert, eine ODER-Verknüpfung des Cache-Werts mit dem PWRM-Wert und ein Cache-Räumen. Für die genaue Codierung sei auf das SN1-Programmierhandbuch verwiesen.
  • Wie vorstehend erwähnt wurde, kann der Cache-Speicher von zwei 64-Bit-Einträgen oder vier 32-Bit-Einträgen (oder von einem 64-Bit-Eintrag und zwei 32-Bit-Einträgen) verwendet werden. Jedes Paar von 32-Bit-Einträgen muß sich jedoch im selben 64-Bit-Doppelwort befinden. Ein 64-Bit-Schutzwort wird auch zusammen mit jedem 64-Bit-Eintrag (oder jedem Paar von 32-Bit-Einträgen) gespeichert.
  • Backdoor-ECC
  • Die Bedrock-MD-Einheit 275 unterstützt einen Backdoor-Weg zum Lesen und Schreiben des ECC-Speichers. Zwei Adreßräume innerhalb des HSPEC-Raums unterstützen einen Backdoor-ECC-Zugriff. Für den Schreibzugriff (PWRH) führen beide Räume ein Lesen-Modifizieren-Schreiben der Daten aus, um in den ECC-Speicher zu schreiben. Für den Lesezugriff (PRDH) gibt der BDECC-NORMAL-Raum einfach den ECC-Wert zurück, während der BDECC-SCRUB-Raum die Daten und ECC liest, den ECC-Wert zurückgibt, die Daten und ECC korrigiert und die korrigierten Daten und die ECC wiederbeschreibt. Für eine vollständige Beschreibung der Schnittstelle sei auf das SN1-Programmierhandbuch verwiesen.
  • Backdoor-Verzeichnis
  • Während der Verzeichnisspeicher bei jeder kohärenten Transaktion gelesen und geschrieben wird, werden die Daten nur innerhalb der Bedrock-MD-Einheit 275 verwendet. Damit das Betriebssystem auf die im Verzeichnis gespeicherten Daten zugreift (und das Verzeichnis während des Hochfahrens initialisiert), bietet ein getrennter Backdoor-Weg einen transparenten Zugriff auf den Verzeichnisspeicher. Es werden zwei Adreßräume innerhalb des HSPEC-Raums für einen Backdoor-Verzeichnisvorgang verwendet. Ein Lesen (PRDH) in jeden der Räume gibt das ganze 32-Bit-(Standard)- oder 64-Bit-(Premium)-Verzeichniswort zurück. Ein Schreiben (PWRH) in den BDDIR-ACCESS-Raum bewirkt, daß das einzige Schutzbit innerhalb des Verzeichniseintrags geschrieben wird. Ein Schreiben (PWRH) in den BDDIR-FULL-Raum bewirkt, daß das ganze Verzeichniswort geschrieben wird.
  • Das 32-Bit- oder das 64-Bit-Verzeichniswort enthält ein 6-Bit- oder ein 7-Bit-ECC-Feld. Ohne spezielle Unterstützung müßte das Betriebssystem den ECC-Wert immer dann voraus berechnen, wenn es einen Backdoor-ECC-Schreibvorgang ausführen muß. Um die zusätzliche Komplexität zu vermeiden, füllt die Bedrock-MD-Einheit 275 die ECC-Felder standardmäßig mit dem richtigen Wert aus (unabhängig von dem mit dem Schreibbefehl gesendeten Wert). Falls das IgnoreECC-Bit im DirectoryConfig-Register gesetzt ist, leitet die Bedrock-MD-Einheit 275 die ECC-Bits ohne Modifikation weiter.
  • Für eine vollständige Information zum BDDIR-Adreßraum und zu den Adreßabbildungen, die zum Zugreifen auf einen spezifischen Verzeichnis-, Schutz- oder Seitenzählereintrag erforderlich sind, sei auf das SN1-Programmierhandbuch verwiesen.
  • Flash-PROM
  • Die Bedrock-MD-Einheit 275 unterstützt ein 16-MB-Flash-PROM (zwei 8-MB-Teile) für Bootcode- und Systemkonfigurations-/Fehlerinformationen. Auf den PROM wird über die LBOOT- und RBOOT-Räume innerhalb der HSPEC-Spezifikation zugegriffen. Weil die Prozessoren auf den PROM zugreifen müssen, bevor der Bedrock-Chip eine Chipkennung aufweist, greift die Prozessorschnittstelle auf Zugriffe auf dem LBOOT-Raum am Node 0 zu und leitet sie zur lokalen MD-Einheit 275. Der RBOOT-Raum kann von einem beliebigen Prozessor verwendet werden, um auf den PROM eines beliebigen Nodes zuzugreifen, sobald die Chipkennungen initialisiert worden sind.
  • Für PROM-Lesevorgänge gibt es eine Eins-zu-Eins-Abbildung von HSPEC-Adressen auf PROM-Adressen (innerhalb eines gegebenen Raums). Die Bedrock-MD-Einheit 275 unterstützt alle Lesegrößen (Doppelwort, Wort, Halbwort und Byte). Von PROM-Schreibvorgängen gibt es eine Acht-zu-Eins-Abbildung von HSPEC-Adressen auf PROM-Adressen (innerhalb des gegebenen Raums). Mit anderen Worten entspricht die HSPEC-Adresse 0 der PROM-Adresse 0, während die HSPEC-Adresse 8 der PROM-Adresse 1 entspricht. Die Bedrock-MD-Einheit 275 unterstützt nur Byte-Schreibvorgänge des Flash-PROMs.
  • Junk-Bus
  • Die Bedrock-MD-Einheit 275 unterstützt eine getrennte Schnittstelle zu Komponenten, die keine Beziehung zur Kernfunktionalität der MD-Einheit 275 haben. Dies sind der Flash-PROM, vier LED-Bänder und zwei Synergien (diese Schnittstelle wird zum Lesen ferner Synergie-Register verwendet). Der Zugriff auf den Junk-Bus erfolgt über die LREG- und RREG-Adreßräume innerhalb des HSPEC-Raums. Die Bedrock-MD-Einheit 275 unterstützt nur 16-Bit-Lese- und Schreibvorgänge für alle Junk-Busvorrichtungen mit Ausnahme des Flash-PROMs und der Synergien, welche 64-Bit-Lesevorgänge und 16-Bit-Schreibvorgänge unterstützen.
  • SDRAM- und DDR-SDRAM-Initialisierung
  • Alle SDRAMs und DDR-SDRAMs enthalten Modusregister, die während des Hochfahrens des Systems initialisiert werden müssen. Diese Modusregister werden über dieselben LREG- und RREG-Adreßräume angesprochen, die zum Zugreifen auf den Junk-Bus verwendet werden.
  • Auffrischen
  • Der SDRAM und der DDR-SDRAM, die von der Bedrock-MD-Einheit 275 unterstützt werden, benötigen in etwa einmal alle 16 Mikrosekunden einen Auffrischungsbefehl. Um den Auffrischungs-Leistungsimpulsstoß zu verringern, frischt die Bedrock-MD-Einheit 275 eine Bank des SDRAMs oder DDR-SDRAMs an jedem DIMM in etwa alle acht Mikrosekunden auf. Die Bedrock-MD-Einheit 275 verwendet das Autoauffrischungsmerkmal des SDRAMs und des DDR-SDRAMs, um alle vier internen Bänke gleichzeitig aufzufrischen. Das Auffrischen geschieht während des ersten Leerzyklus innerhalb des Vier-Mikrosekunden-Fensters. Falls es keine Leerzyklen gibt, wird das Auffrischen beendet und bahnt sich seinen Weg. Das genaue Auffrischungsintervall ist durch das RefreshControl-Register konfigurierbar. Falls alle DIMMs in dem System nur eine oder zwei Bänke aufweisen, führt die MD-Einheit 275 das Auffrischen nur alle acht oder 16 Mikrosekunden aus.
  • Speichertests
  • Die Bedrock-MD-Einheit 275 unterstützt ein eingebautes Selbsttestmerkmal ("Build-In-Self-Test (BIST) feature"), das den gesamten Speicher (Daten, ECC und Verzeichnis) viel schneller testen kann als er auf andere Weise angesteuert werden könnte. Der Zweck dieses Merkmals besteht darin, so viel Kontrolle wie möglich der Software zu überlassen, während die Geschwindigkeitsvorteile des Hardwaretestens beibehalten werden. Zuerst muß die Software in das Modusregister schreiben, um die Speicherkonfiguration zu initialisieren, das Wiederauffrischen einschalten und die Größe jedes DIMMs bestimmen (d.h. aus vier Teilen oder aus acht Teilen – dies wird aus der Systemsteuereinrichtung ausgelesen). Diese Speicherdimensionierungsoperation ist mit einem Adressendecodiertest des Speichers äquivalent. Aus diesem Grunde enthält die BIST-Funktion keine Unterstützung für ein Testen von Adressen.
  • Nachdem die Speicherdimensionierung stattgefunden hat und die Software das MemoryConfig-Register mit den richtigen DIMM-Größen konfiguriert hat, kann der eigentliche BIST-Vorgang beginnen. Die Software richtet zuerst eine Anzahl von Konfigurationsregistern ein. Das 4-Bit-Datenmuster geht in das BISTDataPattern-Register ein. Dieses Muster wird über alle 144 Bits des Datenspeichers und alle 32 Bits der Verzeichnisdaten wiederholt. Musterfolgeinformationen (immer dasselbe Muster oder invertierte alternierende Zyklen) gehen auch in das BISTDataPattern-Register ein. Die getestete Bank geht in das BISTControl-Register ein. Schließlich leitet ein Schreiben des Startbits in das BISTControl-Register den BIST-Vorgang ein.
  • Während des BIST-Vorgangs initialisiert die Bedrock-MD-Einheit 275 alle getesteten Bänke auf das gewünschte Muster und testet dann alle zu testenden Bänke. Beim ersten Fehler wird das Datenmuster in den BISTDataError-Registern (eines für Verzeichnisdaten, eines für Speicherdaten und eines für die Adresse) gespeichert, und der BIST-Vorgang wird angehalten. Statusberichte können aus dem BISTStatus-Register ausgelesen werden. Sobald der BIST-Vorgang abgeschlossen worden ist, aktualisiert die Bedrock-MD-Einheit 275 ein Bit im, BISTStatus-Register. Falls der BIST-Vorgang nach einem Fehler wiedereingeleitet wird, wird er dort fortgesetzt, wo er stehengeblieben war.
  • Auf die Flash-PROMs und den Junk-Bus kann während des BIST-Vorgangs nicht zugegriffen werden. Weil auf die lokalen Register nicht über die MD-Einheit 275 zugegriffen wird (sie werden über einen speziellen Datenweg vom LB-Block gelesen), können sie während des BIST-Vorgangs normal fortgesetzt werden.
  • Weiches Rücksetzen
  • Um den Zustand des Node-Speichers während des weichen Rücksetzens beizubehalten, schaltet die MD-Einheit 275 das interne Rücksetzen eines Teils ihrer Funktionalität auf der Grundlage davon, ob sie ein weiches oder ein hartes Rücksetzen durchläuft. Während eines weichen Rücksetzens wird die Einheit wie bei einem Einschalt-Rücksetzen initialisiert, wobei jedoch die folgenden Ausnahmen auftreten:
    • • Die Inhalte der MEMORY_CONFIG- und DIR_CONFIG-Register werden beibehalten. Dies gewährleistet, daß Einstellungen, die zur Größe und zur Breite der SDRAMs gehören, Synchronisierer-Einstellungen und die Verzeichnisansicht bewahrt bleiben.
    • • Bald nach dem das Rücksetzsignal fortgeht, gibt die MD-Einheit 275 ein Voraufladen an alle Bänke der SDRAMs aus, um sie in einen bekannten Zustand zu versetzen (falls das Rücksetzsignal in der Mitte eines SDRAM-Zugriffs aufgetreten ist).
    • • Die Inhalte des REFRESH-CONTROL-Registers werden beibehalten. Der Wiederauffrischungszähler setzt seinen Zählwert nach dem weichen Rücksetzen auf Null zurück, und falls das Wiederauffrischen vor dem weichen Rücksetzen aktiviert wurde, nimmt die MD-Einheit 275 das Ausgeben von Wiederauffrischungen entsprechend dem programmierten Schwellenwert wieder auf.
  • Ausgabeblock
  • Alle Nachrichten von der XBAR-Einheit treten über den IB (Ausgabeblock) in die MD-Einheit 275 ein. Die IB-Einheit decodiert die Nachrichten, ordnet sie in Hinblick auf Gerechtigkeit und Wirksamkeit um, gibt die erforderlichen Adressen und Befehle an den DRAM aus und synchronisiert die DB- und MB-Blöcke mit den einwärts gerichteten oder auswärts gerichteten Daten.
  • Dieser Abschnitt läßt sich in drei Unterabschnitte aufteilen, nämlich Architektur, Zuteilung und Entwurf. Die Gesamtstruktur des Ausgabeblocks wird im Architekturabschnitt erörtert, während der Zuteilungsalgorithmus (für alle Nachrichtentypen) im Zuteilungsabschnitt erörtert wird.
  • Architektur
  • Wenn eine Nachricht von der XB-Einheit in der MD-Einheit 275 ankommt, wird der Kopfteil in die Kopfteil-Warteschlange mit 12 Einträgen (die sich im IB-Block befindet) geschrieben, und die entsprechenden Daten, falls überhaupt, werden in die Datenwarteschlange mit acht Cache-Leitungen geschrieben (die sich im MB-Block befindet). Parallel mit dem Schreiben in die Kopfteil- und die Datenwarteschlange wird die einwärts gerichtete Nachricht decodiert und in der Anhängig-Warteschlange und der Schreibtabelle gespeichert. Die Anhängig-Warteschlange enthält einen Eintrag für jeden Eintrag in der Kopfteil-Warteschlange, und die Schreibtabelle enthält einen Eintrag für jede der Cache-Leitungen in der Datenwarteschlange (die Datenwarteschlange enthält tatsächlich eine neunte Cache-Leitung zur internen Verwendung von der MB-Einheit, die keinen Eintrag in der Schreibtabelle aufweist).
  • Die XBAR-Einheit unterteilt einwärts gerichtete Nachrichten auf der Grundlage der Quelle und des Typs in einen von vier virtuellen Kanälen. Anforderungen von der PI0-Einheit kommen an einem Kanal an, während Anforderungen von PI1, Anforderungen von NI oder II und Antworten auf den anderen drei Kanälen ankommen. Jede der vier unabhängigen Warteschlangen (Kopfteil, Daten, Anhängig und Schreiben) ordnet ein Viertel seines Platzes jedem virtuellen Kanal zu. Die XB-Einheit und die IB-Einheit behandeln beide die vier virtuellen Kanäle als vollkommen unabhängig und unterstützen eine beliebige Verschachtelung.
  • Parallel zum Schreiben in die Kopfteil-Warteschlange vergleicht die IB-Einheit die einwärts gerichtete Nachricht mit allen offenen Bänken (bis zu 4) und decodiert den Befehl (Lesen/Schreiben, Vollständig/Teilweise). Die Ausgabe dieser Operationen wird in der Anhängig-Warteschlange gespeichert und während der Zuteilung verwendet. Für einwärts gerichtete Nachrichten mit Daten schreibt die IB-Einheit in die Schreibtabelle, sobald das Endteilbit empfangen worden ist.
  • Sobald die decodierten Informationen für eine Nachricht in der Anhängig-Warteschlange und in der Schreibtabelle sind, kann die Zuteilungslogik sie auswählen und an den Rest der MD-Einheit 275 ausgeben. Eine Nachricht wird ausgegeben, indem ihr Kopfteil aus der Kopfteil-Warteschlange ausgelesen wird und die relevanten Informationen in die drei Warteschlangen am Kopf jedes Datenwegs (Adresse, Verzeichnis und Speicher) geschrieben werden. Sobald sich die Nachricht in diesen drei Warteschlangen befindet, kann sie an den DRAM ausgegeben und vervollständigt werden.
  • Zuteilung
  • Der Zuteilungsabschnitt des Ausgabeblocks nimmt die 12 Einträge in der Anhängig-Warteschlange und wählt den "besten" zur Ausgabe aus. Hierbei ist der "beste" so definiert, daß es eine gerechte Verteilung zwischen den drei Eingangsanforderungs-Warteschlangen gibt, daß Schreibvorgänge und Antworten genug Bandbreite bekommen, daß alle Nachrichten in einer vernünftigen Zeit ausgegeben werden und daß alle DRAM-Randbedingungen berücksichtigt werden.
  • Um die Dinge zu vereinfachen, wird der Zuteilungsprozeß in zwei Stufen aufgeteilt, nämlich eine lokale Zuteilungsstufe, die auf der einzelnen Nachricht beruht, und eine globale Zuteilungsstufe, die auf der Warteschlange beruht. Zwischen den zwei Stufen existieren sehr wenig Abhängigkeiten, wodurch ermöglicht wird, daß sie im selben Zyklus parallel laufen.
  • Lokale Anforderungszuteilung
  • Jeder der vier virtuellen Kanäle (Anforderungen von PI0, Anforderungen von PI1, Anforderungen von NI oder II, alle Antworten) führt seine eigene unabhängige lokale Zuteilung aus. Die globale Zuteilung wählt parallel aus, welche der vier Kanäle tatsächlich die volle Zuteilung gewinnen.
  • Für die drei Anforderungswarteschlangen muß die Zuteilungslogik zuerst herausfinden, welche der (bis zu drei) Anforderungen in der Warteschlange ausführungsbereit sind. Damit ein Cache-Lesen, ein teilweises Lesen oder ein teilweises Schreiben als bereit angesehen werden, müssen sie die folgenden Anforderungen erfüllen:
    • • Falls die Nachricht das älteste Cache-Lesen, teilweise Lesen oder teilweise Schreiben in dem Kanal ist und kein Schreib-Zeitablauf (nachstehend beschrieben) anhängig ist, muß es Platz für wenigstens drei Kopfteile in der richtigen Kopfteil-Ausgangswarteschlange und Platz für eine Cache-Leitung von Daten in der richtigen Daten-Ausgangswarteschlange geben. Falls die Nachricht ein Cache-Lesen, ein teilweises Lesen oder ein teilweises Schreiben ist oder ein Schreib-Zeitablauf bevorsteht, muß es in der richtigen Kopfteil-Ausgangswarteschlange Platz für wenigstens sechs Kopfteile und in der richtigen Daten-Ausgangswarteschlange Spezifikationen für zwei Cache-Leitungen von Daten geben. Falls die Nachricht ein Cache-Leitungs-Schreiben ist, muß es in der richtigen Kopfteil-Ausgangswarteschlange Platz für wenigstens sechs Kopfteile geben.
    • • Die Nachricht darf nicht in Konflikt mit irgendwelchen der offenen Bänke gelangen.
    • • Für Teil-Lesevorgänge und Teil-Schreibvorgänge muß die Adreßlogik in der Lage sein, Teileinheiten anzunehmen. Für Cache-Lesevorgänge und Cache-Schreibvorgänge muß die Adreßlogik in der Lage sein, Nicht-Teileinheiten anzunehmen.
    • • Für Cache-Schreibvorgänge und Teil-Schreibvorgänge muß das gesamte Datenpaket in der Datenwarteschlange vorhanden sein.
    • • Für Cache-Schreibvorgänge dürfen keine ERESPs auf die Ausgabe warten. (ERESPs sind Nachrichten, die als Schreibvorgänge ausgegeben werden und dann als Lesevorgänge wiederausgegeben werden sollen. Zwischen der Ausgabe und der Wiederausgabe dürfen keine neuen Schreibvorgänge eine Zuteilung gewinnen.)
    • • Für Teil-Lesevorgänge und Teil-Schreibvorgänge muß die Nachricht die älteste Teileinheit in dem Kanal sein (Teileinheiten müssen in der Reihenfolge ausgegeben werden).
    • • Für Cache-Schreibvorgänge muß die Nachricht der älteste Cache-Schreibvorgang in dem Kanal sein (Cache-Schreibvorgänge werden in der Reihenfolge ausgegeben).
  • Sobald die Bereitschaftsinformationen für jede der (bis zu) drei Nachrichten verfügbar sind, wählt die Zuteilungslogik die Nachricht mit der höchsten Priorität aus. Prioritäten werden folgendermaßen festgelegt:
    • 1. Jeder Cache-Schreibvorgang (falls ein Schreib-Zeitablauf aktiviert ist).
    • 2. Der älteste Cache-Lesevorgang, Teil-Lesevorgang oder Teil-Schreibvorgang.
    • 3. Jeder Cache-Lesevorgang, Teil-Lesevorgang oder Teil-Schreibvorgang.
    • 4. Jeder Cache-Schreibvorgang.
  • Lokale Antwortzuteilung
  • Der Antwortkanal wird etwas anders behandelt als die drei Anforderungskanäle. Eine Antwort wird als bereit angesehen, wenn die folgenden Kriterien erfüllt sind:
    • • Die Nachricht darf nicht in Konflikt mit irgendwelchen der offenen Bänke geraten.
    • • Die Adreßlogik muß in der Lage sein, Nicht-Teileinheiten zu akzeptieren.
    • • Die Nachricht ist die älteste Antwort in der Warteschlange (Antworten werden in der Reihenfolge ausgegeben).
    • • Für Schreibantworten muß das ganze Datenpaket in der Datenwarteschlange vorhanden sein.
  • Es gibt keine Prioritäten für den Antwortkanal, weil die älteste Nachricht immer ausgewählt ist (falls sie bereit ist).
  • Globale Zuteilung
  • Um Bandbreite fair zwischen den drei Anforderungswarteschlangen zuweisen zu können, enthält die globale Zuteilungslogik drei LRU-Tabellen. Die erste LRU-Tabelle (die älteste) verfolgt die Reihenfolge, in der die Warteschlangen als letztes eine Nachricht ausgegeben haben, die als das älteste anhängige Cache-Lesen, teilweise Lesen oder teilweise Schreiben markiert ist. Die zweite LRU-Tabelle (eine beliebige) verfolgt die Reihenfolge, in der die Warteschlangen als letztes eine Cache-Lese-, Teil-Lese- oder Teil-Schreibnachricht ausgegeben haben. Die dritte LRU-Tabelle (Schreibtabelle) verfolgt die Reihenfolge, in der die Warteschlangen als letztes eine Cache-Schreibnachricht ausgegeben haben.
  • Die globale Zuteilung wählt die Warteschlangen unter Verwendung des folgenden Prioritätsschemas aus:
    • 1. Antwort mit Antwort-Zeitablauf bereit.
    • 2. Cache-Schreiben mit Schreib-Zeitablauf bereit. Unter Verwendung der Schreib-LRU-Einheit ausgewählt.
    • 3. Cache-Lesen, teilweises Lesen oder teilweises Schreiben als älteste markiert bereit. Unter Verwendung der ältesten LRU-Einheit ausgewählt.
    • 4. Cache-Lesen, teilweises Lesen oder teilweises Schreiben bereit. Unter Verwendung der beliebigen LRU-Einheit ausgewählt.
    • 5. Cache-Schreiben bereit. Unter Verwendung der Schreib-LRU-Einheit ausgewählt.
    • 6. Antwort bereit.
  • Die Schreib-LRU-Einheit wird immer dann aktualisiert, wenn ein Cache-Schreiben von Nachrichten auftritt. Die älteste LRU-Einheit wird immer dann aktualisiert, wenn eine als das älteste Cache-Lesen, teilweise Lesen oder teilweise Schreiben markierte Nachricht ausgegeben wird. Die beliebige LRU-Einheit wird immer dann aktualisiert, wenn ein Cache-Lesen, ein teilweises Lesen oder ein teilweises Schreiben ausgegeben wird.
  • Schreib-Zeitablauf
  • Die Schreib-Zeitablauflogik gewährleistet, daß Schreibvorgänge nicht ewig in der Datenwarteschlange bleiben. Zusätzlich zwingt die Schreib-Zeitablauflogik, sobald die Datenwarteschlange für einen Kanal voll ist, die Ausgabe von Schreibvorgängen, wodurch Platz für die nächste Schreibnachricht freigesetzt wird.
  • Ein Schreib-Zeitablauf wird eingeleitet, nachdem eine von zwei Bedingungen erfüllt ist:
    • • Es gibt in der Datenwarteschlange eines beliebigen Kanals zwei Cache-Datenleitungen.
    • • Es wurde eine vom Benutzer einstellbare Anzahl von Lesenachrichten ausgegeben, seit die letzte Schreibnachricht ausgegeben wurde.
  • Falls eine der vorstehenden Bedingungen wahr ist und ein Antwort-Zeitablauf abläuft, wird der Schreib-Zeitablauf nur auf dem virtuellen Kanal aktiviert, der eine Schreibnachricht enthält, die die höchste Priorität in der Schreib-LRU-Einheit aufweist. Sobald von diesem Kanal ein Schreiben ausgegeben wird, wobei der Zeitablauf aktiviert ist, wird der Zeitablauf zu allen drei Anforderungskanälen übertragen. Der Zeitablauf wird fortgesetzt, bis irgend etwas außer einem Cache-Schreiben ausgegeben wird oder vier Cache-Schreibvorgänge ausgegeben werden, je nach dem, was zuerst kommt. Nach Abschluß des Zeitablaufs müssen wenigstens vier Nachrichten eines beliebigen Typs ausgegeben werden, bevor der Zeitablauf wieder aktiviert werden kann.
  • Antwort-Zeitablauf
  • Die Antwort-Zeitablauflogik stellt sicher, daß Antworten schließlich ausgegeben werden. Ein Antwort-Zeitablauf wird aktiviert, falls mehr als eine vom Benutzer einstellbare Anzahl von Anforderungen ausgegeben wurde, seit die letzte Antwort ausgegeben wurde, und kein Schreib-Zeitablauf ausgeführt wird.
  • Junk-Bus und PROM
  • Die Bedrock-MD-Einheit 275 kommuniziert unter Verwendung eines getrennten firmeneigenen Busses mit externen Nicht-DRAM-Vorrichtungen. Die MD-Einheit 275 erkennt vier verschiedene Vorrichtungstypen auf diesem Bus, nämlich einen EPROM, einen UART, LEDs und einen oder mehrere "Junk"-Busse. Jeder Vorrichtungstyp hat seinen eigenen Adreßraum innerhalb des LREG- oder RREG-Abschnitts des HSPEC-Raums (siehe Tabelle 42).
  • Der Bus verbindet sich mit der Bedrock-MD-Einheit 275 unter Verwendung von 16 Adreß-/Datenstiften, vier Steuerstiften und einer Unterbrechungsleitung. 36 zeigt ein Diagramm der Schnittstelle.
  • Speicherblock
  • 37 zeigt ein Blockdiagramm des Speicherblock-Datenwegs. Dieser Datenweg überträgt Daten von den Anschlußstiften zur Daten-Ausgangswarteschlange (MOQD 3114) und von der Daten-Eingangswarteschlange (MIQD) zu den Anschlußstiften. Innerhalb des Datenwegs befindet sich eine Anzahl spezieller Unterblöcke, die Lese-Modifizier-Schreibvorgänge der Cache-Leitungen ermöglichen und die Abruf- und Operations-Vorgänge implementieren.
  • Der Merge-Cache unterstützt Lese-Modifizier-Schreibvorgänge auf Cache-Leitungen. Die Bedrock-MD-Einheit ermöglicht Schreibvorgänge ohne Cache-Speicher an einer Bytegrenze. Um jedoch an SDRAM-Kosten zu sparen, sind Schutzinformationen (ECC) nur in 64-Bit-Größen gespeichert. Um ein Schreiben ohne Cache-Speicher auszuführen, muß die MD-Einheit daher einen Lese-Modifizier-Schreibvorgang ausführen. Zuerst liest der Speicherblock eine gesamte Cache-Leitung, wobei er die erforderlichen 128 Bits im Merge-Cache speichert. Der Speicherblock liest dann die Speicherinformationen aus der MIQD-Einheit und überschreibt die ausgewählten Bytes mit neuen Daten. Nun, da die richtigen Daten verfügbar sind, werden sie durch ECC-Erzeugung gesendet und in den Speicher zurückgeschrieben.
  • Der Abruf-und-Operations-Block implementiert einen Cache-Speicher mit zwei Einträgen, um Synchronisationsoperationen zu verbessern.
  • Grundoperation
  • Normales Lesen
  • Ein normales Lesen wird ausgeführt, indem Daten von den Anschlußstiften aufgenommen werden, ECC-Fehler erfaßt und korrigiert werden (falls ECC-Fehler nicht ignoriert werden) und diese Daten dann an die MOQ-Einheit übergeben werden. ValidData- und DataTail-Signale werden zur MOQ-Einheit 3113 gesendet, um anzugeben, daß gültige Daten vorhanden sind.
  • Normales Schreiben
  • Die gerade und die ungerade MIQD-Warteschlange enthalten jeweils 65-Bit-Einträge, wobei jeder Eintrag ein 64-Bit-Wort ist, und ein diesem Wort zugeordnetes UCE-Bit. Die zweiundsiebzig Einträge sind für zwei vollständige Cache-Leitungen von Daten von jeder der Eingangswarteschlangen (P0, P1 und Misc) und eine zusätzliche Cache-Leitung, die nur von der MB-Einheit verwendet wird, um ein Lesen-Modifizieren-Schreiben einzelner Cache-Leitungen auszuführen, ausreichend. In die MIQD-Einheit wird ein 64-Bit-Wort zur Zeit von der XB-Einheit geschrieben. Wenn ihr vorgeschrieben wird, ein normales Schreiben auszuführen, liest die MB-Einheit MIQD-Ungerade und MIQD-Gerade parallel, speichert diese Daten zwischen und erzeugt im nächsten Zyklus die ECC-Bits und sendet die Daten zu den Anschlußstiften. Es sei bemerkt, daß während eines normalen Schreibvorgangs ECC-Bits unabhängig davon erzeugt werden, ob das IgnoreECC-Bit gesetzt ist oder nicht.
  • 37 zeigt eine Ausführungsform eines Speicherblock-Datenwegs.
  • Teilweises Lesen
  • Ein teilweises Lesen erfolgt durch Lesen einer ganzen Cache-Leitung aus dem Speicher, wobei jedoch nur die 128 Bits zur MOQ-Einheit gesendet werden, die die angeforderten Daten enthalten. DataValid und DataTail werden festgelegt, wenn die geeignete 128-Bit-Menge verfügbar ist.
  • Teilweises Schreiben
  • Ein teilweises Schreiben ist ein zweiphasiger Vorgang. In der ersten Phase wird die geeignete Cache-Leitung in die MIQD-Einheit gelesen, und die zu modifizierende 128-Bit-Menge in den Merge-Cache gelesen. Während der zweiten Phase des teilweisen Schreibens wird die Cache-Leitung in den Speicher zurückgeschrieben. Die Teil-Schreibdaten werden vom Lesevorgang in den Speicher-Cache entnommen. Während der zweiten Phase des teilweisen Schreibens wird die Cache-Leitung in den Speicher zurückgeschrieben. Die Teil-Schreibdaten werden aus der MIQD-Einheit entnommen und auf der Grundlage von ByteEnable-Signalen mit den Daten im Merge-Cache zusammengeführt. Alle anderen 128-Bit-Teile der Cache-Leitung werden ungeändert von der MIQD-Einheit in den Speicher zurückgeschrieben. Normalerweise wird ECC beim Wiedereinschreiben regeneriert. In dem Fall, in dem wir ECC ignorieren, wird die alte ECC, die die Leitung zuvor aufwies, stattdessen zurückgeschrieben.
  • Abruf-und-Operations-Schreibfehltreffer
  • Ein Räumvorgang wird ausgeführt, um die Daten herauszuschreiben, die sich gegenwärtig im Cache-Speicher befinden, worauf ein Füllvorgang folgt, worauf ein Schreibvorgang folgt.
  • Abruf-und-Operations-Schutz
  • Der Abruf-und-Operations-Schutz hat zwei Teile. Der erste Teil ist die normale Verzeichnisschutzprüfung, die im Verzeichnisblock während eines Füllvorgangs auftritt. Falls die DB-Einheit einen Zugriffsfehler feststellt, wird das Schutzwort im Abruf-und-Operations-Cache gelöscht, und es sind keine Abruf-und-Operations-Vorgänge zulässig. Die DB-Einheit teilt der IB-Einheit auch mit, daß bei einer Abruf-und-Operations-Füllung ein Zugriffsfehler aufgetreten ist.
  • Der zweite Teil der Schutzprüfung geschieht während eines Lesetreffervorgangs oder eines Schreibtreffervorgangs. Die IB-Einheit hat die Schutzbereichsbits gesendet, die eines der 64 Bits im Abruf-und-Operations-Schutzregister adressieren. Falls diese gesetzt sind, darf die Operation fortgesetzt werden, und der Abruf-und-Operations-Cache-Speicher bleibt andernfalls unverändert.
  • Abruf-und-Operations-Vorgang
  • Die Bedrock-MD-Einheit implementiert dieselben Abruf-und-Operations-Befehle wie die SN0-MD-Einheit. Ein kleiner Abruf-und-Operations-Cache-Speicher (2 Einträge) ermöglicht eine Transaktion mit einer geringen Belegung (~ 20 ns), wodurch die Programmsynchronisation erheblich beschleunigt wird.
  • 38 zeigt ein Blockdiagramm des Abruf-und-Operations-Cache-Datenwegs. Es gibt zwei Einträge in dem Cache-Speicher. Jeder Eintrag besteht aus einem 64-Bit-Schutzwort und einem 64-Bit-Datenwort, das als ein einziges 64-Bit-Wort oder als 2 32-Bit-Wörter angesehen werden kann, welche in dem Diagramm als F&Op-Hi und F&Op-Lo dargestellt sind. Vier Schlüsseloperationen, die vom Abruf-und-Operations-Cache-Speicher ausgeführt werden, sind Füllen, Lesen, Schreiben und Räumen. Nachstehend wird eine kurze Zusammenfassung jeder Operation beschrieben:
  • Füllen
  • Bei einem Füllvorgang werden Daten aus dem Speicher direkt in den Abruf-und-Operations-Cache-Speicher geladen. Es werden keine Rechen- oder Logikoperationen ausgeführt.
  • Lesen
  • Bei einem Lesevorgang werden Daten aus dem Cache-Speicher entnommen, zur MOQD-Einheit gesendet, und der Cache-Eintrag wird gelöscht, inkrementiert, dekrementiert oder unmodifiziert gelassen. Es werden keine Logikoperationen ausgeführt.
  • Schreiben
  • Bei einem Speichervorgang werden Daten aus der MIQD-Einheit entnommen, wahlweise mit dem Wert im Cache-Speicher durch ein UND oder ein ODER verknüpft und dann im Cache-Speicher gespeichert. Dabei können auch die ankommenden Daten von der MIQD-Einheit ignoriert werden und einfach der Wert im Cache-Speicher inkrementiert oder dekrementiert werden.
  • Räumen
  • Bei einem Räumungsvorgang werden Daten aus dem Cache-Speicher entnommen und in den Speicher zurückgegeben. Dies ist ein zweiphasiger Vorgang, der einem Teil-Schreibvorgang ähnelt: Die ganze Cache-Leitung wird aus dem Speicher ausgelesen und in der MIQD-Einheit gespeichert, und es wird dann die Cache-Leitung zurückgeschrieben, wobei die ersten zwei Wörter statt aus der MIQD-Einheit aus dem Abruf-und-Operations-Cache-Speicher entnommen werden.
  • Wir können nun aus dem Abruf-und-Operations-Cache-Speicher lesen oder in diesen schreiben, und es gibt für jeden Fall drei Möglichkeiten, nämlich einen Treffer im Cache-Speicher (Trefferfall), einen Fehltreffer im Cache-Speicher, wobei der Cache-Eintrag unbenutzt ist (Ladefall) und einen Fehltreffer im Cache-Speicher, wobei der Cache-Eintrag gegenwärtig verwendet wird (Fehltrefferfall). Jeder dieser Fälle wird durch eine Kombination von Füll-, Lese-, Schreib- und Räumungsvorgängen behandelt.
  • Abruf-und-Operations-Lesetreffer:
  • Es wird ein Lesevorgang ausgeführt.
  • Abruf-und-Operations-Schreibtreffer:
  • Es wird ein Schreibvorgang ausgeführt.
  • Abruf-und-Operations-Lesen-Laden:
  • Es wird ein Füllvorgang ausgeführt, um die richtigen Daten in den Cache-Speicher zu laden, worauf ein Lesevorgang folgt.
  • Abruf-und-Operations-Schreiben-Laden:
  • Es wird ein Füllvorgang ausgeführt, um die richtigen Daten in den Cache-Speicher zu laden, worauf ein Schreibvorgang folgt.
  • Abruf-und-Operations-Lesefehltreffer:
  • Es wird ein Räumungsvorgang ausgeführt, um die Daten herauszuschreiben, die sich gegenwärtig im Cache-Speicher befinden, worauf ein Füllvorgang folgt, worauf ein Lesevorgang folgt.
  • Backdoor-Daten-ECC-Vorgang
  • Backdoor-ECC-Lesen
  • Ein Backdoor-ECC-Lesen erfolgt durch Sammeln der ECC-Bits von den oberen 8 Doppelwörtern in einer Cache-Leitung oder den unteren 8 Doppelwörtern in einer Cache-Leitung. Die IB-Einheit bringt immer den kritischen Teil der Cache-Leitung zuerst ein, so daß die MB-Einheit die ECC-Bits von den ersten 4 Zyklen, 16 ECC-Bits je Zyklus, sammelt. Diese ECC-Bits werden dann als, ein einziges 64-Bit-Wort der MOQ-Einheit gesendet.
  • Falls IgnoreECC nicht gesetzt ist, werden ECC-Fehler in der Cache-Leitung während Backdoor-ECC-Lesevorgängen erkannt und korrigiert (Einzelbitfehler-Fall).
  • Backdoor-ECC-Schreiben
  • Ein Backdoor-ECC-Schreiben erfolgt in ähnlicher Weise wie ein teilweises Schreiben. Bei einem Backdoor-ECC-Schreiben werden die ECC-Bits von 2 ausgerichteten 64-Bit-Wörtern auf einmal geschrieben. Zuerst wird eine vollständige Cache-Leitung vom Speicher gelesen und in die MIQD-Einheit geschrieben. Es sei bemerkt, daß die IB-Einheit in diesem Fall eine kritische Halb-Cache-Leitungs-Umordnung ausführt, so daß sich die Wörter, für die wir die ECC-Bits schreiben möchten, immer in den ersten 4 Zyklen befinden. Die MB-Einheit betrachtet die Bytefreigaben, um zu bestimmen, bei welchen 2 Wörtern die ECC-Bits geschrieben werden (es sollten nur zwei der Bytefreigabebits gesetzt werden). In den Merge-Cache-Speicher werden die 128 Bits geschrieben, für die ein Backdoor-ECC-Schreiben ausgeführt werden soll. Die Cache-Leitung wird dann in den Speicher zurückgeschrieben, und die Backdoor-ECC-Bits werden im geeigneten Zyklus gleichzeitig mit den Merge-Cache-Daten aus der MIQD-Einheit ausgelesen, und die vollständigen 144 Bits werden in den Speicher geschrieben. Es sei bemerkt, daß die ECC-Bits die 16 unteren Bits des aus der MIQD-Einheit gelesenen Worts sind.
  • Backdoor-ECC-Schreibvorgänge sind in erster Linie zur Verwendung mit dem IgnoreECC-Satz vorgesehen. Falls IgnoreECC nicht gesetzt ist, werden ECC-Fehler beim Lesen der Cache-Leitung erkannt und korrigiert. Weiterhin werden ECC-Bits für alle Wörter regeneriert, in die wir nicht direkt mit einem Backdoor-ECC-Schreibvorgang schreiben.
  • ECC-Scrub-Vorgang
  • Der ECC-Scrub-Vorgang wird verwendet, um Einzelbit-ECC-Fehler im Speicher zu korrigieren. Es handelt sich um einen zweiphasigen Vorgang, der das Lesen in eine Cache-Leitung und das Schreiben der korrigierten Cache-Leitung in die MIQD-Einheit einschließt. Daraufhin werden die Daten in den Speicher zurückgeschrieben, während die richtigen ECC-Bits wiederhergestellt werden. Es sei bemerkt, daß Einzelbit-ECC-Fehler beim Lesen keine Unterbrechung erzeugen und die Fehlerregister nicht beeinflussen, selbst wenn IgnoreECC nicht gesetzt ist, weil der Zweck des Scrub-Vorgangs darin besteht, bekannte Fehler zu korrigieren. Doppelbitfehler werden jedoch selbst dann noch erkannt, wenn IgnoreECC nicht gesetzt ist.
  • Verzeichnisblock
  • Der Verzeichnisblock (DB) ist für das Implementieren des SN1-Cache-Kohärenzprotokolls verantwortlich. Während der Block eingehender Nachrichten (IB) entscheidet, welche einwärts gerichteten Transaktionen zu behandeln sind und alle Adressen an die SDRAMs ausgibt und der Speicherblock (MB) die Daten in den Speicher und aus dem Speicher behandelt, enthält die DB-Einheit Kohärenzinformationen im Verzeichnis und erzeugt alle Kopfteile für auswärts gerichtete Nachrichten.
  • Die Hauptfunktionen der DB-Einheit bestehen im:
    • • Speichern von bis zu 6 anhängigen Anforderungen für die DB-Pipeline.
    • • Bestimmen von Ausgangsnachrichten-Kopfteilen und manchmal von Ausgangsnachrichtendaten auf der Grundlage der einwärts gerichteten Nachricht, der Schutzgenehmigung für die Quelle der einwärts gerichteten Nachricht und des aktuellen Verzeichniszustands.
    • • Aufrechterhalten des Verzeichniszustands. Das ECC-Bit wird erzeugt und geprüft. Es werden zwei verschiedene Verzeichniseintragsgrößen unterstützt (32/64 Bits).
    • • Aktualisieren von Seitenmigrationszählern. Erzeugen von Unterbrechungen, falls der Zählwert (oder die Differenz zwischen den Zählwerten) eine vom Benutzer definierte Schwelle übersteigt.
    • • Protokollfehler (Verzeichniszustandsspeicher-Fehler und Fehler im Protokoll einwärts gerichteter Nachrichten).
    • • Ermöglichen direkter Lese-/Schreibvorgänge in bezug auf den Verzeichnisspeicher. Diese werden durch HSPEC-Raum ohne Cache-Speicher sowie einen speziellen Modus, in dem im Cache-Speicher abgelegte Lesevorgänge ein Daten-Doppelwort zurückgeben, unterstützt.
    • • Zulassen, daß aus den lokalen Registern gelesen und in diese geschrieben wird (die IB-Einheit behandelt die Schnittstelle zum lokalen Block).
  • Netzwerkschnittstelleneinheit 274
  • Die Netzwerkschnittstelleneinheit (NI) 274 wirkt als eine Brücke zwischen der Bedrock-Crossbar-Einheit 279 und dem Bedrock-SN1Net-Port 73. Die NI-Einheit 274 behandelt alle Aspekte der SN1Net-Verbindung und kann an einen SN1-Router 76 oder direkt an die NI-Einheit 274 des Peer-Node-Controllers 75 angeschlossen werden.
  • Weil sich das SN1Net-Nachrichtenformat vom Bedrock-Crossbar-Nachrichtenformat unterscheidet, übersetzt die NI-Einheit alle Nachrichten, die zwischen den zwei Schnittstellen fließen. Die NI-Einheit führt diese Übersetzungen bei der vollen Bandbreite aus, wobei in jeder Richtung ein einziger Latenzzyklus auftritt. Die gesamte Bedrock-seitige Nachrichtenpufferung tritt innerhalb der Crossbar-Einheit auf, wobei die NI-Einheit die Ablaufsteuerinformationen zwischen der Crossbar-Einheit und dem fernen SN1Net-Agenten vermittelt.
  • In diesem Dokument beziehen sich die Begriffe "senden" und "auswärts gerichtet" auf Nachrichten, die von der Bedrock-Einheit zur SN1Net-Einheit gesendet werden, während sich "empfangen" und "einwärts gerichtet" auf Nachrichten bezieht, die an der Bedrock-Einheit von der SN1Net-Einheit empfangen werden. 39 ist ein Blockdiagramm der Haupt-Adressen- und Datenwege der NI-Einheit 274.
  • SN1Net-Schnittstelle
  • 41 zeigt ein Blockdiagramm der Verbindungen zwischen dem Node-Controller 75 und dem Router 76 gemäß einer Ausführungsform.
  • Auf der physikalischen Schicht ist die NI-Einheit über zwei unidirektionale, quellensynchrone 20-Bit-Datenports, die mit der STI-Signaltechnologie (siehe 41) arbeiten, mit der SN1Net-Einheit verbunden. Alle Signale sind differentiell, was zu 44 Signalstiften je Port führt. Die Schaltungsanordnung der physikalischen Schicht besteht aus einem quellensynchronen Treiber (SSD) und einem quellensynchronen Empfänger (SSR), welche die Umwandlung zwischen seriellen 800-MHz-Daten an den Anschlußstiften und parallelen 200-MHz-Daten, die vom Chipkern verwendet werden, implementieren.
  • Das Verbindungsebenenprotokoll (LLP-Version 3.0) liegt oberhalb der physikalischen Schicht, um eine zuverlässige in der Reihenfolge erfolgende Übertragung von als Mikropakete bekannten 128-Bit-Datenatomen bereitzustellen. Für Einzelheiten zur Arbeitsweise dieser Protokollschicht sei auf die Spezifikation des Verbindungsebenenprotokolls ("Link Level Protocol") verwiesen. Die Sende- und Empfangsmodule von SSD, SSR und LLP implementieren dasselbe Protokoll, das auf dem SN1-Router 76 verwendet wird. Die meisten Aspekte der SSD/SSR-Schnittstelle werden innerhalb des LLPs behandelt. Eine Ausnahme ist die Steuerung des SSR-Datenabtastfensters, die über den d-avail-select-Port erfolgt. Die Abtasteinstellung ist im NI_PORT_PARMS-Register mit den D_AVAIL_SEL-Bits festgelegt.
  • Das Versehen virtueller SN1Net-Kanäle mit Tags, das Rahmen von Nachrichten und die guthabenbasierte Ablaufsteuerung befinden sich in Schichten oberhalb des LLPs, wodurch ermöglicht wird, daß SN1-Kohärenzprotokollnachrichten aus Mikropaketfolgen zusammengesetzt werden. Diese Informationen werden vom LLP als Seitenbanddaten weitergeleitet (siehe 40, worin eine Nachrichtenseitenbandcodierung dargestellt ist).
  • Crossbar-Schnittstelle
  • Beide Richtungen der Crossbar-Schnittstelle der NI-Einheit sind durch die genaue Bandbreitenübereinstimmung zwischen internen Bedrock- und SN1Net-Übertragungen vereinfacht. Allen Einzelzyklus-Bedrock-Kopfteilen folgt ein Totzyklus auf der Crossbar-Einheit, wodurch die gleiche Bandbreite von den Zweizyklus-SN1Net-Kopfteilen verbraucht wird. Alle Vierwort-Datenmikropakete verbrauchen zwei Datenzyklen auf der Crossbar-Einheit, und Doppelwort-Datenmikropaketen folgt ein Totzyklus auf der Crossbar-Einheit, der wiederum mit der SN1Net-Bandbreite übereinstimmt.
  • Alle von SN1Net empfangenen Nachrichten werden bei der vollen Bandbreite übersetzt und zum NOQ-Abschnitt der Crossbar-Einheit weitergeleitet, wo sie gepuffert oder direkt zum Crossbar-Schalter gesendet werden können. Das NOQ-Füllniveau wird unter Verwendung des virtuellen Seitenband-Kanal-Ablaufsteuerprotokolls über die NI-Einheit zum fernen SN1Net-Peer übertragen.
  • Interne SN1Net-zu-Bedrock-Nachrichtenumwandlung Dieser Abschnitt beschreibt, wie am NI-Port ankommende SN1Net-Nachrichten in das interne Bedrock-Nachrichtenformat umgewandelt werden.
  • BEMERKUNG:
  • Wenn Router-Netzwerk-Mikropakete empfangen werden, sieht die Bedrock-Einheit jedes Mikropaket, das einem Mikropaket folgt, dessen Endbit gesetzt ist, als einen Router-Netzwerk-Kopfteil an. Nach dem Zurücksetzen wird angenommen, daß das erste empfangene Mikropaket ein Kopfteil ist.
  • Die Bedrock-zu-SN1Net-Kopfteilumwandlung ist vom Nachrichtentyp unabhängig.
  • Kurz gesagt gilt:
    • • Bedrock-Quelle[10:0] = SN1Net-Quelle
    • • Bedrock-Ergänzung[10:0] = SN1Net-Ergänzung
    • • Bedrock-Befehl[6:0] = SN1Net-Befehl[30:24]
    • • SN1Net-Adresse[2:0] = 0, weil alle Adressen byteweise ausgerichtet sind
    • • SN1Net-Adresse[34:33] = 0, wobei diese für die künftige Node-Speichererweiterung reserviert ist
    • • SN1Net-Adresse[42:35] ist die Node-Nummer von der Bedrock-Adresse[40:33]
  • Interne Bedrock-zu-SN1Net-Nachrichtenumwandlung
  • Dieser Abschnitt beschreibt, wie interne Bedrock-Nachrichten, die über den NI-Port ausgegeben werden, in das SN1Net-Nachrichtenformat umgewandelt werden.
  • Bemerkung:
  • Der Inhalt des Zielfelds des SN1Net-Kopfteils entspricht, abhängig vom Befehl (wie in der nachstehenden Tabelle 120 zusammengefaßt ist) den Inhalten des internen Bedrock-Kopfteil-Adreßfelds, des Quellenfelds oder des Ergänzungsfelds.
  • Tabelle 120 Physikalische Prozessoradresse für die SN1Net-Adresse
    Figure 00860001
  • Tabelle 121 Umwandeln des internen Bedrock-Kopfteils in den SN1Net-Kopfteil
    Figure 00870001
  • Tabelle 122 Vorrichtungskennungscodierung (DeviceID-Encoding
    Figure 00880001
  • Registerzugriff
  • Der Zugriff auf Register im NI-Raum wird durch den lokalen Block (LB) vermittelt. Register-Lese- und Schreibanforderungen werden vom LB empfangen, der einen zweckgebundenen Register-Daten- und Adreßbus zum Übertragen von Registerdaten zur NI-Einheit oder von dieser verwendet. Der Zugriffsschutz wird auch durch den LB gesteuert. Die NI-Einheit erkennt jedoch Lesezugriffsfehler auf den Registeradreßraum, der nicht existiert. Dieser Fehler wird zum LB weitergeleitet.
  • Die IO-Schnittstelleneinheit (II) des Bedrock-Chips implementiert die Schnittstelle zur Crosstalk-Schnittstelle, welche die I/O-Vorrichtungen in der Art der Platten-Controller und der Netzwerkplatinen (beispielsweise Ethernet) verbindet.
  • 42 zeigt ein Diagramm hoher Ebene der IO-Einheit und ihre Position in bezug auf den Rest des Node-Controllers 75 und des Ein-/Ausgabeports 79. Die Schnittstelle zwischen der Bedrock-Crossbar-(XB)-Einheit und II besteht aus vier XB-Warteschlangen. Die Namen der vier Warteschlangen sind mit den Vorspännen "RQ" oder "RP" versehen, wodurch angegeben wird, daß sie Anforderungsnachrichten bzw. Antwortnachrichten übertragen. Der Rest des Namens gibt an, ob der II-Abschnitt der Empfänger der Nachricht (die Eingangswarteschlange "IIQ") oder der Absender der Nachricht (die Ausgangswarteschlange "IOQ") ist. 60 listet die Nachrichtentypen auf, die von jeder Schnittstelle erzeugt oder verbraucht werden können.
  • Der II-Abschnitt führt zwei grundlegende Funktionen aus, nämlich (1) er liefert ein Verfahren, wodurch IO-Vorrichtungen Host-Speicher lesen und in diesen schreiben können ("DMA-Operationen"), und (2) er liefert ein Verfahren, wodurch die Prozessoren in dem System IO-Vorrichtungen steuern können ("PIO-Operationen"). Demgemäß bezieht sich der Begriff "DMA" auf den Fall, in dem eine IO-Vorrichtung der Initiator einer Anforderung ist, und der Begriff "PIO" bezieht sich auf den Fall, in dem ein Prozessor irgendwo in dem System die Quelle der Anforderung ist. Um II selbst zu steuern, ist auch eine als "lokale PIO" bezeichnete Grundfunktion implementiert. Dieser Begriff reflektiert die Tatsache, daß ein Prozessor der Initiator der Anforderung ist, und das Objekt der Anforderung ist ein Register, das sich innerhalb der II-Einheit (oder lokal zu dieser) befindet.
  • Für DMA-Operationen leitet eine IO-Vorrichtung eine Anforderung durch Senden einer Crosstalk-Anforderungsnachricht in die Crosstalk-Empfangsschnittstelle ein. Die Anforderung wird innerhalb von II in einem Zustandsvektor aufgezeichnet, der als ein Guthabenantwortpuffer ("Credit Response Buffer" (CRB)) bezeichnet wird. Die Anforderung wird in das interne Bedrock-Nachrichtenformat umformatiert und dann zum Absenden zum Heim-Node des Speichers, der das Ziel der Anforderung ist, durch die Anforderungs-IOQ-Einheit zur XB-Einheit gesendet. Der II-Abschnitt nimmt am SN1-Kohärenzprotokoll teil und muß möglicherweise mehrere Aktionen ausführen (später beschrieben), um Zugriff auf den Zielspeicher zu erhalten. Wenn diese Aktionen ausgeführt werden, wird der Zustand der Anforderung in der CRB-Einheit aktualisiert. Sobald durch die Antwort-IIQ-Einheit eine Antwort von der XB-Einheit empfangen wurde, wird sie zur Crosstalk-Übertragungs schnittstelle weitergeleitet, und die CRB-Einheit wird in den Ruhezustand versetzt.
  • Für PIO-Operationen leitet ein Prozessor eine Anforderung durch Senden einer Router-Netzwerkanforderungsnachricht in die Anforderungs-IIQ-Einheit ein. Falls die Anforderung eine Leseanforderung ist, werden die Node-Nummer und die Prozessornummer der Anforderung in einer als ein PIO-Antwortpuffer (PRB) bezeichneten Struktur aufgezeichnet. Falls die Anforderung eine Schreibanforderung ist, wird dem Anfordernden sofort eine Schreibantwort gegeben, indem sie über die Antwort-IOQ-Einheit ausgesendet wird. Die Anforderung wird dann in das Crosstalk-Format umformatiert und durch die Crosstalk-Übertragungsschnittstelle zur Ziel-IO-Vorrichtung gesendet. Der II-Abschnitt braucht in bezug auf die Cache-Kohärenz für PIOs keine Arbeit auszuführen, weil Zugriffe auf den IO-Platz so definiert sind, daß sie den Kohärenzbereich verlassen haben. Wenn eine Leseantwort auf der Crosstalk-Empfangsschnittstelle empfangen wird, werden die in der PRB-Einheit gespeicherten Informationen zum Umformatieren der Antwort in eine interne Bedrock-Nachricht verwendet, und diese wird über die Antwort-IOQ-Einheit ausgesendet. Wenn eine Schreibantwort auf der Crosstalk-Empfangsschnittstelle empfangen wird, wird sie nach dem Prüfen auf Fehler und andere Statusinformationen verworfen.
  • PIO-Operationen, die sich auf lokale II-Register beziehen, funktionieren in hohem Maße wie PIO-Operationen, die sich auf IO-Vorrichtungen beziehen. Der einzige Unterschied ist der offensichtliche Unterschied, der darin besteht, daß sich das Ziel der Anforderung innerhalb der II-Einheit befindet, so daß die Anforderung die Crosstalk-Schnittstelle nicht betrifft.
  • Nachrichtenfluß
  • Um Pufferüberläufe und Staubedingungen zu verhindern, müssen Hardware-Ablaufsteuermechanismen verwendet werden. Diese Ablaufsteuermechanismen bilden eine Hierarchie, wobei unten in der Hierarchie ein Signalaustausch niederer Ebene erfolgt und oben in der Hierarchie eine nachrichtensynchronisierte Ablaufsteuerung erfolgt. Dieser Abschnitt gibt einen Überblick über die Ablaufsteueraspekte von II.
  • Um einen Stau innerhalb eines Nodes oder zwischen Nodes zu verhindern, gewährleistet II, daß Anforderungen und Antworten in einem begrenzten Zeitraum über die IIQ-Einheit ausgegeben werden. Diese Gewährleistung bleibt selbst angesichts bestimmter Fehler bestehen, insbesondere solcher, die die Crosstalk-Schnittstelle betreffen. Die II-Einheit versucht weiterhin, die Zeit zu minimieren, die eine Nachricht auf der IIQ-Einheit verbringt.
  • Weil die II-Einheit die Crosstalk-Schnittstelle implementiert, implementiert sie den Crosstalk-Guthabenmechanismus. Dieser Guthabenmechanismus verhindert, daß Nachrichteneingabepuffer überlaufen (sowohl bei IO-Vorrichtungen als auch bei der II-Einheit).
  • Die in den vorhergehenden zwei Absätzen beschriebenen Mechanismen sind nicht unabhängig. Tatsächlich könnte der Crosstalk-Guthabenmechanismus die Gewährleistung des IIQ-Weiterleitungsfortschritts untergraben, wenn eine langsame IO-Vorrichtung vorhanden ist. (Die II-Einheit kann keine weiteren PIO-Anforderungen akzeptieren, wenn sie keine Crosstalk-Guthaben aufweist, wodurch die IIQ-Einheit möglicherweise blockiert wird.) Um dieses Problem abzumildern, ist durch die II-Einheit ein als "PIO-Förderband – PIO conveyor belt" bezeichneter Mechanismus implementiert. Dieser Mechanismus verwaltet einen zweiten Guthabensatz, der als "PIO-Guthaben" bezeichnet wird. Diese PIO-Guthaben verwalten den Zugriff auf bestimmte IO-Vorrichtungen (im Gegensatz zu Crosstalk-Guthaben, welche den Zugriff auf alle IO-Vorrichtungen steuern), und wenn eine bestimmte IO-Vorrichtung eine andere Anforderung nicht akzeptieren kann, wird eine neue Anforderung für diese IO-Vorrichtung von der IIQ-Einheit ausgegeben und ihr wird eine negative Bestätigung gegeben. Diese Aktion veranlaßt den Anfordernden, die An forderung wieder in die Warteschlange einzugeben und sie wieder zu senden, wodurch ein "Förderband" impliziert wird, das dem Mechanismus seinen Namen gibt.
  • Die CRB-Einheit als ein Teil-Merge-Puffer
  • Das SN1-Netzwerkprotokoll und das Cache-Kohärenzprotokoll bearbeiten Speicherdaten Cache-Leitung nach Cache-Leitung. IO-Vorrichtungen müssen jedoch in der Lage sein, Speicherdatenblöcke in Byte-Größe zu bearbeiten, so daß die II-Einheit die Mechanismen bereitstellen muß, um dies auszuführen. Für Lesevorgänge bedeutet dies einfach, daß immer dann, wenn eine IO-Vorrichtung Speicherlesedaten anfordert, eine gesamte Cache-Leitung zur II-Einheit gesendet wird, welche die interessierenden Bytes dann zur Vorrichtung weiterleitet. Für Schreibvorgänge ist dies komplizierter.
  • Wenn eine IO-Vorrichtung in Blöcken, die kleiner sind als Cache-Leitungen, in den Hauptspeicher schreibt, führt die II-Einheit folgendes aus: (1) Sie fordert die Cache-Leitung vom System an, (2) sie empfängt die Cache-Leitung in einem Puffer, wenn das System sie zurückgibt, (3) sie fügt die Bytedaten in die Cache-Leitung ein, und (4) sie schreibt die ganze Cache-Leitung in den Hauptspeicher zurück. Wie alle anderen Anforderungen von der Crosstalk-Einheit wird eine CRB-Einheit zugewiesen, um die Kohärenzinformationen für die Cache-Leitung aufrechtzuerhalten, und der der CRB-Einheit zugeordnete Cache-Leitungs-Puffer wird zum Ausführen des Einfügens verwendet.
  • Das Einfügen von Teil-Cache-Leitungs-Schreibvorgängen (auch als "Teil-Schreibvorgänge" bezeichnet) stellt den einzigen Fall dar, in dem die II-Einheit eine exklusive Kopie einer Cache-Leitung anfordert. Nach Abschluß des Einfügens wird die Leitung sofort zurückgeschrieben, so daß sie nicht im unsauberen Exklusivzustand gehalten wird.
  • Guthaben-Antwortpuffer (CRB)
  • Die kohärenten Ressource-Puffer (oder CRBs) sind den internen II-Zustand beschreibende Cache-Leitungen, die von der II-Einheit manipuliert werden. Weil die II-Einheit am SN1-Cache-Kohärenzprotokoll teilnehmen muß, muß sie bestimmte Zustandsinformationen in bezug auf jede Cache-Leitung aufrechterhalten, für die sie aktuelle Anforderungen hat.
  • Im allgemeinen verwendet jede Anforderung, die von der Crosstalk-Einheit empfangen wird, eine CRB-Einheit für jede Cache-Leitung, die betroffen wird. Wenn die Anforderung zum Router-Netzwerk 575 weitergeleitet wird, bleiben einige Informationen in einer CRB-Einheit zurück, so daß, wenn eine Antwort vom Router-Netzwerk 575 empfangen wird, die II-Einheit weiß, was damit geschehen soll. Angesichts der Komplexität des SN1-Cache-Kohärenzprotokolls kann die II-Einheit an mehreren Austäuschen mit dem Verzeichnis oder dem Besitzer der Cache-Leitung teilnehmen, bevor eine Antwort empfangen wird, die schließlich zum Anfordernden auf der Crosstalk-Einheit weitergeleitet werden kann. Demgemäß stellt jede CRB-Einheit den "aktuellen Zustand" in der Zustandsmaschine dar, der die Teilnahme der II-Einheit am Cache-Kohärenzprotokoll verwaltet.
  • Der Rest der Zustandsmaschine, der die Teilnahme der II-Einheit am Cache-Kohärenzprotokoll verwaltet, ist die sogenannte "CRB-Tabelle". Die CRB-Tabelle ist einfach ein großer Block einer kombinatorischen Logik, der die einwärts gerichtete Nachricht, die CRB-Einheit, die von der einwärts gerichteten Nachricht impliziert wird (durch eine CAM-Betrachtung der Adresse in der Nachricht bestimmt) und andere interne Faktoren der II-Einheit betrachtet. Wenn all diese Eingaben gegeben sind, erzeugt die CRB-Tabelle den nächsten CRB-Zustand, der verwendet wird, um die CRB-Einheit und die Antworten auf die Nachrichten, wobei es sich um Anforderungen oder Antworten handelt, die an das Router-Netzwerk 575 oder die Crosstalk-Einheit 82 gerichtet sind, zu aktualisieren. Manchmal aktualisiert eine einwärts gerichtete Nachricht nur die CRB-Einheit und erzeugt keine auswärts gerichtete Nachricht.
  • Es gibt nur eine CRB-Tabelle, die mit allen fünfzehn CRB-Einheiten Pipeline-artig geteilt wird.
  • PIO-Antwortpuffer (PRB)
  • CRB-Einheiten unterhalten Informationen über ausstehende DMA-Anforderungen (Anforderungen, die von der Crosstalk-Einheit eingeleitet werden). In ähnlicher Weise werden Informationen über ausstehende PIO-Anforderungen (Anforderungen, die auf dem Router-Netzwerk 575 eingeleitet werden) in PIO-Antwortpuffern (PRBs) unterhalten. Wenn ein Prozessor im SN1-System eine Anforderung an eine I/O-Vorrichtung richtet, muß ein bestimmter Zustand beibehalten werden, so daß, wenn die Antwort von dieser Vorrichtung zurückkommt, die II-Einheit weiß, wohin sie zu senden ist. Aus später beschriebenen Gründen werden diese Informationen nur für PIO-Leseanforderungen aufrechterhalten.
  • Die Informationen über ausstehende Lesevorgänge werden in als PIO-Lesetabelleneinträge ("PIO Read Table Entries (PRTEs)") bezeichneten Registern unterhalten. Es gibt acht PRTEs, eines für jeden möglichen ausstehenden Lesevorgang. Es gibt eine PRB-Tabelle, die ähnlich der CRB-Tabelle funktioniert, wobei sie den Zustand der auswärts gerichteten Anforderung (von der PRB-Einheit und der PRTE-Einheit, die dieser Anforderung zugeordnet sind) und der einwärts gerichteten Nachricht nimmt und die nächsten Zustands- und Antwortnachrichten ableitet. Weil dies auf der I/O-Seite der Kohärenzgrenze geschieht (PIO-Anforderungen verlassen nach Definition den Kohärenzbereich), ist der von den PRB- und PRTE-Einheiten verkörperte aktuelle Zustand in der CRB-Tabelle viel einfacher als in der PRB-Tabelle.
  • Interne Register der II-Einheit
  • Die II-Einheit wird durch viele interne (lokale) Register konfiguriert und gesteuert. Sie werden hier erwähnt, weil sie den Rest des internen II-Zustands darstellen, der erforderlich ist, um den II-Schnittstellen Bedeutung zu geben, wie in den nachfolgenden Abschnitten dieses Dokuments beschrieben wird.
  • IIQ-Schnittstellenanforderungen
  • Die einzigen Anforderungen vom Router-Netzwerk 575, die von der II-Einheit empfangen werden, sind Interventionen (Nachrichten in bezug auf Cache-Leitungen, die die II-Einheit besitzt) und PIO-Lesevorgänge und Schreibvorgänge (entweder zum Crosstalk-Register oder zu den II-Lokalregistern).
  • Lokaler Block
  • Der lokale Block (LB) des Bedrock-Chips enthält die PIO-Zugriffsmaschine, einige Register, die Ungültigmachungsmaschine, die Vektor-PIO-Maschine und einen Echtzeittakt-Generator.
  • Die Eingangssignale, die in die LB-Einheit eingegeben werden, und die Ausgangssignale, die von der LB-Einheit getrieben werden, können in mehrere verschiedene Gruppen unterteilt werden. Jede dieser Gruppen bildet eine bestimmte Schnittstelle. Zusammen bilden diese Schnittstellen die gesamte Schnittstelle der LB-Einheit. Jeder der folgenden Unterabschnitte beschreibt eine bestimmte Gruppe.
  • Takt, Rücksetzen und JTAG
    Figure 00950001
  • Figure 00960001
  • Das Aktivieren der RESET_LB_Eingabe bewirkt, daß die LB-Einheit alle ihre Zustandsmaschinen zurücksetzt und ihre Register auf die spezifizierten Rücksetzwerte initialisiert. Die LB-Einheit bricht jeden ablaufenden Vorgang ab (beispielsweise eine PIO-Lese- oder Schreibanforderung oder eine LINVAL-Anforderung). Das Aktivieren der RESET_LB_SOFT-Eingabe bewirkt, daß die LB-Einheit alle ihre Zustandsmaschinen zurücksetzt und jeden ablaufenden Vorgang abbricht, die Register jedoch ihre aktuellen Inhalte beibehalten (d.h. sie werden nicht neu initialisiert). Die RESET_LB_SOFT-Eingabe ist für diagnostische Zwecke vorgesehen, während der Bedrock-Chip im Labor getestet wird, nachdem Prototypen-Chips verfügbar sind. Falls ein Node "steckenbleibt", so daß kein weiterer Fortschritt möglich ist, kann, die RESET_LB_SOFT-Eingabe verwendet werden, um den Chip in einen Zustand zurückzuversetzen, in dem Software die Inhalte von Registern untersuchen kann, um die Ursache des Fehlers zu bestimmen.
  • Rq-Flits von der LIQ-Einheit zur LB-Einheit
    Figure 00960002
  • Figure 00970001
  • Rq- und Rp-Flits von der LB-Einheit zur LOQ-Einheit
    Figure 00970002
  • Systemkonfigurationen und Topologien
  • SN1-Vorrichtungen gemäß der vorliegenden Erfindung sind modulare Computersysteme, die den Bereich von zwei bis 512 CPUs umspannen. Sie bestehen aus getrennten an Einschubschränken angebrachten Modulen, welche einen Node mit zwei oder vier CPUs (C-Bricks), 8-Port-Routern (R-Bricks), verschiedenen IO-Bricks (I-Bricks, P-Bricks und/oder X-Bricks), Energieversorgungseinschüben und/oder Plattenlaufwerkseinschüben (D-Bricks) aufweisen. Alle diese Module (oder "Bricks") sind in einem Einschubschrank oder in Einschubschränken angebracht und mit Kabeln verbunden. Gemäß einer Ausführungsform werden ein System und ein Verfahren verwendet, die in weiteren Einzelheiten in WO-A-01/24017 beschrieben sind.
  • Diese Systeme weisen eine sehr flexible Konfiguration auf, weil der Umfang an CPU-, Speicher-, IO- und Platten-Ressourcen unabhängig ausgewählt werden kann. Systeme hoher Verfügbarkeit, bei denen der gesamte Funktionsumfang vollständig redundant ist, können leicht konfiguriert werden.
  • Alle SN1-Systeme (mit Ausnahme von Systemen, die acht oder weniger CPUs aufweisen, wobei es sich um einen Spezialfall handelt, der ohne Verwendung eines Router-R-Bricks implementiert wird) weisen Gruppierungen eines Energieversorgungseinschubs, eines Routers (R-Brick) und von 4-Prozessor-Nodes (C-Bricks) zuzüglich von einem oder mehreren I/O-Bricks auf. Die anderen Nodes sind mit den Routern verkabelt, und die Router sind bei großen Systemen miteinander verkabelt. Diese Konfiguration führt zu einem ausgezeichneten Wert, woraus sich eine Kombination geringer Kosten, einer hohen Bandbreite und einer niedrigen Latenz ergibt, und sie unterstützt leicht die Konfiguration von Systemen hoher Verfügbarkeit. Es können bis zu 24 CPUs mit einem recht erheblichen I/O-System in einem einzigen Einschubschrank konfiguriert werden. Es können bis zu 32 CPUs in einem einzigen Einschubschrank mit einem getrennten Einschubschrank für die IO aufgebaut werden. Größere Systeme werden unter Verwendung mehrerer Einschubschränke implementiert.
  • Systeme, die über einhundertachtundzwanzig (128) CPUs aufweisen, werden mit zusätzlichen Routern 76 konfiguriert, die in einigen der Einschubschränke installiert sind, welche als Metarouter bekannt sind und welche die Verbindung großer Anzahlen von Nodes ermöglichen. Module innerhalb der Einschubschränke werden für alle Konfigurationen identisch organisiert und installiert, und es ist innerhalb eines Einschubschranks nur eine Neuverkabelung erforderlich, um die Konfiguration zu erweitern.
  • Bei Systemen mit 16 oder weniger CPUs ist innerhalb des Einschubschranks zur Installation von I/O- und Platten-Bricks Platz verfügbar. Für größere Systeme werden I/O- und Plattenmodule in getrennten Einschubschränken montiert, welche keine Nodes 370 oder Router 76 enthalten.
  • Node: Prozessor/Speicher
  • Ein SN1-System weist einen oder mehrere Nodes 370 auf. Jeder Node 370 weist zwei oder vier Prozessoren 74 und ihre zugeordneten Cache-Speicher, einen Hauptspeicher 77 und einen I/O-Port 273 sowie einen Port 274 in das Router-Netzwerk auf. Ein zentraler ASIC-(anwendungsspezifischer integrierter Schaltkreis)-Node-Controller 75 verbindet diese vier Untersysteme.
  • CPU-Typen
  • Gemäß manchen Ausführungsformen der vorliegenden Erfindung werden in SN1-Systemen zwei Familien von CPUs unterstützt, nämlich MIPS-"T-Rex"-Prozessoren (beispielsweise der R12000S-Prozessor und seine von SGI, dem Erwerber der vorliegenden Erfindung erhältlichen Folgeprozessoren) und Intel-"Merced"-Prozessoren (ein Prozessortyp, der voraussichtlich von Intel Corporation erhältlich sein wird). Jeder CPU-Typ wird auf einem anderen Platinenentwurf implementiert, der zum Implementieren der verschiedenen Ausführungsformen jedes Nodes 370 verwendet wird. Aktualisierungen können durch Ersetzen des C-Bricks (Node 370) erreicht werden. Gemäß einer Ausführungsform dürfen MIPS- und Merced-Nodes nicht innerhalb eines einzigen Systems gemischt werden, wenngleich Systeme, bei denen beide Prozessortypen verwendet werden, unter Verwendung von anderen Verbindungen als CrayLink2 als ein Cluster miteinander verbunden werden können.
  • MIPS-CPUs
  • Gemäß einer Ausführungsform unterstützt SN1 MIPS-T-Rex-CPUs beginnend mit der T-Rex-Shrink-(R12000S)-CPU, die in einem Flip-Chip-Gehäuse gekapselt ist und eine 200-MHz-SYSAD-Geschwindigkeit unterstützt (SYSAD ist die Prozessorschnittstelle 71). Bei verschiedenen Ausführungsformen ist die Entwicklung zusätzlicher MIPS-Prozessoren für SN1-Erweiterungen geplant.
  • Gemäß einer Ausführungsform sind Cache-Größen für MIPS-SN1-Nodes vier und acht MB. Gemäß einer Ausführungsform besteht der Cache-Speicher aus neun 256k × 18 oder 512k × 18 SSRAMs (synchronen statischen Direktzugriffs-Speicherchips – "Synchronous Static Random Access Memory Chips"). Der Sekundär-Cache für den T-Rex-Shrink-Prozessor arbeitet bei der Hälfte des CPU-Kerntakts.
  • Merced-CPUs
  • Gemäß einer Ausführungsform unterstützt die SN1-Einheit Merced-CPUs. Gemäß einer Ausführungsform werden Merced-CPUs durch Einführen eines zusätzlichen Prozessorschnittstellen-ASICs unterstützt, der zwei Merced-CPUs anpaßt, um auf einem der SYSRD-Busse (ein Prozessorschnittstellenbus 71 des Node-Controllers 75) zu kommunizieren. Zwei Prozessorschnittstellen-ASICs sind je Node bereitgestellt, um eine Unterstützung für vier Merced-CPUs zu implementieren. Der Prozessorschnittstellen-ASIC unterstützt auch einen Ebene-3-Cache, der unter Verwendung von DDR-SDRAM-Chips (synchroner dynamischer Direktzugriffsspeicher mit doppelter Datenrate – "Double-Data Rate Synchronous Dynamic Random Access Memory", erhältlich von Hitachi und NEC aus Japan und von IBM Corp. als Muster bereitgestellt) implementiert ist. Dieser Cache-Speicher verbessert die wirksame Speicherzugriffszeit für die CPUs, und er wird auch zum Ausführen der Protokollübersetzungen verwendet, die erforderlich sind, um zu ermöglichen, daß die Merced-CPUs im SN1-System arbeiten, das auf den in MIPS-CPUs verwendeten Protokollen beruht.
  • Hauptspeicherkonfiguration
  • Gemäß einer Ausführungsform verwenden SN1-Systeme kundenspezifische DIMMs (Doppelreihen-Speichermodule – "Dual In-Line Memory Modules"), die DDR-SDRAM für den Hauptspeicher enthalten. Die DIMMs, die in größeren SN1-Systemen verwendet werden (solchen Systemen, die in der Lage sind, über 128 Prozessoren hinaus zu skalieren), sind physikalisch ähnlich, enthalten jedoch einen zusätzlichen Speicherchip, um ausreichend Verzeichnisspeicher bereitzustellen, um das Aufbauen von Konfigurationen von bis zu 512 CPUs zu ermöglichen. Diese DIMMs werden in diesem Dokument als "Premium-DIMMs" bezeichnet, und jene ohne den zusätzlichen Verzeichnisspeicher werden als "Standard-DIMMs" bezeichnet. Abgesehen von dem Unterschied hinsichtlich des Verzeichnisspeichers sind Premium- und Standard-DIMMs identisch und teilen sich einen gemeinsamen PCB-Entwurf (Entwurf einer gedruckten Leiterplatte). Es ist bei Systemen mit weniger als 128 CPUs akzeptierbar, die zwei Typen austauschend zu verwenden und sie innerhalb eines Nodes zu mischen. Bei diesen Ausführungsformen ist das Verhältnis zwischen (Speicherdatenplatz) und (Verzeichnisdatenplatz) auf jeder der mehreren Speicher-/Verzeichniskarten auf einen Wert gelegt, der auf einer Größe des Multiprozessor-Computersystems beruht. Gemäß manchen Ausführungsformen wird die Größe als die Anzahl der CPUs in dem System gemessen und insbesondere in Hinblick darauf, ob es (128) oder mehr Prozessoren gibt. Wenn (128) oder mehr Prozessoren vorhanden sind, werden die Premium-DIMMs mit einem zusätzlichen Speicherchip (d.h. einem kleineren Verhältnis zwischen (Speicherdatenplatz) und (Verzeichnisdatenplatz)) verwendet.
  • Gemäß einer Ausführungsform weist die Platine jedes Nodes 370 acht DIMM-Sockel auf, die als vier Bänke mit jeweils zwei DIMMs angeordnet sind. Es sei bemerkt, daß dies die Hälfte der Anzahl der in früheren Systemen implementierten DIMM-Slots ist. Diese Entscheidung wurde wegen der größeren Speicherdichten, die im SN1-Zeitrahmen verfügbar sind, getroffen. Der Hauptspeicher ist unter Verwendung von DDR-SDRAM-Teilen implementiert, die bei einer Geschwindigkeit von 100 MHz für Adressen und 200 MHz für Daten laufen und eine Spitzenbandbreite von 3200 MBytes/s bereitstellen. Die DIMMs verwenden 128- und 256-MBit-DRAM-Technologie, um eine große Vielzahl von DIMM-Größen zum Erfüllen verschiedener Anforderungen von Kunden anzubieten. Bei der 256-MBit-Technologie kann jeder SN1-Node bis zu acht Gbytes (Gigabytes) an Speicher unterstützen.
  • Alle SN1-DIMMs sind aus zwei gedruckten Basis-Schaltungstypen aufgebaut, wobei einer x4-Speicherchips (mit einem vier Bit breiten Datenweg) für Daten/ECC unterstützt und der andere x8-Speicherchips (mit einem acht Bit breiten Datenweg) unterstützt. Die folgende Tabelle zählt die verschiedenen Typen auf, die in verschiedenen Ausführungsformen implementiert sind. Alle Typen können entweder als Standard- oder Premiumtypen implementiert werden. Die geplante Implementation dient dazu, die kleinste gewählte Größe nur in Standardtypen und alle anderen Größen nur in Premiumtypen verfügbar zu machen. Die Typen, welche für eine Ausführungsform verwendet werden, sind fett dargestellt. Jene, die mit einem * markiert sind, sind Premium-DIMMs.
  • DIMM-Tabelle
    Figure 01030001
  • Die vorstehende Tabelle identifiziert die Datenspeicher-Inkrement-DIMM-Sätze. Ein Inkrement benötigt zwei Speicher-/Verzeichnisdaten-DIMMs.
  • Gemäß einer Ausführungsform enthalten alle DIMMs einen seriellen PROM, der vom System-Controller lesbar ist. Der PROM enthält die Teilezahl, den Datencode, den Speicherchiphersteller und andere Informationen, die in der JEDEC-Norm für SPID-PROMs spezifiziert sind. Der DIMM weist einen Schreibfreigabestift auf, um das Programmieren des PROMs in der Fabrik zu ermöglichen. Dieser Stift ist nicht mit der Node-Platine verbunden, wodurch es unmöglich gemacht ist, den PROM in das System 100 zu schreiben.
  • Der C-Brick
  • Der C-Brick für eine Ausführungsform nimmt einen einzigen Node von bis zu vier CPUs zusammen mit acht DIMM- Schlitzen, dem Node-Controller 75 und dem L1-System-Controller auf. Der Entwurf der C-Box umfaßt gemäß einer Ausführungsform entweder eine MIPS-T-Rex-CPU-Implementation oder eine Intel-Merced-CPU-Implementation. Der C-Brick-Entwurf beruht auf einem entfernbaren Logikträger, der zur Wartung in die Vorderseite des C-Bricks hineingeschoben und aus dieser herausgezogen wird. Diese Logikträgereinheit enthält die Node-Elektronik, die Frontplatte, Einstecklüfter, die L1-Anzeige und verzierende Kunststoffe.
  • Von der Frontplatte des C-Bricks sind die L1-Anzeige und 3 an der Vorderseite angebrachte Lüfter sichtbar. Die Lüfter sind von der Vorderseite entfernbar, redundant und während des Betriebs austauschbar.
  • Die Rückseite des C-Bricks enthält Anschlüsse für die 48-V-Eingangs-Gleichspannung, D-NET, XTalk2-I/O und USB. Der USB-Port wird zur Verbindung mit einem optionalen L2-System-Controller in kleinen Systemen ohne einen R-Brick verwendet. Derselbe USB-Port könnte, falls erwünscht, auch mit einem L3-System-Controller verbunden werden.
  • Das Austauschen von Lüftern ist der einzige Wartungstyp, der ausgeführt werden kann, während der C-Brick arbeitet. Für alle anderen Wartungsaktivitäten (wie das Ersetzen von DIMMs) ist es erforderlich, daß der Brick heruntergefahren wird und die Logik-Trägereinheit vom Brick entfernt wird.
  • "C"-Node-Brick-MIPS-T-Rex-CPU-Implementation
  • Der T-Rex-Node-Platinensatz weist eine Hauptplatine und bis zu zwei Prozessorplatinen (PIMMs) auf. Die Hauptplatine gemäß einer Ausführungsform ist eine Halbplatten-Platine (11 × 17 Zoll) mit 16 Schichten, welche den Node-Controller 75, acht DIMM-Sockel für den Speicher 77, drei 48-V-Gleichspannung-zu-Niederspannung-Gleichspannungs-Gleichspannungs-Wandler, den L1-System-Controller und Verbindungen zu den PIMM-(Prozessor-Reihenmodul – "Processor In-Line Module")-Platinen aufweist.
  • Jede Prozessorplatine weist zwei MIPS-CPUs 74 auf, die zusammen mit ihrem L2-Cache-Speicher direkt auf die Platine gelötet sind. Jede PIMM stellt durch die Verwendung von zwei Gleichspannungs-Gleichspannungs-Wandlern auf jedem PIMM seine eigene 48-V-Gleichspannung-zu-Niederspannung-Wandlung bereit. Eine elektrische Verbindung zwischen der Hauptplatine und jedem PIMM ist durch zwei Flächenfeldverbinder mit 240 Positionen bereitgestellt.
  • SCHLUSSFOLGERUNG
  • Ein erster Aspekt der vorliegenden Erfindung sieht ein Multiprozessor-Computersystem (beispielsweise ein kleines Multiprozessorsystem 400 mit nur zwei Node-Controllern 75, die unter Verwendung eines Interprozessorkanals 73 miteinander verbunden sind, oder ein Multiprozessorsystem 100 oder 500 mit bis zu Hunderten oder Tausenden von Node-Controllern 75, die über ein Router-Netzwerk 575 oder ein anderes Interprozessor-Kommunikationsnetz 575 miteinander verbunden sind) vor. Eine solche Ausführungsform des Systems umfaßt einen ersten Node-Controller 75, einen zweiten Node-Controller 75, eine erste Anzahl von Prozessoren 141, die wirkungsmäßig mit dem ersten Node-Controller 75 gekoppelt sind, eine zweite Anzahl von Prozessoren 141, die wirkungsmäßig mit dem zweiten Node-Controller 75 gekoppelt sind, einen ersten Speicher 77, der wirkungsmäßig mit dem ersten Node-Controller 75 gekoppelt ist, ein erstes Ein-/Ausgabesystem 79, das wirkungsmäßig mit dem ersten Node-Controller 75 gekoppelt ist, und ein Interprozessor-Kommunikationsnetzwerk 575, das wirkungsmäßig zwischen den ersten Node-Controller 75 und den zweiten Node-Controller 75 geschaltet ist. Gemäß dieser Ausführungsform umfaßt der erste Node-Controller 75 eine Crossbar-Einheit 279, einen Speicherport 275, der wirkungsmäßig zwischen die Crossbar-Einheit 279 und den ersten Speicher 77 geschaltet ist, einen Ein-/Ausgabeport 273, der wirkungsmäßig zwischen die Crossbar-Einheit 279 und das erste Ein-/Ausgabesystem 79 geschaltet ist, einen Netzwerkport 274, der wirkungsmäßig zwischen die Crossbar-Einheit 279 und das Interprozessor-Kommunikationsnetzwerk 575 geschaltet ist, und eine Anzahl unabhängiger Prozessorports 270 unter Einschluß eines ersten Prozessorports 271, der wirkungsmäßig zwischen die Crossbar-Einheit 279 und einen ersten Teilsatz 241 der ersten Anzahl von Prozessoren 74 geschaltet ist, und eines zweiten Prozessorports 272, der wirkungsmäßig zwischen die Crossbar-Einheit 279 und einen zweiten Teilsatz 242 der ersten Anzahl von Prozessoren 74 geschaltet ist.
  • Gemäß manchen Ausführungsformen des Systems ist der erste Node-Controller 75 auf einem einzigen integrierten Schaltungschip 475 hergestellt.
  • Gemäß manchen Ausführungsformen des Systems ist der erste Speicher 77 auf einer Anzahl einsteckbarer Speicher-/Verzeichniskarten untergebracht, wobei jede Karte 600 eine Anzahl von Speicherchips 610 unter Einschluß eines ersten Teilsatzes von Speicherchips 620, die dafür vorgesehen sind, Speicherdaten zu halten, und eines zweiten Teilsatzes von Speicherchips, die dafür vorgesehen sind, Verzeichnisdaten zu halten, aufweist. Weiterhin umfaßt der Speicherport 275 einen Speicherdatenport 613 unter Einschluß eines Speicherdatenbusses 611 und eines Speicheradreßbusses 612, die mit dem ersten Teilsatz von Speicherchips 610 gekoppelt sind, und einen Verzeichnisdatenport 623 unter Einschluß eines Verzeichnisdatenbusses 621 und eines Verzeichnisadreßbusses 622, die mit dem zweiten Teilsatz von Speicherchips 620 gekoppelt sind. Bei manchen dieser Ausführungsformen ist das Verhältnis zwischen (Datenplatz im ersten Teilsatz von Speicherchips 610) und (Datenplatz im zweiten Teilsatz von Speicherchips 620) auf jeder der Speicher-/Verzeichniskarten auf einen Wert gelegt, der auf der Größe des Multiprozessor-Computersystems beruht.
  • Gemäß manchen Ausführungsformen des Systems kombiniert die Crossbar-Einheit 279 selektiv zwei seriell empfangene Daten-Doppelwörter zu einem einzigen Vierwort-Mikropaket zur Übertragung über die Crossbar-Einheit 279, wobei jedes Doppelwort wenigstens 64 Datenbits enthält und das einzige Vierfachwort wenigstens 128 Datenbits enthält.
  • Gemäß manchen Ausführungsformen des Systems 400 sind der erste Node-Controller 75 und der zweite Node-Controller 75 durch das Interprozessor-Kommunikationsnetzwerk 73 direkt miteinander verbunden. Gemäß anderen Ausführungsformen des Systems 100, 300 sind der erste Node-Controller 75 und der zweite Node-Controller 75 über einen Router-Chip 76, der auch mit einem oder mehreren anderen Node-Controllern 75 verbunden ist, indirekt miteinander verbunden.
  • Ein anderer Aspekt der vorliegenden Erfindung sieht einen ersten Node-Controller 75 zur Verwendung in einem Multiprozessor-Computersystem 100, 300, 500 mit einem oder mehreren anderen Node-Controllern 75 vor. Dieser erste Node-Controller 75 enthält eine Crossbar-Einheit 279, einen Speicherport 275, der zur Kommunikation mit einem Speicher 77 wirkungsmäßig mit der Crossbar-Einheit 279 gekoppelt ist, einen Ein-/Ausgabeport 273, der zur Kommunikation mit einem ersten Ein-/Ausgabesystem 79 mit der Crossbar-Einheit 279 gekoppelt ist, einen Netzwerk-Port 274, der zur Kommunikation mit einem zweiten Node-Controller 75 über ein Interprozessor-Kommunikationsnetzwerk 575 mit einem zweiten Node-Controller 75 gekoppelt ist, und eine Anzahl unabhängiger Prozessorports 270. Diese Prozessorports 270 umfassen einen ersten Prozessorport 271, der zur Kommunikation mit einem ersten Teilsatz 241 einer ersten Anzahl von Prozessoren 74 wirkungsmäßig mit der Crossbar-Einheit 279 gekoppelt ist, und einen zweiten Prozessorport 272, der wirkungsmäßig mit der Crossbar-Einheit 279 gekoppelt ist oder mit einem zweiten Teilsatz 242 der ersten Anzahl von Prozessoren 74 kommuniziert.
  • Gemäß verschiedenen Ausführungsformen des Node-Controllers sind wahlweise verschiedene Einzelheiten aufgenommen, wie vorstehend für Ausführungsformen des ersten Systemaspekts der Erfindung beschrieben wurde.
  • Ein anderer Aspekt der vorliegenden Erfindung sieht ein Multiprozessorsystem 100, 300 oder 500 (das "zweite System") vor, das einen oder mehrere Node-Controller 75 einschließlich eines ersten Node-Controllers 75, eine erste Anzahl von Prozessoren 74, die wirkungsmäßig mit dem ersten Node-Controller 75 gekoppelt sind, und einen ersten Speicher 77, der wirkungsmäßig mit dem ersten Node-Controller 75 verbunden ist, aufweist. Dieser erste Node-Controller 75 ist als ein einziger integrierter Schaltungschip 475 gekapselt, der eine Crossbar-Einheit 279, einen Speicherport 275, der wirkungsmäßig zwischen die Crossbar-Einheit 279 und den ersten Speicher 77 geschaltet ist, und mehrere unabhängige Prozessorports einschließlich eines ersten Prozessorports, der wirkungsmäßig zwischen die Crossbar-Einheit 279 und einen ersten Teilsatz 241 der ersten Anzahl von Prozessoren 74 geschaltet ist, und eines zweiten Prozessorports 272, der wirkungsmäßig zwischen die Crossbar-Einheit 279 und einen zweiten Teilsatz 242 der ersten Anzahl von Prozessoren 74 geschaltet ist, aufweist, wobei der erste Teilsatz 241 eine Anzahl von Prozessoren 74 aufweist und der zweite Teilsatz 242 eine Anzahl von Prozessoren 74 aufweist.
  • Gemäß manchen Ausführungsformen des zweiten Systems umfaßt das System weiterhin einen Interprozessor-Kommunikationskanal 73, der wirkungsmäßig zwischen den ersten Node-Controller 75 und einen zweiten Node-Controller 75 geschaltet ist, wobei der erste Node-Controller 75 weiterhin einen Netzwerkport 274 aufweist, der wirkungsmäßig zwischen die Crossbar-Einheit 279 und den Interprozessor-Kommunikationskanal 73 geschaltet ist.
  • Gemäß manchen Ausführungsformen des zweiten Systems umfaßt das System weiterhin ein erstes Ein-/Ausgabesystem 79, das wirkungsmäßig mit dem ersten Node-Controller 75 gekoppelt ist, und ein Interprozessor-Kommunikationsnetzwerk 575, das wirkungsmäßig zwischen den ersten Node-Controller 75 und einen zweiten Node-Controller 75 geschaltet ist. Der erste Node-Controller 75 gemäß diesen Ausführungsformen umfaßt weiterhin einen Ein-/Ausgabeport 273, der wirkungsmäßig zwischen die Crossbar-Einheit 279 und das erste Ein-/Ausgabesystem 79 geschaltet ist, und einen Netzwerkport 274, der wirkungsmäßig zwischen die Crossbar-Einheit 279 und das Interprozessor-Kommunikationsnetzwerk 575 geschaltet ist.
  • Gemäß manchen Ausführungsformen des zweiten Systems ist der erste Speicher 77 auf einer Anzahl einsteckbarer Speicher-/Verzeichniskarten 600 gekapselt, wobei jede Karte eine Anzahl von Speicherchips einschließlich eines ersten Teilsatzes von Speicherchips 610, die dafür vorgesehen sind, Speicherdaten zu halten, und eines zweiten Teilsatzes von Speicherchips 620, die dafür vorgesehen sind, Verzeichnisdaten zu halten, wobei der Speicherport 275 weiterhin einen Speicherdatenport 613 einschließlich eines Speicherdatenbusses 611 und eines Speicheradreßbusses 612, die mit dem ersten Teilsatz von Speicherchips 610 gekoppelt sind, aufweist, und einen Verzeichnisdatenport 623 einschließlich eines Verzeichnisdatenbusses 621 und eines Verzeichnisadreßbusses 622, die mit dem zweiten Teilsatz von Speicherchips 620 gekoppelt sind, aufweist. Bei manchen dieser Ausführungsformen ist das Verhältnis zwischen (Datenplatz im ersten Teilsatz der Speicherchips 610) und (Datenplatz im zweiten Teilsatz der Speicherchips 620) auf jeder der Anzahl von Speicher-/Verzeichniskarten 600 auf einen Wert gelegt, der auf der Größe des Multiprozessor-Computersystems beruht.
  • Ein anderer Aspekt der vorliegenden Erfindung sieht ein Verfahren vor, das mit einem oder mehreren der vorstehend beschriebenen Systeme verwendbar ist. Das Verfahren umfaßt das Übertragen von Daten zwischen dem Speicherport 275 und dem ersten Prozessorport 271, zwischen dem Speicherport 275 und dem zweiten Prozessorport 272, zwischen dem Speicherport 275 und dem Ein-/Ausgabeport 273 und zwischen dem Speicherport 275 und dem Netzwerkport 274.
  • Einige Ausführungsformen des Verfahrens umfassen weiterhin das direkte Übertragen von Daten zwischen dem ersten Node-Controller 75 und dem zweiten Node-Controller 75, die über den Interprozessor-Kommunikationskanal 73 direkt miteinander verbunden sind.
  • Einige Ausführungsformen des Verfahrens umfassen weiterhin das indirekte Übertragen von Daten zwischen dem ersten Node-Controller 75 und dem zweiten Node-Controller 75 über ein Interprozessornetz 575, das auch mit einem oder mehreren anderen Node-Controllern 75 verbunden ist.
  • Einige Ausführungsformen des Verfahrens umfassen weiterhin das Übertragen von Daten zwischen beliebigen zwei der Speicherports, dem ersten Prozessorport, dem zweiten Prozessorport, dem Ein-/Ausgabeport und dem Netzwerkport.
  • Bei manchen Ausführungsformen des Verfahrens geschieht das Übertragen von Daten zwischen jeweils zwei von dem Speicherport, dem ersten Prozessorport, dem zweiten Prozessorport, dem Ein-/Ausgabeport und dem Netzwerkport in nicht blockierender Weise, so daß eine Anzahl dieser Übertragungen gleichzeitig auftritt.
  • Ein anderer Aspekt der vorliegenden Erfindung sieht ein System vor, das die relative Größe des Verzeichnisses auf der Grundlage der Größe des Systems in der Art der Anzahl der Prozessoren, der Speichermenge und/oder der Anzahl der Nodes ändert. Einige dieser Ausführungsformen sehen ein Multiprozessorsystem 100, 300 oder 500 vor, das eine Anzahl von Node-Controllern 75 unter Einschluß eines ersten Node-Controllers 75, wobei jeder der Anzahl von Node-Controllern 75 einen Speicherport 275 und einen getrennten Netzwerkport 274 und einen getrennten ersten Prozessorport 277 und wahlweise einen zweiten Prozessorport 272 aufweist, ein Interprozessor-Kommunikationsnetzwerk, das wirkungsmäßig mit dem Netzwerkport 274 jedes jeweiligen der Anzahl von Node-Controllern 75 gekoppelt ist, eine Anzahl von Prozessoren 74, die wirkungsmäßig mit dem ersten Prozessorport jedes jeweiligen der Anzahl von Node-Controllern 75 gekoppelt sind, einschließlich einer ersten Anzahl von Prozessoren 74, die wirkungsmäßig mit dem ersten Prozessorport 271 des ersten Node-Controllers 75 gekoppelt sind, und eine Anzahl ge trennter Speicher 77, wobei einer oder mehrere der Anzahl getrennter Speicher 77 wirkungsmäßig lokal mit dem Speicherport 275 jedes jeweiligen der Anzahl von Node-Controllern 75 gekoppelt ist, einschließlich eines ersten Speichers 77, der wirkungsmäßig lokal mit dem Speicherport 275 des ersten Node-Controllers 75 gekoppelt ist, wobei der ersten Speicher auf einer Anzahl einsteckbarer Speicher-/Verzeichniskarten 600 gekapselt ist, aufweist. Jede dieser Karten 600 weist eine Anzahl von Speicherchips 610 einschließlich eines ersten Teilsatzes von Speicherchips 610, die dafür vorgesehen sind, Speicherdaten zu halten, und eines zweiten Teilsatzes von Speicherchips 620, die dafür vorgesehen sind, Verzeichnisdaten zu halten, auf. Der Speicherport 275 des ersten Node-Controllers 75 umfaßt weiterhin einen Speicherdatenport 613 einschließlich eines Speicherdatenbusses 611 und eines Speicheradreßbusses 612, die mit dem ersten Teilsatz von Speicherchips 610 auf jeder einer Anzahl von Speicher-/Verzeichniskarten 600 gekoppelt sind, so daß auf die Speicherdaten gleichzeitig von der Anzahl von Speicherkarten 600 zugegriffen wird, und einen Verzeichnisdatenport 613 einschließlich eines Verzeichnisdatenbusses 621 und eines Verzeichnisadreßbusses 622, die mit dem zweiten Teilsatz von Speicherchips 620 auf jeder der Anzahl von Speicher-/Verzeichniskarten 600 gekoppelt sind, so daß auf Verzeichnisdaten gleichzeitig von einer Anzahl von Speicherkarten 600 unabhängig von Speicherdatenzugriffen zugegriffen wird. Gemäß manchen dieser Ausführungsformen ist das Verhältnis zwischen (Datenplatz im ersten Teilsatz von Speicherchips 610) und (Datenplatz im zweiten Teilsatz von Speicherchips 620) auf jeder der Anzahl von Speicher/-Verzeichniskarten 600 auf einen Wert gelegt, der auf der Größe des Multiprozessor-Computersystems beruht. Gemäß verschiedenen Ausführungsformen beruht die Größe, die das Verhältnis bestimmt, auf einer Anzahl von Prozessoren 74, einer Speichermenge 77, einer Anzahl von Routern 76 und/oder einer Anzahl von Node-Controllern 75.
  • Es ist zu verstehen, daß die vorstehende Beschreibung als erläuternd und nicht als einschränkend anzusehen ist. Viele andere Ausführungsformen werden Fachleuten beim Lesen der vorstehenden Beschreibung verständlich werden. Der Schutzumfang der Erfindung soll daher durch die anliegenden Ansprüche bestimmt sein.

Claims (27)

  1. Multiprozessor Computersystem mit: mehreren Node-Clustern (170), wobei jeder Node-Cluster (170) einen Node-Controller (75) umfasst; und einem Interprozessor-Kommunikationsnetzwerk (575), das eine Verbindung zwischen den mehreren Node-Controllern (75) schafft; wobei jeder Node-Controller (75) umfasst: eine Crossbar-Einheit (279); mehrere Ports (271275), die jeweils mit der Crossbar-Einheit in Wirkverbindung stehen und derart angeordnet sind, dass sie mit jeweils entweder einem der mehreren Prozessoren, einem Speicher, einem Input/Outputsystem oder dem Interprozessor-Netzwerk verbunden sind, wobei die mehreren Ports einen ersten (271), einen zweiten (272) und einen dritten Port aufweisen, wobei der erste und der zweite Port von einem ersten, und der dritte Port von einem zweiten Port-Typ sind, wobei der erste und der zweite Port-Typ unterschiedliche Funktionen ausführen.
  2. System nach Anspruch 1, wobei die mehreren Node-Controller einen ersten Node-Controller umfassen, und der erste Node-Controller auf einem einzelnen IC-Chip hergestellt ist.
  3. System nach Anspruch 1, wobei die mehreren Node-Controller einen ersten Node-Controller aufweisen und jeder Node-Cluster (170) weiterhin umfasst: mehrere Prozessoren (74) mit einem ersten und einem zweiten Prozessor; und einen Speicher (77); wobei die Prozessoren und der Speicher derart in Wirkverbindung mit dem Node-Cluster-Node-Controller stehen, dass der erste Port eine Wirkverbindung zwischen der Crossbar-Einheit und dem ersten Prozessor, der zweite Port eine Wirkverbindung zwischen der Crossbar-Einheit und dem zweiten Prozessor, und der dritte Port (275) eine Wirkverbindung zwischen der Crossbar-Einheit und dem Speicher schafft.
  4. System nach Anspruch 3, wobei der erste Speicher auf mehrere steckbare Speicher/Verzeichnis-Karten gepackt ist, wobei jede Karte umfasst: mehrere Speicherchips mit einem ersten Teilsatz von Speicherchips, die dazu ausgelegt sind, Speicherdaten zu enthalten, und einem zweiten Teilsatz von Speicherchips, die dazu ausgelegt sind, Verzeichnisdaten zu enthalten; und wobei der Speicherport weiterhin aufweist: einen mit dem ersten Teilsatz von Speicherchips verbundenen Speicherdatenport mit einem Speicherdatenbus und einem Speicheradressenbus; und einem mit dem zweiten Teilsatz von Speicherchips verbundenen Verzeichnisdatenport mit einem Verzeichnisdatenbus und einem Verzeichnisadressenbus.
  5. System nach Anspruch 3, wobei das Verhältnis von (Datenplatz in dem ersten Teilsatz von Speicherchips) zu (Datensatz in dem zweiten Teilsatz der Speicherchips) auf jeder der mehreren Speicher/Verzeichnis-Karten auf einen Wert gesetzt ist, der auf der Größe des Multiprozessor-Computersystems basiert.
  6. System nach Anspruch 1, wobei die mehreren Node-Controller einen ersten Node-Controller aufweisen, und jeder Node-Cluster (170) weithin umfasst: mehrere Prozessoren (74) mit einem ersten Prozessor und einem zweiten Prozessor; und ein I/O Teilsystem (79); wobei die Prozessoren und das I/O Teilsystem derart mit dem Node-Cluster-Node-Controller in Wirkverbindung stehen, dass der erste Port eine Wirkverbindung zwischen der Crossbar-Einheit und dem ersten Prozessor, der zweite Port eine Wirkverbindung zwischen der Crossbar-Einheit und dem zweiten Prozessor, und der dritte Port (273) eine Wirkverbindung zwischen der Crossbar-Einheit und dem I/O Teilsystem schafft.
  7. System nach Anspruch 1, wobei die mehreren Node-Controller mehrere erste Node-Controller aufweisen, und jeder Node-Cluster (170) weiterhin umfasst: mehrere Prozessoren (74) mit einem ersten und einem zweiten Prozessor; und ein Netzwerk (73); wobei die Prozessoren und das Netzwerk derart mit dem Node-Cluster-Node-Controller in Wirkverbindung stehen, dass der erste Port eine Wirkverbindung zwischen der Crossbar-Einheit und dem ersten Prozessor, der zweite Port eine Wirkverbindung zwischen der Crossbar-Einheit und dem zweiten Prozessor, und der dritte Port (274) eine Wirkverbindung zwischen der Crossbar-Einheit und dem Netzwerk (73) schafft.
  8. System nach Anspruch 7, wobei die Node-Controller direkt miteinander über einen Interprozessor-Kommunikationskanal verbunden sind.
  9. System nach Anspruch 1, wobei die mehreren Node-Controller einen ersten Node-Controller mit einem vierten und einem fünften Port aufweisen, und der Node-Cluster (170), der mit dem ersten Node-Controller in Verbindung steht, weiterhin umfasst: mehrere Prozessoren (74) mit einem ersten und einem zweiten Prozessor; einen Speicher (77); ein I/O Teilsystem (79); und ein Netzwerk (73); wobei die Prozessoren, der Speicher (77), das I/O Teilsystem (79) und das Netzwerk (73) mit dem Node-Cluster-Node-Controller derart in Wirkverbindung stehen, dass der erste Port eine Wirkverbindung zwischen der Crossbar-Einheit und dem ersten Prozessor, der zweite Port eine Wirkverbindung zwischen der Crossbar-Einheit und dem zweiten Prozessor, der dritte Port (273) eine Wirkverbindung zwischen der Crossbar- Einheit und dem I/O Teilsystem, der vierte Port (274) eine Wirkverbindung zwischen der Crossbar-Einheit und dem Netzwerk (73), und der fünfte Port (275) eine Wirkverbindung zwischen der Crossbar-Einheit und dem Speicher (77) schafft.
  10. System nach Anspruch 9, wobei die Crossbar-Einheit dazu ausgelegt ist, selektiv zwei nacheinander empfangene Doppeldatenwörter in ein einziges Quadword-Mikropaket für die Übertragung durch die Crossbar-Einheit zu kombinieren, und wobei jedes Doppelwort mindestens 64 Bit Daten und jedes einzelne Quadword zu mindestens 128 Bit Daten umfasst.
  11. System nach Anspruch 9, wobei der Speicher auf mehrere steckbare Speicher/Verzeichniskarten gepackt ist, wobei jede Karte umfasst: mehrere Speicherchips mit einem ersten Teilsatz von Speicherchips, die dazu ausgelegt sind, Speicherdaten zu enthalten, und einem zweiten Teilsatz von Speicherchips, die dazu ausgelegt sind, Verzeichnisdaten zu enthalten; und wobei der Speicherport weiterhin aufweist: einen mit dem ersten Teilsatz von Speicherchips verbundenen Speicherdatenport mit einem Speicherdatenbus und einem Speicheradressenbus; und einen mit dem zweiten Teilsatz von Speicherchips verbundenen Verzeichnisdatenport mit einem Verzeichnisdatenbus und einem Verzeichnisadressenbus.
  12. System nach Anspruch 11, wobei das Verhältnis von (Datenplatz in dem ersten Teilsatz der Speicherchips) zu (Datenplatz in dem zweiten Teilsatz von Speicherchips) auf jeder der mehreren Speicher/Verzeichnis-Karten, basierend auf einer Größe des Multiprozessor-Computersystems, verschieden ist.
  13. Node-Controller in einem Multiprozessor-Computersystem mit mehreren Nodes, die zu einem Node-Cluster (170) verbunden sind, und über ein Interprozessor-Kommunikationsnetzwerk (575) verbunden sind, wobei der Node-Controller (75) mit dem Interprozessor-Kommunikationsnetzwerk (575) in Wirkverbindung steht und umfasst: eine Crossbar-Einheit (279); mehrere Ports (271–275), die jeweils mit der Crossbar-Einheit in Wirkverbindung stehen und dazu ausgelegt sind, mit jeweils entweder einem der mehreren Prozessoren, einem Speicher, einem Input/Output System, oder dem Interprozessor-Kommunikationsnetzwerk verbunden zu sein, wobei die mehreren Ports einen ersten (271), einen zweiten (272) und einen dritten Port aufweisen, wobei der erste und zweite Port von einem ersten Port-Typ und der dritte von einem zweiten Port-Typ sind, wobei der erste und zweite Port-Typ unterschiedliche Funktionen ausführen.
  14. Node-Controller nach Anspruch 13, wobei der Node-Controller auf einem einzelnen IC-Chip hergestellt ist.
  15. Node-Controller nach Anspruch 13, wobei der erste und zweite Port dazu ausgelegt ist, mit den Prozessoren zu kommunizieren, und der dritte Port (275) dazu ausgelegt ist mit einem Speicher (77) zu kommunizieren.
  16. Node-Controller nach Anspruch 15, wobei der Speicher (77) als steckbare Speicher/Verzeichnis-Karten ausgebildet ist, wobei jede Karte umfasst: mehrere Speicherchips, wobei die mehreren Speicherchips einen ersten Teilsatz von Speicherchips, die dazu ausgelegt sind, Speicherdaten zu enthalten, und einen zweiten Teilsatz von Speicherchips, die dazu ausgelegt sind, Verzeichnisdaten zu enthalten, aufweist; und wobei der dritte Port (275) aufweist: einen mit dem ersten Teilsatz von Speicherchips verbundenen Speicherdatenport mit einem Speicherdatenbus und einem Speicheradressenbus; und einen mit dem zweiten Teilsatz von Speicherchips verbundenen Verzeichnisdatenport mit einem Verzeichnisdatenbus und einem Verzeichnisadressenbus.
  17. Node-Controller nach Anspruch 16, wobei das Verhältnis von (Datenplatz in dem ersten Teilsatz der Speicherchips) zu (Datenplatz in dem zweiten Teilsatz der Speicherchips) auf jeder der mehreren Speicher/Verzeichnis-Karten auf einen Wert gesetzt ist, der auf der Größe des Multiprozessor-Computersystem basiert.
  18. Node-Controller nach Anspruch 13, wobei der erste und der zweite Port dazu ausgelegt sind, mit Prozessoren zu kommunizieren, und der dritte Port (274) dazu ausgelegt ist, mit einem Netzwerk (73) zu kommunizieren.
  19. Node-Controller nach Anspruch 13, wobei der erste und der zweite Port dazu ausgelegt sind, mit Prozessoren zu kommunizieren, und der dritte Port (273) dazu ausgelegt ist, mit einem I/O Teilsystem (79) zu kommunizieren.
  20. Node-Controller nach Anspruch 19, wobei der Node-Controller weiterhin einen vierten und einen fünften Port aufweist, wobei der vierte Port (274) dazu ausgelegt ist, mit einem Netzwerk (73) zu kommunizieren, und der fünfte Port (275) dazu ausgelegt ist, mit einem Speicher (77) zu kommunizieren, wobei jeder Port mit einem anderen Port über die Crossbar-Einheit (279) kommuniziert.
  21. Node-Controller nach Anspruch 13, wobei die Crossbar-Einheit (279) dazu ausgelegt ist, selektiv zwei hintereinander empfangene Doppeldatenwörter für die Übertragung durch die Crossbar-Einheit zu einem einzigen Quadword-Mikropaket zu kombinieren, und jedes Doppelwort mindestens 68 Bit Daten und jedes einzelne Quadword mindestens 128 Bit Daten umfasst.
  22. Verfahren zum Verbinden von Einheiten in einem Multiprozessor-Computersystem, das mindestens einen ersten Node-Controller, einen zweiten Node-Controller, eine erste Vielzahl an in Wirkverbindung mit dem ersten Node-Controller stehenden Prozessoren, eine zweite Vielzahl an mit dem zweiten Node-Controller in Wirkverbindung stehenden Prozessoren, einen ersten mit dem ersten Node-Controller in Wirkverbindung stehenden Speicher, ein erstes in Wirkverbindung mit dem ersten Node-Controller stehendes Input/Outputsystem, und ein Interprozessor-Kommunikationsnetzwerk aufweist, das eine Wirkverbindung zwischen dem ersten Node-Controller und dem zweiten Node-Controller schafft, wobei der erste Node-Controller aufweist: einen mit dem ersten Speicher verbundenen Speicherport, einen mit dem Input/Outputsystem verbundenen Input/Outputport, mehrere unabhängige Prozessorports mit einem ersten Prozessorport, der in Wirkverbindung mit einem ersten Teilsatz der ersten Vielzahl von Prozessoren steht, und einem zweiten Prozessorport, der in Wirkverbindung mit einem zweiten Teilsatz der ersten Vielzahl von Prozessoren steht, mit folgenden Schritten: Übertragen von Daten zwischen dem Speicherport und dem ersten Prozessorport über eine Crossbar-Einheit; Übertragen von Daten zwischen dem Speicherport und dem zweiten Prozessorport über die Crossbar-Einheit; Übertragen von Daten zwischen dem Speicherport und dem Input/Outputport über die Crossbar-Einheit; und Übertragen von Daten zwischen dem Speicherport und einem Netzwerkport über die Crossbar-Einheit.
  23. Verfahren nach Anspruch 22, wobei das Interprozessor-Kommunikationsnetzwerk einen Interprozessor-Kommunikationskanal umfasst, und weiterhin Daten direkt zwischen dem ersten Node-Controller und dem zweiten Node-Controller überträgt, die direkt miteinander über den Interprozessor-Kommunikationskanal verbunden sind.
  24. Verfahren nach Anspruch 22, wobei das Interprozessor-Kommunikationsnetzwerk eine Interprozessor-Kommunikationsstruktur umfasst, und weiterhin Daten indirekt zwischen dem ersten Node-Controller und dem zweiten Node-Controller über die Interprozessor-Kommunikationsstruktur übertragen werden, die mit einem oder mehreren anderen Node-Controllern verbunden ist.
  25. Verfahren nach Anspruch 22, wobei weiterhin Daten zwischen zweiten der Speicherports, dem ersten Prozessorport, dem zweiten Prozessorport, dem Input/Outputport und dem Netzwerkport übertragen werden.
  26. Verfahren nach Anspruch 22, wobei das Übertragen von Daten zwischen einem der beiden Speicherports, dem ersten Prozessorport, dem zweiten Prozessorport, dem Input/Outputport und dem Netzwerkport in einer Nicht-Blockier-Weise ausgeführt werden, so dass mehrere dieser Übertragungen gleichzeitig auftreten.
  27. Node-Controller für die Benutzung in einem Multiprozessor-Computersystem gemäß Anspruch 1, wobei der Node-Controller (75) umfasst: eine Crossbar-Einheit (279); und mehrere Ports (271275), die jeweils in Wirkverbindung mit der Crossbar-Einheit stehen und dazu ausgelegt sind, mit jeweils entweder einem der mehreren Prozessoren, einem Speicher, einem Input/Outputsystem oder dem Interprozessor-Kommunikationsnetzwerk verbunden zu werden, wobei die mehreren Ports einen ersten (271), einen zweiten (272) und einen dritten Port aufweisen, wobei der erste und zweite Port von einem ersten Port-Typ, und der dritte Port von einem zweiten Port-Typ sind, und wobei der erste und zweite Port-Typ dazu ausgelegt sind, unterschiedliche Funktionen auszuführen.
DE60006842T 1999-09-29 2000-09-29 Multiprozessor-Node-Controller-Schaltung und Verfahren Expired - Fee Related DE60006842T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US407428 1982-08-12
US09/407,428 US6751698B1 (en) 1999-09-29 1999-09-29 Multiprocessor node controller circuit and method
PCT/US2000/027003 WO2001024031A2 (en) 1999-09-29 2000-09-29 Multiprocessor node controller circuit and method

Publications (2)

Publication Number Publication Date
DE60006842D1 DE60006842D1 (de) 2004-01-08
DE60006842T2 true DE60006842T2 (de) 2004-09-02

Family

ID=23612049

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60006842T Expired - Fee Related DE60006842T2 (de) 1999-09-29 2000-09-29 Multiprozessor-Node-Controller-Schaltung und Verfahren

Country Status (5)

Country Link
US (3) US6751698B1 (de)
EP (1) EP1222559B1 (de)
JP (1) JP4472909B2 (de)
DE (1) DE60006842T2 (de)
WO (1) WO2001024031A2 (de)

Families Citing this family (209)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6751698B1 (en) * 1999-09-29 2004-06-15 Silicon Graphics, Inc. Multiprocessor node controller circuit and method
US7072817B1 (en) * 1999-10-01 2006-07-04 Stmicroelectronics Ltd. Method of designing an initiator in an integrated circuit
AU2001222161A1 (en) * 2000-07-28 2002-02-13 Delvalley Limited A data processor
US7213087B1 (en) * 2000-08-31 2007-05-01 Hewlett-Packard Development Company, L.P. Mechanism to control the allocation of an N-source shared buffer
US20020161453A1 (en) * 2001-04-25 2002-10-31 Peltier Michael G. Collective memory network for parallel processing and method therefor
EP1255201B1 (de) * 2001-05-01 2009-12-23 Sun Microsystems, Inc. Multiprozessorsystem mit gemeinsamem Speicher, welches gemischte Broadcast-Snoop und verzeichnisbasierte Kohärenzprotokolle benutzt
US7222220B2 (en) * 2001-05-01 2007-05-22 Sun Microsystems, Inc. Multiprocessing system employing address switches to control mixed broadcast snooping and directory based coherency protocols transparent to active devices
US7486685B2 (en) * 2001-06-29 2009-02-03 Rankin Linda J System for sharing channels by interleaving flits
US7062609B1 (en) * 2001-09-19 2006-06-13 Cisco Technology, Inc. Method and apparatus for selecting transfer types
US7295563B2 (en) * 2001-10-01 2007-11-13 Advanced Micro Devices, Inc. Method and apparatus for routing packets that have ordering requirements
US7274692B1 (en) * 2001-10-01 2007-09-25 Advanced Micro Devices, Inc. Method and apparatus for routing packets that have multiple destinations
US7221678B1 (en) * 2001-10-01 2007-05-22 Advanced Micro Devices, Inc. Method and apparatus for routing packets
US6901491B2 (en) * 2001-10-22 2005-05-31 Sun Microsystems, Inc. Method and apparatus for integration of communication links with a remote direct memory access protocol
JP3683211B2 (ja) * 2001-12-10 2005-08-17 エヌイーシーコンピュータテクノ株式会社 ノード間データ転送方法及びノード間データ転送装置
US6807586B2 (en) * 2002-01-09 2004-10-19 International Business Machines Corporation Increased computer peripheral throughput by using data available withholding
US7088711B2 (en) * 2002-02-05 2006-08-08 Forcelo Networks, Inc. High-speed router backplane
CN1152330C (zh) * 2002-04-09 2004-06-02 威盛电子股份有限公司 远程节点读取本地内存维护方法及其应用装置
GB2389207B (en) * 2002-04-09 2004-05-12 Via Tech Inc Remote node accessing local memory by using distributed shared memory
US20030221030A1 (en) * 2002-05-24 2003-11-27 Timothy A. Pontius Access control bus system
US7103636B2 (en) * 2002-05-28 2006-09-05 Newisys, Inc. Methods and apparatus for speculative probing of a remote cluster
US6865595B2 (en) * 2002-05-28 2005-03-08 Newisys, Inc. Methods and apparatus for speculative probing of a remote cluster
US7281055B2 (en) * 2002-05-28 2007-10-09 Newisys, Inc. Routing mechanisms in systems having multiple multi-processor clusters
DE60211874T2 (de) * 2002-06-20 2007-05-24 Infineon Technologies Ag Anordnung von zwei Geräten, verbunden durch einen Kreuzvermittlungsschalter
US7051150B2 (en) * 2002-07-29 2006-05-23 Freescale Semiconductor, Inc. Scalable on chip network
US7200137B2 (en) * 2002-07-29 2007-04-03 Freescale Semiconductor, Inc. On chip network that maximizes interconnect utilization between processing elements
US6996651B2 (en) * 2002-07-29 2006-02-07 Freescale Semiconductor, Inc. On chip network with memory device address decoding
US7139860B2 (en) * 2002-07-29 2006-11-21 Freescale Semiconductor Inc. On chip network with independent logical and physical layers
US7277449B2 (en) * 2002-07-29 2007-10-02 Freescale Semiconductor, Inc. On chip network
US7296121B2 (en) * 2002-11-04 2007-11-13 Newisys, Inc. Reducing probe traffic in multiprocessor systems
US7346744B1 (en) 2002-11-04 2008-03-18 Newisys, Inc. Methods and apparatus for maintaining remote cluster state information
US7003633B2 (en) * 2002-11-04 2006-02-21 Newisys, Inc. Methods and apparatus for managing probe requests
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7577755B2 (en) * 2002-11-19 2009-08-18 Newisys, Inc. Methods and apparatus for distributing system management signals
US7447794B1 (en) * 2002-12-04 2008-11-04 Silicon Graphics, Inc. System and method for conveying information
US7353321B2 (en) * 2003-01-13 2008-04-01 Sierra Logic Integrated-circuit implementation of a storage-shelf router and a path controller card for combined use in high-availability mass-storage-device shelves that may be incorporated within disk arrays
US7024510B2 (en) * 2003-03-17 2006-04-04 Hewlett-Packard Development Company, L.P. Supporting a host-to-input/output (I/O) bridge
US7234099B2 (en) * 2003-04-14 2007-06-19 International Business Machines Corporation High reliability memory module with a fault tolerant address and command bus
US6982892B2 (en) 2003-05-08 2006-01-03 Micron Technology, Inc. Apparatus and methods for a physical layout of simultaneously sub-accessible memory modules
US7320100B2 (en) 2003-05-20 2008-01-15 Cray Inc. Apparatus and method for memory with bit swapping on the fly and testing
US7184916B2 (en) * 2003-05-20 2007-02-27 Cray Inc. Apparatus and method for testing memory cards
US7334089B2 (en) * 2003-05-20 2008-02-19 Newisys, Inc. Methods and apparatus for providing cache state information
US7386626B2 (en) * 2003-06-23 2008-06-10 Newisys, Inc. Bandwidth, framing and error detection in communications between multi-processor clusters of multi-cluster computer systems
US7337279B2 (en) * 2003-06-27 2008-02-26 Newisys, Inc. Methods and apparatus for sending targeted probes
US7395347B2 (en) * 2003-08-05 2008-07-01 Newisys, Inc, Communication between and within multi-processor clusters of multi-cluster computer systems
US7028130B2 (en) * 2003-08-14 2006-04-11 Texas Instruments Incorporated Generating multiple traffic classes on a PCI Express fabric from PCI devices
US7171499B2 (en) * 2003-10-10 2007-01-30 Advanced Micro Devices, Inc. Processor surrogate for use in multiprocessor systems and multiprocessor system using same
US7620696B2 (en) * 2004-01-20 2009-11-17 Hewlett-Packard Development Company, L.P. System and method for conflict responses in a cache coherency protocol
US8145847B2 (en) * 2004-01-20 2012-03-27 Hewlett-Packard Development Company, L.P. Cache coherency protocol with ordering points
US8468308B2 (en) * 2004-01-20 2013-06-18 Hewlett-Packard Development Company, L.P. System and method for non-migratory requests in a cache coherency protocol
US20050160238A1 (en) * 2004-01-20 2005-07-21 Steely Simon C.Jr. System and method for conflict responses in a cache coherency protocol with ordering point migration
US8090914B2 (en) * 2004-01-20 2012-01-03 Hewlett-Packard Development Company, L.P. System and method for creating ordering points
US7149852B2 (en) * 2004-01-20 2006-12-12 Hewlett Packard Development Company, Lp. System and method for blocking data responses
US8176259B2 (en) 2004-01-20 2012-05-08 Hewlett-Packard Development Company, L.P. System and method for resolving transactions in a cache coherency protocol
US7818391B2 (en) 2004-01-20 2010-10-19 Hewlett-Packard Development Company, L.P. System and method to facilitate ordering point migration
US7769959B2 (en) 2004-01-20 2010-08-03 Hewlett-Packard Development Company, L.P. System and method to facilitate ordering point migration to memory
US7757033B1 (en) 2004-02-13 2010-07-13 Habanero Holdings, Inc. Data exchanges among SMP physical partitions and I/O interfaces enterprise servers
US20050182915A1 (en) * 2004-02-12 2005-08-18 Patrick Devaney Chip multiprocessor for media applications
US7843906B1 (en) * 2004-02-13 2010-11-30 Habanero Holdings, Inc. Storage gateway initiator for fabric-backplane enterprise servers
US7873693B1 (en) * 2004-02-13 2011-01-18 Habanero Holdings, Inc. Multi-chassis fabric-backplane enterprise servers
US8868790B2 (en) 2004-02-13 2014-10-21 Oracle International Corporation Processor-memory module performance acceleration in fabric-backplane enterprise servers
US7633955B1 (en) 2004-02-13 2009-12-15 Habanero Holdings, Inc. SCSI transport for fabric-backplane enterprise servers
US7685281B1 (en) 2004-02-13 2010-03-23 Habanero Holdings, Inc. Programmatic instantiation, provisioning and management of fabric-backplane enterprise servers
US7290169B2 (en) * 2004-04-06 2007-10-30 Hewlett-Packard Development Company, L.P. Core-level processor lockstepping
US7296181B2 (en) * 2004-04-06 2007-11-13 Hewlett-Packard Development Company, L.P. Lockstep error signaling
US7237144B2 (en) * 2004-04-06 2007-06-26 Hewlett-Packard Development Company, L.P. Off-chip lockstep checking
JP4469306B2 (ja) * 2004-04-30 2010-05-26 株式会社日立製作所 計算機システム、管理サーバ
KR20040052921A (ko) * 2004-05-17 2004-06-23 김기천 분산 트래픽 제어를 위한 클록 동기화 장치
JP3780457B2 (ja) * 2004-06-07 2006-05-31 株式会社トヨタIt開発センター 信号処理装置、方法、プログラムおよび記録媒体
US8713295B2 (en) 2004-07-12 2014-04-29 Oracle International Corporation Fabric-backplane enterprise servers with pluggable I/O sub-system
US8000322B2 (en) * 2004-07-30 2011-08-16 Hewlett-Packard Development Company, L.P. Crossbar switch debugging
US20060072563A1 (en) * 2004-10-05 2006-04-06 Regnier Greg J Packet processing
US7969970B2 (en) * 2004-10-12 2011-06-28 Nxp B.V. Switch device and communication network comprising such switch device as well as method for transmitting data within at least one virtual channel
US7600023B2 (en) * 2004-11-05 2009-10-06 Hewlett-Packard Development Company, L.P. Systems and methods of balancing crossbar bandwidth
US7290085B2 (en) * 2004-11-16 2007-10-30 International Business Machines Corporation Method and system for flexible and efficient protocol table implementation
US20060149923A1 (en) * 2004-12-08 2006-07-06 Staktek Group L.P. Microprocessor optimized for algorithmic processing
US7970980B2 (en) * 2004-12-15 2011-06-28 International Business Machines Corporation Method and apparatus for accessing memory in a computer system architecture supporting heterogeneous configurations of memory structures
US7493426B2 (en) * 2005-01-31 2009-02-17 International Business Machines Corporation Data communication method and apparatus utilizing programmable channels for allocation of buffer space and transaction control
US20060174050A1 (en) * 2005-01-31 2006-08-03 International Business Machines Corporation Internal data bus interconnection mechanism utilizing shared buffers supporting communication among multiple functional components of an integrated circuit chip
US7136954B2 (en) * 2005-01-31 2006-11-14 International Business Machines Corporation Data communication method and apparatus utilizing credit-based data transfer protocol and credit loss detection mechanism
US7483428B2 (en) * 2005-02-10 2009-01-27 International Business Machines Corporation Data processing system, method and interconnect fabric supporting a node-only broadcast
US7206889B2 (en) * 2005-03-22 2007-04-17 Hewlett-Packard Development Company, L.P. Systems and methods for enabling communications among devices in a multi-cache line size environment and disabling communications among devices of incompatible cache line sizes
US8005097B2 (en) * 2005-05-18 2011-08-23 Koninklijke Philips Electronics N.V. Integrated circuit and method of arbitration in a network on an integrated circuit
JP2006352706A (ja) * 2005-06-17 2006-12-28 Hitachi Ltd マイクロプロセッサ、ネットワークシステム及び通信方法
WO2007038445A2 (en) 2005-09-26 2007-04-05 Advanced Cluster Systems, Llc Clustered computer system
JP4546380B2 (ja) * 2005-10-04 2010-09-15 エヌイーシーコンピュータテクノ株式会社 クロスバースイッチ、情報処理装置および転送方法
US7890686B2 (en) * 2005-10-17 2011-02-15 Src Computers, Inc. Dynamic priority conflict resolution in a multi-processor computer system having shared resources
JP4887824B2 (ja) * 2006-02-16 2012-02-29 富士通セミコンダクター株式会社 メモリシステム
GB2435531A (en) * 2006-02-27 2007-08-29 Sharp Kk Control Flow Protection Mechanism
US8082289B2 (en) 2006-06-13 2011-12-20 Advanced Cluster Systems, Inc. Cluster computing support for application programs
US7451260B2 (en) * 2006-10-23 2008-11-11 Hewlett-Packard Development Company, L.P. Interleave mechanism for a computing environment
US20080115139A1 (en) * 2006-10-27 2008-05-15 Todd Alan Inglett Barrier-based access to a shared resource in a massively parallel computer system
US7773617B2 (en) * 2006-11-08 2010-08-10 Sicortex, Inc. System and method for arbitration for virtual channels to prevent livelock in a richly-connected multi-processor computer system
US20080162748A1 (en) * 2006-12-31 2008-07-03 Blaise Fanning Efficient power management techniques for computer systems
US20080172510A1 (en) * 2007-01-16 2008-07-17 Wei-Jen Chen Parallel bus architecture and related method for interconnecting sub-systems utilizing a parallel bus
US8238334B2 (en) * 2007-04-30 2012-08-07 Futurewei Technologies Inc. Optimal path selection for accessing networked applications
US7953863B2 (en) * 2007-05-08 2011-05-31 Intel Corporation Techniques for timing optimization in wireless networks that utilize a universal services interface
JP4764945B2 (ja) * 2007-06-20 2011-09-07 富士通株式会社 キャッシュ制御装置、キャッシュ制御方法およびキャッシュ制御プログラム
US8230433B2 (en) 2007-06-26 2012-07-24 International Business Machines Corporation Shared performance monitor in a multiprocessor system
US7802025B2 (en) 2007-06-26 2010-09-21 International Business Machines Corporation DMA engine for repeating communication patterns
US7984448B2 (en) * 2007-06-26 2011-07-19 International Business Machines Corporation Mechanism to support generic collective communication across a variety of programming models
US7886084B2 (en) 2007-06-26 2011-02-08 International Business Machines Corporation Optimized collectives using a DMA on a parallel computer
US8756350B2 (en) 2007-06-26 2014-06-17 International Business Machines Corporation Method and apparatus for efficiently tracking queue entries relative to a timestamp
US8468416B2 (en) 2007-06-26 2013-06-18 International Business Machines Corporation Combined group ECC protection and subgroup parity protection
US8108738B2 (en) 2007-06-26 2012-01-31 International Business Machines Corporation Data eye monitor method and apparatus
US8140925B2 (en) 2007-06-26 2012-03-20 International Business Machines Corporation Method and apparatus to debug an integrated circuit chip via synchronous clock stop and scan
US8010875B2 (en) 2007-06-26 2011-08-30 International Business Machines Corporation Error correcting code with chip kill capability and power saving enhancement
US8458282B2 (en) 2007-06-26 2013-06-04 International Business Machines Corporation Extended write combining using a write continuation hint flag
US8103832B2 (en) * 2007-06-26 2012-01-24 International Business Machines Corporation Method and apparatus of prefetching streams of varying prefetch depth
US7827391B2 (en) 2007-06-26 2010-11-02 International Business Machines Corporation Method and apparatus for single-stepping coherence events in a multiprocessor system under software control
US7793038B2 (en) 2007-06-26 2010-09-07 International Business Machines Corporation System and method for programmable bank selection for banked memory subsystems
US7761687B2 (en) * 2007-06-26 2010-07-20 International Business Machines Corporation Ultrascalable petaflop parallel supercomputer
US8509255B2 (en) 2007-06-26 2013-08-13 International Business Machines Corporation Hardware packet pacing using a DMA in a parallel computer
US7877551B2 (en) * 2007-06-26 2011-01-25 International Business Machines Corporation Programmable partitioning for high-performance coherence domains in a multiprocessor system
US8032892B2 (en) * 2007-06-26 2011-10-04 International Business Machines Corporation Message passing with a limited number of DMA byte counters
US20090089510A1 (en) * 2007-09-28 2009-04-02 Mips Technologies, Inc. Speculative read in a cache coherent microprocessor
US7974278B1 (en) * 2007-12-12 2011-07-05 Integrated Device Technology, Inc. Packet switch with configurable virtual channels
US8392663B2 (en) * 2007-12-12 2013-03-05 Mips Technologies, Inc. Coherent instruction cache utilizing cache-op execution resources
US8055879B2 (en) * 2007-12-13 2011-11-08 International Business Machines Corporation Tracking network contention
US8266381B2 (en) * 2008-02-01 2012-09-11 International Business Machines Corporation Varying an amount of data retrieved from memory based upon an instruction hint
US7958309B2 (en) 2008-02-01 2011-06-07 International Business Machines Corporation Dynamic selection of a memory access size
US8140771B2 (en) * 2008-02-01 2012-03-20 International Business Machines Corporation Partial cache line storage-modifying operation based upon a hint
US8250307B2 (en) * 2008-02-01 2012-08-21 International Business Machines Corporation Sourcing differing amounts of prefetch data in response to data prefetch requests
US8024527B2 (en) * 2008-02-01 2011-09-20 International Business Machines Corporation Partial cache line accesses based on memory access patterns
US8108619B2 (en) * 2008-02-01 2012-01-31 International Business Machines Corporation Cache management for partial cache line operations
US8255635B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Claiming coherency ownership of a partial cache line of data
US8117401B2 (en) 2008-02-01 2012-02-14 International Business Machines Corporation Interconnect operation indicating acceptability of partial data delivery
US20090198910A1 (en) * 2008-02-01 2009-08-06 Arimilli Ravi K Data processing system, processor and method that support a touch of a partial cache line of data
US8490110B2 (en) * 2008-02-15 2013-07-16 International Business Machines Corporation Network on chip with a low latency, high bandwidth application messaging interconnect
US20090248988A1 (en) * 2008-03-28 2009-10-01 Mips Technologies, Inc. Mechanism for maintaining consistency of data written by io devices
US9225545B2 (en) 2008-04-01 2015-12-29 International Business Machines Corporation Determining a path for network traffic between nodes in a parallel computer
US7796585B2 (en) * 2008-05-21 2010-09-14 Dell Products, Lp Network switching in a network interface device and method of use thereof
US8397030B2 (en) 2008-06-24 2013-03-12 International Business Machines Corporation Efficient region coherence protocol for clustered shared-memory multiprocessor systems
US20100005212A1 (en) * 2008-07-01 2010-01-07 International Business Machines Corporation Providing a variable frame format protocol in a cascade interconnected memory system
US7907625B1 (en) 2008-08-04 2011-03-15 Integrated Device Technology, Inc. Power reduction technique for buffered crossbar switch
US8166146B2 (en) * 2008-09-29 2012-04-24 International Business Machines Corporation Providing improved message handling performance in computer systems utilizing shared network devices
US8209489B2 (en) * 2008-10-22 2012-06-26 International Business Machines Corporation Victim cache prefetching
US8347037B2 (en) * 2008-10-22 2013-01-01 International Business Machines Corporation Victim cache replacement
US8499124B2 (en) * 2008-12-16 2013-07-30 International Business Machines Corporation Handling castout cache lines in a victim cache
US8225045B2 (en) * 2008-12-16 2012-07-17 International Business Machines Corporation Lateral cache-to-cache cast-in
US8489819B2 (en) * 2008-12-19 2013-07-16 International Business Machines Corporation Victim cache lateral castout targeting
US8799587B2 (en) * 2009-01-26 2014-08-05 International Business Machines Corporation Region coherence array for a mult-processor system having subregions and subregion prefetching
US8285942B2 (en) * 2009-01-27 2012-10-09 International Business Machines Corporation Region coherence array having hint bits for a clustered shared-memory multiprocessor system
KR101250666B1 (ko) * 2009-01-30 2013-04-03 후지쯔 가부시끼가이샤 정보 처리 시스템, 정보 처리 장치, 정보 처리 장치의 제어 방법, 및 컴퓨터 판독 가능한 기록 매체
US8949540B2 (en) * 2009-03-11 2015-02-03 International Business Machines Corporation Lateral castout (LCO) of victim cache line in data-invalid state
US8095733B2 (en) * 2009-04-07 2012-01-10 International Business Machines Corporation Virtual barrier synchronization cache castout election
US8131935B2 (en) * 2009-04-07 2012-03-06 International Business Machines Corporation Virtual barrier synchronization cache
US8103847B2 (en) * 2009-04-08 2012-01-24 Microsoft Corporation Storage virtual containers
US8312220B2 (en) * 2009-04-09 2012-11-13 International Business Machines Corporation Mode-based castout destination selection
US8327073B2 (en) * 2009-04-09 2012-12-04 International Business Machines Corporation Empirically based dynamic control of acceptance of victim cache lateral castouts
US8347036B2 (en) * 2009-04-09 2013-01-01 International Business Machines Corporation Empirically based dynamic control of transmission of victim cache lateral castouts
US8117390B2 (en) * 2009-04-15 2012-02-14 International Business Machines Corporation Updating partial cache lines in a data processing system
US8176254B2 (en) * 2009-04-16 2012-05-08 International Business Machines Corporation Specifying an access hint for prefetching limited use data in a cache hierarchy
US8140759B2 (en) * 2009-04-16 2012-03-20 International Business Machines Corporation Specifying an access hint for prefetching partial cache block data in a cache hierarchy
US20110010522A1 (en) * 2009-06-12 2011-01-13 Cray Inc. Multiprocessor communication protocol bridge between scalar and vector compute nodes
US8306042B1 (en) * 2009-06-19 2012-11-06 Google Inc. Class-based deterministic packet routing
JP5493575B2 (ja) * 2009-08-10 2014-05-14 富士通株式会社 情報処理装置及び情報処理装置の制御方法
US8539130B2 (en) * 2009-09-24 2013-09-17 Nvidia Corporation Virtual channels for effective packet transfer
US8446824B2 (en) * 2009-12-17 2013-05-21 Intel Corporation NUMA-aware scaling for network devices
US9189403B2 (en) * 2009-12-30 2015-11-17 International Business Machines Corporation Selective cache-to-cache lateral castouts
CN102273150B (zh) * 2010-03-29 2013-09-25 华为技术有限公司 集群路由器和集群路由方法
CN102859514B (zh) * 2010-04-30 2016-04-06 惠普发展公司,有限责任合伙企业 处理器之间的管理数据传输
US8381014B2 (en) * 2010-05-06 2013-02-19 International Business Machines Corporation Node controller first failure error management for a distributed system
US9552206B2 (en) * 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
US8949453B2 (en) 2010-11-30 2015-02-03 International Business Machines Corporation Data communications in a parallel active messaging interface of a parallel computer
US9336146B2 (en) 2010-12-29 2016-05-10 Empire Technology Development Llc Accelerating cache state transfer on a directory-based multicore architecture
CN102141975B (zh) * 2011-04-01 2013-10-09 华为技术有限公司 计算机系统
WO2013106032A2 (en) * 2011-04-08 2013-07-18 Altera Corporation Systems and methods for using memory commands
KR101873526B1 (ko) * 2011-06-09 2018-07-02 삼성전자주식회사 에러 정정회로를 구비한 온 칩 데이터 스크러빙 장치 및 방법
US8949328B2 (en) 2011-07-13 2015-02-03 International Business Machines Corporation Performing collective operations in a distributed processing system
US9176913B2 (en) * 2011-09-07 2015-11-03 Apple Inc. Coherence switch for I/O traffic
US8930962B2 (en) 2012-02-22 2015-01-06 International Business Machines Corporation Processing unexpected messages at a compute node of a parallel computer
JP2013196167A (ja) * 2012-03-16 2013-09-30 Toshiba Corp 情報処理装置
JP5949312B2 (ja) * 2012-08-16 2016-07-06 富士通株式会社 並列計算機システム、データ転送装置及び並列計算機システムの制御方法
US8867559B2 (en) * 2012-09-27 2014-10-21 Intel Corporation Managing starvation and congestion in a two-dimensional network having flow control
US9280507B2 (en) 2012-10-22 2016-03-08 Intel Corporation High performance interconnect physical layer
DE112013003723B4 (de) * 2012-10-22 2018-09-13 Intel Corporation Hochleistungsfähige physikalische Kopplungsstrukturschicht
US9160607B1 (en) * 2012-11-09 2015-10-13 Cray Inc. Method and apparatus for deadlock avoidance
CN103049422B (zh) * 2012-12-17 2013-11-27 浪潮电子信息产业股份有限公司 一种具有多cache一致性域的多处理器节点系统构建方法
US9250679B2 (en) * 2013-03-08 2016-02-02 Intel Corporation Reduced wake up delay for on-die routers
US9229894B2 (en) * 2013-04-09 2016-01-05 Apple Inc. Protocol conversion involving multiple virtual channels
EP2829986B1 (de) * 2013-05-20 2017-07-12 Huawei Technologies Co., Ltd. Computersystem sowie zugriffsverfahren und -vorrichtung pci express endgeräte
US9696920B2 (en) * 2014-06-02 2017-07-04 Micron Technology, Inc. Systems and methods for improving efficiencies of a memory system
US9720838B2 (en) 2015-03-27 2017-08-01 Intel Corporation Shared buffered memory routing
DE112015006516T5 (de) * 2015-05-07 2018-01-25 Intel Corporation BUS-Einrichtung-Funktion-Adressraumabbildung
CN105068786B (zh) * 2015-07-30 2018-03-23 浪潮(北京)电子信息产业有限公司 一种处理访存请求的方法和节点控制器
CN106603355B (zh) 2015-10-15 2019-10-18 华为技术有限公司 一种计算装置、节点设备和服务器
US9992135B2 (en) * 2015-12-11 2018-06-05 Intel Corporation Apparatus and method for fusion of compute and switching functions of exascale system into a single component by using configurable network-on-chip fabric with distributed dual mode input-output ports and programmable network interfaces
KR102025801B1 (ko) * 2016-01-26 2019-09-26 한국전자통신연구원 분산 파일 시스템 및 이의 데이터 내결함성 지원 방법
JP6258564B1 (ja) * 2016-04-08 2018-01-17 株式会社清水 緩効性肥料組成物
US10291512B2 (en) * 2016-09-13 2019-05-14 Cisco Technology, Inc. Interest message path steering and multi-path traceroute in information-centric networking
NO342930B1 (en) 2016-10-18 2018-09-03 Numascale As Cache Coherent node controller
KR102610984B1 (ko) * 2017-01-26 2023-12-08 한국전자통신연구원 토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 운영 방법
US10459659B2 (en) * 2017-03-31 2019-10-29 Intel Corporation Technologies for issuing commands on selected memory devices
NO343359B1 (en) 2017-05-02 2019-02-11 Numascale As Interconnect switch in multiprocessor systems
US11287985B2 (en) 2017-05-17 2022-03-29 Seagate Technology Llc Network data storage buffer system
CN111917656B (zh) * 2017-07-27 2023-11-07 超聚变数字技术有限公司 传输数据的方法和设备
TWI779069B (zh) 2017-07-30 2022-10-01 埃拉德 希提 具有以記憶體為基礎的分散式處理器架構的記憶體晶片
US20190065418A1 (en) * 2017-08-29 2019-02-28 International Business Machines Corporation Message routing in a main memory arrangement
US10474611B2 (en) * 2017-09-19 2019-11-12 International Business Machines Corporation Aligning received bad data indicators (BDIS) with received data on a cross-chip link
US10592465B2 (en) 2017-10-26 2020-03-17 Hewlett Packard Enterprise Development Lp Node controller direct socket group memory access
US11275632B2 (en) 2018-09-14 2022-03-15 Advanced Micro Devices, Inc. Broadcast command and response
CN110677278A (zh) * 2019-09-10 2020-01-10 无锡江南计算技术研究所 一种消息处理机
CN113010173A (zh) 2019-12-19 2021-06-22 超威半导体(上海)有限公司 并行处理中矩阵数据广播的方法
CN113094099A (zh) 2019-12-23 2021-07-09 超威半导体(上海)有限公司 矩阵数据广播架构
KR20210089804A (ko) 2020-01-08 2021-07-19 삼성전자주식회사 메모리 모듈 및 이를 포함하는 메모리 시스템
JP2022049552A (ja) * 2020-09-16 2022-03-29 キオクシア株式会社 半導体装置および方法
US11403221B2 (en) 2020-09-24 2022-08-02 Advanced Micro Devices, Inc. Memory access response merging in a memory hierarchy
EP4315089A1 (de) * 2021-03-29 2024-02-07 Google LLC On-chip-verbindung für speicherkanalsteuerungen
US11853231B2 (en) 2021-06-24 2023-12-26 Ati Technologies Ulc Transmission of address translation type packets

Family Cites Families (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4330858A (en) 1979-06-29 1982-05-18 International Business Machines Corporation Time domain supervisory channel for data terminal equipments
US4814979A (en) 1981-04-01 1989-03-21 Teradata Corporation Network to transmit prioritized subtask pockets to dedicated processors
US4814973A (en) 1983-05-31 1989-03-21 Hillis W Daniel Parallel processor
JP2644718B2 (ja) 1983-12-28 1997-08-25 株式会社日立製作所 コンピュータシステム
US4754394A (en) 1984-10-24 1988-06-28 International Business Machines Corporation Multiprocessing system having dynamically allocated local/global storage and including interleaving transformation circuit for transforming real addresses to corresponding absolute address of the storage
US4630259A (en) 1984-11-14 1986-12-16 At&T Bell Laboratories Lockup detection and recovery in a packet switching network
US4807183A (en) * 1985-09-27 1989-02-21 Carnegie-Mellon University Programmable interconnection chip for computer system functional modules
US4771391A (en) 1986-07-21 1988-09-13 International Business Machines Corporation Adaptive packet length traffic control in a local area network
US4811214A (en) 1986-11-14 1989-03-07 Princeton University Multinode reconfigurable pipeline computer
US4933933A (en) 1986-12-19 1990-06-12 The California Institute Of Technology Torus routing chip
US5093920A (en) * 1987-06-25 1992-03-03 At&T Bell Laboratories Programmable processing elements interconnected by a communication network including field operation unit for performing field operations
US5170482A (en) 1987-08-14 1992-12-08 Regents Of The University Of Minnesota Improved hypercube topology for multiprocessor computer systems
US5008882A (en) 1987-08-17 1991-04-16 California Institute Of Technology Method and apparatus for eliminating unsuccessful tries in a search tree
US4868818A (en) 1987-10-29 1989-09-19 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Fault tolerant hypercube computer system architecture
US5105424A (en) 1988-06-02 1992-04-14 California Institute Of Technology Inter-computer message routing system with each computer having separate routinng automata for each dimension of the network
EP0353819B1 (de) 1988-08-02 1997-04-09 Koninklijke Philips Electronics N.V. Verfahren und Vorrichtung für die Synchronisierung von parallelen Prozessoren unter Verwendung einer unscharf definierten Sperre
DE3889221T2 (de) 1988-10-20 1994-11-17 Ibm Kommunikationsnetzwerk.
US5117350A (en) 1988-12-15 1992-05-26 Flashpoint Computer Corporation Memory address mechanism in a distributed memory architecture
US5347450A (en) 1989-01-18 1994-09-13 Intel Corporation Message routing in a multiprocessor computer system
JP2749098B2 (ja) 1989-02-03 1998-05-13 株式会社日立製作所 通信回線切替・併用方式
US5036459A (en) 1989-03-09 1991-07-30 U.S. Philips Corporation Multi-processor computer system with distributed memory and an interprocessor communication mechanism, and method for operating such mechanism
JP3072646B2 (ja) 1989-03-20 2000-07-31 富士通株式会社 並列計算機間通信制御方式
US5127092A (en) 1989-06-15 1992-06-30 North American Philips Corp. Apparatus and method for collective branching in a multiple instruction stream multiprocessor where any of the parallel processors is scheduled to evaluate the branching condition
US5166156A (en) * 1989-12-20 1992-11-24 Adir Et Compagnie Naphthyl piperazines useful as 5-HT1A receptor ligands
CA2032620C (en) 1989-12-22 1995-08-15 Takafumi Chujo Method for searching for alternate path in communication network
US5197130A (en) 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US5280474A (en) 1990-01-05 1994-01-18 Maspar Computer Corporation Scalable processor to processor and processor-to-I/O interconnection network and method for parallel processing arrays
US5218676A (en) 1990-01-08 1993-06-08 The University Of Rochester Dynamic routing system for a multinode communications network
US5161156A (en) 1990-02-02 1992-11-03 International Business Machines Corporation Multiprocessing packet switching connection system having provision for error correction and recovery
US5210705A (en) 1990-02-28 1993-05-11 Texas Instruments Incorporated Digital filtering with single-instruction, multiple-data processor
US5201044A (en) 1990-04-16 1993-04-06 International Business Machines Corporation Data processing method for file status recovery includes providing a log file of atomic transactions that may span both volatile and non volatile memory
US5083265A (en) 1990-04-17 1992-01-21 President And Fellows Of Harvard College Bulk-synchronous parallel computer
US5229990A (en) 1990-10-03 1993-07-20 At&T Bell Laboratories N+K sparing in a telecommunications switching environment
US5794059A (en) * 1990-11-13 1998-08-11 International Business Machines Corporation N-dimensional modified hypercube
US5765011A (en) 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
US5963746A (en) * 1990-11-13 1999-10-05 International Business Machines Corporation Fully distributed processing memory element
US5625836A (en) 1990-11-13 1997-04-29 International Business Machines Corporation SIMD/MIMD processing memory element (PME)
US5383191A (en) 1990-12-20 1995-01-17 International Business Machines Corporation Dual ring reconfiguration switching unit
US5175733A (en) 1990-12-27 1992-12-29 Intel Corporation Adaptive message routing for multi-dimensional networks
US5365228A (en) 1991-03-29 1994-11-15 International Business Machines Corporation SYNC-NET- a barrier synchronization apparatus for multi-stage networks
US5265232A (en) 1991-04-03 1993-11-23 International Business Machines Corporation Coherence control by data invalidation in selected processor caches without broadcasting to processor caches not having the data
US5251131A (en) * 1991-07-31 1993-10-05 Thinking Machines Corporation Classification of data records by comparison of records to a training database using probability weights
JP2836321B2 (ja) 1991-11-05 1998-12-14 三菱電機株式会社 データ処理装置
EP0562251A2 (de) 1992-03-24 1993-09-29 Universities Research Association, Inc. Durch ein dynamisches wiederkonfigurierbares serielles Netzwerk gesteuertes Paralleldatenübertragungsnetzwerk
EP0632912B1 (de) 1992-03-25 2001-01-31 Sun Microsystems, Inc. Echtzeitverarbeitungssystem
EP0570729A3 (en) 1992-05-22 1994-07-20 Ibm Apap i/o programmable router
US5533198A (en) 1992-11-30 1996-07-02 Cray Research, Inc. Direction order priority routing of packets between nodes in a networked system
US6233702B1 (en) 1992-12-17 2001-05-15 Compaq Computer Corporation Self-checked, lock step processor pairs
JPH06318951A (ja) 1993-01-07 1994-11-15 Toshiba Corp セル転送方法およびセル転送システム
US5598568A (en) * 1993-05-06 1997-01-28 Mercury Computer Systems, Inc. Multicomputer memory access architecture
FR2707819B1 (fr) 1993-07-12 1995-09-15 Tremel Jean Yves Procédé et dispositif de surveillance et/ou de test d'un réseau de télécommunication de type ATM.
US5546596A (en) 1993-08-24 1996-08-13 Intel Corporation Method and apparatus for integrated local and express routing in a multiprocessor
US5509125A (en) 1993-09-29 1996-04-16 Silicon Graphics, Inc. System and method for fair arbitration on a multi-domain multiprocessor bus
US5504874A (en) 1993-09-29 1996-04-02 Silicon Graphics, Inc. System and method of implementing read resources to maintain cache coherency in a multiprocessor environment permitting split transactions
US5390164A (en) 1993-10-22 1995-02-14 At&T Corp. Ring interworking between bidirectional line-switched ring transmission systems
US5434995A (en) 1993-12-10 1995-07-18 Cray Research, Inc. Barrier synchronization for distributed memory massively parallel processing systems
US5583990A (en) 1993-12-10 1996-12-10 Cray Research, Inc. System for allocating messages between virtual channels to avoid deadlock and to optimize the amount of message traffic on each type of virtual channel
US5453978A (en) 1994-04-04 1995-09-26 International Business Machines Corporation Technique for accomplishing deadlock free routing through a multi-stage cross-point packet switch
US5634004A (en) * 1994-05-16 1997-05-27 Network Programs, Inc. Directly programmable distribution element
US5546549A (en) 1994-06-01 1996-08-13 International Business Machines Corporation Multi-path channel (MPC) interface with user transparent, unbalanced, dynamically alterable computer input/output channels
US5592610A (en) 1994-12-21 1997-01-07 Intel Corporation Method and apparatus for enhancing the fault-tolerance of a network
US5659796A (en) 1995-04-13 1997-08-19 Cray Research, Inc. System for randomly modifying virtual channel allocation and accepting the random modification based on the cost function
US5701416A (en) 1995-04-13 1997-12-23 Cray Research, Inc. Adaptive routing mechanism for torus interconnection network
US5680576A (en) 1995-05-05 1997-10-21 Silicon Graphics, Inc. Directory-based coherence protocol allowing efficient dropping of clean-exclusive data
US5682479A (en) 1995-05-05 1997-10-28 Silicon Graphics, Inc. System and method for network exploration and access
US5669008A (en) 1995-05-05 1997-09-16 Silicon Graphics, Inc. Hierarchical fat hypercube architecture for parallel processing systems
US5721819A (en) 1995-05-05 1998-02-24 Silicon Graphics Corporation Programmable, distributed network routing
US5634110A (en) 1995-05-05 1997-05-27 Silicon Graphics, Inc. Cache coherency using flexible directory bit vectors
US5721921A (en) 1995-05-25 1998-02-24 Cray Research, Inc. Barrier and eureka synchronization architecture for multiprocessors
US5613071A (en) 1995-07-14 1997-03-18 Intel Corporation Method and apparatus for providing remote memory access in a distributed memory multiprocessor system
US6002667A (en) * 1995-07-19 1999-12-14 Fujitsu Network Communications, Inc. Minimum guaranteed cell rate method and apparatus
US5778437A (en) 1995-09-25 1998-07-07 International Business Machines Corporation Invalidation bus optimization for multiprocessors using directory-based cache coherence protocols in which an address of a line to be modified is placed on the invalidation bus simultaneously with sending a modify request to the directory
US5787241A (en) * 1995-12-18 1998-07-28 Integrated Device Technology, Inc. Method and apparatus for locating exception correction routines
US5864738A (en) 1996-03-13 1999-01-26 Cray Research, Inc. Massively parallel processing system using two data paths: one connecting router circuit to the interconnect network and the other connecting router circuit to I/O controller
US5970510A (en) * 1996-04-10 1999-10-19 Northrop Grumman Corporation Distributed memory addressing system
US5793962A (en) 1996-04-30 1998-08-11 International Business Machines Corporation System for managing membership of a group of processors in a distributed computing environment
US5787477A (en) 1996-06-18 1998-07-28 International Business Machines Corporation Multi-processor cache coherency protocol allowing asynchronous modification of cache data
US5752258A (en) 1996-07-01 1998-05-12 Sun Microsystems, Inc. Encoding method for directory state in cache coherent distributed shared memory system
US5900015A (en) 1996-08-09 1999-05-04 International Business Machines Corporation System and method for maintaining cache coherency using path directories
US6625166B2 (en) * 1996-11-15 2003-09-23 Canon Kabushiki Kaisha Communication system for communicating a plurality of time-division multiplexed data, and control method therefor
US5915104A (en) 1997-01-09 1999-06-22 Silicon Graphics, Inc. High bandwidth PCI to packet switched router bridge having minimized memory latency
US5995512A (en) * 1997-01-17 1999-11-30 Delco Electronics Corporation High speed multimedia data network
US5978578A (en) * 1997-01-30 1999-11-02 Azarya; Arnon Openbus system for control automation networks
US6633958B1 (en) 1997-11-17 2003-10-14 Silicon Graphics, Inc. Multiprocessor computer system and method for maintaining cache coherence utilizing a multi-dimensional cache coherence directory structure
US6230252B1 (en) 1997-11-17 2001-05-08 Silicon Graphics, Inc. Hybrid hypercube/torus architecture
US6101181A (en) 1997-11-17 2000-08-08 Cray Research Inc. Virtual channel assignment in large torus systems
US5970232A (en) 1997-11-17 1999-10-19 Cray Research, Inc. Router table lookup mechanism
US6085303A (en) 1997-11-17 2000-07-04 Cray Research, Inc. Seralized race-free virtual barrier network
US6072772A (en) * 1998-01-12 2000-06-06 Cabletron Systems, Inc. Method for providing bandwidth and delay guarantees in a crossbar switch with speedup
US6334159B1 (en) * 1998-12-22 2001-12-25 Unisys Corporation Method and apparatus for scheduling requests within a data processing system
US6110181A (en) * 1999-02-10 2000-08-29 Veterans General Hospital-Taipei, Vacrs Thread carrier plate device and method
US6484220B1 (en) * 1999-08-26 2002-11-19 International Business Machines Corporation Transfer of data between processors in a multi-processor system
US6725307B1 (en) * 1999-09-23 2004-04-20 International Business Machines Corporation Method and system for controlling data transfers with physical separation of data functionality from address and control functionality in a distributed multi-bus multiprocessor system
US6604161B1 (en) 1999-09-29 2003-08-05 Silicon Graphics, Inc. Translation of PCI level interrupts into packet based messages for edge event drive microprocessors
US6516372B1 (en) 1999-09-29 2003-02-04 Silicon Graphics, Inc. Partitioning a distributed shared memory multiprocessor computer to facilitate selective hardware maintenance
US6674720B1 (en) 1999-09-29 2004-01-06 Silicon Graphics, Inc. Age-based network arbitration system and method
US6711636B1 (en) 1999-09-29 2004-03-23 Silicon Graphics, Inc. Transfer attribute encoding within an address on a bus
US6751698B1 (en) * 1999-09-29 2004-06-15 Silicon Graphics, Inc. Multiprocessor node controller circuit and method
US6457146B1 (en) * 1999-09-30 2002-09-24 Silicon Graphics, Inc. Method and apparatus for processing errors in a computer system
US6546451B1 (en) * 1999-09-30 2003-04-08 Silicon Graphics, Inc. Method and apparatus for decoupling processor speed from memory subsystem speed in a node controller
US6564277B1 (en) * 1999-09-30 2003-05-13 Silicon Graphics, Inc. Method and system for handling interrupts in a node controller without attached processors
US6339812B1 (en) * 1999-09-30 2002-01-15 Silicon Graphics, Inc. Method and apparatus for handling invalidation requests to processors not present in a computer system

Also Published As

Publication number Publication date
EP1222559B1 (de) 2003-11-26
WO2001024031A9 (en) 2001-09-20
US20090024833A1 (en) 2009-01-22
US20050053057A1 (en) 2005-03-10
US7881321B2 (en) 2011-02-01
DE60006842D1 (de) 2004-01-08
JP4472909B2 (ja) 2010-06-02
WO2001024031A2 (en) 2001-04-05
WO2001024031A3 (en) 2001-08-23
US7406086B2 (en) 2008-07-29
JP2003510721A (ja) 2003-03-18
EP1222559A2 (de) 2002-07-17
US6751698B1 (en) 2004-06-15

Similar Documents

Publication Publication Date Title
DE60006842T2 (de) Multiprozessor-Node-Controller-Schaltung und Verfahren
DE60202926T2 (de) Multicomputersystem mit konfigurierbaren Schnittstellen für flexible Systemkonfigurationen
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE69533230T2 (de) Verfahren und vorrichtung zur verbesserung der fehlertoleranz eines netzwerkes
DE60203469T2 (de) System mit Schnittstellen und einem Schalter für die Trennung von kohärentem und nichtkohärentem Datenpaketverkehr
DE60207210T2 (de) System mit Schnittstellen, einem Schalter und einer Speicherbrücke mit cc-numa (cache-coherent non-uniform memory access)
DE60204213T2 (de) Level 2 Cache mit lokaler Beibehaltung von Kohärenzblöcken
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE69832943T2 (de) Sequenzsteuerungsmechanismus für ein switch-basiertes Mehrprozessorsystem
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE69133257T2 (de) Vorrichtung und verfahren zur schnellen paketvermittlung
DE60217221T2 (de) Ein-Chip System zur Paketverarbeitung
DE60212626T2 (de) Endknotenunterteilung mittels lokaler identifikatoren
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE3134428C2 (de)
DE69132652T2 (de) Rechnerdatenleitweglenkungssystem
DE69736872T2 (de) Datenverarbeitungssystem
DE19807872A1 (de) Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl.
DE2809602C3 (de) Kanalbus-Steuereinrichtung
DE60201650T2 (de) Systeme, welche eine Mischung aus paketartigem, kohärentem und nicht-kohärentem Verkehr verwenden, um die Übertragung zwischen Systemen zu optimieren
DE112012004551T5 (de) Mehrkernverknüpfung in einem Netzprozessor
DE102018127751A1 (de) Einheitlicher Adressraum für mehrere Verbindungen
DE10045916A1 (de) Methode und System zum Implementieren eines Remstat-Protokolls und Einbeziehung und Nicht-Einbeziehung von L1-Daten im L2-Cache zur Verhinderung einer gegenseitigen Lesesperre
EP0882267B1 (de) Mehrprozessor-zentraleinheit
EP1540507A2 (de) Verfahren und vorrichtungen zur datenbe- und/oder verarbeitung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee