DE69106384T2 - Skalierbares parallel-vektorrechnersystem. - Google Patents

Skalierbares parallel-vektorrechnersystem.

Info

Publication number
DE69106384T2
DE69106384T2 DE69106384T DE69106384T DE69106384T2 DE 69106384 T2 DE69106384 T2 DE 69106384T2 DE 69106384 T DE69106384 T DE 69106384T DE 69106384 T DE69106384 T DE 69106384T DE 69106384 T2 DE69106384 T2 DE 69106384T2
Authority
DE
Germany
Prior art keywords
memory
processor
vector
processors
thread
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
DE69106384T
Other languages
English (en)
Other versions
DE69106384D1 (de
Inventor
Steven Oberlin
Bricky Stephenson
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.)
Cray Research LLC
Original Assignee
Cray Research LLC
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 Cray Research LLC filed Critical Cray Research LLC
Application granted granted Critical
Publication of DE69106384D1 publication Critical patent/DE69106384D1/de
Publication of DE69106384T2 publication Critical patent/DE69106384T2/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/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8092Array of vector units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Multi Processors (AREA)
  • Complex Calculations (AREA)

Description

    Gegenstand der Erfindung
  • Die vorliegende Erfindung betrifft allgemein den Bereich der digitalen Hochgeschwindigkeitsdatenverarbeitungssysteme, und insbesondere den Bereich der skalierbaren Multiprozessor-Höchstleistungsmaschinen, die zur Vektorverarbeitung geeignet sind.
  • Hintergrund der Erfindung
  • Viele wissenschaftliche Datenverarbeitungsaufgaben bringen umfassende arithmetische Bearbeitungen von geordneten Datengruppen mit sich. Gemeinhin hat diese Art der Verarbeitung, oder der "Vektor"-Verarbeitung, die sich wiederholende Ausführung der gleichen Operation an jedem aufeinanderfolgenden Element einer Datenmenge zur Folge. Die meisten Rechner sind mit einer Zentraleinheit (CPU) organisiert, welche mit einem Speicher und mit einer Eingabe-Ausgabe-Einheit (I/O) kommunizieren kann. Um eine arithmetische Aufgabe auszuführen, muß jeder der Operanden aufeinandnerfolgend aus dem Speicher zu der CPU übertragen werden, die Funktionen ausgeführt und das Ergebnis zu dem Speicher rückübertragen werden. Jedoch kann die CPU üblicherweise Prozeßanweisungen und Daten in einer kürzeren Ausführungszeit verarbeiten, als diese aus der Speichereinheit abgerufen werden können. Diese "inherente Speicherlatenzzeit" führt in der CPU dazu, daß sich diese häufig in einem Leerlaufzustand befindet und auf aus dem Speicher abzurufende Anweisungen oder Daten wartet. Derartig organisierte Maschinen, dh. "Skalar"-Maschinen, wurden deshalb als zu langsam und die Hardware als zu ineffizient für einen praktischen Einsatz bei Aufgaben mit großer Skalenverarbeitung angesehen.
  • Um bei der Bearbeitung geordneter Datengruppen die Verarbeitungsgeschwindigkeit sowie die Hardwareeffektivität zu steigern, wurden "Vektor"-Maschinen entwickelt. Eine Vektormaschine arbeitet mit geordneten Datengruppen auf Grund seiner Hardwareorganisation, wodurch eine höhere Betriebsgeschwindigkeit als bei Skalarmaschinen erreicht wird. Eine solche Vektormaschine ist in dem am 5. Dezember 1978 herausgegebenen US-Patent Nr. 4,128,880 (Cray) offenbart.
  • Die Vektorverarbeitungmaschine des Cray-Patents ist eine Einzelprozessormaschine, die drei Vektorfunktionseinheiten aufweist, welche besonders zur Durchführung von Vektoroperationen bestimmt sind. Das Cray-Patent sieht weiterhin einen Satz an 8 Vektorregistern vor. Da Vektoroperationen unter Verwendung von Daten direkt aus den Vektorregistern durchgeführt werden können, wird eine erhebliche Verringerung an Speicherzugriffsanforderungen (und damit bedingten Verzögerungen auf Grund der inherenten Speicherlatenzzeit) dort erreicht, wo wiederholte Berechnung der gleichen Daten notwendig ist.
  • Die Lehre des Cray-Patents sieht auch die Bereitstellung von Anweisungen und Daten als ein Mittel zum Verbergen der inherenten Speicherlatenzzeiten vor. Diese als "Befehlsverknüpfung (pipelining)" bekannte Technik umfaßt die Bereitstellung von Programmanweisungen und das Schreiben dieser in ein Ende einer Anweisungs-"Pipeline (pipe)" einer Länge n, während vorausgegangene Anweisungen ausgeführt werden. Die korrespondierenden, zur Durchführung der Anweisungen notwendigen Daten werden ebenfalls aus dem Speicher abgerufen und in ein Ende einer separaten Datenpipeline oder "Kette (chain)" geschrieben. Wenn eine Anweisung deshalb das Leseende der Pipeline erreicht, stehen die zur Ausführung notwendigen Daten, welche aus dem Speicher zu holen waren, sofort zum Verarbeiten an dem Leseende der Datenkette zur Verfügung. Durch die Befehlsverknüpfung von Anweisungen und die Verkettung der Daten kann dann der größte Teil der Ausführungszeit mit der Speicherabrufzeit überlappt werden. Im Ergebnis wird die Prozessorleerlaufzeit erheblich reduziert.
  • Die Rechnerverarbeitungsgeschwindigkeit und -effektivität kann weiterhin sowohl bei Skalar- als auch bei Vektor-Maschinen durch den Einsatz von Mehrprozessorbetriebstechniken gesteigert werden. Der Mehrprozessorbetrieb sieht die Verwendung von zwei oder mehr Prozessoren vor, die die Systemresourcen, wie beispielsweise den Hauptspeicher, gemeinsam nutzen. Sowohl unabhängige Aufgaben verschiedener Aufträge als auch miteinander in Verbindung stehende Aufgaben eines einzelnen Auftrags können auf den mehrfach vorhandenen Prozessoren laufen. Jeder Prozessor folgt seinem eigenen Satz an Anweisungen, und die Prozessoren führen ihre Anweisungen gleichzeitig ("parallel") aus. Durch Erhöhung der Anzahl an Prozessoren bei paralleler Betriebsweise kann mehr Arbeit in einer kürzeren Zeitperiode ausgeführt werden.
  • Ein Beispiel für eine zwei Prozessoren aufweisende Vektormaschine mit Mehrprozessorbetrieb ist in dem am 13. Januar 1987 herausgegebenen US-Patent Nr. 4,636,942 (Chen und andere) offenbart, daß durch Bezugnahme hier miteinbezogen wird. Ein weiterer Aspekt der Zwei-Prozessormaschine des Chen Patents mit den Endziffern 942 kann aus dem am 28. April 1987 herausgegebenen US- Patent Nr. 4,661,900 (Chen und andere) entnommen werden. Eine vier Prozessoren aufweisende Vektormaschine mit Mehrprozessorbetrieb ist in dem am 17. Mai 1988 herausgegebenen US-Patent Nr. 4,745,545 (Schiffleger) und in dem am 28. Juni 1988 herausgegebenen US-Patent Nr. 4,754,398 (Pribnow) offenbart. Alle vorstehend angeführten Patente sind auf die Cray Research Inc., der Rechtsnachfolgerin der vorliegenden Erfindung, übertragen worden.
  • Eine andere Vektormaschine mit Mehrprozessorbetrieb der Cray Research Inc., der Rechtsnachfolgerin der vorliegenden Erfindung, ist der Y-MP-Vektor- Höchstleistungsrechner. Eine ausführliche Beschreibung der Y-MP-Architektur kann aus der zeitgleich anhängigen und in gleicher Weise übertragenen Patentanmeldung mit der Nr. 07/307,882, die am 7. Februar 1989 mit dem Titel "MEMORY ACCESS CONFLICT RE50LUTION SYSTEM FOR THE Y-MP" eingereicht worden ist, entnommen werden. Bei dem Y-MP-Entwurf weist jeder Vektorprozessor eine einzelne Pipeline zur Ausführung von Anweisungen auf. Jeder Prozessor greift auf einen gemeinsamen Speicher in einer vollständig zusammenhängenden Topologie zu, was zu unvermeindlichen Kollisionen zwischen den Prozessoren führt, die versuchen, auf die gleichen Bereiche des Speichers zuzugreifen. Die Y-MP verwendet ein System zur Kollisionsvermeidung, um die Kollisionen auf ein Mindestmaß herabzusetzen und die Konflikte so schnell wie möglich zu beseitigen. Das Konfliktauflösungssystem deaktiviert die involvierten Prozessoren und legt die Vektoren still, während der Konflikt aufgelöst wird. Daher bringt eine Kollision Prozessorleerlaufzeit mit sich, da die involvierten Prozessoren auf die Auflösung der Kollision warten müssen. Auf Grund dieses Problemes ist der Y-MP-Höchstleistungsrechner auf die verhältnismäßig kleine Zahl von nur 8 Vektorprozessoren begrenzt. Eine Ausdehnung des Y-MP-Entwurfs, um mehr Prozessoren vorzusehen, würde die Anzahl der Speicherzugriffskonflikte zwischen den Prozessoren erhöhen und so die Prozessorleerlaufzeit steigern. Die Y-MP-Architektur ist deshalb nicht einsetzbar für große Vektorparallelverarbeitungen, bei denen es wünschenswert ist, Systeme mit hunderten oder tausenden von Prozessoren zur Verfügung zu haben.
  • Obwohl der Mehrprozessorbetrieb die Ausführungsgeschwindigkeit erhöhen kann, ist die Zunahme, bezogen auf die Zahl der eingesetzten Prozessoren, nicht linear. Dies beruht hauptsächlich auf zwei faktoren: Aufwand und "Aussperrung (lock out)". Wesentlicher Aufwand entsteht in einer Multiprozessorumgebung auf Grund des zugenommenen Grades an Steuerung und Synchronisation, der erforderlich ist, um die Prozessoren und die Prozessorfunktionen zu koordinieren. Die Kommunikation zwischen den und die Steuerung von allen Prozessoren schleppt eine Leistungsminderung in die Systeme mit Mehrprozessorbetrieb ein. Wenn mehrere Prozessoren zusammenarbeiten, um eine Aufgabe zu lösen, sind Datenabhängigkeiten zwischen den Prozessoren und die Übergabe von Daten zwischen den Prozessoren unvermeidlich. Prozessorleerlaufzeit wird erzeugt, wenn ein Prozessor auf Daten warten muß, die ihm von einem anderen Prozessor zu übergeben sind. Die Systemleistung ist deshalb verringert.
  • Die andere signifikante Ursache der Leistungsminderung bei Multiprozessorsystemen ist die Prozessor-Aussperrung oder Prozessor-"Blockade (blocking)", welches mit dem Vorhandensein mehrerer Prozessoren, die gemeinsame Resourcen nutzen, verbunden ist. Derartiges tritt auf, wenn ein Prozessor versucht, auf eine gemeinsam genutzte Resource zuzugreifen, welche ein anderer Prozessor bereits benutzt. Der Prozessor ist deshalb daran gehindert, die gemeinsam genutzte Resource zu gebrauchen, und muß warten, bis der andere Prozessor die Nutzung beendet hat. Wiederum tritt Prozessorleerlaufzeit auf, und die Systemleistung ist verringert.
  • Ein weiterer Nachteil der vorstehend beschriebenen Techniken besteht darin, daß sie darauf ausgerichtet sind, einzelne, in einer Pipeline zugeführte Aufträge sehr schnell auszuführen, und sich deshalb nicht den Vorteil des hohen Parallelitätsgrades, der vielen Aufträgen inherent ist, ausnutzen.
  • Es sind einige Skalarmaschinen mit Mehrprozessorbetrieb entwickelt worden, die versuchen, eine größere Leistungsfähigkeit durch Einbringen eines anderen Aspekts der Parallelität in die Maschine zu erhalten. Anstelle dens Standard-Mehrprozessorbetrieb unter Verwendung mehrerer Prozessoren mit jeweils einem Anweisungsstrom einzusetzen, benutzen diese Skalarmaschinen mehrere Prozessoren, wobei jeder mehrere Anweisungsströme oder "Threads" aufweist. Verarbeitungsbedingte Latenzzeiten und Speicherlatenzzeiten werden durch "Kontext-Umschalten" zwischen den Threads innerhalb eines Prozessors überdeckt. Ein Beispiel einer derartigen Maschine ist die Denelcor Heterogenous Element Processor (HEP).
  • Die Denelcor HEP-Maschine ist eine Skalarmaschine mit Mehrprozessorbetrieb, welche bis zu 16 Prozessoren umfassen kann, die jeweils bis zu 128 in Pipelines zugeführte Anweisungs-Threads aufweist. Jeder Thread besitzt seinen eigenen Programmspeicher, eigene Universalrechenregister und Funktionseinheiten. Die HEP-Kontextumschaltung wird durch den Einsatz des Zeitscheibenverfahrens für die Mehrfach-Threads in dem Prozessor erreicht, dh., der Prozessor schaltet Threads bei jedem Taktzyklus um. Bei jedem Taktzyklus wird dem nächsten Thread in aufeinanderfolgender Ordnung gestattet, eine Anweisung auszugeben. Nach n Taktzyklen ist allen n Threads ermöglicht worden, eine Anweisung auszugeben. Bei dem Taktzyklus (n + 1) wird der Prozessor eine Kontextrückumschaltung zu dem ersten Thread durchführen und der Prozeß wiederholt sich selbst. Beispielsweise könnte ein 16 Thread-Kontextumschaltprozessor jede Latenzzeit wirksam verbergen, die eine Länge von 15 oder weniger Taktperioden aufweist, da ein ausgewählter Thread nur einmal bei jeweils 16 aufeinanderfolgenden Taktperioden aktiv ist.
  • Obwohl das Kontextumschaltschema der Denelcor HEP-Maschine verhältnismäßig kurze Speicherlatenzzeiten verbergen kann, können Latenzzeiten, welche länger als die Anzahl der Threads sind, einen Thread zur folge haben, der während seiner Zeitscheibe wegen einer schleichenden Datenabhängigkeit oder einer Blockade auf Grund der Versuche von mehr als einem Prozessor, auf gemeinsam genutzten Resourcen zuzugreifen, übergangen wird. Beispielsweise kann in Hochgeschwindigkeitstaktsystemen der Speicher bestenfalls 30 oder mehr Taktzyklen "entfernt (distant)" von den Prozessoren sein. Solch ein System würde 30 oder mehr unabhängige Programm-Threads erfordern, um die Speicherzugriffslatenzzeit zu überdecken. Wenn weniger Threads verwendet werden, können viele unnötige Rücksprünge zu einem blockierten Thread erfolgen. Dies führt zu Prozessorleerlaufzeit und einer entsprechenden verringerten Leistung.
  • Obwohl dieses Problem in der HEP-Maschine offensichtlich durch Erhöhung der Anzahl an Threads gelöst werden kann, führt diese Lösung zu anderen Schwierigkeiten. Erstens wird das Betriebssystemmanagement mit steigender Anzahl an Threads in einem Prozessor zunehmend komplexer. Zweitens kann ein Multithreadcompiler Schwierigkeiten haben, ausreichend unbezogene (unrelated) Threads mit keiner gemeinsam genutzten Datenabhängigkeit zu finden, um effektiven Gebrauch von sogar 16 Prozessoren zu machen. Auf Grund dieser Tatsache wird ein Prozessor oft mit weniger als der optimalen Anzahl an Threads arbeiten. Dies erhöht wiederum die Wahrscheinlichkeit, daß Latenzzeiten und Datenabhängigkeiten nicht innerhalb der Zeit, in der ein Thread zum Verarbeiten wieder ausgewählt wird, aufgelöst werden.
  • Die Zeitscheibennatur der HEP-Kontextumschaltung begrenzt weiterhin die Einsatzmöglichkeiten der HEP-Maschine. Das Vertrauen auf einfache Zeitscheibenumschalttechniken beruht auf der Annahme, daß verarbeitungsbedingte Latenzzeiten und Speicherlatenzzeiten fix sind. Jedoch ist dies typischerweise bei Multiprozessorumgebungen nicht der fall, wo variable Latenzzeiten vielfach vorhanden sind.
  • Da weiterhin die HEP-Maschine eine Skalarmaschine ist, die ein Maximum von nur 16 Prozessoren aufweist, ist sie nicht für Einsätze im Zusammenhang mit großen Skalen-Vektorverarbeitungsaufgaben brauchbar. Da Skalarmaschinen mehr Anweisungen und mehr Datenoperationen erfordern, um Vektoroperationen abzuschließen, dauern Vektoroperationen viel länger und werden ineffektiver auf einer HEP-Maschine durchgeführt. Da weiterhin der HEP-Entwurf auf eine verhältnismäßig kleine Anzahl an Prozessoren (16) begrenzt ist, kann der Entwurf nicht auf eine massive Parallelverarbeitungsarchitektur erweitert werden, bei welcher es wünschenswert ist, 100 oder 1000 Prozessoren einzusetzen.
  • Ein weiteres Beispiel einer Skalarmultiprozessor/Multithread-Maschine ist die HORIZON-Konzeptarchitektur, welche von dem Supercomputing Research Center und von der Tera Computer Company entwickelt worden ist. Die HORIZON-Architektur ist auf die Architektur ihres Vorgängers, der vorstehend erwähnten Denelcor HEP-Maschine in der Weise eng bezogen, daß jeder Prozessor bis zu 128 durch Pipelines geführte Anweisungs-Threads aufweist und eine Kontextumschaltung nach jedem Maschinenzyklus erfolgt. Auch weist jeder Thread in der HORIZON- Maschine seine eigenen Universalrechenregister, Programmzähler und Funktionsstatus auf.
  • Ein grundsätzlicher Unterschied zwischen den beiden Architekturen ist darin zu sehen, daß, während die HEP-Maschine nur bis zu 16 Prozessoren aufweisen kann, die HORIZON-Maschine von 256 bis 1024 Prozessoren besitzen kann. Da jedoch die Architektur so dicht auf die HEP-Architektur bezogen ist, sind die meisten der im Zusammenhang mit der HEP-Maschine aufgezeigten Nachteile bei der HORIZON-Maschine noch vorhanden. Die Probleme, die im Zusammenhang mit der Erfordernis einer großen Anzahl von Threads pro Prozessor stehen, die Schwierigkeiten im Auffinden einer großen Anzahl von unbezogenen Programm-Threads, die Annahme von feststehenden Latenzzeiten und die Einschränkungen von Skalarmaschinen machen die HORIZON-Architektur wiederum zu einer weniger wünschenswerten Alternative beim Einsatz im Zusammenhang mit großen Skalen-Vektorverarbeitungsaufgaben.
  • Ein weiterer Aspekt des Mehrprozessorbetriebs, der Einfluß auf die Gesamtmaschinenleistung hat, ist die Prozessoren-zu-Speicher-Schnittstelle. Eine Lösung für die frage der Multiprozessorschnittstelle kann bei dem Monarch-Parallelrechner mit Mehrprozessorbetrieb entnommen werden, der durch BBN Systems and Technologies Corp. entworfen worden ist. Der Monarch weist eine Skalararchitektur mit Mehrprozessorbetrieb und Einzel-Threads auf, welche eine als "Umschaltübertragung (circiut switching)" bezeichnete Technik verwendet, um zwischen den Processoren und dem Speicher zu kommunizieren. Bei dem Schnittstellenschema mit Umschaltübertragung nutzen alle Prozessoren den gleichen Pfad zu dem Speicher gemeinsam. Wenn ein Prozessor in dem Monarch- Entwurf eine Speicheranforderung hat, wird der gesamte Pfad von dem Prozessornetzwerk zum Speicher geöffnet und offengehalten, bis der Speicher und der Prozessor die Kommunikation ausgeführt haben. Dieses Schema kann andere Prozessoren "abwürgen", welche versuchen, durch das Umschaltübertragungsnetzwerk auf den Speicher zuzugreifen, was die Referenzübertragungsrate begrenzt und in einem hohen Betrag an Prozessorleerlaufzeit resultiert. Solch ein Entwurf ist deshalb nicht praktikabel beim Einsatz in einer Multiprozessor/Multithread-Vektorverarbeitung, bei welcher von Natur aus ein großes Volumen an Daten zwischen den Prozessoren und dem Speicher übergeben werden muß.
  • Eine andere Lösung für die Speicherschnittstelle bei Mehrprozessorbetrieb kann aus dem HORIZON-Leitwegschema entnommen werden. Das HORIZON-Schnittstellennetzwerk verwendet ein Schema, das als "letzter Ausweg"-Leitwegschema (desperation routing) oder "Notfall"-Leitwegschema (hot-potato-routing) bezeichnet wird. Der "letzte Ausweg"-Leitweg der HORIZON-Maschine ist ein Mehrstufennetzwerk, welches mehrere Eingänge und eine entsprechende Zahl an Ausgängen aufweist. Dieses Leitwegschema besagt, daß jede Eingabe gelenkt zu einer Ausgabe bei jedem Netzwerkzyklus gelangt. Wenn beispielsweise vier Eingabereferenzen vorhanden sind und jede der vier Eingabereferenzen zu dem gleichen Ausgang möchte, bekommt eine der vier Eingabereferenzen die richtige Wahl und alle anderen Eingaben erhalten eine andere, unerwünschte Wahl. Dies bedeutet, daß drei von den vier Eingaben einen viel längeren Pfad durch das Netzwerk nehmen. Das HORIZON-"letzter Ausweg"-Netzwerk wird so gelenkt, daß diese anderen drei Referenzen ggf. zurück zu dem gewünschten Eingang kommen und eine weitere Gelegenheit erhalten, um zu dem gewünschten Ausgang zu gelangen. Damit Referenzen nicht für immer in dem Netzwerk verloren gehen, weist das HORIZON-Leitwegschema einen Mechanismus auf, bei dem die Priorität einer Referenz steigt, je länger sich diese im Netzwerk befindet, so daß sie sich ggf. gegenüber mit ihr im Wettstreit für den gleichen Ausgang liegenden Referenzen durchsetzen wird. Die Fachleute werden ohne weiteres erkennen, daß ein derartiges Leitwegschema auf eine einzige Referenz, die mehrfache Möglichkeiten besitzt, wie sie zu dem gewünschten Endpunkt gelangen kann, und auf viele Referenzen hinausläuft, die eine sehr langen Zeitraum aufwenden, um versuchen, gegen den Verkehr in dem Netzwerk anzukämpfen. Das HORIZON-"letzter Ausweg"-Leitwegschema ist also auch nicht wünschenswert für die Verwendung bei Multithread-Vektorverarbeitungsmaschinen.
  • Ein anderes Beispiel von Thread-Umschaltung bei Mehrprozessorbetrieb ist in der am 26. Juli 1989 veröffentlichten, europäischen Patentanmeldung EP 0 325 384 (Quantel Ltd.) beschrieben. Eine Referenz, die Verbindungen zwischen Prozessoren und Speicher beschreibt, ist in den japanischen Patent Abstracts, Band 11, Nr. 243 (P-603) (2690) vom 8. August 1987 gezeigt. Eine weitere Referenz, die Koppelpunkt-Verbindungen zwischen Prozessoren und Speicher beschreibt, ist in den Berichten der 1983 stattgefundenen internationalen Konferenz über "Parallel Processing" vom 23. bis 26. August 1983 in Columbus, Ohio, USA, Seiten 524 bis 529 diskutiert.
  • Es besteht deshalb im Stand der Technik der Bedarf für eine Rechenmaschine, welche den Vorteil der Vektorverarbeitung nutzt, welche weiterhin den Vorteil des sehr hohen Parallelitätsgrades, der in vielen großen Skalen-Vektorverarbeitungsaufgaben inherent ist, nutzt und welche leicht skalierbar auf jede Anzahl an Prozessoren ohne Notwendigkeit für umfangreiche Neuentwürfe für Betriebssysteme oder Prozessoren ist.
  • Zusammenfassung der Erfindung
  • Um die vorstehend beschriebenen Einschränkungen im Stand der Technik und die anderen Einschränkungen, die während des Lesens und Verstehens der vorliegenden Beschreibung offensichtlich werden, zu überwinden, sieht die vorliegende, beanspruchte Erfindung eine skalierbare Höchstleistungsmaschine mit Mehrprozessorbetrieb vor, die zur Vektorverarbeitung geeignet ist, wobei mehrfach unbezogene Programm-Threads Anweisungen in dem gleichen Prozessor ausführen können. Der Rechner kann mit jeder Anzahl von Prozessoren ausgestattet werden; die modulare Natur der Architektur gestattet die Konstruktion von jeder Skalierung der Maschine durch einfache Reproduktion.
  • Die Architektur implementiert ein Resourcenaufteilungsschema, wodurch mehrfache, unbezogene Programm-Threads Anweisungen in dem gleichen Prozessor ausführen können. Immer nur einer der mehrfachen Threads ist zu jederzeit aktiv und bleibt aktiv, bis eine Ausgabeblockade auf Grund eines Speicherkonflikts auftritt. Kommt es zu einer Blockade, deaktiviert der Prozessor den augenblicklichen Thread und führt eine Kontextumschaltung zu dem nächsten Thread nach Art einer zyklischen Reihenfolge (round robin fashion) durch. Da jedem Thread gestattet wird, so lange zu laufen, bis eine Blockade auftritt, und da das System für Vektorverarbeitung ausgelegt ist, sind nur eine kleine Anzahl an unbezogenen Programm-Threads notwendig, um verarbeitungsbedingte Latenzzeiten und Speicherlatenzzeiten in der bevorzugten Ausführungsform zu überdecken. Ein höherer Durchsatz mit weit weniger Threads als es ist mit früheren Maschinen möglich war, kann so erzielt werden.
  • Eine Schlüsselannahme für den Systementwurf besteht darin, daß der Kontextumschaltungsprozessor mit Mehrfach-Threads Speicherzugriffslatenzzeiten durch Ausführung eines unbezogenen Codes aus den mehreren Programm- Threads deckt. Die Bearbeitung jedes Threads mit einem zu einem anderen Thread unbezogenen Code in dem Prozessor stellt sicher, daß eine zu einer Kontextumschaltung führende Blockade, lokal ist (threadspezifisch) und keinen Einfluß auf die Ausführung irgendeines anderen Threads in dem Prozessor hat. Es wird davon ausgegangen, daß ein ausgewählter Thread seine Blockaden aufgelöst hat und bereit ist, wieder aktiviert zu werden, nach dem alle anderen Threads den Round-Robin-Ausführungszyklus durchlaufen haben.
  • Der gemeinsam genutzte Hauptspeicher, der in der Architektur der vorliegenden Erfindung verwendet wird, ist in mehrere Speicherbänke aufgeteilt. Die Prozessoren kommunizieren mit dem gemeinsam genutzten Speicher über ein Mehrschicht-Crossbar-Netzwerk. Das Crossbar-Netzwerk hält die Unabhängigkeit jedes Prozessor-zu-Speicheranschlusses über den gesamten Weg zu den Speicherbänke aufrecht. Die Kommunikation und die Synchronisation zwischen den Prozessoren wird durch die Verwendung gemeinsam genutzter Register erreicht, die an dem gemeinsam genutzten Speicher vorgesehen sind und auf die unter Verwendung spezieller Anweisungen durch das Crossbar-Netzwerk zugegriffen wird.
  • Beschreibung der Zeichnungen
  • In den Zeichnungen, wo sich gleiche Bezugszeichen auf gleiche Elemente in den verschiedenen Darstellungen beziehen, zeigen:
  • Figur 1 ein Blockdiagramm der Gesamtarchitektur der vorliegenden Erfindung;
  • Figur 2 ein näher erläuterndes Blockdiagramm einer der in Figur 1 gezeigten Schichten;
  • Figuren 3A und 3B ein Blockdiagramm einer Prozessorart, die in einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung verwendet wird;
  • Figuren 4A, 4B, 4C Blockdiagramme des Eingabeschaltung für die Prozessoranschlüsse der vorliegenden Erfindung;
  • Figuren 5A, 5B, 5C Blockdiagramme der Ausgabeschaltungen für die Prozessoranschlüsse der vorliegenden Erfindung;
  • Figur 6 ein näher erläuterndes Blockdiagramm eines in Figur 1 anhand der unterbrochenen Linien gezeigten 4 x 4 Crossbar-Umschalters; und
  • Figur 7A und 7B ein Blockdiagramm eines Speicherboards der in der vorliegenden Erfindung verwendeten Art.
  • Ausführliche Beschreibung des bevorzugten Ausführungsbeispiels
  • In der folgenden, ausführlichen Beschreibung des bevorzugten Ausführungsbeispiels wird Bezug auf die beigefügten, hierzu gehörenden Zeichnungen genommen, in welchen mittels Darstellung ein besonderes Ausführungsbeispiel gezeigt ist, bei dem die Erfindung angewendet werden kann. Es ist selbstverständlich, daß andere Ausführungsformen verwendet werden können sowie strukturelle oder logische Anderungen vorgenommen werden können, ohne daß von dem Geist der vorliegenden Erfindung abgewichen wird. Die folgende, ausführliche Beschreibung ist deshalb nicht in einem einschränkenden Sinne zu verstehen. Der Umfang der vorliegenden Erfindung wird durch die beigefügten Ansprüche bestimmt.
  • In Figur 1 wird ein vereinfachtes Blockdiagramm der Gesamtarchitektur der vorliegenden Erfindung wiedergegeben. Figur 1 zeigt ein Mehrfachprozessornetzwerk 100, das mit einem gemeinsamen Speicher 600 über mehrere Crossbar- Netzwerke 400 verbunden ist. In der bevorzugten Ausführungsform der vorliegenden Erfindung weist jeder einzelne, nicht dargestellte Prozessor in dem Prozessornetzwerk 100 drei Anschlüsse zu dem gemeinsamen Speicher auf, nämlich Anschluß A, Anschluß B und Anschluß C. Um aus Sicht der Prozessor Speicherstreitigkeiten und Blockaden möglichst gering zu halten, werden die drei Anschlußspfade über den gesamten Weg zu dem gemeinsamen Speicher 600 getrennt gehalten. Dies wird dadurch erreicht, daß jedem Anschluß seine eigenen, getrennten Eingangs-Crossbar-Netzwerke, wie dies durch die Phantomlinie 440 gezeigt ist, und Ausgangs-Crossbar-Netzwerke, wie dies durch die Phantomlinie 420 gezeigt ist, zugewiesen werden. ("Ausgangs"-Crossbar-Netzwerke behandeln die Prozessor-zu-Speicherreferenzen, während die "Eingangs"- Crossbar-Netzwerke die Speicher-zu-Prozessorreferenzen behandeln.) Beispielsweise werden dann alle Anschluß-A-Prozessor-zu-Speicherreferenzen aus den einzelnen Prozessoren des Prozessornetzwerks 100 dem Ausgangspfad 402 zugewiesen. Alle Anschluß-B-Prozessor-zu-Sspeicherreferenzen werden dem Ausgangspfad 404 zugeweisen und alle Anschluß-C-Prozessor-zu-Speicherreferenzen dem Ausgangspfad 406. Desgleichen können alle Anschluß-A-Speicher-zu-Prozessorreferenzen dem Eingangspfad 412 zugewiesen werden usw.
  • Da alle Eingabe- und Ausgabeanschlußpfade getrennt voneinander sind, weist der Entwurf der vorliegenden Erfindung große Vorteile gegenüber denjenigen Entwürfen auf, bei denen alle drei Anschlüsse aus allen Prozessoren um den gleichen Zugriff zu dem Speicher in Wettstreit miteinander liegen. Bei der zuletzt genannten Art eines Entwurfes, bei dem alle drei Anschlüsse gemeinsam den gleichen Pfad zum Speicher nutzen, ist es sehr wahrscheinlich, daß die Speicherpfade blockiert werden, wenn der nächste Anschluß oder Prozessor versucht, seine Speicherreferenzen aus dem Prozessor heraus und auf den Weg zum Speicher zu bringen. Bei dem Entwurf der vorliegenden Erfindung gibt es jedoch nur eine sehr geringe Möglichkeit, daß ein Pfad blockiert werden könnte, da alle drei Anschlüsse sowohl ein zugewiesenes Eingangs- als auch Ausgangs-Crossbar-Netzwerk haben. Da deshalb Anschlußreferenzen nicht miteinander im Wettstreit liegen, können sie ohne Schwierigkeiten aus dem Prozessor gelangen. Der Entwurf der vorliegenden Erfindung verringert aus diesem Grund den Wettstreit über Speicherpfade und eine Blockierung der Speicherpfade aus Sicht des Prozessors, ein Merkmal, das einen großen Vorteil über alternative Entwürfe bietet, was die Fachleute ohne weiteres erkennen werden.
  • Obwohl in der bevorzugten Ausführungsform der vorliegenden Erfindung jeder einzelne Prozessor im Prozessornetzwerk 100 drei Referenzanschlüsse aufweist, werden die Fachleute ohne weiteres erkennen und zu schätzen wissen, daß jeder einzelne Prozessor jede Anzahl von Referenzanschlüssen umfassen kann. Wenn z.B. die Anzahl der Referenzanschlüsse pro Prozessor auf 10 gesteigert werden würde, würde ebenso die Anzahl der Eingangs-Crossbar- Netzwerke 400 auf 10 und die Anzahl der Ausgangs-Crossbar-Netzwerk ebenfalls auf 10 steigen, so daß jeder Satz an Referenzanschlüssen seine eigenen Eingangs- und Anschlußspfade zu dem Speicher haben könnte. Die Fachleute werden erkennen, daß jede Anzahl an Referenzanschlüssen pro Prozessor ohne Abweichung vom Geist der Erfindung eingesetzt werden kann.
  • Die Figur 2 zeigt ein näher erläuterndes Blockdiagramm eines einzelnen Prozessoren-zu-Speicher-Crossbar-Netzwerkes 400. Insbesondere zeigt Figur 2 eine Version der vorliegenden Erfindung mit 16 Prozessoren, die über ein einzelnes Mehrschicht-Crossbar-Netzwerk 400 mit dem gemeinsamen Speicher 600 verbunden sind. Das gezeigte Crossbar-Netzwerk 400 ist nur das Ausgangs- Prozessoren-zu-Speicher-Crossbar-Netzwerk für alle Anschluß-A-Prozessorreferenzen. Bei dem vollständigen Ausführungsbeispiel der vorliegenden Erfindung würden zwei weitere Ausgangs-Crossbar-Netzwerke 400, die identisch mit dem in Figur 2 gezeigten sind, für die Anschlüsse B und C und ebenso drei weitere identische Crossbar-Netzwerke 400, um die Eingangsreferenzen für jeden der drei Anschlüsse zu behandeln, vorgesehen sein.
  • Da die Architektur der vorliegenden Erfindung entworfen ist, um leicht skalierbar zu sein, wird von den Fachleuten ohne weiteres erkannt und geschätzt, daß die Architektur der vorliegenden Erfindung ebenso mit jeder Zahl von Prozessoren aufgebaut werden kann. Zur Vereinfachung der Darstellung ist jedoch nur die 16 Prozessoren umfassende Ausführungsform der vorliegenden Erfindung in Figur 2 gezeigt.
  • Bei der bevorzugten Ausführungsform der vorliegenden Erfindung ist der gemeinsame Speicher 600 in Speicherboards 800 so aufgeteilt, daß eine Speicherboard pro Endausgang in der letzten Schicht des Crossbar-Netzwerkes 400 vorhanden ist. Das in Figur 2 gezeigte, 16 Prozessoren umfassende Ausführungsbeispiel der vorliegenden Erfindung umfaßt also 64 Speicherboards 800.
  • Bei der bevorzugten Ausführungsform der vorliegenden Erfindung ist jede Schicht des Crossbar-Netzwerkes 400 aus modularen 4 x 4 Crossbar-Umschaltern 500 aufgebaut. Jeder Crossbar-Umschalter 500 besitzt die Fähigkeit, Daten von einem der vier Eingänge zu einem der vier Ausgänge zu steuern. Das Crossbar- Netzwerk 400 zwischen dem Prozessornetzwerk 100 und dem gemeinsamen Speicher 600 für ein nicht gezeigtes, 4 Prozessoren umfassendes Ausführungsbeispiel der vorliegenden Erfindung besteht aus einer einzelnen Schicht von 4 x 4 Crossbar-Umschaltern 500. Das in Figur 2 gezeigte, 16 Prozessoren umfassende Ausführungsbeispiel der vorliegenden Erfindung besteht aus zwei Schichten von Crossbar-Umschaltern 500. Eine Schicht an Crossbar-Umschaltern 500, die viermal so breit ist wie die zuletzt genannte, wird dem Netzwerk hinzugefügt, wenn sich die Zahl der Prozessoren 101 und der Speicherbänke 800 um den 4 Faktor erhöht. Deshalb besteht das 1024 Prozessoren umfassende Ausführungsbeispiel der vorliegenden Erfindung aus 5 Schichten an Crossbar-Umschaltern 500.
  • Obwohl die bevorzugte Ausführungsform der vorliegenden Erfindung 4 x 4- Crossbar-Umschalter 500 verwendet, werden die Fachleute ohne weiteres zu schätzen wissen, daß die Crossbar-Umschalter 500 mit jeder Zahl an Eingängen und Ausgängen ausgestattet werden können. Beispielsweise könnte das Crossbar- Netzwerk 500 der vorliegenden Erfindung eine 8 x 8, 2 x 2, 2 x 4, 4 x 2 usw. Gestaltung aufweisen. Ergänzend werden die Fachleute bemerken, daß sich das Verhältnis von Prozessoren zu Speicherboards ändert, wenn sich die Zahl an Eingängen und Ausgängen in einem Crossbar-Umschalter ändert. Die Fachleute werden erkennen, daß diese und andere alternative Ausführungsformen an die Stelle des gezeigten, besonderen Ausführungsbeispiels treten können, ohne daß von dem Geist der Erfindung abgewichen wird.
  • Bei der vorliegenden Erfindung gestattet die Modularität der Architektur in den Prozessoren 101, dem Crossbar-Netzwerk 400 und den Speicherboards 800 die Konstruktion jeder Größe an Rechenmaschine der vorliegenden Erfindung durch einfache Reproduktion. Die gleichen Module, welche das kleinste System umfassen, können ohne Modifikation verwendet werden, um die größten aufzubauen. Die Fachleute werden ohne weiteres erkennen, daß sie unabhängig von der zur Implementation gewählten Technologie sind, da die Modularität und Erweiterbarkeit der vorliegenden Erfindung in der Architektur inherent sind.
  • Prozessorentwurf
  • Die Figuren 3A und 3B zeigen ein Blockdiagramm eines Prozessors 101 von der Art, wie er in der vorliegenden Erfindung verwendet wird. Bei der bevorzugten Ausführungsform der vorliegenden Erfindung ist der Prozessor 101 im wesentlichen ein modifizierter Cray-2-Typ-Prozessor, der durch die Cray Research Inc. hergestellt wird, der Rechtsnachfolgerin der vorliegenden Erfindung.
  • Jeder Prozessor 101 beinhaltet einen Satz an 8 Anweisungspipelines oder "Threads" 110a-h. Jeder Thread 110a-h weist seinen eigenen zugewiesenen Satz an 8 Anweisungspuffern 112 auf. Die Anweisungspuffer sind Blocks von Hochgeschwindigkeitsanweisungsspeicher und bilden die Anweisungspipelines für jeden Thread. Der Betrieb eines Satzes an Anweisungspuffern in Einzel-Thread- Maschinen der Cray Research Inc. ist in dem am 5. Dezember 1978 herausgegebenen US-Patent Nr. 4,128,880 (Cray, Jr.), welches an die Rechtsnachfolgerin der vorliegenden Erfindung übertragen worden ist und durch Bezugnahme hierin zum Gegenstand gemacht wird, näher beschrieben.
  • Die vorliegende Erfindung verbirgt Systemlatenzzeiten durch Kontextumschaltung zwischen den Threads in einem Prozessor. Die vorliegende Erfindung verwendet ein "auf Bedarf (on demand)"-Kontext-Umschaltverfahren, wobei ein Prozessor 101 einen ausgewählten Thread jeweils solange ausführt, wie der Thread auf keine die Ausgabe blockierende Datenabhängigkeit aus dem gemeinsamen Speicher trifft. Der Prozessor der bevorzugten Ausführungsform der vorliegenden Erfindung führt eine Kontextumschaltung nur aus, wenn ein Thread einem Halteausgabezustand begegnet, der durch Daten verursacht worden ist, die nicht aus dem gemeinsamen Speicher empfangen worden sind. Ein derartiger Zustand tritt auf, wenn eine Anweisung die Verwendung eines Registers, das auf Grund einer Eingabe aus dem gemeinsamen Speicher reserviert ist, an einer Verzweigung zu einer Speicherstelle, die sich nicht in den Anweisungspuffern befindet, aufruft, oder wenn ein Prozessor auf ein Semaphor aus dem gemeinsamen Speicher wartet (dh. bei Prozessorsynchronisationsverzögerungen). Eine Anschlußblockade, die auftritt, wenn ein Prozessor versucht, aus dem gemeinsamen Speicher zu lesen oder in diesen zu schreiben, verursacht keine Kontextumschaltung. Nur wenn ein Thread versucht, Daten aus dem gemeinsamen Speicher zu verwenden und diese Daten noch nicht eingegangen sind, wird eine Kontextumschaltung durchgeführt. Wird eine Blockade aufgefunden, deaktiviert der Prozessor 101 den augenblicklichen Thread und führt eine Kontextumschaltung zu dem nächsten Thread gemäß der zyklischen Reihenfolge (round robin order) durch. Ein Thread wird nicht in den Prozessor kontextrückumgeschaltet, bis alle seine datenbedingten Ausgabeblockaden aus dem gemeinsamen Speicher aufgelöst sind.
  • Wird beispielsweise angenommen, daß der Prozessor 101 Thread 110a aktiviert, führt der Prozessor 101 die Anweisungen im Thread 110a, die in den Anweisungspuffern dieses Threads enthalten sind, aus, bis er auf eine Ausgabeblockadedatenabhängigkeit aus dem gemeinsamen Speicher stößt, wobei er an diesem Punkt den Thread 110a deaktiviert, überprüft, ob alle Blockaden des Threads 110b aufgelöst sind, und führt, falls dies der fall ist, eine Kontextumschaltung zu dem Thread 110b durch. Der Prozessor 101 führt dann die Anweisungen in dem Thread 110b, die in den Anweisungspuffern dieses Threads enthalten sind, aus, bis er auf eine Ausgabeblockadedatenabhängigkeit aus dem gemeinsamen Speicher stößt, überprüft, ob alle Ausgabeblockaden des Threads 110c aufgelöst sind, und führt, falls dies zutrifft, eine Kontextumschaltung zu dem Thread 110c durch usw. Ab dem Thread 110h erfolgt durch den Prozessor 101 eine Kontextrückumschaltung zu dem Thread 110a. falls in dem vorstehend erläuterten Beispiel der Thread 110b nicht seine Blockaden aufgelöst hat, wenn der Thread 110a auf eine Blockade stößt, würde der Prozessor 101 einfach überprüfen, ob alle Blockaden des Thread 110c aufgelöst sind, und falls dies zutrifft, eine Kontextumschaltung zu dem Thread 110c durchführen, usw. Der Prozessor 101 würde damit fortfahren, den Kontext zwischen den Threads in dieser zyklischen Reihenfolge (round robin fashion) umzuschalten, bis eine Ausführung des Programms bzw. der Programme vollständig durchgeführt ist.
  • Bei der bevorzugten Ausführungsform der vorliegenden Erfindung war die Anzahl der Threads 110 in jedem Prozessor 101 auf 8 festgelegt worden, um sicherzustellen, daß Blockaden, die eine Kontextumschaltung von einem Thread zu einem weiteren verursachen, bis zu dem Zeitpunkt aufgelöst werden, bei dem der Prozessor 101 wieder diesen besonderen Thread zur Ausführung auswählt. Das Auflösen aller speicherbezogenen Datenabhängigkeiten muß zuverlässig in einer Zeit, die kürzer ist als das Produkt aus der Zahl der Programm-Threads mal dem "typischen" Zeitbetrag, den jeder Threads aktiv bleibt, stattfinden. Für eine 16 Prozessoren umfassende Ausführungsform der vorliegenden Erfindung, die 4 x 4 Crossbar-Umschalter verwendet und für die ein 13 Taktperiodespeicherbankzykluszeit angenommen wird, haben Simulationen eine durchschnittliche Einzelspeicherreferenzlatenzzeit von annähernd 53 Taktperioden erbracht. Wenn demnach jeder Thread in dem System für zumindest 7 Taktperioden in dem System laufen kann, ohne auf eine Blockade zu stoßen, werden nur 8 unbezogene Programm-Threads benötigt, um eine 53 Taktperiodenlatenzzeit zu überdecken. Da die vorliegende Erfindung die Vektorverarbeitung verwendet, bei der eine einzelne Vektoranweisung die Prozessorresourcen für bis zu 64 Takte beschäftigen kann, wird der fachmann erkennen, daß sich die Chancen, daß ein einzelner Thread für 7 oder mehr Taktperioden aktiv sein wird, deutlich verbessert haben. Sogar wenn ein Programm eine verhältnismäßig geringen Prozentsatz an Vektorcodes beinhaltet (dh. nur ein Thread beinhaltet Vektoranweisungen), würde noch sämtliche Latenzzeiten verdeckt werden. Deshalb wurde die Anzahl der in einem Prozessor 101 in der bevorzugten Ausführungsform der vorliegenden Erfindung innewohnenden Programm-Threads für ein System, das 16 Prozessoren aufweist, mit 8 gewählt. Bei hochparallelen Systemen, die mehr Prozessoren besitzen und eine größere Anzahl an Vektorcodes beinhaltenden Threads aufweisen, haben Simulationen erbracht, daß nur 4 Threads notwendig sind, um adequat Systemlatenzzeichen zu verbergen. Die Fachleuten werden zu schätzen wissen, daß die verhältnismäßig kleine Zahl an Threads pro in der vorliegenden Erfindung verwendeten Prozessor erheblich den Systemaufwand verringert, der mit dem Betriebssystemmanagement und dem Compileraufgabenzuweisung verbunden ist.
  • Alternative Ausführungsformen, die weniger Prozessoren aufweisen, würden mehr als adequat bedient werden, solang die größte Systemspeicherlatenzzeit verborgen ist. Andere alternative Ausführungsformen der vorliegenden Erfindung können durch Kombination verschiedener Anzahlen an Prozessoren mit unterschiedlichen Anzahlen an Threads für jeden Prozessor erhalten werden, wobei nur die einzige Beschränkung darin besteht, daß die Systemlatenzzeiten verborgen werden. Die Fachleute werden ohne weiteres erkennen, daß diese und andere alternative Ausführungsformen darauf abzielen, den gleichen Zweck wie bei dem hierin beschriebenen, bevorzugten Ausführungsbeispiel zu erreichen, und daß diese anstelle der gezeigten, besonderen Ausführungsform treten können, ohne daß von dem Geist der Erfindung abgewichen wird.
  • Bei der bevorzugten Ausführungsform der vorliegenden Erfindung sind die einzigen Blockaden, welche eine Kontextumschaltung verursachen, Speicherleseabhängigkeiten, Sprungbefehle oder Prozessorsynchronisationsverzögerungen. Mit Absicht überdeckt der Kontextumschalt-Vektorprozessor der vorliegenden Erfindung nicht diejenigen Pipelinelatenzzeiten im Inneren des Prozessors, welche während der Verarbeitung auftreten können, wie die Latenzzeiten von Funktionseinheiten, die Datenabhängigkeitsausgabeblockaden verursachen. Jedoch sind die Latenzzeiten der Funktionseinheiten festgelegte, gut bekannte Größen (beispielsweise eine Gleitkommamultiplikationslatenzzeit oder eine Gleitkommaadditionslatenzzeit). Ausgereifte Compilertechniken können diese bekannten Latenzzeiten vorteilhaft nutzen und Skalaranweisungen in parallelen Threads hinter den Vektoranweisungen mit großer Genauigkeit verbergen. Somit kann der Compiler sehr effektiv die Optimierung des Codes durchführen, um den Vorteil der Kontextumschaltung zu nutzen. Ein weiterer Grund für die Nichtdurchführung von Kontextumschaltungen auf Grund von Latenzzeiten der Funktionseinheiten liegt darin, daß sinnlose "Herumlaufen (spinning)" der Kontexte bei bemerkbaren Vergrößerungen des Vektorcodes, was Hauptresourcen für Vektorlängentaktperioden beschäftigt und dabei wirksam alle Threads daran hindert, irgendwelche Anweisungen auszugeben, vermieden werden soll.
  • Der Prozessorentwurf mit mehreren Threads der vorliegenden Erfindung eignet sich insbesondere auch gut zu Codeprogrammieroptimierungen. Da der Programmierer häufig zum Zeitpunkt der Programmierung die Datenabhängigkeiten kennt, die während der Ausführung des Codes auftreten werden, sind die Kontextumschaltungen, die während der Ausführung in den Prozessoren der vorliegenden Erfindung auftreten werden, gut vorhersehbar. Da deshalb der Programmierer weiß, daß ein bestimmter Thread des Codes die Steuerung der Prozessorresourcen zu einer bestimmten Zeit komplett übernommen haben wird, können anspruchsvolle Programmiertechniken eingesetzt werden, um die Mehrfach-Threadverarbeitung der vorliegenden Erfindung zu nutzen. Ein Programmierer könnte z.B. einen Code entwerfen, um ein Gleitkommavektoraddition auszuführen und dann einige Skalaranweisungen dahinter verbergen, um diese auszuführen, während die Gleitkommaadditionsanweisung auf Grund der Latenzzeit der Ergebnisfunktkionseinheit, welche keine Kontextumschaltung bewirkt, wartet. Um dies zu tun, muß der Programmierer einfach den Code derart entwerfen, daß sich die Skalaranweisung in dem gleichen Thread befindet und unmittelbar der Gleitkommavektoraddition folgt.
  • Jeder Thread in einem Prozessor 101 erfordert eine unabhängige und eigens zugeordnete Kopie seiner vollständigen Registerresourcen. Die Figur 3A zeigt, daß ein Prozessor 101 8 Sätze an Adressenregistern 120a-h, 8 Sätze an Skalarregistern 130a-h und 8 Sätze an Vektorregistern 140a-h umfaßt. Jeder Adressenregistersatz (z.B. Satz 120a) beinhaltet 8 Adressenregister 122. In ähnlicher Weise beinhaltet jeder Skalarregistersatz (z.B. 130a) und jeder Vektorregistersatz (z.B. 140a) jeweils 8 Skalarregister 132 bzw. 8 Vektorregister 142. Die Adressenregister 122, die Skalarregister 132 und die Vektorregister 142 sind ausführlicher in dem am 5. Dezember 1978 mit dem Titel "COMPUTER REGISTER PROCESSING" herausgegebenen US-Patent Nr. 4,128,880 (Cray, Jr.) und in dem am 28. April 1987 herausgegebenen US-Patent Nr. 4,661,900 (Chen und andere) mit dem Titel "FLEXIBLE CHAINING IN VECTOR PROCESSOR WITH SELECTIVE USE OF VECTOR REGISTERS AS OPERANDS AND RESULT REGISTERS" beschrieben, welche beide an die Cray Research Inc. übertragen worden sind, die die Rechtsnachfolgerin der vorliegenden Erfindung ist, und welche durch Bezugnahme hier einbezogen werden.
  • Kurz gesagt, besitzt jeder der 8 Threads 110a-h in einem Prozessor 101 seinen eigens zugeordneten Satz an 8 Adressenregistern 120a-h, einen Satz an 8 Skalarregistern 130a-h und einen Satz an 8 Vektorregistern 140a-h. Jeder dieser Registersätze sind eigens einem Thread zugeordnet; deshalb korrespondiert jeder der 8 unabhängigen Registersätze in einem Prozessor 101 der vorliegenden Erfindung zu einem unterschiedlichen Anweisungs-Thread. Beispielsweise korrespondieren der Adressenregistersatz 120a, der Skalarregistersatz 130a und der Vektorregistersatz 140a alle zu dem Thread 110a und sind diesem eigens zugeordnet; der Adressenregistersatz 120b, der Skalarregistersatz 130b und der Vektorregistersatz 140b korrespondieren alle zu dem Thread 110b und sind diesem eigens zugeordnet; usw. Die Fachleute werden zu schätzen wissen, daß die Bereitstellung eines Registersatzes für jeden Thread die Bearbeitungsgeschwindigkeit und die Effektivität gegenüber einem Schema steigert, bei dem mehrfache Threads einen einzelnen Registersatz gemeinsam nutzen; das Schema, das in der bevorzugten Ausführungsform der vorliegenden Erfindung verwendet wird, beseitigt den andernfalls erforderlichen, langen und zeitaufwendigen Prozess der Sicherung jedes Registerzustandes eines Threads, jedesmal wenn eine Kontextumschaltung stattfindet.
  • Jeder Thread 110a-h erfordert jeweils nur 8 Register von jedem Registertyp (Adressen-, Skalar- und Vektorregister) aufgrund der fähigkeit des Kontextumschaltungsprozessors der vorliegenden Erfindung Speicherlatenzzeiten zu verbergen. Die Fachleute werden ohne weiteres erkennen, daß die kleine Anzahl an Registern pro Prozessor erheblich die Komplexität und die physische Größe des Prozessors, der in der bevorzugten Ausführungsform der vorliegenden Erfindung verwendet wird, verringert. Ersten wird die Ausgabesteuerung erheblich vereinfacht und zweitens wird die Verwendung von Anweisungsbündeln größer als 16 Bits verhindert, wodurch mehr Anweisungen in die durch Pipelines geführten Threads packbar sind und der Speicherverkehr in den Crossbar- Netzwerken infolge der Anweisungsabrufe verringert wird.
  • Obwohl jeder Thread in einem Prozessor eine unabhängige sowie eigene Kopie seines kompletten Registers an Resourcen benötigt, sind 8 vollständige Kopien von allen assozierten Registersteuerungen (wie Vektorlängen- und Adreßzähler, Reservierungsmarken usw.) zusammen mit 8 Weg-Multiplexschaltungen, um die Daten zwischen dem aktiven Thread und den Funktionseinheiten zu steuern, nicht notwendig. Die Fachleute werden erkennen, daß verschiedene Kompromißstufen möglich sind, welche den Einfluß von mehreren Threads auf die Prozessorkomplexität minimieren und welche eine deutliche Wirkung auf die Hardwareebenen haben.
  • Beispielsweise könnte in einer möglichen Ausführungsform der vorliegenden Erfindung eine einzelne RAM-Bank für jedes Register verwendet werden, wobei der RAM eine Größe gleich der Anzahl an Threads mal der Anzahl an Elementen in dem Register aufweist. Beispielsweise würde der RAM für das Vektorregister VO in einem 8-Thread-Prozessor 64 Elemente mal 8 Threads oder 512 Wörter tief sein. Das einfache Basisadressenregister wählt den aktiven Thread durch Zeigen auf einen 64 Elementebereich in dem RAM aus. Diese Implementation weist mit Ausnahme des Thread-Zeigers die Hardwarevorteile der nicht mehr Erforderlichkeit der Registersteuerungshardware wie bei einem einzelnen Kontextprozessor auf. Nur der eigentliche RAM ist vergrößert worden. Der Nachteil besteht darin, daß eine Registerreservierung auf VO für irgendeinen Thread für alle Threads gilt. Unnötige Ausgabeblockaden auf Grund von Speicherkonflikten zwischen Kontexten werden durch die zusätzlichen Registerabhängigkeiten hervorgerufen, selbst wenn die Funktionsresource frei sein sollte.
  • Die Registerabhängigkeit kann in einer zweiten Ausführungsform der vorliegenden Erfindung vermieden werden, wobei Mehrfach-RAM-Bänke für jedes Register verwendet werden und wobei jede Bank noch Mehrfach-Thread-Sätze beinhaltet, die durch einfache Zeiger adressiert werden. Eine Verbesserung zu dem vorstehend erwähnten Einzelbankbeispiel würde darin bestehen, zwei RAM- Bänke zu haben, wobei jede 4 Programm-Threads beinhaltet. Die Bank würde geradzahlige Threads und die andere Bank ungeradzahlige Threads behandeln. Der aktive Thread würde zwischen den Bänken wechseln. Da aufeinanderfolgende, aktive Threads sich in verschiedenen Bänken aufhalten würden, würden die Thread-Abhängigkeiten minimiert werden. Nur ein Zwei-Wege-Multiplex zwischen den Registern und den Funktionsresourcen wird mit zwei Sätzen an Registersteuerungen benötigt.
  • Da wachsende Schaltungsintegrationen gestatten, größere Skalierungsparallelsysteme anzuwenden, werden die Fachleute ohne weiteres erkennen, daß eine zunehmende Anzahl an Kontexten durch logische Erweiterungen dieses Schemas umfaßt werden können. Beispielsweise können sich 16 Threads in 4 Bänken von jeweils 4 Threads oder 64 Threads in 8 Bänken von 8 Threads befinden. Solche großen Zahlen an verfügbaren Kontexten würden Computern mit extremer, massiver Parallelität erlauben, effektiv die Latenzzeit eines gemeinsam genutzten Speichers zu verbergen.
  • In der bevorzugsten Ausführungsform der vorliegenden Erfindung kann ein Prozessor 101 eine Anweisung pro Taktperiode aus dem aktiven Thread und zwei FLOPS (Gleitkommaoperationen pro Sekunde) pro Taktperiode ausführen. Deshalb ist z.B. jeder Prozessor 101 der vorliegenden Erfindung bei einer Taktgeschwindigkeit von 4 Nanosekunden zu einer Spitzenausführungsrate von 250 MIPS (Millionen Instruktionen pro Sekunde) und 500 MFLOPS (Millionen Gleitkommaoperationen pro Sekunde) in der Lage. Systemspitzenleistungen (1024 Prozessoren) bei 4 Nanosekunden würden 256 GIPS und 512 GFLOPS (Giga Flops) sein. Bei einer 2 Nanosekundentaktperiode betragen die Prozessorspitzenraten 500 MIPS und 1 GFLOP für eine korrespondierendes Systemspitze mit 1024 Prozessoren von 512 GIPS und 1 TERAfLOP. Diese Zahlen würden sich wiederum für ein System verdoppeln, welches einen Entwurf mit einer Nanosekunde Taktperiode aufweist.
  • In der bevorzugten Ausführungsform der vorliegenden Erfindung hat jeder der Threads 110a-h Zugriff zu einem kleinen, lokalen Hochgeschwindigkeits-"Notizblockspeicher (Scratch-pad)"-Speicher 160a-b. falls notwendig, können Register zu diesen Notizblock-Speichern 160a-h überlaufen. Ebenso können Konstanten, Tabellenwerte, Kennzeichen (tags) zur Thread-Identifikation und Management usw. darin gehalten werden. Zugriff zu den Notizblock-Speichern 160a-h erfolgt in Echtzeit, und Latenzzeiten, die damit verbunden sind, verursachen keine Kontextumschaltung.
  • Die 8 Threads 110a-h eines Prozessors 101 der vorliegenden Erfindung nutzen gemeinsam die Funktionseinheitenresourcen innerhalb eines Prozessors 101. Getrennte Adressenfunktionseinheiten 200 sind mit den Sätzen an Adressenregistern 120a-h verbunden, die Sätze an Skalarregistern 130a-h werden durch Skalarfunktionseinheiten 202 unterstützt und die Sätze an Vektorregistersätzen 140a-h werden durch Vektorfunktionseinheiten 206 unterstützt. Gleitkommafunktionseinheiten 204 werden gemeinsam durch die Skalar- und Vektorregistersätze genutzt. Die Fachleute werden ohne weiteres erkennen, daß die Resourcen an Funktionseinheiten erweitert werden können, um weniger oder zusätzliche Operationen der Funktionseinheiten gegenüber der in Figur 3A gezeigten Form miteinzubringen, ohne sich von dem Geist der Erfindung zu entfernen. In der bevorzugten Ausführungsform der vorliegenden Erfindung sind alle Operanden 64 Bits breit.
  • Jeder Prozessor 101 in der bevorzugten Ausführungsform der vorliegenden Erfindung weist 3 Anschlüsse zu einem gemeinsamen Speicher, nämlich die Anschlüsse A, B und C auf (die in Figur 1 nicht gezeigt sind). Anschluß A ist ein Read-Only-Anschluß, der von Multianschluß-Vektor-Lesespeicher-Referenzen und I/O-Speicher-Lese-Referenzen genutzt wird. Anschluß B ist ebenfalls ein Read-Only-Speicher, der von Multianschluß-Vektor-Lesespeicher-Referenzen und Anweisungsabrufungen genutzt wird. Anschluß C ist ein Lese/Schreib-Anschluß, der einzelne Anschlußvektorauslesungen, Vektoreinschreibungen, Skalarauslesungen und -einschreibungen sowie I/O-Einschreibungen in den gemeinsamen Speicher behandelt. Jeder Anschluß weist zwei Hauptabschnitte, die Eingabeschaltung und die Ausgabeschaltung auf.
  • Figur 4A zeigt ein Blockdiagramm der Eingabeschaltung 300 des Anschlusses A, Figur 4B ein Blockdiagramm der Eingabeschaltung 302 des Anschlusses B und Figur 4C ein Blockdiagramm der Eingabeschaltungen 304 des Anschlusses C. An den Read-Only-Speicheranschlüssen A und B sind die Eingabeschaltungen 300 und 302 in der Lage, eine Nachricht (message) aus dem Speicher pro Taktperiode zu empfangen, die aus 88 Datenbits, 16 Bankadressenbits (für fehleraufzeichnung), 16 Zielcodebits (zum internen Steuern zu dem Prozessor) und aus einem Gültigkeitsbit bestehen. An dem Lese/Schreib-Speicheranschluß C besitzt die Eingabeschaltung 304 die fähigkeit, eine Nachricht pro Taktperiode aus dem Speicher zu empfangen. Fall s die ursprüngliche Anforderung ein Leseauftrag war, weist die Eingabenachricht die gleichen Teile wie die Eingabenachricht für die Read-Only-Anschlüsse plus einem zusätzlichen Bit auf, das angibt, daß die Referenz ein Lesebefehl war. Wenn jedoch die Anforderung ein Speicherschreibauftrag war, werden die Eingabespeicherbits neu belegt, um nur genugend Information zur Schreibbeendigungsabrechnung (write completion accounting) vorzusehen, nämlich 3 Bits an Kontextinformation und ein Gültigkeitsbit. Mit Ausnahme dieser speziellen Anzapfung (tap) an dem Lese/Schreib- Eingabeanschluß zur Schreibbeendigungsabrechnung sind alle drei Anschlußeingabeschaltungen annähernd identisch. Jede weist eine Fehlerkorrektur- und fehlererfassungseinheit 320, fehleradressenspeicher 314 und Steuerschaltungen 312 auf, um die Speicherdaten zu dem in dem Ziel code spezifizierten Prozessorresourcen zu führen.
  • Die Figur 5A zeigt ein Blockdiagramm einer Ausgabeschaltungen 354 für den Anschluß A, Figur 5B zeigt ein Blockdiagramm einer Ausgabesschaltungen 352 für den Anschluß B und Figur 5C zeigt ein Blockdiagramm einer Ausgabeschaltungen 354 für den Anschluß C. An den Read-Only-Speicher-Anschlüssen A und B ist die Ausgabeschaltung 350 und 352 in der Lage, eine Nachricht zu dem Speicher pro Taktperiode zu übermitteln. Jede Nachricht besteht aus 34 Adressenbits, 2 Modusinformationsbits (für die gemeinsam genutzten Register), 16 Zielcodebits und ein Gültigkeitsbit. An dem Lese/Schreib-Speicher-Anschluß C hat die Ausgabeschaltung 355 die Möglichkeit, eine Nachrciht pro Taktperiode zu dem Speicher zu senden. Diese Nachricht kann aus einer Leseanforderung oder einer Schreibeanforderung bestehen. falls es eine Schreibanforderung ist, weist die Nachricht 34 Adressenbits, 88 Datenbits, 2 Modusinformationsbits der gemeinsam genutzten Register, 3 Kontextinformationsbits (zur Schreibbeendigungsabrechnung), ein Schreibbit und ein Gültigkeitsbit auf. Wenn die Nachricht eine Leseanforderung ist, werden die Bits in dem Datenfeld neu zugeordnet, so daß die Nachricht die gleiche Information wie die Ausgabenachricht aus dem Read-Only-Anschlüssen trägt.
  • Wie bei den Eingabeschaltungen sind die Strukturen der drei Ausgabeschaltungsanschlüsse einander ähnlich, wobei nur die Bitbreiten der Nachrichten und die Prozessorresourcen, die zu dem Anschluß gesteuert werden, verschieden. Diese Spezifikation wird deshalb den Betrieb der Anschlußausgabeschaltung unter Bezugnahme auf Figur 5A beschreiben. Die Fachleute werden ohne weiteres erkennen, daß die folgende Beschreibung ebenso leicht für die Ausgabeschaltung 352 des Anschlusses B, die in Figur 5B gezeigt ist, und die Ausgabeschaltung 354 des Anschlusses C, die in Figur SC gezeigt ist, mit nur geringfügigen Unterschieden verwendet werden kann.
  • Es wird nun auf Figur 5A Bezug genommen, wobei Daten aus den Prozessorresourcen in dem Speicheranschlußaddierwerk 360 gemischt werden. Dieses Addierwerk 360 ist in der Lage, 3 Zahlen pro Taktperiode zu summieren. Bei der ersten Taktperiode einer Vektor- oder Blockübertragung sind diese Zahlen die Basisadresse, die Starttadresse und der Inkrementwert. Danach sind die Zahlen der Inkrementwert und die zurückgeführte Absolutadresse. Skalarreferenzadressenarithmetik kann das Zusammenzählen der Basisadresse, einer Konstanten aus dem Anweisungsstrom und eines die Speicheradresse wiedergebenden Registerwertes mit sich bringen, um die Absolutadresse zu bilden. Diese Absolutadresse wird darauf getestet, ob sie größer als oder gleich der Basisadresse ist, und ob sie kleiner als oder gleich zu der Grenzwertadresse (limit address) ist. Die Basis- und die Grenzwertadressen können einen von bis zu 8 Sicherungsblocks im Speicher representieren. Ein ausgewählter Block wird durch eine Benutzeranweisung gesichert. Parallel zu den Adressenmanipulationen werden fehlerkorrektur- und Fehlererfassungscodebits auf den Schreibdaten erzeugt.
  • Jeder Anschluß weist mit ihm verbundene Doppelreferenzpuffer, Referenzpuffer A 362 und Puffer B 364 auf. Jeder Referenzpuffer ist in der Lage, falls notwendig, einen gesamten 64 Elemente-Vektorstrom aufzunehmen. Die Referenzpuffer werden abwechselnd in dem Fall benutzt, bei dem das Speicher-Crossbar-Netzwerk nicht in der Lage ist, Nachrichten mit der Rate von einer pro Taktperiode zu akzeptieren.
  • Ein Lese-Schreibzeiger ist in jedem Referenzpuffer A 362 und B 364 vorhanden. Wenn diese Zeiger gleich sind, ist der Puffer leer. Wenn das Speicher-Crossbar-Netzwerk nicht in der Lage ist, den aus der Anschlußadressaddierwerk 360 und den Fehlerkorrektur/-Erfassungsschaltungen herauskommenden Nachrichtenstrom aufrechtzuerhalten, werden die Nachrichten in einen Referenzpuffer an Pufferadressen eingeschrieben, die durch den Schreibzeiger angegeben werden, der dann für jede Nachricht inkrementiert. Wird nach dem Start der Taktperiode ein erster "Widerstand" in einem Strom aufgefunden, und werden alle nachfolgenden Nachrichten in dem Strom in den Referenzpuffer eingeschrieben. Nachrichten, die in das Crossbar-Netzwerk einzubringen sind, kommen nun aus den Referenzpufferadressen, die durch den Lesezeiger bezeichnet werden, anstatt direkt aus dem von dem Prozessor kommenden Nachrichtenstrom zu stammen. Der Lesezeiger inkrementiert jedesmal dann, wenn eine Nachricht durch das Netzwerk akeptiert wird, bis die Lese- und Schreibezeiger gleich sind und der Strom vollständig ist. Die Zeiger sind vor dem nächsten Referenzstrom wieder bereitgestellt.
  • Während ein Referenzpuffer dabei ist, geleert zu werden, kann ein Strom an Speicherreferenzen in den anderen Puffer geladen werden. Wenn der erste Puffer leer ist, werden die Nachrichten aus dem Kopf (head) des zweiten Puffers zu dem Speicher-Crossbar-Netzwerk ohne Verzögerung gesendet. Der leere, erste Puffer ist dann in der Lage, den nächsten Strom an Referenzen aus dem Prozessor aufzunehmen. Aus diesem Grund wird ein blockierter Speicheranschluß weiterhin zwei an diesen Anschluß gerichtete, komplettlange Vektorreferenzen bis zur Beendigung aus Sicht des Prozessors laufen lassen.
  • In der bevorzugten Ausführungsform der vorliegenden Erfindung werden Speicherreferenznachrichten aus dem Referenzpuffer A 362, B 364 oder dem Prozessor zu einem von 4 Sätzen an Quadranten-Puffern durch ein Decodieren des niedrigwertigsten zweier Bits der Nachrichtensteueradresse gesteuert. Jeder Satz an Quadranten-Puffern ist aus 3 Puffern gebildet, wobei jeder in der Lage ist, eine Nachricht aufzunehmen. Nachrichten gelangen in den Puffer C 374, falls er leer ist, oder in den Puffer B 372, falls der Puffer C 374 5besetzt ist und Puffer B 372 leer ist, oder in den Puffer A 370, falls beide Puffer B 372 und C 374 besetzt sind und A 370 leer ist. Daten können sich ebenso aus dem Puffer A 37O zu B 372 und aus dem Puffer B 372 zu C 374 bewegen. Die Nachrichtenreihenfolge wird zwischen den 3 Quadranten-Puffern aufrechterhalten. Fall s alle 3 Puffer Daten enthalten und Puffer C 374 leer ist, wird B 370 zu C 374 bewegt werden, A 370 zu B 372 bewegt werden und jede wartende neue Nachricht wird in den Puffer A 370 gelangen.
  • Die Speichernachrichten werden in 2 Pakete in dem Quadranten-Puffer C 374 aufgetrennt, wenn sie zur ersten Ebene der 4 x 4 Crossbar-Umschalter in dem Speicher-Crossbar-Netzwerk übertragen werden. Die Kommunikation zwischen dem Quadranten-Puffer C 374 und den Eingangspuffern der ersten Ebene des Crossbar-Netzwerkes ist die gleiche wie die zwischen irgendwelchen zwei 4 x 4 Crossbar-Umschaltern, wie dies nachstehend noch beschrieben wird. Auf Grund dieses Zweipaketepfades finden Datenbewegungen zwischen den Quadranten- Puffern am besten bei jeder zweiten Taktperiode statt. Jedoch können die Quadranten-Puffer bei einer Rate von einem pro Takt aus dem Prozessor oder aus den Referenzpuffern gefüllt werden. Die Zwei-Paketeorganisation der die Anschlußmittel verlassenden Speichernachrichten bedeutet, daß die Vektoroder Blockübertragungschritte, deren Anzahl das Mehrfache von 4 beträgt, bei einer maximalen Rate von einer Nachricht pro jeder zweiten Taktperiode ablaufen werden. Eine ungerade Anzahl an Schritten, Schritte von eins oder zwei, oder einem ungeraden vielfachen von zwei können bei einer Rate von einer Nachricht pro Taktperiode ablaufen.
  • Prozessor-zu-Speicher-Crossbar-Netzwerk
  • Figur 6 zeigt ein Blockdiagramm eines 4 x 4 Crossbar-Umschalters 500 der bevorzugten Ausführungsform der vorliegenden Erfindung. Die Fachleute werden erkennen, daß der Crossbar-Umschalter der vorliegenden Erfindung auch als ein 8 x 8, 2 x 2, 2 x 4, 4 x 2 usw. oder praktisch aus jeder m x n Anzahl von Eingängen und Ausgängen aufgebaut werden könnte, ohne daß vom Geist der Erfindung abgewichen wird. Jeder 4 x 4 Crossbar-Umschalter 500, der in der bevorzugten Ausführungsform der vorliegenden Erfindung verwendet wird, weist die Fähigkeit auf, Daten aus jedem der 4 Eingabepfade 502a-d zu einem der 4 Ausgabepfade 518a-d mit einer maximalen Übertragungszeit von 4 Taktperioden zu steuern. Identische Crossbar-Umschalter 400 werden sowohl in den Eingangsals auch in den Ausgangs-Crossbar-Netzwerken verwendet. Obwohl die folgende, ausführliche Beschreibung nur die Übertragung einer Ausgangsprozessor-zu- Speicher-Referenz durch ein Ausgangs-Crossbar-Netzwerk erläutert, ist es selbstverständlich, wie die Fachleute zu schätzen wissen werden, daß die Eingangs-Crossbar-Netzwerke im wesentlichen auf gleiche Art, wie bei der Übermittlung durch die Ausgangs-Crossbar-Netzwerke arbeiten, entsprechend der nachstehenden Beschreibung.
  • In der bevorzugten Ausführungsform der vorliegenden Erfindung werden Eingangs- und Ausgangsreferenzen durch die Crossbar-Netzwerke in zwei sequenziellen Paketen empfangen. für die Lese/Schreib-Anschlüsse enthält das erste Paket alle Steuerinformationen, wie Modusbits (mode bits), Zielcode, Bankbits (bank bits) oder Steuerbits und Chipadressen. Das zweite Paket enthält Daten. Für die Nur-Lese-Anschlüsse beinhaltet das erste Paket Steuerinformationen, wie Modusbits, Ziel codes sowie Bank- oder Steuerbits. Das zweite Paket enthält die Chipadressen. Die Fachleute werden ohne weiteres erkennen, daß dieses Verfahren der gleichmäßigen Verteilung der Referenzbits zwischen den zwei Paketen hilft, die zur Implementierung des Crossbar-Netzwerkes der vorliegenden Erfindung erforderlichen Verbindungen (interconnects) zu verringern.
  • In der bevorzugten Ausführungsform der vorliegenden Erfindung folgt das zweite Paket dem ersten Paket in und durch den Umschalter bei der unmittelbar folgenden Taktperiode, wobei es entlag des gleichen Verbindungungspfades wie das erste Paket läuft. Hierdurch benötigt jede Datenbewegung zwei Taktperioden. Das zweite Paket tritt aus dem Crossbar-Umschalter 500 genau eine Taktperiode später als das erste Pakt aus.
  • Die Fachleute werden ohne weiteres erkennen, daß die Paketierung der Speicherreferenzen und ihr aufeinanderfolgendes, periodisches Durchlaufen durch die Crossbar-Netzwerke 400 die Anzahl der zur Implementierung eines Crossbar-Umschalters erforderlichen Verbindungen um den Faktor 2 verringern. In modernen Entwürfen sind verhältnismäßig mehr Gatter (gates) innerhalb eines Chips vorhanden, als Verbindungen zur Verfügung stehen, um diese Gatter zu benutzen. Die Verbindungen sind deshalb die Engstellen-Resource in vielen Chipentwürfen. Wird beispielsweise angenommen, daß ein 4 x 4 Crossbar-Umschalter 4 unabhängige Pfade hinein und 4 unabhängige Pfade heraus sowie eine 120 Bit breite Memoryreferenz aufweist, so würde die Anzahl der Verbindungen, die zur Herstellung eines solchen Crossbar-Umschalters notwendig sind, deshalb 8 x 120 betragen. Die Fachleute werden ohne weiteres erkennen, daß dies eine sehr große Anzahl ist und zwar eine Anzahl, die sehr viel größer ist, als daß sie auf einen einzelnen Chip paßt, und tatsächlich sehr viel größer, als daß sie auf mehreren Chips untergebracht werden kann. Durch die Paketierung der Speicherreferenzen wird die 120 Bit breite Speicherreferenz um den Faktor 2 reduziert. Dies reduziert ebenfalls alle Systemverbindungen auf einen Faktor 2, eine Verringerung, welche sehr erheblich sein kann. Die Fachleute werden erkennen, das dieses Paketierungsverfahren, daß in der vorliegenden Erfindung verwendet wird, den Systementwurf so komprimiert, daß ein Crossbar-Umschalter mit weniger Chips implementiert werden kann.
  • Jede der Eingabepfade 502a-d des Crossbar-Umschalters 500 ist aus wenigstens einem Eingabepuffer gebildet. Die tatsächliche Anzahl der Eingabepuffer ist eine Variable, die davon abhängt, wie weit entfernt voneinander die Crossbar-Umschalter in den Crossbar-Netzwerken angeordnet sind. Die Zahl der Eingabepuffer in einem Crossbar-Umschalter ist variabel in Abhängigkeit der Laufzeit (round trip time) zur Kommunikation zwischen den Crossbar-Umschaltern. Da jede Taktperiode zu der Kommunikationszeit addiert wird, ist ein zusätzlicher Eingabepuffer notwendig. Der Zweck der Eingabepuffer liegt darin, die Kommunkationszeit zwischen den Crossbar-Umschaltern abzudecken, so daß mehrfache Nachrichtenpakete gesendet werden können. Bei der Ausführungsform der vorliegenden Erfindung, die in Figur 6 gezeigt ist, wo die Crossbar- Umschalter in einer Taktperiode kommunizieren, gibt es deshalb zwei Eingabepuffer, Puffer A 504 und Puffer B 506.
  • Jeder dieser Puffer 504 und 506 kann beide Pakete einer Nachricht aufnehmen. Eine in den Crossbar-Umschalter 500 durch einen der Eingabepfade 5502a-d hineingehende Nachricht wird zunächst in den korrespondierenden Puffer B 506 für diesen Pfad gespeichert, wenn dieser nicht bereits eine andere Nachricht enthält. Wenn der Puffer B 506 besetzt ist, wird die Nachricht stattdessen in dem Puffer A 504 gespeichert. Wird der Puffer B 506 leer, können dann die in dem Puffer A 504 enthaltenen Nachrichten in dem Puffer B 506 gespeichert werden. falls beide, Puffer B und Puffer A voll sind, wenn eine andere Nachricht den Zugriff versucht, wartet diese Nachricht, bevor sie in den Crossbar-Umschalter eintritt, einfach bis ein Puffer frei wird.
  • Ist das erste Paket einer Nachricht in den Puffer A 504 gespeichert, decodiert der Puffer B 506 die beiden Nachrichten-Steuerbits, um zu bestimmen, zu welchem der 4 Ausgabepfade 518a-d die Nachricht geführt werden soll. Auf diese Weise kann in der bevorzugten Ausführungsform der vorliegenden Erfindung der Puffer B 506 die gesamte Nachricht steuern, bevor beide Pakete der Nachricht vorhanden sind.
  • Nach dem der Puffer B 506 die beiden Nachrichten-Steuerbits decodiert hat, ersetzt der Puffer B 506 die beiden Nachrichten-Steuerbits in dem ersten Paket mit zwei Bits, die wiedergeben, von welchem der 4 Eingabepfade 502a-d die dem Crossbar-Umschalter 500 zugeführte Nachricht stammt. Auf diese Weise wird eine Rücksprungadresse zurück zu dem Erzeugerprozessor (orginating processor) in den Nachrichten-Steuerbits eingebaut, wenn eine Nachricht durch die aufeinanderfolgenden Schichten der Crossbar-Umschalter auf ihrem Weg zu dem gemeinsamen Speicher läuft. Nachdem die Daten aus dem Speicher abgerufen sind, wird die Prozessorrücksprungadressinformation in den Nachrichten- Steuerbits verfügbar, um die abgerufenen Daten zu dem Erzeugerprozessor zurückzuführen. In ähnlicher Weise steht für die Eingangsreferenzen eine Rücksprungadresse in den Nachrichten-Steuerbits zur Verfügung, die angibt, aus welcher Speicherbank die Referenz kam, wenn die Nachricht zurück zu dem Prozessor kommt. Wenn ein Fehler in den Daten vorlag, erkennt der Prozessor, von welcher Speicherbank die fehlerhafte Nachricht kam, wodurch die genaue Ermittlung, wo der Fehler geschah, erleichtert wird.
  • Dieses Bitersatzschema verringert die Systemverbindungen und die Nachrichtenlängen, da es die Notwendigkeit des Sendens der Prozessorrücksprungadresse zusammen mit der Nachricht eliminiert. Stattdessen verwendet das Bitersatzschema der bevorzugten Ausführungsform der vorliegenden Erfindung einfach die gleichen Bits und Verbindungen, um die Nachrichten auf dem Weg heraus zu steuern und um automatisch die Prozessor- oder Speicherbankrücksprungadresse zu generieren.
  • Die in dem Puffer B 506 decodierten Nachrichten-Steuerbits legen fest, zu welchem der 4 Quadranten-Puffer 508-514 eine Nachricht nach Verlassen des Puffers B 506 zugeführt wird. Wie bei den Eingangspuffern A 504 und B 506 kann jeder der Quadranten-Puffer B 508-514 beide Pakete einer Nachricht enthalten. Falls der Zielquadranten-Puffer 508-514 leer ist, kann eine Referenz den Puffer B 506 verlassen und in den entsprechenden Quadranten- Puffer 508-514 eingehen.
  • Der Zweck der Quadranten-Puffer 508-514 liegt darin, den Nachrichtenkonflikt und die Nachrichtenblockade in dem Crossbar-Netzwerk zu verringern. Wenn z.B. der Anschlußspfad 518a blockiert ist, wird der Ausgangspuffer 516a voll sein, wobei eine Nachricht darin enthalten ist, die darauf wartet, daß der Pfad frei wird. Wenn eine andere Nachricht, die sich auf dem Weg zu dem Anschlußpfad 518a befindet, in den Crossbar-Umschalter 500 auf dem Eingangspfad 502a einläuft, wird sich z.B. diese Nachricht in den Quadranten-Puffer 508a bewegen, wo sie darauf warten wird, daß die Ausgabewählschaltung 516a frei wird. Wenn dann eine zusätzliche Nachricht, die für einen anderen Anschlußspfad bestimmt ist, in den Eingangspfad 502a einläuft, wird der Zugriff dieser NAchricht auf ihren Zielausgang nicht blockiert, da sie sich einfach in den geeigneten Quadranten-Puffer hineinbewegt. Auf diese Weise können mehrere Nachrichten die Blockaden in dem Crossbar-Netzwerk "umgehen". Nur wenn ein Eingangspfad auf dem gesamten Weg zu den Eingangspuffern blokkiert ist, wird eine Nachricht, die in diesen Pfad einläuft, vollständig von allen Ausgangspfaden abgeblockt. Wenn die Quadranten-Puffer 508-514 in dem Crossbar-Umschalter 500 der vorliegenden Erfindung nicht vorhanden wären, würden alle 4 Ausgänge blockiert sein. Durch die Verwendung der Quadranten- Puffer 508-514 ist nur einer von 4 Ausgangspfaden in diesem Punkt blockiert. Die Fachleute werden ohne weiteres erkennen und zu schätzen wissen, daß die Quadranten-Puffer 508-514 erheblich die Möglichkeit des Konfliktes und der Blockade von Nachrichten in den Crossbar-Netzwerken verringert.
  • Nachdem beide Pakete einer Nachricht in einen der Quadranten-Puffer 508- 514 eingelaufen sind, wird die Nachricht in die Lage versetzt, aus der geeigneten Ausgangswählschaltung 516a-d herausgesteuert zu werden. Jede Ausgangswählschaltung 516 sucht nach geeigneten Nachrichten aus den entsprechenden Quadranten-Puffer 508-514 aus jedem Eingabepfad 502a-d. Beispielsweise sucht die Ausgangswählschaltung 516a für geeignete Nachrichten aus dem Quadranten "0"-Puffer 508a, 508b, 508c und 508d, die aus den Eingabepfaden 502a, 502b, 502c bzw. 502d in den Crossbar-Umschalter 500 eingelaufen sind. Wenn nur eine verfügbare Nachrichten in dem geeigneten Quadranten-Puffer 508- 514 vorhanden ist, überträgt die Ausgangswählschaltung 516a-d einfach diese zu dem entsprechenden Ausgangspfad 518. Wenn bei dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung mehr als eine geeignete Nachricht in dem entsprechenden Quadranten-Puffer 508-514 vorhanden ist, überträgt die Ausgangswählschaltung 516a-d die nächste Nachricht in zyklischer Reihenfolge (round robin order) aus dem letzten, gewählten Quadranten-Puffer. Wenn z.B. die Ausgangswählschaltung 516c den Quadranten-Puffer 512b zur Übertragung wählt, würde sie als nächstes den Quadranten-Puffer 512 zur Übertragung wählen, wenn 512 eine geeignete Nachricht besäße und mehr als eine geeignete Nachricht vorhanden wären.
  • Wenn eine Nachricht durch einen Ausgangspfad 518a-d des Crossbar-Umschalters 500 läuft, gelangt die Nachricht zu der nächsten Schicht der Crossbar- Umschalter (oder zu dem gemeinsamen Speicher, wenn sich der übertragende Crossbar-Umschalter in der letzten Schicht des Ausgangs-Crossbar-Netzwerkes befand, oder zu einem Prozessor, wenn sich der übertragende Crossbar-Umschalter in der letzten Schicht des Eingangs-Crossbar-Netzwerkes befand).
  • Die nachfolgende Tabelle zeigt den Verlauf einer Nachricht (die 2 Pakete der Nachricht werden als "Paket 0" und "Paket 1" bezeichnet) durch den Crossbar-Umschalter 500 der Figur 6 von dem Eingangspfad 0 502a zu Quad-3- Ausgangspfad 518d, wobei keine anderen, in Wettstreit liegenden Daten vorhanden sind:
  • Takt 0: Nachricht-(Msg.)-Paket 0 läuft in Pfad 502a Puffer B 506a ein.
  • Takt 1: Nachricht-(Msg.)-Paket 1 läuft in Pfad 502a Puffer B 506a ein. Nachricht-(Msg.)-Paket 0 läuft in Pfad 502a Quad 3 Puffer 514a ein.
  • Takt 2: Nachricht-(Msg.)-Paket 1 läuft in Pfad 502a Quad 3 Puffer 514a ein.
  • Quad 3 Ausgangswählschaltung 516d bemerkt geeignete Referenz.
  • Takt 3: Nachricht-(Msg.)-Paket 0 steuert zu Quad 3 Ausgabe 518d.
  • Takt 4: Nachricht-(Msg.)-Paket 1 steuert zu Quad 3 Ausgabe 518d.
  • Störungsfreie Kommunikation zwischen aufeinanderfolgenden Schichten des Crossbar-Netzwerkes der vorliegenden Erfindung wird durch Verwendung eines Antwortbits erreicht. Nachdem eine Nachricht von dem Puffer B 506 zu einem Quadranten-Puffer in dem Ziel-Crossbar-Umschalter geführt worden ist, gibt der Ziel-Crossbar-Umschalter ein einzelnes Antwortbit zurück zu dem übertragenden Anschluß des vorausgehenden Crossbar-Umschalters aus. Auf diese Weise "weiß" der übertragende Crossbar-Umschalter, daß er zwei Nachrichten zu dem Ziel-Crossbar-Umschalter senden kann (eine würde in den Puffer B 506 und die zweite in den Puffer A 504 einlaufen), bevor er unterbrechen muß, um daß Antwortbit zu erwarten. Ein einzelnes Antwortbit, daß vor der Übertragung zusätzlicher Nachrichten empfangen wird, bedeutet, daß Raum für ein weitere Nachricht in den Eingangspuffern A 504 und B 506 des Ziel-Ccrossbar-Umschalters vorhanden ist. 2 Antwortbits bedeuten, daß Raum für 2 Nachrichten in dem Ziel-Crossbar-Umschalter vorhanden ist.
  • Die Laufkommunikationszeit (round trip communication time) zwischen den Crossbar-Umschaltern wird bestimmt durch den Zeitbetrag einer Referenz, die aus dem übertragenden Crossbar-Umschalter ausläuft, und dem Zeitpunkt, wann ein Antwortbit aus dem empfangenden Crossbar-Umschalter empfangen wird. Die erforderliche Zahl der Eingangspuffer pro Crossbar-Umschalter beträgt 1,5- fache dieser Laufkommunktionszeit. In der bevorzugten Ausführungsform der vorliegenden Erfindung wird die Kommunikation zwischen Umschaltern zeitlich so gesteuert, daß das Antwortbit durch den übermittelnden Crossbar-Umschalter genau zu dem Zeitpunkt empfangen wird, an dem der übermittelnde Crossbar- Umschalter seine nächste Nachricht (falls eine vorhanden ist) sendet. Wenn die Zeitsteuerung nicht auf diesem Weg erfolgen würde, werden Fachleute erkennen, daß eine an dem übermittelnden Crossbar-Umschalter befindliche Nachricht warten müßte. Durch die Verwendung des Zeitsteuerungsverfahrens gemäß der vorliegenden Erfindung wird jedoch das Antwortbit so empfangen, daß eine verfügbare Ausgabenachricht sofort auslaufen kann. Die Fachleute werden ohne weiteres erkennen und zu schätzen wissen, daß der Crossbar-Netzwerkentwurf der vorliegenden Erfindung die Skalierbarkeit der Architektur erheblich steigert. Die Architektur ist sehr skalierbar, da jeder Crossbar-Umschalter nur mit seinen Nachbarn zu kommunizieren braucht, denjenigen Crossbarumschaltern, mit welchen er tatsächlich zusammengeschlossen ist. Jeder individuelle Crossbar-Umschalter benötigt nicht globale Informationen über die gesamte Schicht, oder über das, was in zwei oder drei vorausliegenden Schichten geschieht. Jeder Crossbar-Umschalter benötigt nur lokale Informationen, um zu entscheiden und Daten zusenden. In gleicher Weise benötigen die Prozessoren nicht globale Kenntnisse, bevor sie Speicherreferenzen ausschikken. Auf diese Weise müssen die Prozessoren nicht sicherstellen, daß ein gesamter Datenpfad von dem Prozessor zu der Speicherbank frei ist, bevor sie die Nachricht aussenden. Durch Verwendung des Crossbar-Verfahrens gemäß der vorliegenden Erfindung "feuern und vergessen (fire and forget)" einfach die Prozessoren. Die Fachleute werden zu schätzen wissen, daß, da die Architektur der vorliegenden Erfindung keinen globalen Entscheider (arbitrator) erfordert, das System der vorliegenden Erfindung sehr leicht durch einfache Replikation skalierbar ist, da keine Notwendigkeit für irgendeine Neuentwicklung, weder des Prozessors der Crossbar-Umschalter noch des Betriebssystems besteht. Man benötigt einfach die Neuverknüpfung (rehook) der Komponenten in einer unterschiedlichen Konfiguration und die Architektur ist hierdurch sofort skaliert.
  • Ein anderer Vorteil des Crossbar-Netzwerkes der vorliegenden Erfindung besteht darin, daß, solange jeder Crossbar-Umschalter auf gleiche Weise funktioniert, es keinen Unterschied macht, welcher Typ an Prozessoren verwendet wird, oder wie schnell der Speicher ist. Jeder Prozessor des mehrfachen Thread-Typus ist für die vorliegende Erfindung anpassbar. Sogar wenn jede Speicherbank eine unterschiedliche Geschwindigkeit aufweisen würde, würde die Architektur der vorliegenden Erfindung immer noch Funktionieren, ohne daß ein komplizierter Neuentwurf notwendig wäre. Die Fachleute werden erkennen, daß die Architektur der vorliegenden Erfindung deshalb in dieser Hinsicht extrem flexibel ist.
  • Bei der bevorzugten Ausführungsform der vorliegenden Erfindung ist die Crossbar-Schaltung in der Weise ausgelegt, daß ein Maximum an 4 Logikebenen bei jeder Taktperiode ausgeführt werden kann. Diese Entwurfsbeschränkung führt im besten Fall, für die bevorzugte Ausführungsform der vorliegenden Erfindung, zu einer Übertragungszeit von 4 Taktperioden durch den Crossbar- Umschalter 500. Die Fachleute werden erkennen, daß die Beschränkung des Entwurfs auf 4 Logikebenen pro Taktperiode die Verwendung einer langsameren Schaltungstechnologie bei noch Aufrechterhaltung einer hohen Taktrate gestattet, was zu einer geringeren Systemleistung sowie Kühlanforderungen führt und den Einsatz hoher Integrationsgrade gestattet. Da ein großer Teil der Hardware der Rechenmaschine der vorliegenden Erfindung aus dem Crossbar-Umschalt-Netzwerken besteht, werden die Fachleute ohne weiteres zu schätzen wissen, daß die Verwendung höherer Integrationsgrade in der bevorzugten Ausführungsform der vorliegenden Erfindung zu einem deutlichen Ersparnis in der Hardwarewartung sowie in großen Energieersparnissen führt und die Verwendung einer geringeren, billigeren Hardwaretechnologie erlaubt.
  • Ein weiterer Vorteil der Crossbar-Netzwerke der vorliegenden Erfindung ist mit dem Kontextumschaltaspekt der Prozessoren verbunden. Die Fachleute werden zu schätzen wissen, daß ein Merkmal der Kontextumschaltprozessoren darin besteht, daß die Prozessorleerlaufzeit erheblich reduziert wird und dadurch die Prozessoreffektivität zunimmt. Da die Totzeit der Prozessoren fast null ist, wird eine erhebliche Anforderungen an den Speicher und an das Crossbar-Speicherverteilungsnetzwerk gestellt, da die Prozessoren ständig Speicheranfragen durchführen. Auf Grund des Kontextumschaltaspektes der in der vorliegenden Erfindung verwendeten Prozessoren, ist es für diese unerheblich, ob einer ihrer Threads auf seine zu erfüllenden Speicherreferenzen länger warten muß, da die Prozessoren einfach ein Kontextumschalten zu dem nächsten Thread durchführen, während der erste Thread noch wartet. Daher ist der Kontextumschaltprozessor der vorliegenden Erfindung nicht zeitsensibel und kann deshalb effektiv sogar mit einer großen Speicherlatenzzeit arbeiten. Der Entwurf der vorliegenden Erfindung hat Speicherlatenzzeitanforderungen gegen eine vergrößerte Bandbreite so eingetauscht, daß eine große Menge an Daten bewegt werden kann. Die Fachleute werden ohne weiteres erkennen und zu schätzen wissen, daß ein derartiges Entwurfsschema zu einer Maschine mit sehr hohem Durchsatz bei einer sehr hohen Bandbreite führt; ein Entwurf, welcher insbesondere gut für in hohem Maße parallele Vektorverarbeitungsaufgaben geeignet ist.
  • Gemeinsamer Speicher Entwurf
  • Die Figur 7A und 7B zeigen ein Blockdiagramm eines Speicherboards 800 von der Art, wie es in der bevorzugten Ausführungsform der vorliegenden Erfindung verwendet wird. Das Speicherboard 800 beinhaltet Eingangsschaltungen, um Prozessorreferenznachrichten aus dem Crossbar-Netzwerk zu entnehmen, 16 Speicherbänke und Ausgangssteuerschaltungen, um Speicherreferenznachrichten durch das Eingangs-Crossbar-Netzwerk zurück zu dem generierenden Prozessor (orginating processor) zu senden.
  • In der bevorzugten Ausführungsform der vorliegenden Erfindung besteht jede Speicherbank 840 aus 23 Speicherchips und 5 Steuerbank-Logikchips. 22 der Speicherchips sind 256K durch 4 Bit-statische-RAMS (256K by 4 bit static RAMs) mit einer Zykluszeit von weniger als 13 Taktperioden. Diese 22 Speicherchips bilden ein 64 Bit-Datenwort mit 16 Prüfbits für Fehlererfassung und Korrektur. Die 16 Prüfbits gestatten die Korrektur bei Auftreten eines Versagens von allen 4 Bits in einer statischen RAM-Speichereinrichtung. Das in der bevorzugten Ausführungsform der vorliegenden Erfindung verwendete Fehlererfassungsschema wird als ein "Chipisolations"-Schema (chip isolation scheme) bezeichnet, dessen Beschreibung aus der am 30. August 1989 mit dem Titel "BIT DETECTION METHOD FOR ENHANCED SEC-DED ERROR DETECTION AND CORRECTION IN MULTI-BIT MEMORY DEVICES" eingereichten US-Anmeldung Nr. 400,071 (Schwoerer), die auf die gleiche Rechtsnachfolger der vorliegenden Erfindung übertragen worden ist und die durch Bezugnahme in diese Anmeldung einbezogen wird, entnehmmbar ist. Der 23. Speicherchip ist ein 256K durch 1 Bit Chip (256K by 1 bit chip), der die Speichersperrbits speichert.
  • Die Fachleute werden ohne weiteres erkennen und zu schätzen wissen, daß die Speicherbänke 840 nicht mit dem gleichen logischen Entwurf wie die hierin beschriebene, besondere Ausführungsform konstruiert werden müssen, und daß jede Anordnung, die darauf ausgerichtet ist, denselben Zweck zu erreichen, anstelle der besonderen, beschriebenen Ausführungsform treten kann. Die Architektur der vorliegenden Erfindung würde z.B. auch einen Speicherentwurf unterstützen, der einen sehr großen direkt, adressierbaren SRAM-Speicher und DRAM-Speicher verwendet. Andere Speicherentwürfe könnten ebenso verwendet werden, ohne daß von dem Geist der Erfindung abgewichen wird.
  • Es gibt 2 Verfahren der Synchronisation gemeinsamer Speicherreferenzen aus den mehrfachen Prozessoren in der bevorzugten Ausführungsform der vorliegenden Erfindung. Diese sind: Speichersperrbits, die in dem 23. Speicherchip angeordnet sind, und gemeinsam genutzte Register, die in den 5 Steuerbank- Logikchips vorgesehen sind. Die Speichersperrbits werden verwendet, um individuelle Speicherbereiche zu sperren und zu reservieren. Bei der bevorzugten Ausführungsform der vorliegenden Erfindung gibt es zwei Arten von Anweisungen, eine, die die Sperrbits nutzt, und eine, die dies nicht tut. Eine gesperrte Speicherschreibreferenz wird Daten in einen ungesperrten Speicherbereich schreiben und dann veranlassen, daß der Bereich gesperrt wird. Wenn ein Speicherbereich gesperrt ist, muß er von einer geeigneten Lesereferenz begleitet sein, um ihn zu entsperren. Die Fachleute werden zu schätzen wissen, daß diese Sperrbits verwendet werden können, um Daten zwischen Prozessoren zu synchronisieren. Eine Referenz, die durch den Speicher auf Grund eines gesperrten Zustandes des Bereiches zurückgewiesen wird, kehrt zu dem Prozessor mit einer Rückweisungscodierung zurück. Der Prozessor wird dann die Referenz so lange wieder ausgeben, bis sie Zugang zu dem Bereich hat.
  • Die 2. Art, in welcher Prozessorsynchronisation erreicht werden kann, ist die Verwendung von gemeinsam genutzten Registern. Die 5 Steuerbank-Logikchips in jeder Speicherbank beinhalten Speichersequenzschaltungen, Speichersperrlesesteuerungen und die besonderen, gemeinsam genutzten Register, die zur Prozessorsynchronisation verwendet werden. Diese gemeinsam genutzten Register arbeiten in einem der 3 Modi: als ein Hohl- und Zuwachs-(Abnahme)Register, als ein ungesperrtes Datenregister und als ein semaphores Register. Ein Beispiel der Verwendung von Registern als Semaphore kann dem US-Patent Nr. 4,754,398 für Pribnow erteilt, herausgegeben am 28. Juli 1988 mit dem Titel "SYSTEM FOR MULTIPROCESSOR COMMUNICATION USING LOCAL AND COMMON SEMAPHORE AND INFORMATION REGISTERS" entnommen werden, welches an die gleichen Rechtsnachfolgerin der vorliegenden Erfindung übertragen worden ist und hier durch Bezugnahme eingeführt wird.
  • Die Fachleute werden ohne weiteres erkennen, daß sich mehrere, deutliche Vorteile daraus ergeben, daß die gemeinsam genutzten Register direkt an den Speicherbänken vorhanden sind. In diesem Fall wird die Last der Entscheidung der Verteilung der gemeinsam genutzten Register zwischen den Prozessoren von den Prozessoren selbst weggenommen und stattdessen durch das Crossbar-Netzwerk übernommen. Da die gemeinsam genutzten Register an den Speicherbänken vorgesehen und Teil jeder Speicherbanksteuerung sind, wird die Entscheidung über die Zugriffsverteilung hinsichtlich der gemeinsam genutzten Register zwischen den Prozessoren durch das Crossbar-Netzwerk durchgeführt, das gleiche Netzwerk, das die Entscheidung über die Verteilung der Speicherreferenzen vornimmt. Da deshalb die Zugriffe auf die gemeinsam genutzten Register so aussehen, als wären sie einfach weitere Speicherreferenzen, bedarf es keiner zusätzlichen Hardware, die erforderlich ist, um die Entscheidung über die Verteilung für den gemeinsam genutzten Speicher zwischen den Prozessoren zu erreichen. Die Fachleute werden erkennen, daß dieses Schema einen ausgeprägten Vorteil gegenüber einem Entwurf bietet, der separate Pfade und separate Netzwerke für die Verteilungsentscheidung verwendet, um die Multiprozessorsysteme zu koordinieren und zu synchronisieren.
  • Ein anderer Vorteil der Anordnung aller gemeinsam genutzten Register an der Speicherseite der Architektur gegenüber einer Anordnung an der Prozessorseite besteht darin, daß ein solcher Entwurf sehr leicht skalierbar. Wenn deshalb die Skala des Systems der vorliegenden Erfindung sich ändert, bedarf es keines Neuentwurfes für jeden einzelnen Prozessor oder eines globalen Arbitrators (da die Architektur der vorliegenden Erfindung keinen globalen Arbitrator erfordert). Vielmehr ist die Entscheidung über die Verteilung der gemeinsamen genutzten Register der vorliegenden Erfindung derart, daß alle Prozessoren mit so vielen Prozessoren in Verbindung treten können, wie dies gewünscht ist, und keine Semaphoren und keine Register auf der Prozessorseite notwendig ist.
  • In dem Abruf- und Inkrementierungsmodus der gemeinsam genutzten Register kann die Schleifenzählung sehr leicht über die verschiedenen Prozessoren verteilt werden. Alles was ein Prozessor benötigt, ist, das gemeinsam genutzte Register zu lesen sowie das Register automatisch zu inkrementieren und den Prozessor eine auf den neusten Stand gebrachte Schleifenzählung zu geben. Der nächste Prozessor kann dann das gemeinsam genutzte Register lesen, die nächste Schleifenzählung erhalten und anschließend das Register automatisch inkrementieren. Die Fachleute werden ohne weiteres erkennen, daß dieses "Autoinkrementierungs"-Merkmal des Abruf- und Inkrementierungsmodus der gemeinsam genutzten Register eine extrem leistungsfähige Funktion der gemeinsam genutzten Register ist und ausgeprägte Vorteile über bisher verwendete, alternative Verfahren zur Implementierung eines Abrufens und Inkrementierens zur Verteilung der Schleifenzählungen bietet. Bei einem Beispiel eines alten Weges zur Implementierung eines Abrufens und Inkrementierens zur Verteilung der Schleifenzählung, bei dem sich die gemeinsam genutzten Register nicht an dem Speicher befinden, muß es einen getrennten Speicherbereich geben, der den Schleifenzähler bildet, und der Semaphore oder Prozessor sperrt den Speicherbereich, liest ihn in den Prozessor, inkrementiert ihn, schreibt ihn zurück und entsperrt ihn. Die Gesamtsperrzeit, die der Zähler gesperrt ist, kann Dutzende oder sogar Hunderte Taktperioden betragen. In einem sehr hochparallelen System mit einer großen Zahl von Prozessoren würde, um eine Schleifenzählung zu Hunderten von Prozessoren zu verteilen, Hunderte von Malen dieser variablen Sperrzeit benötigt. Um die variable Sperrzeit zu verringern, verwendet die vorliegende Erfindung die gemeinsam genutzten Register an dem Speicher zur Autoinkrementierung und Verteilung von Schleifenzählungen. Prozessoren können auch einen Lesebefehl ausgeben, und in der bevorzugten Ausführungsform der vorliegenden Erfindung sind sie zufriedengestellt bei einer Rate von einem pro jeder zweiten Taktperiode. Wenn daher 100 Prozessoren vorgesehen sind, können sie alle eine neue Schleifenzählung in 200 Taktperioden aufweisen. Diese Zeit definiert die "Körnigkeit (granularity)" des Systems. (Der Begriff "Körnigkeit" bezieht sich auf die kleinste Schleife geringster Größe, bei der alle Systemprozessoren sofort kooperieren können.) In einem älteren Entwurfsstil kann z.B. die Körnigkeit, da die Sperrzeit Hunderte von Taktperioden mal Hunderte von Prozessoren ist, einige Zehntausende von Taktperioden sein. In dem System der vorliegenden Erfindung dürfte die Körnigkeit nur 100 oder 2 Taktperioden sein. Die Fachleute werden ohne weiteres erkennen, daß die Architektur der vorliegenden Erfindung erheblich die Körnigkeit des Systems verringert und eine größere Verschiedenheit von Anwendungsprogrammen parallelisierbar macht.
  • Der Grund, daß dieses Verteilungsschema der gemeinsam genutzten Register der vorliegenden Erfindung effektiv arbeitet, ist gebunden an den Kontextumschaltaspekt der in der vorliegenden Erfindung verwendeten Prozessoren. Während ein Thread auf den Zugriff zu einem gemeinsam genutzten Register wartet, benötigt der Prozessor einfach die Durchführung einer Kontextumschaltung zu einem anderen Thread, während der erste Thread auf das Stattfinden der Synchronisation wartet. Da ein Thread "einschlafen" kann, während er darauf wartet, daß der Zugriff zu dem gemeinsam genutzten Register zurückkommt, ist es für den Thread unerheblich, daß die gemeinsam genutzten Register an dem Speicher weit weg sind, und daß die Referenz ein wenig länger braucht, um zurückzugelangen. Dies ist ein Beispiel eines anderen Falls, daß die Architektur der vorliegenden Erfindung noch sehr effektiv arbeiten kann unabhängig von Speicherlatenzzeiten.
  • Ein weiterer Vorteil des Synchronisationsentwurfs der gemeinsam genutzten Register der vorliegenden Erfindung bezieht sich auf die große Zahl der gemeinsam genutzten Register im Verhältnis zu der Zahl der Prozessoren, die in der vorliegenden Erfindung verwendet werden. Die sehr große Zahl der gemeinsam genutzten Register ist wichtig, da, obwohl die Sperrzeit auf nur 2 Taktperioden in der bevorzugten Ausführungsform der vorliegenden Erfindung reduziert worden ist, wenn die Schleifenzählung über beispielsweise 1000 Prozessoren verteilt worden ist, die Körnigkeit des Systems noch eine sehr große Zahl von Taktperioden erfordern würde. Softwaretechniker könnten den Vorteil der großen Zahl der gemeinsam genutzten Register nutzen durch Aufteilung der Prozessoren in Teams in der Weise, daß die Prozessoren ihre Schleifenzählungen von verschiedenen Registern erhalten. Die Fachleute werden die Erwünschtheit der großen Anzahl der gemeinsam genutzten Register erkennen. Um die Art der Funktionalität, die mit dem Entwurf der gemeinsam genutzten Register der vorliegenden Erfindung erreicht wird, in einem separaten Netzwerk zu erhalten, würde ein sehr große Menge an getrennter Hardware erforderlich sein, welche vollständig auch skaliert werden müßte. Die bevorzugte Ausführungsform der vorliegenden Erfindung führt deshalb zu einer enormen Hardwareersparnis gegenüber alternativen Entwürfen einfach durch Hinzufügen der gemeinsam genutzten Register zu den Speicherbänken.
  • Nachrichten gelangen zu dem Speicherboard 800 durch einen der drei Speicheranschlußeingabepfade 801a-c. Diese Pfade entsprechen den Prozessoranschlüssen A, B und C. Da die Anschlüsse A und B read-only-Speicheranschlüsse sind, besteht jede Nachricht, die entlang der Speicheranschlußeingabepfade 801a und 801b zugeführt wird, aus einer Speicheradresse zusammen mit einer Zielmarkierung. Da Anschluß C ein Lese/Schreibanschluß ist, können Nachrichten, die entlang des Speicheranschlußeingabepfades 801c geführt werden, durch ein in dem Speicher zu speicherndes Datenwort begleitet sein. Bei der bevorzugten Ausführungsform der vorliegenden Erfindung weist jeder der 3 Referenzanschlüsse eines Prozessors seine eigenen, separaten Kommunikationspfade über die gesamten Speicherbänke 840 durch Zuweisung eines Eingangs- und eines Ausgangs-Crossbar-Netzwerkes zu jedem der drei Anschlüsse auf, wie es vorstehend hier beschrieben worden ist. Die Fachleute werden erkennen, daß dieses Entwurfschema die Konflikte und Blockaden der Nachrichten auf ein Minimum reduziert.
  • Bei der bevorzugten Ausführungsform der vorliegenden Erfindung werden Nachrichten, die in das Speicherboard 800 gelangen, zu der geeigneten Speicherbank 840 geführt, die ein Verfahren ähnlich dem Steuerungsverfahren des hier vorstehend beschriebenen 4 x 4 Crossbar-Umschalters der vorliegenden Erfindung verwendet. Nachrichten, die in das Speicherboard 800 in einem der drei Speichereingabepfade 801a-c gelangen, kommen zunächst zu dem Puffer B 804 für diesen Pfad, falls der Puffer leer ist. Wenn der Puffer B 804 besetzt ist, wird die Nachricht in den Puffer A 802 für diesen Pfad eingelesen. Wird der Puffer B 804 leer, werden die Inhalte des Puffers A 802 zu dem Puffer B 804 geführt.
  • Wenn das erste Paket einer Nachricht in den Puffer B 804 gelangt ist, decodiert Puffer B 804 die Nachrichtensteuerbits und steuert die Nachricht zu einem der 4 Gruppenpuffer 806, 808, 810 oder 812 für diesen Pfad, welche mit den Gruppen der 4 Speicherbänken assoziiert sind. Beispielsweise würde eine Nachricht, die in das Speicherboard 800 durch den Eingangsanschluß B 804b geführt wird und zu der Speicherbankgruppe 2 geleitet wird, zu dem Gruppe 2 Puffer 810b geführt werden.
  • Eine andere Ebene der Steuerung wird nachfolgend erreicht, wobei das gleiche Verfahren wieder verwendet wird, wie es für die Nachrichtenbewegung von den Eingangspuffern zu den Quadranten-Puffern in einem 4 x 4 Crossbar-Umschalter der vorliegenden Erfindung verwendet wird, wie dies vorstehend beschrieben worden ist. Nachrichten bewegen sich von den Gruppenpuffern 806-812, die mit einer Gruppe von 4 Speicherbänken assoziiert sind, zu einem Bankeingangspuffer 820, der mit einer einzelnen Speicherbank 840 assoziiert ist. Bei dieser Ebene werden Nachrichten für eine Auswahl der Banksteuerungs-Logikchips geeignet, um entweder auf die Speicherchips oder auf das gemeinsame Register zuzugreifen.
  • Um von dem Speicherpfad 800 zurück zu dem anfordernden Prozessor zu kommen, geht die Referenz einfach zurück zu der Speicherbank und durch das geeignete Eingangs-Crossbar-Netzwerk zurück zu dem generierenden Prozessor in im wesentlichen der gleichen Art und Weise, wie eine Ausgangs-Prozessor-zu-Speicher-Referenz durch ein Ausgangs-Crossbar-Netzwerk läuft, wie dies vorstehend beschrieben worden ist.
  • Obwohl eine besondere Ausführungsform hier dargestellt und beschrieben worden ist, wird es durch die Fachleute anerkennt werden, daß jede Anordnung, welche darauf gerichtet ist, den gleichen Zweck zu erreichen, anstelle der gezeigten, besonderen Ausführungsform treten kann. Die Architektur der vorliegenden Erfindung kann z.B. implementiert werden mit einer unterschiedlichen Anzahl an Prozessoren, unterschiedlichen Mengen an Speichern oder einer unterschiedlichen Anzahl an Programm-Threads pro Prozessor. Zusätzlich werden die Fachleute erkennen, daß die Architektur der vorliegenden Erfindung nicht von dem besonderen Typ des Prozessors, der Speichergeschwindigkeit oder der besonderen Logikentwürfe, die in der ausführlichen Beschreibung offenbart wurden, abhängig ist. Obwohl die bevorzugte Ausführungsform beispielsweise erläutert worden ist unter Verwendung eines modifizierten Cray-2-Typ-Prozessors, können unterschiedliche Typen an Prozessoren verwendet werden, ohne daß von dem Geist der Erfindung abgewichen wird. In einer alternativen Ausführungsform der vorliegenden Erfindung könnte z.B. ein modifizierter Cray-Y-MP- Typ-Prozessor, hergestellt durch die Cray Research Inc., die die Rechtsnachfolgerin der vorliegenden Erfindung ist, anstelle des modifizierten Cray- 2-Typ-Prozessors, der in der ausführlichen Beschreibung der vorliegenden Erfindung offenbart worden ist, gesetzt werden. Ein Blockdiagramm eines Cray- Y-MP-Prozessors kann aus der am 17. November 1989 mit dem Titel "VECTOR BIT MATRIX MULTIPLY FUNCTTIONAL UNIT" eingereichten US-Patentanmeldung Nr. 07/438,679 (Lee und andere) entnommen werden, wobei diese Anmeldung durch Bezugnahme hierein zum Gegenstand gemacht wird. Ein Cray-I-Typ-Prozessor könnte ebenso anstelle der dargestellten, besonderen Ausführungsform treten. Ein Blockdiagramm eines Cray-1-Prozessors kann aus dem vorstehend erwähnten US-Patent Nr. 4,128,880 entnommen werden.

Claims (6)

1. Skalierbares Vektor-Parallelrechnersystem mit einem gemeinsamen Speicher (600), einer Vielzahl von Vektorprozessoren (100) zur Ausführung von Skalar- und Vektoranweisungen und einem Kommunikationsmittel (400) zur Übertragung von Informationen zwischen dem gemeinsamen Speicher und den Vektorprozessoren,
dadurch gekennzeichnet,
daß das Kommunikationsmittel eine Menge von n Ausgangs-Crossbar- Netzwerken (420) zur Kommunikation von den Vektorprozessoren zu dem gemeinsamen Speicher und eine Menge von n Eingangs-Crossbar-Netzwerken (440) zur Kommunikation von dem gemeinsamen Speicher zu den Vektorprozessoren besitzt, wobei n der Anzahl der Speicherreferenzanschlüsse (300, 302, 304, 350, 352, 354) pro Prozessor entspricht, so daß die übertragenen Informationen eine variable Latenzzeit besitzen, und daß jeder der Vielzahl von Prozessoren aufweist:
eine Vielzahl von Referenzanschlüssen (300, 302, 304, 350, 352, 354) zum Empfangen und Senden von Informationen von oder zu dem Kommunikationsmittel;
eine Vielzahl von Anweisungs-Threads; und Kontextumschaltmittel zum Umschalten des Kontextes zwischen der Vielzahl von Anweisungs-Threads, wenn der augenblickliche Anweisungs-Thread aufgrund der Nicht-Verfügbarkeit von Daten blockiert ist, die vom Speicher abgefragt wurden, die dabei die Prozessoraktivität in Anbetracht der Latenzzeiten aufrechterhalten, die durch die Abfrage von Information von dem gemeinsamen Speicher zustandekommen.
2. Skalierbares Vektor-Parallelrechnersystem nach Anspruch 1, dadurch gekennzeichnet, daß jeder Prozessor weiterhin eine Vielzahl von Anweisungspufferspeichermengen (110 a-h) und Register (120 a-h, 130 a-h, 140 a-h) enthält, so daß jeder Anweisungs-Thread eine zugewiesene Menge von Anweisungspufferspeichern und -registern besitzt, so daß das Umschalten zwischen Threads eine minimale Verzögerung verursacht.
3. Skalierbares Vektor-Parallelrechnersystem nach Anspruch 1, dadurch gekennzeichnet, daß jeder Crossbarumschalter (500) innerhalb des Crossbar-Netzwerkes weiterhin einen Quadranten-Pufferspeicher (508 a-d, 510 a-d, 512 a-d, 514 a-d) zur Reduzierung der Weiterverarbeitung und des Blokkierens im Crossbar-Netzwerk enthält.
4. Skalierbares Vektor-Parallelrechnersystem nach Anspruch 1, dadurch gekennzeichnet, daß der gemeinsame Speicher weiter enthält: eine Vielzahl von gemeinsam genutzten Registern (842) zur Prozessorsynchronisation, wobei jedes gemeinsam genutzte Register einer individuellen Speicherbank (840) entspricht; und
eine Vielzahl von Verriegelungsbits, so daß die Kontextumschalt-Vektorprozessoren die Speicherbänke reservieren können.
5. Verfahren zum Betreiben eines Kontextumschalt-Vektorprozessors mit einer Vielzahl von Instruktions-Threads, die jeweils eine Vielzahl von Skalar- und Vektorinstruktionen enthalten, mit den folgenden Verfahrensschritten:
(a) Auswählen eines Anweisungs-Threads;
(b) Ausführen der Skalar- und Vektorinstruktionen des Anweisungs-Threads;
(c) Senden einer Speicherreferenz zum gemeinsamen Speicher;
(d) Auffinden eines Instruktionseingabeblocks aufgrund des Umstandes, daß
der augenblickliche Anweisungs-Thread aufgrund der Nicht-Verfügbarkeit derjenigen Daten blockiert ist, die vom gemeinsamen Speicher abgefragt sind;
(e) Kontextumschalten zum nächsten Thread;
(f) Wiederholen der Schritte (b), (c), (d) und (e) bis alle Anweisungen vollständig ausgeführt wurden.
6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß der Kontextumschaltschritt (e) weiterhin den Schritt des Überprüfens enthält, ob der nächste Thread die vom Speicher angefragten Daten verfügbar hat, und überbrücken des Threads, falls die vom Speicher angefragten Daten nicht verfügbar sind.
DE69106384T 1990-10-19 1991-10-04 Skalierbares parallel-vektorrechnersystem. Expired - Fee Related DE69106384T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US60032890A 1990-10-19 1990-10-19
PCT/US1991/007271 WO1992007335A1 (en) 1990-10-19 1991-10-04 A scalable parallel vector computer system

Publications (2)

Publication Number Publication Date
DE69106384D1 DE69106384D1 (de) 1995-02-09
DE69106384T2 true DE69106384T2 (de) 1995-08-10

Family

ID=24403170

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69106384T Expired - Fee Related DE69106384T2 (de) 1990-10-19 1991-10-04 Skalierbares parallel-vektorrechnersystem.

Country Status (6)

Country Link
EP (1) EP0553158B1 (de)
JP (1) JPH06502033A (de)
AT (1) ATE116456T1 (de)
CA (1) CA2094269A1 (de)
DE (1) DE69106384T2 (de)
WO (1) WO1992007335A1 (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5623698A (en) * 1993-04-30 1997-04-22 Cray Research, Inc. Memory interconnect network having separate routing networks for inputs and outputs using switches with FIFO queues and message steering bits
ES2116852B1 (es) * 1994-08-29 1999-03-16 Univ Catalunya Politecnica Sincronizacion del acceso a memoria en multiprocesadores vectoriales.
US6282652B1 (en) 1998-02-26 2001-08-28 Sun Microsystems, Inc. System for separately designating security requirements for methods invoked on a computer
US6393497B1 (en) 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
CN1204809A (zh) * 1997-07-09 1999-01-13 王迪兴 运算、交换、控制、多用平台
US6223208B1 (en) 1997-10-03 2001-04-24 International Business Machines Corporation Moving data in and out of processor units using idle register/storage functional units
AU3300499A (en) * 1998-02-26 1999-09-15 Sun Microsystems, Inc. Method and apparatus for the suspension and continuation of remote processes
CN1168025C (zh) * 1999-03-10 2004-09-22 国际商业机器公司 用于多线程处理机的指令高速缓存器
US7526630B2 (en) 1999-04-09 2009-04-28 Clearspeed Technology, Plc Parallel data processing apparatus
US7627736B2 (en) 1999-04-09 2009-12-01 Clearspeed Technology Plc Thread manager to control an array of processing elements
US7506136B2 (en) 1999-04-09 2009-03-17 Clearspeed Technology Plc Parallel data processing apparatus
GB2394815B (en) * 1999-04-09 2004-08-25 Clearspeed Technology Ltd Parallel data processing systems
SE9901605L (sv) * 1999-05-04 2000-11-05 Net Insight Ab Förfarande och anordning för bufferthantering
US7421572B1 (en) * 1999-09-01 2008-09-02 Intel Corporation Branch instruction for processor with branching dependent on a specified bit in a register
US8082491B1 (en) 2000-05-09 2011-12-20 Oracle America, Inc. Dynamic displays in a distributed computing environment
US6862594B1 (en) 2000-05-09 2005-03-01 Sun Microsystems, Inc. Method and apparatus to discover services using flexible search criteria
US6934755B1 (en) 2000-06-02 2005-08-23 Sun Microsystems, Inc. System and method for migrating processes on a network
US6925643B2 (en) * 2002-10-11 2005-08-02 Sandbridge Technologies, Inc. Method and apparatus for thread-based memory access in a multithreaded processor
GB2451845B (en) * 2007-08-14 2010-03-17 Imagination Tech Ltd Compound instructions in a multi-threaded processor
US10452585B2 (en) 2016-09-16 2019-10-22 Hewlett Packard Enterprise Development Lp Crossbar switch with pipeline delay registers
CN116991764B (zh) * 2023-08-03 2024-04-05 广州安凯微电子股份有限公司 一种高性能的Flash控制器和嵌入式***

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3676852A (en) * 1970-07-20 1972-07-11 Ibm Multiple program digital computer
DE68909426T2 (de) * 1988-01-15 1994-01-27 Quantel Ltd Datenverarbeitung und -übertragung.

Also Published As

Publication number Publication date
ATE116456T1 (de) 1995-01-15
EP0553158B1 (de) 1994-12-28
DE69106384D1 (de) 1995-02-09
WO1992007335A1 (en) 1992-04-30
CA2094269A1 (en) 1992-04-20
JPH06502033A (ja) 1994-03-03
EP0553158A1 (de) 1993-08-04

Similar Documents

Publication Publication Date Title
DE69106384T2 (de) Skalierbares parallel-vektorrechnersystem.
DE602004008783T2 (de) Cache-crossbar-arbitrierung
DE60037065T2 (de) Übertragungsteuerung mit Naben- und Torachitektur
DE68924934T2 (de) Parallelsynchronisationstechnik.
DE10110504B4 (de) Verfahren und Computersystem zur Verwaltung von Threads
DE3880478T2 (de) Geschichtetes netz.
DE68909426T2 (de) Datenverarbeitung und -übertragung.
DE2224537C2 (de) Einrichtung und Verfahren zur Instruktionsauswahl in einem Fließbandprozessor
DE68925646T2 (de) Pipeline-multiprozessorsystem
DE102018126005A1 (de) Synchronisation in einer Multi-Kachel-, Multi-Chip-Verarbeitungsanordnung
EP0948842B1 (de) VERFAHREN ZUM SELBSTÄNDIGEN DYNAMISCHEN UMLADEN VON DATENFLUSSPROZESSOREN (DFPs) SOWIE BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALEN PROGRAMMIERBAREN ZELLSTRUKTUREN (FPGAs, DPGAs, o.dgl.)
DE69127101T2 (de) System für verteilte mehrfachrechnerkommunikation
DE69115344T2 (de) Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher
DE3787886T2 (de) Parallelprozessor mit binärer baumstruktur.
DE69128017T2 (de) Verteiltes rechnersystem
DE69133257T2 (de) Vorrichtung und verfahren zur schnellen paketvermittlung
DE3751399T2 (de) Parallelrechner mit verteilten, gemeinsam genutzten Speichern und verteilten, aufgabenaktivierenden Schaltungen.
EP1329816B1 (de) Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.)
DE68921906T2 (de) Verfahren für ein Multiprozessorsystem mit sich selbst zuordnenden Prozessoren.
DE69116953T2 (de) Methode und Vorrichtung zur dynamischen Ermittlung und Wegfindung für nichtgleichförmigen Verkehr, in parallelen, gepufferten, mehrstufigen Verbindungsnetzwerken
DE68927218T2 (de) Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor
DE3789490T2 (de) Steuerungssystem für ein Vektorprozessor.
DE102018126004A1 (de) Synchronisation in einer Multi-Kachel-Verarbeitungsanordnung
DE3486451T2 (de) Mehrprozessorsteuerung für Vektorrechner
DE102008022080A1 (de) Nachrichten-Warteschlangensystem für eine parallel integrierte Schaltkreisarchitektur und zugehöriges Betriebsverfahren

Legal Events

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