DE3486141T2 - Parallel-prozessor. - Google Patents
Parallel-prozessor.Info
- Publication number
- DE3486141T2 DE3486141T2 DE8484303598T DE3486141T DE3486141T2 DE 3486141 T2 DE3486141 T2 DE 3486141T2 DE 8484303598 T DE8484303598 T DE 8484303598T DE 3486141 T DE3486141 T DE 3486141T DE 3486141 T2 DE3486141 T2 DE 3486141T2
- Authority
- DE
- Germany
- Prior art keywords
- address
- message
- signal
- line
- bit
- 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
Links
- 230000015654 memory Effects 0.000 claims description 207
- 238000004891 communication Methods 0.000 claims description 45
- 238000012546 transfer Methods 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000008878 coupling Effects 0.000 claims 2
- 238000010168 coupling process Methods 0.000 claims 2
- 238000005859 coupling reaction Methods 0.000 claims 2
- 238000012545 processing Methods 0.000 description 43
- 230000006870 function Effects 0.000 description 38
- 239000000872 buffer Substances 0.000 description 32
- 238000010586 diagram Methods 0.000 description 14
- 238000012360 testing method Methods 0.000 description 12
- 230000002457 bidirectional effect Effects 0.000 description 10
- 238000000034 method Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 235000005633 Chrysanthemum balsamita Nutrition 0.000 description 8
- 238000003491 array Methods 0.000 description 7
- 241000723353 Chrysanthemum Species 0.000 description 6
- 201000005569 Gout Diseases 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 5
- 229910052710 silicon Inorganic materials 0.000 description 5
- 239000010703 silicon Substances 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- HKLUUHOGFLPVLP-UHFFFAOYSA-N 3,5-dihydroxy-2-(2-hydroxyphenyl)-7-methoxychromen-4-one Chemical compound C=1C(OC)=CC(O)=C(C(C=2O)=O)C=1OC=2C1=CC=CC=C1O HKLUUHOGFLPVLP-UHFFFAOYSA-N 0.000 description 2
- 101100126955 Arabidopsis thaliana KCS2 gene Proteins 0.000 description 2
- 241000132023 Bellis perennis Species 0.000 description 2
- 238000006066 Comins reaction Methods 0.000 description 2
- 230000001143 conditioned effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- TVEXGJYMHHTVKP-UHFFFAOYSA-N 6-oxabicyclo[3.2.1]oct-3-en-7-one Chemical compound C1C2C(=O)OC1C=CC2 TVEXGJYMHHTVKP-UHFFFAOYSA-N 0.000 description 1
- JBRZTFJDHDCESZ-UHFFFAOYSA-N AsGa Chemical compound [As]#[Ga] JBRZTFJDHDCESZ-UHFFFAOYSA-N 0.000 description 1
- 229910001218 Gallium arsenide Inorganic materials 0.000 description 1
- 101000869583 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) Oligo(A)/oligo(T)-binding protein Proteins 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 229910052782 aluminium Inorganic materials 0.000 description 1
- XAGFODPZIPBFFR-UHFFFAOYSA-N aluminium Chemical compound [Al] XAGFODPZIPBFFR-UHFFFAOYSA-N 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000002243 precursor Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
- G06F15/8023—Two dimensional arrays, e.g. mesh, torus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
- G06F15/17368—Indirect interconnection networks non hierarchical topologies
- G06F15/17381—Two dimensional, e.g. mesh, torus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
- G06F15/803—Three-dimensional arrays or hypercubes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Multi Processors (AREA)
- Microcomputers (AREA)
- Image Processing (AREA)
- Small-Scale Networks (AREA)
Description
- Die vorliegende Erfindung bezieht sich auf einen Computer der parallele Prozessoren benutzt und bezieht sich insbesondere auf einen Computer, der eine wesentlich größere Anzahl paralleler Prozessoren verwendet als dies bisher üblich war.
- Ein typischer digitaler Computer umfaßt eine CPU (central processing unit), einen Speicher, der Daten und ein Programm zum Steuern des Computers speichert, und mehrere Eingangsund Ausgangseinrichtungen. Das gespeicherte Programm stellt eine Serie von Befehlen dar, die die CPU dirigieren, gewisse Arithmetik-, Transfer- oder logische Operationen an den, dem Computer verfügbaren Daten auszuführen. Derartige Daten werden dem Computer von den Eingangseinrichtungen zugeführt und die Ergebnisse der CPU-Operationen werden den Ausgangseinrichtungen zugeführt. Bei einem typischen Computer wird diese Serie von Befehlen in einer seriellen Art und Weise ausgeführt.
- In den etwa 40 Jahren, seitdem digitale Computer Verwendung finden, sind die Computer und die diese steuernden Programme zunehmend komplexer geworden. Die zunehmende Komplexität in einem seriellen Computer manifestiert sich üblicherweise in einer Vergrößerung seiner Speichergröße und seiner Programme und/oder seiner Daten, die in ihm gespeichert sind. In gewisser Weise sind diese immer komplizierteren Seriencomputer jedoch zunehmend weniger effizient geworden. Zu jeder Zeit kann nur ein sehr kleiner Teil des seriellen Computers tatsächlich benutzt werden, da der Befehl, der von der CPU ausgeführt wird, lediglich von wenigen Speicherplätzen erhalten wird und lediglich Daten an wenigen Stellen beeinflußt. Seit die Computer bezüglich der Größe ihrer Speicher weiter verbessert wurden, wurde es immer problematischer, einen Ausgang von dem Speicher zu erzeugen, da die zum Auslesen der Daten notwendige Zeit sich mit der in dem Speicher gespeicherten Menge von Daten erhöht.
- Diese Probleme serieller Computer wurden als Neumann-Flaschenhals nach John von Neumann genannt, der so viel für die frühe Entwicklung serieller Computer getan hat. Dazu "Can Programming Be Liberated from the Von Neumann Style?", Communications of the ACM, Vol. 21, No. 8, S. 613 (August 1978).
- Diese Probleme erweisen sich insbesondere auf dem Gebiet der künstlichen Intelligenz als problematisch, wo der Computer oftmals Wissen, das in einem Netzwerk von Beziehungen, das häufig als semantisches Netzwerk bezeichnet wird, auslesen muß. Das Auslesen dieses Wissens kann eine Suche im gesamten Netzwerk mit sich bringen. Es kann außerdem mit sich bringen, daß die gewünschte Tatsache von anderen gespeicherten Informationen abgeleitet werden muß. Um eine derartige Ableitung auszuführen, werden einige wenige einfache Operationen während der überwiegenden Betriebszeit des Programms wiederholt. Derartige Operationen umfassen:
- 1. Das Sortieren eines Datensets entsprechend einiger Parameter, wie etwa der Größe oder der numerischen Ordnung;
- 2. das Suchen von abgefragten Datensätzen oder Graphen für Untersätze oder Untergraphen mit spezifizierter Struktur;
- 3. das Anpassen von Mustern gegenüber einem Satz von Behauptungen;
- 4. das Ableiten von Fakten von dem semantischen Netzwerk gespeicherter Information.
- Das Hintereinanderausführen derartiger Operationen kann bezüglich der Ruhezeit und bezüglich der Einrichtungen untragbar teuer werden. Daher können eine Vielzahl von Problemen innerhalb des Gebietes der künstlichen Intelligenz mit momentan verfügbaren Seriencomputern nicht angegangen werden. Diese Probleme stellen jedoch fundamentale Probleme, wie etwa die Bildverarbeitung dar, für die Lösungen dringend benötigt werden.
- Alternativ kann die zum Ausführen derartiger Operationen benötigte Zeit reduziert werden, wenn es möglich ist, die Operationen parallel auszuführen. Der Wunsch, Operationen auf diese Weise auszuführen ist hinlänglich bekannt. Dazu beispielsweise C. Mead and L. Conway, Introduction to VLSI Systems, ch. 8, "Highly Concurrent Systems", Addison Wesley (1980) und W.D.Hillis, "The Connection Machine", Massachusetts Institute of Technology Artificiall Intelligence Laboratory Memo Nr. 646 (September 1981) und A. Rosenfeld, "Parallel Image Processing Using Cellulr Arays", Computer, Vol. 16, No. 1, S. 14 (Januar 1983).
- US-A-4 247 892, das am 27. Januar 1981 für Lawrence erteilt wurde und den Titel trägt "Arrays of Machines such As Computers", beschreibt ein Feld von Computern, die miteinander durch ein Kommunikations-Netzwerk in Form eines Hypercubes (Hyperwürfels) verbunden sind. Jeder der Computer kann Daten verarbeiten und Nachrichten erzeugen, die an andere Computer, die mit dem Kommunikations-Netzwerk verbunden sind, weitergeleitet werden. Während ein Hypercube-Kommunikationsnetzwerk im allgemeinen ziemlich effizient beim Verteilen von durch die Computer erzeugte Nachrichten ist und, wie es in dem Lawrence-Patent beschrieben ist, dazu benutzt werden kann, um nicht Hypercube-Netzwerk für eine Anzahl von Problemtypen zu emulieren, insbesondere für derartige, bei denen die Daten beispielsweise in Form eines zwei- oder dreidimensionalen Gitters strukturiert sind, kann der Hypercube dennoch weniger effizient sein als eine Gitterstruktur.
- Diese Dokumente beschreiben in unterschiedlichem Umfang allgemeine Konzepte für Einrichtungen, die parallele Datenoperationen ausführen. Beispielsweise betrachten Hillis und Rosenfeld ein Feld identischer Prozessor/Speicher, von denen jeder sowohl die zum Speichern der Daten als auch die zum Verarbeiten der Daten notwendige Hardware enthält. Jedoch werden spezielle Details voll ablauffähiger Computer in bezug auf die Verbindungen zwischen den Prozessoren/Speichern und bezüglich deren Steuerung in diesen Veröffentlichungen nicht behandelt.
- Die vorliegende Erfindung stellt ein neues und verbessertes Parallelcomputersystem zur Verfügung, das eine Vielzahl von Kommunikationsmechanismen hat, die diverse Topologien aufweisen, welche verwendet werden können, um separat und unabhängig den Transfer von Daten zwischen den Computern in dem System zu optimieren.
- Kurz gesagt umfaßt das neue parallele Computersystem eine Vielzahl von Prozessor/Speichern, ein erstes Kommunikationsnetzwert und ein zweites Kommunikationsnetzwert, wobei das erste Kommunikationsnetzwerk die Prozessoren in Form eines regelmäßigen Gitters verbindet. Die Prozessoren/Speicher verarbeiten die Daten und erzeugen in Antwort darauf verarbeitete Daten und Nachrichten, wobei jede Nachricht eine Adresse und Daten aufweist. Das zweite Kommunikationsnetzwerk empfängt die von jedem der Prozessoren/Speicher erzeugten Nachrichten und führt sie an andere Prozessoren/Speicher gemäß ihrer Adresse. Das erste Kommunikationsnetzwerk koppelt Daten, die von jedem der Prozessoren/Speicher erzeugt wurden, mit anderen Prozessoren/Speichern, die in dem Gitter benachbart sind.
- Indem mehrere Kommunikationsnetzwerke vorgesehen sind, stellt das parallele Computersystem dem Benutzer die Auswahl verschiedener Arten von Kommunikationsnetzwerken zur Verfügung, die hinsichtlich der Optimierung der Kommunikation ausgewählt werden können und minimiert damit die für das besondere Problem notwendige Verarbeitungszeit.
- Im Detail ist ein Parallelprozessorfeld vorgesehen mit: einem Feld von Prozessoren/Speichern und einer Einrichtung zum Verbinden dieser Prozessoren/Speicher in einem n-dimensionalen Schema, das zumindest 2n Knoten aufweist, durch welche Daten von jedem Prozessor/Speicher des Feldes zu jedem anderen Prozessor/Speicher geleitet werden können. Vorteilhafterweise ist das n-dimensionale Schema ein Boolean Cube (Boolscher Würfel) mit 15 Dimensionen.
- Jeder Prozessor/Speicher umfaßt einen Lese/Schreibespeicher und einen Prozessor zum Erzeugen eines Ausgangs in Abhängigkeit von zumindest einem Teil der von dem Lese/Schreib-Speicher gelesenen Daten und einer Befehlsinformation. Die Verbindungseinrichtung umfaßt eine Einrichtung zum Erzeugen eines adressierten Nachrichtenpakets, das von einem Prozessor/Speicher an einen anderen gemäß der Adresseninformation in dem Nachrichtenpaket geleitet wird und einen Weiterleitungs- (Routing)-Schaltkreis an jedem Knoten des n-dimensionalen Schemas zum Weiterleiten der Nachrichtenpakete gemäß der in den Paketen enthaltenen Adresseninformationen.
- In einer bevorzugten Ausführungsform der Erfindung sind die Prozessoren/Speicher auch in einem zweidimensionalen Muster untereinander verbunden, indem jeder individuelle Prozessor/Speicher direkt mit dem ihm in dem zweidimensionalen Schema unmittelbar benachbarten Prozessoren/ Speichern verbunden ist.
- Mit der momentan verfügbaren Technologie können mehr als eine Million derartiger Prozessoren/Speicher parallel betrieben werden, wenn sie durch diese Verbindungseinrichtungen verbunden werden.
- Bevorzugterweise ist die Adressinformation in dem Nachrichtenpaket relativ zum Knoten angegeben, in dem das Nachrichtenpaket gesendet wird und jede Stelle der Adresse repräsentiert die relative Verschiebung des Nachrichtenpakets in einer Dimension von dem Knoten, in dem das Nachrichtenpaket gesendet worden ist. Für jede Dimension des n-dimensionalen Schemas, umfaßt der Weiterleitungsschaltkreis eine Logik zum Bestimmen, ob das Nachrichtenpaket seinen Bestimmungsort in der Dimension erreicht hat, um es an einen anderen Knoten in dieser Dimension weiterzuleiten, falls es nicht bereits den Bestimmungsort erreicht hat und falls an diesem Knoten eine Verbindung verfügbar ist. Wenn die Verbindung von der die Zielrichtung bestimmende Logik zu einem anderen Knoten nicht verfügbar ist oder wenn die Bestimmungslogik feststellt, daß das Nachrichtenpaket sein Ziel in dieser Dimension erreicht hat, stellt der Weiterleitungsschaltkreis das Nachrichtenpaket an eine ähnliche Logik in einer zweiten Dimension zur Verfügung. Weiter umfaßt der Weiterleitungsschaltkreis eine Logik zum Bereitstellen eines Nachrichtenpakets, das seinen Zielknoten an einem Prozessor/Speicher an diesem Knoten erreicht hat, sowie eine Einrichtung zum Speichern der Nachrichtenpakete, wenn sie nicht weitergeleitet werden können, weil ein Verbindungskonflikt auftritt.
- Vorteilhafterweise werden die Zielbestimmungslogik und die Weiterleitungslogik für jede Dimension simultan über alle Knoten des n-dimensionalen Schemas betrieben. Als Ergebnis kann ein Nachrichtenpaket durch das gesamte n-dimensionale Schema während eines einzigen Weiterleitungszyklus geleitet werden. Zusätzlich ist jeder Weiterleitungsschaltkreis klein genug, daß er auf einem einzelnen integrierten Chip mit mehreren Prozessoren/Speichern hergestellt werden kann.
- Diese und andere Ziele, Möglichkeiten und Vorteile der Erfindung werden im folgenden anhand einer detaillierten Beschreibung eine bevorzugten Ausführungsform der Erfindung deutlich. Dabei zeigen:
- Fig. 1A und 1B in schematischer Weise ein Computersystem, das ein Feld parallel verarbeitender integrierter Schaltungen (ICs) gemäß der Erfindung benutzt;
- Fig. 2 und 3 schematische Darstellungen, wie sie zum Verständnis gewisser Verbindungsschematas zwischen den parallel verarbeitenden ICs nützlich sind;
- Fig. 4 das Format einer Nachricht, die von einem IC an einen anderen IC des Feldes der Fig. 1 gesendet werden kann und weiterhin bestimmte Taktsignalformen, wie sie zum Verständnis der Arbeitsweise des Computersystems der Fig. 1 nützlich sind;
- Fig. 5 eine schematische Darstellung einer Platine, auf der mehrere VLSI-Pakete, die parallelverarbeitende ICs enthalten, aufgebracht sind;
- Fig. 6A und 6B Blockschaltbilder eines anschaulichen Ausführungsbeispiels eines parallel verarbeitenden ICs des Feldes der Fig. 1;
- Fig. 7A und 7B Blockschaltbilder eines der Prozessoren/Speicher des Blockschaltbildes der Fig. 7A;
- Fig. 8 ein logisches Schaltbild einer Interface-Einheit, wie sie im Blockschaltbild der Fig. 6B gezeigt ist;
- Fig. 9 und 10 gewisse Zeitverläufe, wie sie zum Verständnis der Betriebsweise des Schaltkreises der Fig. 8 nützlich sind;
- Fig. 11 ein Blockschaltbild des Weiterleitungsschaltkreises innerhalb des Blockschaltbildes der Fig. 6B;
- Fig. 12 ein logisches Schalbild eines anschaulichen Beispiels eines Line-Assigners in dem Weiterleitungsschaltkreis der Fig. 11;
- Fig. 13 ein logisches Schaltbild eines Teils des Line-Assigners der Fig. 12;
- Fig. 14 gewisse Zeitverläufe, wie sie zum Verständnis der Betriebsweise des Schaltkreises der Fig. 11 bis 13 nützlich sind;
- Fig. 15 ein logisches Schaltbild einer beispielhaften Ausführungsform zusätzlicher Teile des Weiterleitungsschaltkreises der Fig. 11;
- Fig. 16 gewisse Zeitverläufe, wie sie zum Verständnis der Betriebsweise des Schaltkreises der Fig. 14 nützlich sind; und
- Fig. 17 ein VLSI-Schaltkreis-Layout für den Schaltkreis, wie er in den Fig. 6A und 6B gezeigt ist.
- Zum besseren Verständnis für den Leser ist die Beschreibung der bevorzugten Ausführungsform der Erfindung in die folgenden Abschnitte unterteilt:
- Allgemeine Beschreibung des Systems
- Allgemeine Beschreibung eines parallel verarbeitenden ICs
- Beschreibung des Prozessor/Speichers
- Beschreibung der Kommunikations-Interface-Einheit (CIU)
- Beschreibung des Weiterleitungsschaltkreises (Routing Circuit)
- Ein Beispiel
- Alternativen
- Wie in der Fig. 1A gezeigt ist, kann die Erfindung in einem Computersystem ausgeführt sein, das einen Mainframe-Computer 10, einen Mikrokontroller 20, ein Feld 30 parallel verarbeitender integrierter Schaltkreise 35, eine Datenquelle 40, einen ersten Puffer und Multiplexer/Demultiplexer 50, erste, zweite, dritte und vierte bidirektionale Bussteuerschaltkreise 60, 65, 70, 75, einen zweiten Puffer und Multiplexer/Demultiplexer 80, und eine Datensenke 90, enthält. Der Mainframe-Computer 10 kann ein in geeigneter Weise programmierter, kommerziell erhältlicher General-Purpose-Computer, wie etwa ein VAX-Computer, wie er von Digital Equipment Corp. hergestellt wird, sein. Der Mikrokontroller 20 ist ein Befehls-Sequenzer herkömmlicher Bauart, um eine Sequenz von Befehlen zu erzeugen, die dem Feld 30 mittels eines 32-Bit-Parallel-Busses 22 zugeführt werden. Eine der 32 Leitungen des Busses 22 versorgt das Feld 30 mit einem RESET-Signal; drei Leitungen stellen TIMING-Signale zur Verfügung; und die anderen 28 Leitungen stehen für die Übertragung von Befehlen zur Verfügung. Zusätzliche Adressierungssignale zum Adressen individueller parallel verarbeitender ICs 35 des Feldes 30 werden dem Feld auf Bus 24 zugeführt. Der Mikrokontroller 20 empfängt von dem Feld 30 ein Signal auf der Leitung 26. Dieses Signal ist ein General-Purpuse- oder GLOBAL-Signal, das für den Datenausgang und Status-Information verwendet werden kann. Der Bus 22 und die Leitung 26 sind in paralleler Weise mit jedem IC 35 verbunden. Dies führt dazu, daß die Signale vom Mikrokontroller 20 gleichzeitig jedem IC 35 des Feldes 30 zugeführt werden und daß das Signal, das dem Mikrokontroller 20 auf Leitung 26 zugeführt wird, gebildet wird, indem die Signalausgänge von allen ICs 35 des Feldes kombiniert werden.
- Das Feld 30 enthält 32 768 (= 2¹&sup5;) identische ICs 35; jeder IC 35 enthält 32 (= 2&sup5;) identische Prozessoren/Speicher 36. Somit enthält das gesamte Feld 30 1,048,576 (= 2²&sup0;) identische Prozessoren/Speicher 36.
- Die Prozessoren/Speicher 36 sind durch zwei Geometrien organisiert und verbunden. Die erste stellt ein herkömmliches zweidimensionales Gittermuster dar, bei dem die Prozessoren/Speicher in einem quadratischen Feld organisiert sind und mit ihren vier nächsten Nachbarn des Feldes verbunden sind. Das zweite ist ein Boolscher n-Würfel (n-cube) mit 15 Dimensionen. Um die Prozessoren/Speicher 36 in einem zweidimensionalen Gittermuster zu verbinden, sind die ICs 35 des Feldes 30 in einem rechteckförmigen Feld von 256 (= 2&sup8;) Reihen und 128 (= 2&sup7;) Spalten organisiert; die 32 Prozessoren/Speicher jedes ICs sind in einem rechteckförmigen Feld von 4 (= 2²) Reihen und 8 (= 2³) Spalten verbunden. Im Ergebnis sind die 1 048 576 Prozessoren/Speicher 36 des Gitters 30 in einem Quadrat von 1024 (= 2¹&sup0;) Reihen und 1024 Spalten verbunden. Zur leichteren Handhabung werden die Seiten dieses quadratischen Feldes mit NORD, OST, SÜD und WEST bezeichnet. Um jeden Prozessoren/Speicher mit seinen vier nächsten Nachbarn zu verbinden, sind die individuellen Prozessoren/Speicher mittels elektrischer Leitungen zwischen angrenzenden Prozessoren/Speicher in jeder Reihe und jeder Spalte verbunden; außerdem werden die vier nächsten Nachbarn eines jeden ICs, mit Ausnahme der an den Kanten des Feldes liegenden, als diejenigen vier ICs gewählt, die unmittelbar nach Norden, Osten, Süden und Westen an dem IC anschließen.
- Die individuellen Prozessoren/Speicher 36 in den Spalten und Reihen des zweidimensionalen Feldes können identifiziert werden, indem sie systematisch durchnumeriert werden, wobei eine erste Zahl ihre Spaltennummer oder Position in der ersten Dimension und eine zweite Zahl ihre Reihennummer oder ihre Position in der zweiten Dimension angibt. Beispielsweise können, wenn die Spalten, angefangen mit 0 zur linken Seite oder zur westlichen Spalte hin numeriert werden und die Reihen, angefangen mit 0 an der untersten bzw. südlichsten Reihe, die neun Prozessoren/Speicher, die am nächsten zur untersten linken oder südwestlichsten Ecke liegen, folgendermaßen adressiert sein:
- und der Prozessor/Speicher in der obersten rechten oder nordöstlichen Ecke wird mit den Zahlen 1023, 1023 bezeichnet. Jedes Zahlenpaar wird als die Adresse des zugeordneten Prozessor/Speichers bezeichnet.
- Bei diesem Numerierungsschema weichen die vier nächsten Nachbarn jedes Prozessors/Speichers innerhalb des zweidimensionalen Gitters in ihrer Adresse lediglich in einer der beiden Zahlen, die ihre Adresse darstellen, von der Adresse der Nachbarn ab. Beispielweise sind die vier nächsten Nachbarn des Prozessor/Speichers, der die Adresse 1,1 hat, die vier Prozessoren/Speicher mit den Adressen 1,2; 2,1; 1,0; 0,1 nach Norden, Osten, Süden und Westen.
- Wie schematisch anhand der Fig. 1A gezeigt wurde, erstreckt sich das zweidimensionale Gittermuster des Feldes 30 über die nördlichen, östlichen, südlichen und westlichen Kanten des Feldes 30 über erste, zweite, dritte und vierte bidirektionale Bussteuerschaltungen 60, 65, 70, 75 und zu ersten und zweiten Puffern 50, 80 fort. Insbesondere ist jeder der 1024 Prozessoren/Speicher 36 an jeder der vier Kanten des Feldes durch eine der 1024 bidirektionalen Leitungen 61, 66, 71, 76 mit den Bussteuerschaltungen 60, 65, 70, 75 verbunden.
- Die Datenquelle 40 stellt über einen Hochgeschwindigkeitsdatenbus 41 dem Puffer und dem Multiplexer/Demultiplexer 50 Eingangsdaten zur Verfügung. Die Datenquelle 40 kann eine Datenquelle, wie beispielsweise ein Computer-Terminal, eine Kommunikationsleitung, ein Bild-, Hör- oder Fühl-Eingang, ein Radar- oder Sonarsystem, ein Disc-File oder eine entsprechende Kombination sein. Der Datenbus 41 kann ein 32-Bit-Bus sein und 13er Puffer 50 kann ein 32-Bit Seriell-Eingangs- und Parallelausgangsschieberegister sein, wobei jedes eine Kapazität von 32 Bit aufweist. In einer derartigen Anordnung gibt jede Leitung des Busses 41 Daten an ein eigenes Schieberegister mit seriellem Eingang sein und es besteht keine Notwendigkeit, für herkömmliche Multiplexer oder Demultiplexer. Wenn die Anzahl der Leitungen im Bus 41 sich von der Anzahl der Schieberegister unterscheidet, werden Multiplexer- oder Demultiplexerschaltkreise verwendet, um die Daten von den individuellen Datenleitungen des Busses 41 an die seriellen Eingänge der Schieberegister im Puffer 50 zu verteilen.
- Der Puffer 50 verteilt die Daten in paralleler Weise auf einem 1024 Leitungsbus 51 an einen der Bussteuerschaltkreise 60, 65, 70, 75, die diese Daten über die Busse 61, 66, 71 oder 76 an die Prozessoren/Speicher an den äußeren Kanten des Feldes an die Seite, mit der sie verbunden sind, abgeben.
- Die Daten vom Feld 30 werden parallel auf einem der Busse 61, 66, 71 oder 76 von den Prozessoren/Speichern 36 entlang einer Kante des Feldes zu einem Bussteuerschaltkreis 60, 65, 70, 75, welche die Daten auf einem Bus 81 weiterschalten, der mit dem Eingang des Puffers 80 verbunden ist, weitergeleitet. Der Ausgang des Puffers 80 ist ein Hochgeschwindigkeitsdatenbus 86, der mit einer Datensenke 90 verbunden ist. Der Puffer 80 stellt beispielsweise ein Feld von 32 Parallel-Input-Seriell-Output-Schieberegistern dar, von denen jedes eine 32-Bit-Kapazität aufweist; der Datenbus 86 kann ein 32-Bit-Bus sein. Bei dieser Anordnung besteht keine Notwendigkeit für das herkömmliche Multiplexen oder Demultiplexen. Wenn sich die Anzahl der Datenleitungen im Bus 86 von der Anzahl der Schieberegister im Puffer 80 unterscheidet, werden Multiplex/Demultiplex-Schaltkreise verwendet, die die Daten von den seriellen Ausgängen der Schieberegister an die individuellen Datenleitungen des Busses 86 zur Verfügung stellen. Die Datensenke 90 kann jegliche Arten von Datensenken darstellen, beispielsweise ein Computerterminal, eine Kommunikationsleitung, ein Display, ein Drucker, ein Plotter, ein Stimmen-Synthesizer, eine mechanische Einrichtung, ein Roboter, ein Disc-File oder eine entsprechende Kombination.
- Die Richtung des Datenflusses durch das Feld 30 wird von dem Mikrokontroller 20 und dem Steuerschaltkreisen 60, 65, 70, 75 gesteuert und kann von Ost nach West, von Nord nach Süd oder umgekehrt verlaufen. Wie in Fig. 1B gezeigt ist, enthält jeder Puffer 60, 65, 70 oder 75 1024 Auswähler (selectors) 10 001, 10 002, 10 003 . . . 11.024. Jeder Selektor hat vier Signaleingänge und vier Selektoreingangsleitungen. Einen der Signaleingänge zu jedem Selektor stellt eine der Leitungen des Datenbusses 51 vom Bus 50 dar. Ein anderer Signaleingang ist Masse. Die anderen zwei Signaleingänge sind Ausgänge vom Feld 30. In einem Fall ist der Eingang der Ausgang von dem Feld in derselben Reihe oder Spalte wie der Selektor. Im anderen Fall, ist der Eingang der Ausgang von dem Feld in der Reihe oder Spalte unmittelbar neben dem Selektor. Im Falle des untersten Selektors werden zwei der Eingänge des Selektors mit Masse verbunden. Jede der vier Eingangsselektorleitungen wählt einen der vier Signaleingänge als Ausgang von jedem Selektor aus. Die Signale auf den vier Eingangsselektorleitungen werden durch den Mikrokontroller 20 erzeugt.
- Diese Anordnung führt dazu, daß jeder Puffer eines von vier Signalsets dem Feld zur Verfügung stellen kann: die Daten vom Puffer 50, die zurückgeleiteten Daten vom Feld 30, die zurückgeleiteten Daten der benachbarten Reihe oder Spalte des Feldes 30 und lauter Nullen. Im Falle der zurückgeleiteten Daten von einer benachbarten Reihe oder Spalte hat der Puffer tatsächlich alle individuellen Prozessoren/Speicher des Feldes in einer einzigen Linie verbunden, die sich spiralförmig durch die 1024 Reihen oder Spalten des Feldes erstreckt.
- Das obenbeschriebene zweidimensionale Verbindungsgitter ist zum Schreiben großer Mengen von Daten in das Feld 30, beispielsweise zu Beginn einer Berechnung und zum Auslesen des Feldes, beispielsweise wenn es notwendig ist, die Verarbeitung zu unterbrechen und den Zustand des Feldes zu dieser Zeit zu speichern, nützlich. Jedoch ist dieses Verbindungsfeld nicht für schnelle Datenwechsel in zufälligen Richtungen zwischen den Prozessoren/Speichern 36 des zweidimensionalen Gitters geeignet. Weiterhin ist es zum Bewegen von Daten zwischen den Kanten des Feldes und einem speziellen Prozessor/Speicher notwendig, diese Daten durch alle Prozessoren/Speicher zwischen der Kante und dem interessierenden Prozessor/Speicher zu schieben, was eine Verschiebung durch mehr als 500 Prozessoren/Speicher erfordert. Selbst dort, wo es möglich ist, einen einzelnen Verschiebeschritt mit sehr hoher Geschwindigkeit auszuführen, macht die Notwendigkeit von 500 Schiebeschritten die gesamte Operation extrem langsam. Mit den zusätzlichen Schwierigkeiten, derartige Verschiebungen zur selben Zeit für eine große Anzahl von Prozessoren/Speichern in zufälliger Weise und in unabhängigen Richtungen auszuführen, wird es unmöglich, ein derartiges großes zweidimensionales Gitter von Prozessoren/Speichern in vernünftigen Kostenrahmen zu betreiben.
- Bei der vorliegenden Erfindung ist dieses Problem dadurch bewerkstelligt, daß die Prozessoren/Speicher 36 zusätzlich gemäß einer zweiten Geometrie miteinander verbunden sind. Insbesondere sind die ICs 35 in Form eines Boolschen n-Würfels mit 15 Dimensionen miteinander verbunden. Jeder IC weist einen logischen Schaltkreis auf, um das Weiterleiten von Nachrichten durch ein derartiges Verbindungsnetzwerk zu steuern. Weiterhin sind innerhalb jedes ICs Busverbindungen mit den 32 Prozessoren/Speicher vorhanden, so daß jeder der mehr als eine Million Prozessoren/Speicher eine Nachricht zu jedem anderen schicken kann. Weiterhin kann eine große Anzahl von Nachrichten zu jeder Zeit gesendet werden und die Nachrichten können in zufälligen Richtungen weitergeleitet werden.
- Um dieses Verbindungsmuster der ICs 35 zu verstehen, ist es zweckmäßig, die ICs von 0 bis 32 767 zu numerieren und diese Nummern oder Adressen in binärer Schreibweise anzugeben, wobei 15 Binärstellen verwendet werden, wie dies aus Tabelle I ersichtlich ist. Tabelle I IC-Adresse in dezimaler Schreibweise IC-Adresse in binärer Schreibweise
- Das Prinzip der Verbindung, wie es oben anhand eines zweidimensionalen Gitters beschrieben wurde, kann auf ein 15-dimensionales Gitter ausgedehnt werden. So wie jeder Prozessor/Speicher 36 durch zwei Nummern identifiziert wurde, einer zum Bestimmen seiner Position bezüglich der ersten Dimension des zweidimensionalen Gitters, die andere zum Spezifizieren seiner Position bezüglich der zweiten Dimension, kann eine Zahl zum Identifizieren der Position eines ICs in jeder der 15 Dimensionen eines Boolschen 15-Würfels verwendet werden. In einem n-Würfel kann jedoch ein IC für jede Dimension eine von zwei unterschiedlichen Positionen 0 und 1 annehmen. Somit spezifiziert die binäre 15-stellige IC-Adresse, wie sie in Tabelle I angegeben ist, auch die Position des ICs in dem 15-dimensionalen n-Würfel. Zur Vereinfachung wird die am weitesten links stehende Stelle der 15 binären Stellen verwendet, um die Position des ICs in der ersten Dimension zu spezifizieren und entsprechend wird die am weitesten rechts liegende Stelle verwendet, um die Position des ICs in der 15 Dimension zu spezifizieren.
- Da jede binäre Stelle nur zwei Werte haben kann, 0 oder 1, und da jeder IC einheitlich durch 15 binäre Stellen identifiziert wird, weist jeder IC 15 andere ICs auf, dessen binäre Adresse lediglich um eine Stelle von seiner eigenen Adresse abweicht. Diese 15 ICs, deren Adressen nur um eine Stelle von einem ersten IC abweichen, werden als die nächsten Nachbarn des ersten ICs bezeichnet. Für denjenigen, der mit der mathematischen Definition der Hamming-Distanz vertraut ist, wird ersichtlich sein, daß der erste IC gegenüber seinem fünfzehnten nächsten Nachbarn eine Hamming-Distanz von eins aufweist. Zwei Beispiele der Adressen eines ICs und seiner fünfzehn nächsten Nachbarn sind in Tabelle II gegeben. Tabelle II Beispiel I IC-Adresse: Adresse der nächsten Nachbarn:
- Um die ICs 35 in Form eines Boolschen 15-Würfels zu verbinden, wird jeder IC mit seinen 15 nächsten Nachbarn verbunden. In Fig. 1 sind diese Verbindungen in schematischer Weise durch 15 Eingangsleitungen 38 und 15 Ausgangsleitungen 39 repräsentiert, obwohl die tatsächlichen Verbindungspfade aufgrund ihrer Komplexität, die sie der Zeichnung zufügen würden, nicht gezeigt sind. Jede der 15 Eingangsleitungen 38 zu jedem IC 35 ist mit einer unterschiedlichen von den 15 Dimensionen des Boolschen 15-Würfels assoziiert und entsprechend ist jede der 15 Ausgangsleitungen 39 von jedem IC 35 mit einer unterschiedlichen Dimension assoziiert.
- Eine Vorstellung von dem Verbindungsschema eines Boolschen n-Würfels kann durch Betrachtung der Verbindungen, die für ein Feld von ICs 35' in einem Boolschen n-Würfel mit drei und vier Dimensionen benötigt würden, gewonnen werden. Die Fig. 2 zeigt eine schematische Verdeutlichung des Boolschen n-Würfels mit drei Dimensionen. Dieser erscheint als herkömmlicher Würfel mit acht Ecken und 12 Kanten. Die drei Dimensionen dieses Würfels sind durch die römischen Ziffern I, II, II bezeichnet. An jeder Ecke sitzt ein IC 35' und von jedem IC gehen drei Ausgangsleitungen 39' aus, die sich entlang der drei Dimensionen des Würfels zu den drei nächsten Nachbar-ICs erstrecken. Wie einsichtig ist, hat jeder IC 35' auch drei Eingangsleitungen 38', die die Ausgangsleitungen von seinen drei nächsten Nachbarn darstellen. Die unterste linke Ecke wird als Ausgangspunkt des Systems angenommen und entsprechend hat der IC an dieser Ecke eine Position bzw. Adresse mit Nullen in der ersten, zweiten und dritten Dimension des dreidimensionalen Würfels. Diese Adresse wird als 000 geschrieben. Da sich jeder IC bezüglich jeder Dimension nur an zwei unterschiedlichen Positionen befinden kann, haben die anderen ICs Adressen, die einer anderen dreistelligen Kombination von 0 und 1 entsprechen, wie das in Fig. 2 gezeigt ist.
- Die Fig. 3 zeigt einen Boolschen n-Würfel mit vier Dimensionen. Bei einem solchen Würfel sind 16 Ecken und 32 Kanten vorhanden. Wiederum ist an jeder Ecke ein IC 35' vorhanden und mit seinem nächsten Nachbarn durch Eingangsleitungen 38' und Ausgangsleitungen 39' verbunden. In diesem Fall hat jedoch jeder IC vier nächste Nachbarn und es erstrecken sich daher vier Eingangsleitungen und vier Ausgangsleitungen entlang der vier Dimensionen des 4-Würfels. Die Position eines jeden ICs in dem Boolschen 4-Würfel wird durch eine vierstellige binäre Zahl, wie sie in Fig. 3 gezeigt ist, identifiziert. Die vier Dimensionen dieses 4-Würfels sind durch die römischen Ziffern I, II, III, IV identifiziert.
- Die Übertragung dieses Musters auf Würfel mit mehr Dimensionen liegt auf der Hand. In jedem Fall wird die nächsthöhere Dimension zweimal so viele Ecken aufweisen und jeder IC wird einen weiteren nächsten Nachbarn aufweisen. Entsprechenderweise hat ein Boolscher 15-Würfel 32 768 Ecken, bei dem sich an jeder Ecke ein IC befindet und jeder IC wird 15 nächste Nachbarn aufweisen.
- Um eine Kommunikation innerhalb des Verbindungsschemas eines Boolschen 15-Würfels zuzulassen, wird das Computersystem so betrieben, daß es sowohl Verarbeitungszyklen als auch Weiterleitungszyklen hat. Die Berechnungen werden während den Verarbeitungszyklen durchgeführt. Während der Weiterleitungszyklen werden die Ergebnisse der Berechnungen in Form von Nachrichtenpaketen organisiert. Diese Pakete werden von einem IC zum anderen durch den Weiterleitungsschaltkreis in jedem IC gemäß der Adressinformation, die einen Teil des Pakets darstellt, weitergeleitet. Das Format des Nachrichtenpaketes ist in Fig. 4 angegeben, wo eine 15-stellige IC-Adresse, ein Formatbit, eine weitere 15-stellige Duplikat-IC-Adresse, fünf Adressbits für den Prozessor/Speicher in dem IC, vier Adressbits für ein Register in dem Prozessor/Speicher, 32 Bits für die Nachricht und ein Bit für Fehlererkennung, was zusammen 73 Bits ausmacht, gezeigt sind. Weitere Bits können für die Fehlerkorrektur vorhanden sein. Die Zeitdauer für jedes Bit ist beispielsweise 0,1 bis 1 Mikrosekunde entsprechend einer Frequenz von 1 bis 10 Megahertz (MHz).
- Die Fig. 4 zeigt auch die Basistaktsignale phi1 und phi2, wie sie in dem System verwendet werden. Diese Signale sind nichtüberlappende Zweiphasentakte, von denen jeder eine Periode und eine Frequenz hat, die gleich der eines Bits in dem Nachrichtenpaket ist.
- In dem Nachrichtenpaket ist die IC-Adressinformation relativ zur Adresse des Ziel-ICs angegeben.
- Anfänglich stellt sie die Differenz oder Versetzung zwischen der Adresse des ICs der als Quelle der Nachricht agiert und seines Zielortes dar. Beispielsweise ist für den Fall, daß die Adresse des Quell-ICs 010 101 010 101 010 ist und die Adresse des Ziel-ICs 111 111 111 111 111, die relative Adresse, die am Quell-IC gebildet wird 101 010 101 010 101. Es ist verständlich, daß diese relative Adresse die logische XOR-Verknüpfung zwischen den Adressen der Quelle und des Ziels ist. Es ist weiterhin verständlich, daß Einsen in der relativen Adresse Dimensionen angeben, bei denen das Nachrichtenpaket nicht bereits in der richtigen Dimension vorliegt, und damit Dimensionen angeben, zu denen das Nachrichtenpaket bewegt werden muß, um den Ziel-IC zu erreichen. Damit ist bei dem obigen Beispiel, wenn die Adressen des Quell- und Ziel-ICs bei allen geraden Positionen gleich sind, die Nachricht bereits in diesen Dimensionen an der richtigen Stelle. Für die ungeraden Dimensionen jedoch, bei denen der Quell- und Ziel-IC sich in ihren Adressen unterscheiden, zeigt das Vorliegen eines 1-Bits in der relativen Adresse an, daß es notwendig ist, das Nachrichtenpaket von einem IC an einen anderen in dieser Dimension zu bewegen.
- Wenn die Nachricht von einem IC zu dem nächsten bewegt wird, wird die relative Adresse angepaßt, um jede Bewegung zu berücksichtigen. Dies wird vorzugsweise dadurch erreicht, daß die Bits in der Duplikat-IC-Adresse komplementiert werden, die mit der Dimension assoziiert sind, entlang derer das Nachrichtenpaket bewegt wird. Als Ergebnis werden, wenn das Nachrichtenpaket den Ziel-IC erreicht, alle Bits der Duplikat-IC-Adresse 0 sein.
- Der Weiterleitungsschaltkreis ist in allen ICs identisch und arbeitet synchron unter Verwendung des gleichen Weiterleitungszyklus. Für das Beispiel der Fig. 4 eines Nachrichtenpaketes mit 73 Bits, bei denen 15 Bits die IC-Adresse darstellen, beträgt die Länge des Weiterleitungszyklus 88 Zyklen des Basistaktsignals phi 1. In der ersten Zeitperiode eines jeden Weiterleitungszyklus, testet der Weiterleitungsschaltkreis in jedem IC das vordere Bit der ersten Kopie der IC-Adresse eines jeden Nachrichtenpakets in dem Weiterleitungsschaltkreis, um einen Pegel festzustellen. Liegt ein 1-Bit an dieser Position vor und ist die Ausgangsleitung von dem IC der mit der ersten Dimension assoziiert ist nicht bereits besetzt, wird das Nachrichtenpaket entlang der Ausgangsleitung für die erste Dimension zum nächsten Nachbarn des ICs in der ersten Dimension weitergeleitet. Wenn das vordere Bit der Nachrichtenpaketadresse ein 0-Bit ist, verbleibt das Nachrichtenpaket im gleichen IC, da es sich bezüglich der ersten Dimension an der korrekten Stelle befindet. Als Ergebnis werden in der ersten Zeitperiode Nachrichten zwischen den Weiterleitungsschaltkreisen der ICs innerhalb der ersten Dimension weitergegeben.
- Das vordere Bit der ersten Kopie der IC-Adresse in dem Nachrichtenpaket wird dann nicht weiter beachtet. Wenn das Nachrichtenpaket an einen anderen IC weitergeleitet wurde, wird das korrespondierende Adressbit in der Duplikats-IC-Adresse komplementiert, um die Bewegung zu berücksichtigen.
- In der zweiten Adresszeitperiode, testet der Weiterleitungsschaltkreis jedes ICs erneut das führende Bit des Nachrichtenpakets, wie es in dem IC vorliegt. Dieses Bit zeigt jedoch an, ob das Nachrichtenpaket bezüglich der zweiten Dimension in der richtigen Position ist. Wenn das Bit ein 1-Bit ist und wenn die Ausgangsleitung für die zweite Dimension nicht bereits belegt ist, wird das Nachrichtenpaket durch die Ausgangsleitung für die zweite Dimension zu dem nächsten Nachbarn des ICs bezüglich der zweiten Dimension weitergeleitet. Ist das erste Bit ein 0-Bit, verbleibt das Nachrichtenpaket im IC. Dieses Verfahren wird über 15 Adresszeitperioden fortgesetzt, so daß am Ende die ersten 15 Adressbits des Nachrichtenpakets verbraucht sind. Wenn jedoch die Ausgangsleitungen verfügbar waren, wird ein Pfad durch den Boolschen 15-Würfel errichtet worden sein, durch den der Rest des Nachrichtenpaketes übertragen werden kann.
- Ein anschauliches Beispiel dieses Weiterleitungsschemas ist anhand des Boolschen 4-Würfels der Fig. 3 ersichtlich. Nimmt man an, daß eine Nachricht von einem Quell-IC 35' mit einer Adresse 1111 zu einem Ziel-IC 35' mit der Adresse 0010 gesendet werden soll, so kann die relative Adresse oder Versetzung des Ziel-ICs durch XOR-Verknüpfung der Adressen vom Quell- und Ziel-IC erhalten werden. Entsprechend ist die relative Adresse 1101, die anzeigt, daß das Nachrichtenpaket in der ersten, zweiten und vierten Dimension bewegt werden muß, jedoch nicht in der dritten Dimension. Der Weiterleitungsschaltkreis am Quell-IC untersucht dann das erste Bit der ersten Kopie der relativen Adressen, stellt eine Eins fest, leitet die Nachricht entlang der ersten Dimension zum IC 0111 falls diese Ausgangsleitung verfügbar ist, verwirft das erste 1-Bit in der ersten Kopie der IC-Adresse und komplementiert das erste 1-Bit in der ersten Duplikat-IC-Adresse. In der zweiten Adresszeitperiode untersucht der Weiterleitungsschaltkreis des ICs, dessen Adresse 0111 ist, das erste der drei übrigbleibenden Adressbits und findet erneut ein 1-Bit. Entsprechend sendet der Weiterleitungsschaltkreis, wenn die Ausgangsleitung verfügbar ist, das Nachrichtenpaket an den IC mit der Adresse 0011, verwirft das 1-Bit in der ersten Kopie der IC-Adresse, das die Bewegung in der zweiten Dimension angibt und komplementiert das 1-Bit in der Duplikat-IC-Adresse, um anzuzeigen, daß die Bewegung stattgefunden hat.
- In der dritten Adresszeitperiode untersucht der Weiterleitungsschaltkreis bei Adresse 0011 das erste der zwei verbleibenden Adressbits und identifiziert ein 0-Bit. Es behält daher das Nachrichtenpaket in diesem IC bei und verwirft das 0-Bit. In der vierten Adresszeitperiode untersucht der Weiterleitungsschaltkreis bei der Adresse 0011 das verbleibende Adressbit und identifiziert ein 1-Bit. Entsprechend leitet er das Nachrichtenpaket entlang der Ausgangsleitung zum IC 0010, verwirft das letzte Bit der ersten Kopie der IC-Adresse und komplementiert das letzte Bit der Duplikat-IC-Adresse.
- Nachdem der IC 0010 ereicht wurde, erkennt der Weiterleitungsschaltkreis das Nichtvorliegen jeglicher 1-Bits in der Duplikat-IC-Adresse, welche er testet und weiß daher, daß das Nachrichtenpaket sein Ziel erreicht hat. Das Nachrichtenpaket wird dann an den Prozessor/Speicher weitergegeben, dessen Adresse in dem Nachrichtenpaket spezifiziert ist. Weitere Details, die den Weiterleitungsprozeß betreffen, sind im folgenden in Verbindung mit den Fig. 11 bis 16 angegeben.
- Allgemeine Beschreibung eines parallelverarbeitenden ICs.
- Jeder IC 35 wird als VLSI-Schaltkreis auf einem einzelnen Silikon-Chip hergestellt. Wie in Fig. 5 zu sehen ist, sind 64 (=2&sup6;) dieser Chips in einem individuellen Chippaket 100 enthalten und auf einer Platine (printed circuit borad) 130 aufgebracht und durch diese miteinander verbunden. Um 32 768 derartiger ICs zu beherrschen sind 512 (= 2&sup9;) derartiger Platinen in einem geeigneten Gehäuse befestigt. Geeignete Verbindungskabel 132 verbinden diese Boards sowohl bezüglich der Geometrie des zweidimensionalen Gitters als auch bezüglich der Geometrie des Boolschen 15-Würfels. Für die in Fig. 5 zu sehende Konfiguration werden sechs der nächsten Nachbar-ICs mit ihm auf demselben PC-Board befestigt werden, die anderen neun auf anderen PC-Boards.
- 92 Pins 102 sind an jeder Packung vorgesehen, um den Chip mit anderen Chips auf dem PC-Board und dem Rest des System zu überwinden. Die Signale, die von diesen 92 Pins zur Verfügung gestellt werden, sind in Tabelle 3 aufgeführt. Tabelle III Pin-Name Nr. Typ Funktion Eingang Taktpuls letzter Takt im Zyklus RESET Initialisierung ALU Betriebsauswahl RegA Quelleninvertiersteuerung, ALU Betriebsauswahl, InvA RegB Quelleninvertiersteuerung, InvB Flag Quelleninvertiersteuerung, InvF Eingang erstes Register Quelle und Ziel, Reg A0-3 zweite Registerquelle, Register Spaltenauswahl, Spalte 0-31 Flag Adressen, Quelle und Ziel Flag A0-3 Flag Auswahl für Bedingung, Bedingung 0-3 Prüfe Bedienungstest, 0 = schalte auf Null, Nicht Modifiziere RegA mit ComIn Bits, Mod A Chip Auswahl, aktiv low Ein/Aus Zweidimensionale Gitterweiterung nach Norden Zweidimensionale Gitterweiterung von Süden nach Westen (4 Pins momentan nicht benutzt und für spätere Erweiterung verfügbar) N-Würfel Eingang von den nächsten Nachbarn N-Würfel Ausgang zu den nächsten Nachbarn GLOBAL NOR aller Gloaba Flags, open drain wie Global, open drain-driver für LED
- Die Pins, die mit 10-127, RESET, phi 1, phi 2 und KSYNCH bezeichnet sind, sind mit dem Bus 22 verbunden und empfangen Befehlssignale, ein RESET-Signal und TIMING-Signale, phi 1, phi 2 und KSYNCH vom Mikrokontroller 20. Die Pins CS0 und CS1 sind Typauswahlpins, die den Chip adressieren, wenn die Signale an beiden Pins low sind. Die Signale, die diese Pins auswählen, werden dem Feld 30 durch den Bus 24 zugeführt. Die Pins NO-7, SWO-7 und EO-7 stellen Verbindungen mit den nächsten Prozessoren/Speichern an angrenzenden Chips zur nördlichen, südlichen, östlichen und westlichen Richtung zur Verfügung. Die Pins CubeInO-14 und CubeOutO-14 stellen Verbindungen mit dem nächsten Nachbar-Prozessor/Speichern 36 in dem Boolschen 15-Würfel zur Verfügung. Der GLOBAL-Pin wird über die Leitung 26 mit dem Mikrokontroller 20 verbunden. Der LED-Pin stellt einen Ausgang zur Verfügung, der eine LED in seinem aktiven Zustand betreibt, wodurch es dem Chip erlaubt wird, ein visuelles Signal zu erzeugen. Dieses Signal kann zum Testen oder zum Überwachen oder sogar zum Anzeigen von Berechnungsergebnissen erwendet werden. Die sechs Masse- und Leistungsversorgungspins stellen Masse- und Leistungsverbindungen mit dem Chip her.
- Die Fig. 6A und 6B zeigen ein Blockschaltbild von einem der 32 768 identischen ICs 35 auf dem Feld 30. Wie in Fig. 6A gezeigt ist, sind die 32 Prozessoren/Speicher 36 eines ICs in einem Feld von 8 Spalten und 4 Reihen verbunden. Zur besseren Übersichtlichkeit sind die Kanten dieses Feldes mit Nord, Ost, Süd und West bezeichnet. Die Fig. 6A gibt nicht die räumliche Beziehung der individuellen Prozessoren/Speicher an, welche, wie in Fig. 17 gezeigt ist, sich von dieser unterscheidet. Zurückkommend auf Fig. 6A ist jeder Prozessor mit seinem nächsten Nachbarn bezüglich der nördlichen, östlichen, südlichen und westlichen Richtung durch Eingangsanschlüsse, die mit N, E, S und W bezeichnet sind, verbunden. Jeder Prozessor ist außerdem
- DAISY-verkettet über eine Leitung durch einen Eingangsanschluß, der mit DAISY bezeichnet ist. Der Ausgang von jedem Prozessor zu diesen fünf Eingangsanschlüssen liegt am Ausgangsanschluß Carry, der mit dem N, E, S und W Eingangsanschlüssen der nächsten Nachbarn sowie mit dem DAiSY-Eingangsanschluß des nächsten Prozessor/Speichers der Kette verbunden ist. Wie ersichtlich ist, beginnt die Daisy-Kette an der unteren linken Ecke, erstreckt sich über die erste Spalte hinab zur zweiten aufwärts zur dritten usw. bis zur oberen rechten Ecke des Feldes.
- Acht bidirektionale Leitungen 104 erstrecken sich von diesem Prozessoren/Speicher-Feld nach Norden zu den Chip-Pins NO-7 und acht weitere birektionale Leitungen 106 erstrecken sich von dem Prozessorfeld in südlicher Richtung zu den Chip-Pins SWO-7. Vier dieser acht Leitungen 106 werden mit vier bidirektionalen Leitungen 108 vom Westen gemultiplext. Vier weitere bidirektionale Leitungen 110 erstrecken sich von dem Feld nach Osten zu den Chip-Pins EO-3. Die Lese-Schreibfunktion dieser Leitungen wird von den Schreibleitungen 113, 114, 115 gesteuert, welche wiederum die Leitungstreiber 117, 118, 119 steuern, um dadurch Daten im Norden, Osten oder Süden/Westen zu schreiben. Das Multiplexen der südlichen und westlichen Leitungen ist möglich, da der Datenfluß in dem zweidimensionalen Gitterfeld nur in einer Richtung (d. h. von Ost nach West) zur selben Zeit stattfindet.
- Zusätzlich zu den Gitter- und Daisy-Kettenverbindungen, ist jeder Prozessor/Speicher auch gemeinsam mit einem Adressen und Ausgangssignalbus 121, einer Nachrichtenpaket-Eingangsignalleitung 122, einer Nachrichtenpaket-Ausgangssignalleitung 123 und einer GLOBAL-Ausgangssignalleitung 124, verbunden. Die Verbindungen mit diesen Leitungen und Bussen sind in Fig. 6A lediglich für vier Prozessoren/Speicher in der östlichsten Spalte gezeigt; jedoch ist leicht verständlich, daß die gleichen Verbindungen bei allen 32 Prozessoren/Speichern vorgesehen sind.
- Wie in Fig. 6B gezeigt ist, umfaßt jeder IC auch einen TIMING-Generator 140, ein PLA (programmable logic array) 150, eine CIU (communication interface unit) 180, und einen Weiterleitungsschaltkreis (routing circuit) 200. Der TIMING-Generator ist ein Schieberegister 145, durch das ein Puls schrittweise durch die Systemtaktsignale phi 1 und phi 2 weitergegeben wird. Dieser Generator wird von einem TIMING-Signal KSYNCH zurückgesetzt, welches vom Mikrokontroller 20 abgegeben wird. Gemäß allgemein bekannter Technologien erzeugt dieses Register einen Zeitkurvenverlauf, wie er in den Fig. 9, 10, 14 und 16 gezeigt ist, welcher den Betrieb der CIU (communication interface unit) 180 und dem Weiterleitungsschaltkreis 200 steuert.
- Das PLA 150 stellt eine Decodiermatrix dar, die von dem Mikrokontroller 20 die Befehle auf der Leitung 22 erhält und diese Befehle in Signale auf dem Adresse- und Ausgangssignalbus 121 decodiert. Die Befehle werden von der Chip-Packung 100 auf den in Tabelle III aufgeführten 28 Pins empfangen. Mit Ausnahme der Signale auf den Pins 15-8 und 27 werden diese Signale direkt einem PLA-Eingangslatch 151 zugeführt, welches diese Signale speichert, während sie von der PLA 150 decodiert werden und von den Prozessoren-Speichern 36 benutzt werden. Die Signale an den Pins 15-8 werden den vier AND-Gattern 165 zugeführt, welche sie entsprechend den letzten vier Bits des empfangenen Signals, wie es auf der Nachrichtenpaket-Eingangssignalleitung 122, wenn das Signal auf den 127 "high" ist, empfangen werden, modifizieren. Der Pin 127 ist mittels eines Inverters 166 mit einem Serial-Input, Parallel-Outputlatch 167 verbunden, welches diese letzten vier Bits speichert und ist außerdem mit vier OR-Gates 168 verbunden, die die logische OR-Verknüpfung des invertierten Signals auf Pin 127 und des parallelen Ausgangs des Latches 167 bilden.
- Wie in der Fig. 6B gezeigt ist, umfaßt der Bus 121 zwei Busse 152, 154 mit 16 Leitungen und zwei Busse 156, 158 mit 32 Leitungen, die mit einem RAM-Register 250 in jedem Prozessor/Speicher verbunden sind, zwei Achtleitungsbusse 162, 164, die mit der ALU 270 verbunden sind, einen Achtleitungsbus 172, zwei 16-Leitungsbusse 174, 176 und eine einzelne Leitung 178, die mit einem Flag-Kontroller 290 in jedem Prozessor/Speicher verbunden sind. Die Signale auf den Bussen 152, 154, 156, 158, 172, 174 und 176 stellen decodierte Adressignale dar, die zum Lesen oder Schreiben von Information von oder zu einer spezifischen Stelle in dem RAM-Register 250 und dem Flag-Kontroller 290, benutzt werden. Um eine derartige Adressierung zu erreichen, trägt eine Leitung des Busses ein binäres Signal, beispielsweise ein "high"-Signal oder 1-Bit und alle anderen Leitungen tragen die übrigen binären Signale, beispielsweise ein "low"-Signal oder ein 0-Bit. Die Signale auf den Bussen 162, 164 zur ALU 270 stellen unterschiedliche mögliche Ausgänge der ALU 270 dar. Weitere Details die die Signale betreffen sind in Verbindung mit der Beschreibung der Fig. 7A und 7B angegeben.
- Die CIU 180 steuert den Fluß der ausgehenden und eingehenden Nachrichtenpakete zwischen den Prozessoren/Speichern eines ICs und des Weiterleitungsschaltkreises der mit diesem IC assoziiert ist. Die CIU 180 umfaßt einen Inverter 181, ein Latch 182, ein Schieberegister (tapped shift register) 184, erste und zweite Selektoren 186, 188 und erste und zweite Parity-Logik-Schaltkreise 190, 192. Wie in Fig. 6B gezeigt ist, ist die Nachrichtenpaketausgangssignalleitung 123 von den Prozessoren/Speichern 36 des ICs mittels des Inverters 181 mit den Eingängen des Latches 182, dem Schieberegister 184, dem Selektor 186 und dem Parity-Logik-Schaltkreis 190, verbunden. Der Ausgang des Latches 182 wird auf der Leitung 194 dem Weiterleitungsschaltkreis 200 zugeführt, um anzuzeigen, wann ein Nachrichtenpaket von einem der Prozessoren/Speichern 36 verfügbar ist. Das Nachrichtenpaket selbst wird dem Weiterleitungsschaltkreis auf Leitung 196 vom Selektor 186 zugeführt. In der an der CIU 180 empfangenen Form enthält ein ausgesandtes Nachrichtenpaket nur eine Kopie der relativen IC-Adresse des Ziel-ICs. Unter Steuerung von TIMING-Signalen vom Timing-Generator 140 erzeugen der Selektor 186 und das Schieberegister 184 eine Kopie der relativen IC-Adresse und setzt diese am vorderen Ende des Nachrichtenpakets ein. Der Parity-Logik-Schaltkreis 190 berechnet das korrekte Parity-Bit für dieses Nachrichtenpaket und stellt es dem Weiterleitungsschaltkreis als Teil des Nachrichtenpakets zur Verfügung.
- Die Signale vom Weiterleitungsschaltkreis werden dem Selektor 188 auf den Leitungen 197, 198 und 199 zugeführt. Diese Signalleitungen stellen eine Bewertung, ob ein eingehendes Nachrichtenpaket von dem Weiterleitungsschaltkreis verfügbar ist, ob das eingehende Nachrichtenpaket selbst und, ob das ausgesandte Nachrichtenpaket auf Leitung 196 erfolgreich von dem Weiterleitungsschaltkreis empfangen worden ist zur Verfügung. Der Ausgang des Selektors 188 stellt das Nachrichtenpaket dar, welches den Prozessoren/Speichern 36 auf der Nachrichtenpaketeingangsleitung 122 zugeführt wurde. Die Parity-Berechnungen werden von der Parity-Logik 192 ausgeführt. Weitere Details bezüglich der Operation dieses Schaltkreises werden im folgenden innerhalb der Diskussion der Fig. 8 gegeben.
- Der Weiterleitungsschaltkreis 200 steuert die Weiterleitung der Nachrichtenpakete zu und von nächsten Nachbar-ICs in den Boolschen n-Würfel. Der Schaltkreis 200 umfaßt einen Line-Assigner 205, einen Nachrichtendetektor 210, einen Puffer- und Adresswiederhersteller 215 und einen Nachrichten-Injektor 220. Der Line-Assigner 205 hat 15 Eingangsleitungen 38 von den 15 nächsten Nachbarn des entsprechenden ICs und 15 Ausgangsleitungen 39 zu denselben 15 nächsten Nachbarn. Der Line-Assigner 205 weist außerdem 15 Nachrichtenausgangsleitungen 206 zum Nachrichtendetektor 210 und 15 Nachrichteneingangsleitungen 207 zum Nachrichteninjektor 220 auf. Zusätzlich gibt es für jede Nachrichteneingangsleitung 207 eine andere Leitung 208, die das Vorliegen einer Nachricht auf der assoziierten Nachrichten-Eingangsleitung 207 anzeigt. Der Line-Assigner 205 analysiert die Adressen der Nachrichtenpakete, wie sie auf den eingehenden Leitungen 38 empfangen werden, um festzustellen, ob sie an diesen besonderen ICs oder an andere ICs gerichtet sind; er leitet weiterhin die Nachrichtenpakete zu ihren Zielen weiter soweit das möglich ist; und er speichert jedes Nachrichtenpaket, welches für diesen IC vorgesehen ist, sowie jedes andere Nachrichtenpaket, das nicht weitergeleitet werden kann, was einen Konflikt in der Schaltkreiszuordnung gibt.
- Der Nachrichtendetektor 210 checkt den Empfang von Nachrichtenpaketen, untersucht die Adressen der Nachrichtenpakete, wie sie auf den Leitungen 207 vom Line-Assigner 205 empfangen wurden und stellt diese Nachrichtenpakete, die an diesen IC adressiert sind der CIU 180 auf der Leitung 198 zur Verfügung. In dem Schaltkreis, wie er in Fig. 6B gezeigt ist, kann die Leitung 198 nur ein Nachrichtenpaket zu jeder Zeit übertragen. Für den Fall, daß mehr als ein Nachrichtenpaket an diesen IC adressiert ist, wird ein Paket der CIU 180 zugeführt und die anderen werden dem Puffer 215 zusammen mit anderen Nachrichtenpaketen, die an andere ICs adressiert sind, zugeführt.
- Der Puffer- und Adresswiederhersteller 215 umfaßt ein in seiner Bauart und seiner Funktion dem Schieberegister 184 ähnliches Register. Der Puffer 215 stellt am Beginn eines Nachrichtenpakets eine Adresse des Nachrichtenpakets von der Duplikat-Adresseninformation, wie sie in dem Nachrichtenpaket vorkommt, wieder her. Der Ausgang des Puffers und Adressenwiderherstellers wird dem Nachrichteninjektor 220 zugeführt.
- Der Nachrichteninjektor 220 injiziert ein einzelnes Nachrichtenpaket pro Zeiteinheit von der CIU 180 in eine Gruppe von Nachrichtenpaketen, die durch den Weiterleitungsschaltkreis zirkulieren. Weitere Details betreffend den Weiterleitungsschaltkreis werden im folgenden anhand der Fig. 11 bis 16 besprochen.
- Ein Chip-Layout des ICs 35 ist in Fig. 17 angegeben. Bei diesem Layout ist der PLA 150 in zwei Feldern implementiert, die an den oberen und unteren Kanten des Chips auf der rechten Seite liegen. Die individuellen Prozessoren/Speicher 35 sind in Gruppen 4 im Raum zwischen der PLA 150 ausgebildet, mit Bustreibern zwischen ihnen. Wie anhand der untengegebenen Diskussion eines individuellen Prozessor/Speichers ersichtlich ist, umfaßt jeder Prozessor/Speicher 384 Bits im dynamischen Lese-Schreib-Speicherbereich, einen Adressierungsschaltkreis für diesen Speicherbereich, eine ALU, ein Flag-Register, einen Adressierungsschaltkreis für das Flag-Register und mehrere Treiberschaltkreise. Die CIU 180 ist neben der oberen Mitte des Chips angeordnet. Der Timing-Generator 140 und der Weiterleitungsschaltkreis 200 nehmen den linken Teil des Chips ein. Für diese Anordnung stellt der Adress- und Ausgangssignalbus 121 von der PLA 150 an die individuellen Prozessoren/Speicher 36 ein Feld von vertikalen Linien dar, die durch die individuellen Prozessoren/Speicher und Bustreiber hindurchgehen; die Ausgangsleitungen von den Prozessoren/Speichern zur CIU 180 stellen in gleicher Weise ein Feld von vertikalen Leitungen dar. Wie in der vergrößerten Ansicht eines Prozessor/Speichers gezeigt ist, findet der Signalfluß in dem Prozessor/Speicher praktisch im rechten Winkel zum Bus 121 statt. Dies führt dazu, Leitungsüberkreuzungen minimiert sind und das Schaltkreislayout vereinfacht ist.
- Die annähernde Anzahl von Transistoren, die benötigt wird, um einen Prozessor/Speicher 36 in einem VLSI-Design zu implementieren beträgt 1800. Die Anzahl der Transistoren in der PLA 150, den 32 Prozessoren-Speichern und den Bustreibern beträgt etwa 60 000. Der Timing-Generator, Weiterleitungsschaltkreis und die CIU benötigen etwa 24 000 Transistoren. Die Herstellung eines integrierten Schaltkreises mit weniger als 100 000 Transistoren auf einem einzelnen Silikon-Chip liegt innerhalb der beherrschbaren Grenzen. Eine kommerzielle Produktion des integrierten Schaltkreises 35 auf einem einzelnen Silikon-Chip mit etwa 7·8 mm erscheint ebenfalls mit heutiger Technik möglich.
- Ein Prozessor/Speicher 36 ist in den Fig. 7A und 7B im Detail gezeigt. Wie die Fig. 7A zeigt, umfaßt der Prozessor/Speicher ein RAM 250, eine ALU (arithmetic logic unit) 280 und einen Flag-Kontroller 290. Die ALU arbeitet mit Daten von drei Quellen, zwei Registern in dem RAM und einem Flag-Eingang und erzeugt zwei Ausgänge, einen Summenausgang, der in eines der RAM-Register geschrieben wird und einen Carry-Ausgang der einigen Register in dem Flag-Kontroller sowie einigen Prozessoren/ Speichern verfügbar gemacht wird. Der ALU-Betrieb findet in zwei Zyklen, einem Lesezyklus und einem zusätzlichen Schreibzyklus, statt. Während des Lesezyklusses werden die zu verarbeitenden Bits von dem zwei RAM-Registern und dem Flag-Eingang geholt. Die Summen- und Carry-Ausgänge werden bestimmt. Während eines Schreibzyklus, werden diese Ergebnisse in das RAM- und Flag-Register geschrieben, wenn die vorgeschriebene Bedingung erfüllt ist. Das Timing der ALU ist so ausgestaltet, daß die neu berechneten Werte der Summe und Carry-Ausgänge vor dem Schreibzyklus verfügbar sind. Dies erlaubt es, das Summenausgangssignal in einem der RAM-Register während des Schreibzyklusses zurückzuschreiben und erlaubt es dem Carry-Ausgang über eine Vielzahl von Prozessoren/Speichern auf dem gleichen Chip während eines einzigen Befehlszyklusses weiterzuleiten.
- Das RAM 250 umfaßt ein Feld von dynamischen Lese/Schreibe-ICs 252, die von zwölf Registern 254 mit jeweils zweiunddreißig Bits angeordnet sind. Jedes der zweiunddreißig Bits ist in den Spalten 0 bis 31 separat adressierbar. Die Register sind mit 0 bis 15 bezeichnet und ihre Adreßleitungen sind vorgesehen, um Zugriff auf die sechzehn Register zu haben. Jedoch werden die Register 12 und 13 nicht benutzt, und die Register 14 und 15 stellen Signale zur Verfügung, die nicht in dem RAM 250 gespeichert werden. Die Register 0 bis 11 sind General Purpose Register. Die Register 14 und 15 haben besondere Funktionen. Alle Bit-Positionen des Registers 14 weisen denselben Wert wie das Bit, das auf Leitung 122 ansteht auf; und alle Bit-Positionen des Registers 15 sind Null. Somit agiert das Register 15 als Datensenke.
- Die Eingänge des RAMs 250 sind die Busse 152, 154, 156, 158, eine Summenausgangsleitung 285 von der ALU 270, die Nachrichtenverkehreingangsleitung 122 von der CIU 180 und eine WRITE ENABLE-Leitung 298 vom Flag-Controller 290. Die Ausgänge des RAM 250 sind die Leitungen 256, 257. Die Signale auf den Leitungen 256, 257 werden von derselben Spalte von zwei unterschiedlichen Registern im RAM 250 erhalten, wobei eines davon als Register A und das andere als Register B bezeichnet wird. Die Busse 152, 154, 156, 158 adressieren diese Register und die darin enthaltenen Spalten gemäß den Befehlswörtern vom Mikrokontroller 20.
- Beispielsweise werden, bezugnehmend auf Tabelle III, die Leitungen I 5-8 von der PLA 150 decodiert, um ein "high"-Signal auf einer der sechzehn Leitungen 152 des Busses 121 zur Verfügung zu stellen, welche das Register A auswählt oder adressiert, die Leitungen I 9-12 werden decodiert, um ein "high"-Signal auf einer der sechzehn Leitungen 154 zur Verfügung zu stellen, welche das Register B auswählt, und die Leitungen I 13-17 werden decodiert, um ein "high"-Signal entweder an eine der zweiunddreißig Schreibleitungen 156 oder an eine der zweiunddreißig Leseleitungen 158 zur Verfügung zu stellen, von denen jede eine von zweiunddreißig Spalten im RAM 250 auswählt.
- Somit spezifizieren die Leitungen 152-158 zwei Zellen in dem 12·32 Bit RAM und spezifizieren weiterhin, ob der Betrieb ein Lese- oder Schreibbetrieb ist.
- Weitere Details des RAMs 250 sind in Fig. 7B gezeigt, wo anschaulich die vier Zellen in der oberen linken Ecke des RAMs 250 und der dazugehörige Schaltkreis gezeigt ist. Jede Zelle 252 umfaßt drei Durchlaßtransistoren 261, 262, 263, die wie gezeigt, so verschaltet sind, daß sie ein Informationsbit in Transistor 263 speichern. Ein Datenbit wird von dem Transistor 363 unter Steuerung des Signals von einem der Leseauswahlleitungen 158 und einem der Durchlaßtransistoren 262, gelesen.
- Jedes Register 254 mit dreiunddreißig Zellen 252 umfaßt auch eine Bitleitung 255, einen Wiederauffrischungsschaltkreis 264 und einen Vorladetransistor 271. Der Wiederauffrischungsschaltkreis umfaßt drei Durchlaßtransitoren 265, 266, 267, die, wie gezeigt, verbunden sind, um ein Informationsbit im Transistor 266 zu speichern. Ein Datenbit wird in den Transistor 266 unter Steuerung des Signals auf der geteilten Leseleitung 268 und einem der Durchlaßtransistoren 265, geschrieben. Das Datenbit, das in dem Durchlaßtransistor 266 gespeichert ist, wird unter Steuerung des Signals auf der Auffrischungs/Schreibleitung 269 und des Durchlaßtransistors 267 ausgelesen.
- Jede Bitleitung 255 ist mit einem Durchlaßtransistor 273 und einem Durchlaßtransistor 274 verbunden. Zusätzlich ist die Leitung 122 mit einem Paar von Durchlaßtransistoren 273, 274 verbunden, um dem Register 14 einen Eingang zuzuführen. Weiterhin ist eine Masseverbindung zu einem anderen Paar von Durchlaßtransistoren 273, 274 vorgesehen, um eine Quelle für 0-Bits und eine Datensenke, wie das Register 15, zur Verfügung zu stellen. Die sechzehn Durchlaßtransistoren 273 bilden einen Register A-Selektor 275, bei dem jeder Durchlaßtransistor als AND-Gate dient, der durch eine unterschiedliche von den sechzehn Leitungen 152 aktiviert wird, so daß das Register A unter sechzehn Registern im RAM 250 ausgewählt wird. In gleicher Weise bilden die sechzehn Durchlaßtransistoren 274 einen Register B-Selektor 276, bei dem jeder Transistor mit einer unterschiedlichen der sechzehn Leitungen 154, die das Register B aus den sechzehn Registern auswählen, verbunden ist. Jederzeit ist lediglich ein Durchlaßtransistor 273 und ein Durchlaßtransistor 274 leitend, so daß ein Ausgang für das Register A und das Register B ausgewählt wird.
- Die Ausgänge der Transistoren 273 sind miteinander verbunden, um das Register A-Signal auf der Leitung 256 zur Verfügung zu stellen. Die Ausgänge der Transistoren 272 sind miteinander verbunden, um das Register B-Signal auf der Leitung 257 zur Verfügung zu stellen. Das Signal auf der Leitung 256 wird durch den bidirektionalen Driver 258 einem Eingang der ALU 280 zugeführt. Das Signal auf der Leitung 257 wird von einem Treiber 259 an einen anderen Eingang der ALU 280 zugeführt.
- Während des Schreibzyklus der ALU wird das Summenausgangssignal zurück in das Register A geschrieben. Vorteilhafterweise wird dieses Signal dem Transistor 266 des Registers A über den bidirektionalen Driver 258, die Leitung 256 und den einen Durchlaßtransistor 273, der ein Signal leitet, zugeführt.
- Das RAM 250 arbeitet mit Vier-Phasentaktsignal, von denen zwei die Basistaktsignale phi 1 und ph 2 darstellen und von denen die anderen, phi 1p und phi 2p, die Pre-Cursor-Signale phi 1 und phi 2 sind. Die Taktsignale phi 1p und phi 2p werden beide einer Vorladungsleitung 272 zugeführt, um die Bitleitung 255 vor jeder Leseoperation während der Taktzyklen phi 1 und jeder Schreiboperation während des Taktzyklus phi 2 vorzuladen. Während der Taktzyklen phi 1p und phi 2p ist das Signal auf der Vorladungsleitung 272 "high", wodurch der Vorladungstransistor 271 leitend wird und eine Verbindung der positiven Versorgung VDD und jeder Bitleitung einrichtet. Während der Taktzyklen phi 1p lädt diese Verbindung jede Bitleitung 255 auf ein "high"-Signal oder ein 1-Bit.
- Während des Taktzyklus phi 1 wird das Signal, das in dem Durchlaßtransistor 263 während des vorhergehenden Schreibzyklusses gespeichert ist, auf die Bitleitung 255 jedes Registers des RAM 250, ausgelesen. Wenn das gespeicherte Signal ein "high"-Signal oder ein 1-Bit ist, ist der Durchlaßtransistor 263 leitend und stellt eine Verbindung zur Masse her. Im Ergebnis wird, wenn ein "high"-Signal auf einer Leseauswahlleitung 158 dem Durchlaßtransistor 262 zugeführt wird, ein Massepfad eingerichtet, der die Bitleitung 255 auf Masse zieht. Daher wird das im vorhergehenden Schreibzyklus in den Transistor 263 eingeschriebene 1-Bit in ein 0-Bit umgewandelt. Alternativ würde, falls ein 0-Bit in den Transistor 263 eingeschrieben worden wäre, kein Massepfad auftreten und die Bitleitung 255 würde auf "high"-Zustand bleiben. Im Ergebnis würde das in den Transistor 263 geschriebene Bit erneut invertiert werden, in diesem Fall in ein 1-Bit. Das invertierte Bit wird während des nächsten Taktzyklusses, dem Auffrischungszyklus, reinvertiert.
- Während des Taktzyklusses phi 1 ist das Signal auf der Leseleitung 268 ebenfalls "high" und macht den Transistor 265 leitend. Im Ergebnis wird das Signal auf jeder Bitleitung 255 auf den Transistor 266 im Auffrischschaltkreis 264 geschrieben. Zur gleichen Zeit wird das Signal auf der Bitleitung, die durch die Transistoren 273 des Register A-Selektors ausgewählt wurden und das Signal auf der Bitleitung, die durch die Transistoren 274 des Register B-Selektors ausgewählt wurden, den Drivern 258, 259 zugeführt. Wenn diese Driver durch das WRITE ENABLE-Signal auf Leitung 298 aktiviert wurden, werden die Register A durch und Register B-Signale der ALU 280 auf Register A durch und Register B-Signale der ALU 280 auf Ausgangsleitung 256 und 257 zur Verfügung gestellt.
- Während des Taktzyklus phi 2p wird das Signal auf der Vorladungsleitung 272 und der Wiederauffrisch/Schreibleitung 269 "high" werden, wodurch die Transistoren 267 und 271 leitend werden. Wenn ein 1-Bit während des Taktzyklusses phi 1 auf dem Transistor 266 geschrieben wurde, würde dieser Transistor auch leitend werden, wodurch ein Massepfad eingerichtet wird, der die Bitleitung 255 auf Low-Zustand bringt. Im Ergebnis wird das 1-Bit, das auf den Transistor 266 während des Taktzyklus phi 1 geschrieben wurde in ein 0-Bit transformiert.
- Alternativ wird, wenn ein 0-Bit auf den Transistor 266 geschrieben wurde, kein leitender Pfad zur Masse dem Wiederauffrischschalter 264 eingerichtet und die Bitleitung 255 wird durch den Vorladungstransistor 271 auf "high" gezogen, welcher einen leitfähigen Pfad zwischen der positiven Versorgungsspannung VDD und der Bitleitung 255 herstellt. Im Ergebnis wird das 0-Bit, das auf den Transistor 266 geschrieben wurde, in ein 1-Bit invertiert.
- Während des Taktzyklus phi 2 wird das Signal auf jeder Bitleitung auf jeden Transistor 263 per Zellen in der Spalte, wie sie von einem der Schreibauswahlleitungen 156 ausgewählt wurde, geschrieben. Insbesondere wird, wenn ein "high"-Signal einer der Schreibauswahlleitungen 156 zugeführt wird, muß jeder Transistor 261 an den dieses zur Verfügung gestellt wird, leitend werden, wodurch ein Pfad zwischen einer der Bitleitungen 255 und einem der Transistoren 263 zustandekommt, so daß das Signal auf jeder Bitleitung auf den Transistor 263 geschrieben wird. Da dieses Signal einmal invertiert wurde, wenn es aus dem Transistor 263 während des Taktzyklus phi 1 ausgelesen wurde und einmal invertiert wurde, wenn es aus dem Transistor 266 während des Taktzyklus phi 2p gelesen wurde, ist das Signal, das in den Transistor 263 zurückgeschrieben wird, das gleiche wie das original ausgelesene Signal und der Transistor wurde somit aufgefrischt.
- Jedoch für den Fall, daß die Bitleitung 255, welche den Register A-Ausgang zur Verfügung stellt, wird das Signal, das in den Transistor 163 während des Taktzyklus phi 2 geschrieben wird, den Summenausgang der ALU 280 und nicht das ursprünglich vom Transistor 263 gelesene Signal, darstellen. Das Summenausgangssignal wird dem bidirektionalen Treiber 258 auf Leitung 285 während des Taktzyklus phi 2p verfügbar gemacht. Wenn dieses Signal "low" ist, stellt der Treiber 258 einen Massepfad zur Verfügung, der ein 0-Bit auf den Transistor 266 im Register A schreibt, wobei dies unabhängig vom Zustand des im Transistor 266 während des Taktzyklusses phi 1 gespeicherten Signals ist. In gleicher Weise wird, wenn das Summenausgangssignal" high" ist, der Treiber 258 einen Pfad zur positiven Versorgungsspannung VDD herstellen, der ein 1'-Bit auf den Transistor 266 einschreibt unabhängig von dem Signal, das im Transistor 266 während des Taktzyklus phi 2p gespeichert wurde. Erneut zieht ein 1-Bit auf den Transistor 266 die Bitleitung 255 in den Low-Zustand und ein 0-Bit zieht die Leitung 255 in den "High"-Zustand. Im Ergebnis ist während des Taktzyklus phi 2 der Zustand der Bitleitung 255 des Registers A das invertierte Signal des Summenausgangssignals und damit das Signal, das auf den Transistor 263 der Zelle dieses Registers geschrieben wird.
- Wie in Fig. 7A gezeigt ist, besteht der Flag-Controller 290 aus einem Feld von acht 1-Bit D-Flipflops 292, einem zwei-aus-sechzehn-Selektor 294 und einigen logischen Gattern. Die Eingänge der Flipflops 292 sind ein Carry-Ausgangssignal von der ALU 280, ein WRITE-ENABLE-Signal auf Leitung 298 vom Selektor 294, und acht Leitungen des Busses 172 von der PLA 160. Die Leitungen 172 sind Adreßleitungen, von denen jede mit einem unterschiedlichen Flipflop 292 verbunden ist, um ein Flipflop auszuwählen, in das ein Flag-Bit geschrieben werden soll. Beispielsweise wird ein Flipflop durch ein "high"-Signal ausgewählt, das auf der Leitung ansteht, die mit diesem Flip-Flop verbunden ist, während ein Low-Signal den anderen sieben Leitungen, die mit den anderen Flip-Flops verbunden sind, zugeführt wird. Die Ausgänge der Flip-Flops 292 werden dem Selektor 294 zugeführt. Der Ausgang von einem dieser Flipflops, dem Global-Flipflop wird ebenfalls durch einen Durchlaßtransistor 124' der Global- Ausgangsignalleitung 124 zugeführt. Der Ausgang des anderen Flipflops, dem comE-Flipflop wird dem NAND-Gate 293 zugeführt, dessen Ausgang durch einen Durchlaßtransistor 123' zur Nachrichtenpaketausgangssignalleitung 123 geführt wird.
- Die Eingänge des Selektors 294 stellen bis zu sechzehn Flag-Signalleitungen 295, von denen acht von den Flipflops 292 kommen, und die sechzehn Leitungen von jeden der Busse 174, 176 dar. Erneut stellen die Leitungen 174 und 176 Adreßleitungen dar, die eine der Flag-Signalleitungen für die Ausgabe oder die weitere Verarbeitung auswählen. Der Selektor 294 stellt auf den Leitungen 296 und 297 Ausgänge zur Verfügung, die den Flags entsprechen, die nicht die Adreßleitungen 174 und 176 ausgewählt wurden. Das Flag auf der Leitung 296 ist das Flag-Out-Signal. Das Flag auf der Leitung 297 wird durch das EXOR-Gatter 299 mit dem Signal der Leitung 178 von der PLA 150 verglichen, um ein WRITE ENABLE-Signal auf der Leitung 298 zu erzeugen.
- Der Selektor 294 kann durch zwei Felder von jeweils sechzehn Durchlaßtransistoren implementiert sein, ähnlich wie die Felder 275, 276 im RAM 250. Jede der sechzehn Leitungen 174 steuert einen Durchlaßtransistor des ersten Feldes und jede der sechzehn Leitungen 76 steuert einen Durchlaßtransistor des zweiten Feldes. Jeder der Durchlaßtransistoren stellt ein And-Gate dar, das von einem geeigneten Signal auf eine Leitung 174, 176 aktiviert wird. Die individuellen Flag-Eingänge werden zwei unterschiedlichen Durchlaßtransistoren zugeführt, von denen jeweils einer in jedem Feld sitzt. Das Flag-Out-Signal auf der Leitung 196 stellt die einfache logische Or-Verknüpfung der Ausgangs der sechzehn Durchlaßtransistoren des ersten Feldes dar. Das WRITE ENABLE-Signal auf Leitung 198 wird durch Vergleich der logischen Or-Verknüpfung des Ausgangs der sechzehn Durchlaßtransistoren des zweiten Feldes mit dem Signal auf Leitung 178 erhalten. Die Namen, Adressen und Funktionen des Flags sind in Tabelle IV aufgeführt: Tabelle IV Adresse Name Funktion Flag0 General purpose-Flag Global 5 General purpose-Flag hält GLOBAL Bus 135 tief ComE General purpose-Flag aktiviert Carry auf Nachrichtenendatenausgangssignalleitung 134 Nord Gitterverbindung liest Carry auf Chip nach Norden Süden Osten West Daisy Chainverbindung liest Carry von nächstem Chip in der Daisy-Kette DataIn Liest Daten von der Nachrichtendateneingangssignalleitung 122 ein Reserviert Null Liest stets Null.
- Die acht Flag-Register 292 (Adressen 0 bis 7) können mit Daten von der Carry-Ausgangsleitung der ALU 280 beschrieben werden. Diese Werte können für die internen Operationen des Prozessors/Speichers verwendet werden. Die Flags Global und comE haben spezielle Funktionen. Die Ausgänge der Global-Flags von allen Prozessoren/Speichern 36 auf dem Chip werden invertiert und miteinander ODER verknüpft und auf dem Bus 124 dem Global-Pin (siehe Tabelle III) auf dem Chip zugeführt. Die Ausgänge der Global-Pins in dem Feld der zweiunddreißigtausendsiebenhundertachtundsechzig Chips werden ODER verknüpft und auf der Leitung 26 dem Mikrokontroller 20 zugeführt. Das ComE-Flag stellt einen Carry-Ausgang der ALU 280 der Nachrichtenpaketausgangssignalleitung 123 der CIU 180 zur Verfügung. Wenn mehrere Prozessoren/Speicher auf dem Chip gleichzeitig Ausgänge an die Leitungen 123 zur Verfügung stellen, wird der Ausgang der CIU 180 auf der Leitung 196 zum Weiterleitungsschaltkreis 200 die logische OR-Verknüpfung der Carry-Ausgänge aller Prozessoren/Speicher, die zu diesem Zeitpunkt Ausgänge an die Leitung 123 zur Verfügung stellen, darstellen. Die Nord-, Ost-, Süd- und West-Flags stellen dann Eingänge für den Prozessor/Speicher von den Carry-Ausgangsleitungen der nächsten Nachbarprozessoren/Speicher nach Norden, Osten, Süden und Westen, dar. In gleicher Weise stellt das Daisy-Flag in Eingang von der Carry-Ausgangsleitung des Prozessor/Speichers dar, der der nächste in der Daisy-Kette ist. Die Nachrichten von der CIU 180 werden dem Flag-Controller 290 sowie als Eingang dem RAM 250 durch die Nachrichtenpaketeingangssignalleitung 122, zugeführt. Die Nachrichten von dem Prozessor/Speicher werden der CIU 180 auf der Nachrichtenpaketausgangssignalleitung 123 zugeführt. Das 0-Flag wird jeweils einem 0-Ausgang zur Verfügung stellen.
- Wie angedeutet schließt der Prozessorbetrieb einen Lese- und einen Schreibzyklus mit ein. Während eines Lesezyklusses spezifizieren die Signale auf den Pins I 18 bis 21 des Chips die Adresse des Flags, das gelesen werden soll. Diese Signale werden von der PIA 160 decodiert und dem Selektor 294 auf dem sechzehn Leitungsbus 174 zugeführt. Während eines Schreibzyklusses spezifizieren die Signale auf den Pins I 18 bis 21 des Chips, die Adresse des Flag-Registers 292, in welches der Carry-Ausgang gelesen werden soll. Die Signale auf den Pins I 18 bis 21 können sich zwischen einem Lese- und einem Schreibzyklus ändern, so daß das Quell- und Ziel-Flag unterschiedlich sein kann.
- Da die Prozessoren/Speicher auf dem Chip parallel zum Adreß- und Ausgangssignalbus 121 verbunden sind, empfangen alle Prozessoren/Speicher den gleichen Befehl von den Pins I o bis 27. Jedoch hängt die Abarbeitung jedes Befehls von der Zustandsbedingung eines der Flags des Controllers 290 ab. Die Signale auf den Pins I 22 bis 25 des Chips spezifizieren die Adresse des Flags, für das die Ausführung bedingt ist und das Signal auf dem Pin I 26 spezifiziert, ob der Test eine 0 oder 1 ergibt. Diese Adreßsignale werden von der PLA 150 decodiert und dem zwei aus sechzehn Selektor 294 auf den sechzehn Leitungsbussen 176 zugeführt.
- Das Signal am Pin I 26 wird dem X-OR-Gate 299 auf der Leitung 178 zugeführt. Das X-OR-Gate 299 vergleicht das Signal auf Leitung 178 mit dem Flag an der Adresse, wie sie von dem Signal auf einer der sechzehn Leitungen des Busses 176 spezifiziert ist. Wenn zwei Signale gleich sind, wird ein WRITE ENABLE-Signal auf Leitung 298 während des Schreibzyklusses erzeugt, wodurch ermöglicht wird, daß die Summen- und Carry-Ausgänge wie sie während des Lesezyklusses festgestellt wurden, in das RAM-Register A und das Flag-Register 292, welches durch die Signale auf dem Bus 172 spezifiziert ist, geschrieben werden.
- Die ALU 280 umfaßt einen Einsatz-8-Decoder 292, einen Summenausgangsselektor 284 und einen Carry-Ausgangsselektor 286.
- Die ALU 280 arbeitet mit drei Bits gleichzeitig, zwei auf den Leitungen 256, 257 von den Registern A und B im RAM 250 und eines auf der Leitung 296 vom Flag-Controller 290. Die ALU weist zwei Ausgänge auf: Eine Summe auf der Leitung 285, die in das Register A des RAMs 250 geschrieben wird und ein Carry auf der Leitung 286, das in das Flag-Register 292 eingeschreiben werden kann und nach Norden, Osten, Süden, Westen und Daisy-Eingänge anderer Prozessoren/Speicher 36 zugeführt werden kann, mit denen dieser Prozessor/Speicher verbunden ist. Das Signal auf den Pins I 5 bis 8, welche das Register A adressieren, können zwischen einem Lese- und Schreibzyklus sich verändern, so daß das Register A, wie es während eines Lesezyklusses spezifiziert wurde, sich von dem während eines Schreibzyklus spezifizierten unterscheiden kann.
- Die ALU kann Summen- und Carry-Ausgänge von zweiunddreißig Funktionen erzeugen, die alle Variationen der fünf Basisoperationen ADD, ALL, AND, MOVE und SWAP darstellen. Die besondere Funktion wird von Signalen auf den Pins I 0, I 1 und I 2 (Tabelle III) ausgewählt. Die Basisoperationen werden modifiziert indem irgend einer von den drei Eingängen an die ALU selektiv komplementiert wird, indem das entsprechende Bit in dem Befehlswort gesetzt wird. Diese Bits werden dem Chip auf den Pins I 2 bis I 4 zugeführt. Eine Zusammenfassung der Basisoperation, der Chip-Eingänge und der Summen- und Carry-Ausgänge ist in Tabelle V angegeben. Tabelle V Name Summenausgang Carry-Ausgang
- wobei A, B und F die Ausgänge der Register A, des Registers B und des Flag-Controllers darstellen und v eine exklusive OR-Operation, plus eine exklusive OR-Operation und das Nicht-Vorhandensein eines Symbols zwischen einem Paar von Ausgängen eine AND-Operation darstellen. Wie in der obigen Tabelle angedeutet ist, wird das I 2-Bit verwendet, um zwischen der Move- und Swap-Operation zu unterscheiden. Der Summenausgang der Move-Funktion und beide Ausgänge der Swap-Funktion sind unabhängig von dem A-Eingang, was dazu führt, daß eine Invertierung des Eingangs vom Register A für diese Operation bedeutungslos ist. Für den Carry-Ausgang der Move-Funktion werden die Inhalte des Registers A nicht invertiert. Um diese Fähigkeit in zweiunddreißig Prozessoren/Speichern auf einem einzelnen Chip zur Verfügung zu stellen, ist die PLA 180 so programmiert, daß sie die Summen- und Carryausgangstabellen für jeden unterschiedlichen Befehl an den Pins I 0 bis I 4 für jede mögliche Kombination der Eingänge an die ALU, erzeugt. Die ALU bildet einfach den geeigneten SUM-Ausgang und Carry-Ausgang für die momentane Kombination von Eingängen wie sie der ALU zugeführt werden aus. Da nur drei Eingänge zur ALU 280 existieren, gibt es nur acht mögliche Kombinationen für diese Signale: 00, 001, 010, 011, 100, 101, 110, 111. Für jede dieser acht Kombinationen erzeugt die PLA 180 einen Summen-Ausgang und einen Carry-Ausgang, wie er durch die Gleichungen in Tabelle V spezifiziert ist. Entsprechend erzeugt die PIA 180, für jede der zweiunddreißig Funktionen, wie sie durch den Befehl auf den Pins I 0 bis I 4 spezifiziert ist, mögliche Summenausgangssignale an acht Leitungen des Busses 164 und mögliche Carry-Ausgangssignale an acht Leitungen des Busses 166, zur Verfügung. Die zwei Sätze von Signalen werden dem Summen-Ausgangsselektor 284 und dem Carry-Ausgangsselektor 286 jeder ALU des Chips zugeführt.
- Wie in Fig. 7A gezeigt ist, stellt jeder dieser Selektoren ein Feld von Durchlaßtransistoren dar, bei denen jeder ein AND-Gate darstellt, welches durch ein geeignetes Signal an dem Ausgang des Decoders 282 aktiviert wird. Jeder dieser Ausgänge entspricht einer der acht möglichen Signalkombinationen, wie sie an seinen Eingängen empfangen werden, wie dies durch die dreistellige Binärnummer neben der Ausgangsleitung angedeutet ist. Daher sind der Summen-Ausgang auf Leitung 285 und der Carry-Ausgang auf Leitung 287 die zwei Signale, eines auf der Leitung 162, das andere auf der Leitung 164, die die Ausgänge, wie sie durch die Tabelle V definiert sind, für eine besondere Kombination von Eingängen zum Decoder 272, darstellen.
- Wird beispielsweise die AND-Funktion betrachtet, so ist wie in Tabelle V spezifiziert ist, der Summen-Ausgang und der Carry-Ausgang für diese Funktionen ein 0-Bit, wenn zumindest ein Eingang des Decoders 282 ein 0-Bit ist und die Ausgänge sind 1'-Bits nur dann, wenn alle Eingänge des Decoders 282 1'-Bits sind. Da nur eine der acht möglichen Eingangskombinationen des Decoders 282 nur Einsen aufweist, stellt nur eine der acht Leitungen 162 und eine der acht Leitungen 164 von der PLA 180 an die ALU 280 ein 1-Bit zur Verfügung, wenn die AND-Funktion durch ein 1-Bit an Pin I 0 und ein 0-Bit an Pin I 1 spezifiziert ist. Entsprechend sind die Signale, wie sie von den Gatters in den Selektoren 284 und 286 durchgelassen werden, 0-Bits mit Ausnahme, wenn alle Eingänge des Decoders 182 1-Bits sind.
- Eine komplette Tabelle der Ausgangssignale auf die Leitung 162 und 164 für die zweiunddreißig Funktionen, wie sie durch die Pins I 0 bis I 4 spezifiziert sind, ist in Tabelle VI angegeben: Tabelle VI Decoder-Eingänge: Funktion Pin-Eingang Summen-Ausgang Carry-Ausgang
- Für diese zweiunddreißig Funktionen und 0-Quellen sowohl im RAM-Register 15 als auch im Flag-Controller ist es möglich, alle der folgenden Operationen auszuführen:
- Die Addition oder Subtraktion von angeglichenen (aligned) Feldern, die Addition oder Subtraktion einer Konstante, die Berechnung jeglicher boolscher (oder logischer) Funktion von zwei Registern mit Ausgängen an ein Flag-Register und/oder an ein Register A, die Berechnung jeglicher boolischen Funktion des Registers A und eines Flags mit Ausgängen an das Flag-Register und/oder das Register A, die Weitergabe von einem RAM-Register an ein anderes, von einem Register an ein Flag-Register oder von einem Flag-Register an ein RAM-Register, das Schieben oder Permutieren eines Registers, das Vergleichen von angepaßten Feldern, um zu bestimmen, ob eines gleich, größer oder kleiner als das andere ist, das Vergleichen eines Feldes mit einer Konstanten, um festzustellen, ob sie gleich, eines größer oder kleiner als das andere ist, und das Vergleichen eines Feldes mit einer Konstanten, um festzustellen, ob zwei Bits gleichzeitig gleich sind.
- Beispielsweise wird, um den Inhalt der Register A und B zu addieren der ADD-Befehl 00000 zweiunddreißig Mal den Pins I o bis 4 der chip-Packung 100 zusammen mit Signalen auf den Pins I 5 bis I 8 und I 9 bis I 12, die die Register A und B identifizieren und den Signalen auf den Pins I 13 bis I 17, die die Spalte in dem Register, in der der ADD-Befehl ausgegeben werden soll, identifizieren, zugeführt. Weiterhin identifizieren die Signale auf den Pins I 18 bis I 21 das Flag, das den dritten Eingang für jede ADD-Operation darstellt, sowie das Flag-Register, in welches der Carry-Ausgang geschrieben wird. Die Signale an die Pins I 22 bis I 25 spezifizieren ein Flag, durch das der Schreibschritt konditioniert wird und das Signal auf den Pin I 26 spezifiziert die Bedingung des Tests. Während der Ausführung der zweiunddreißig Instruktionen bleiben die Signale auf den Pins I 0 bis I 12 gleich, da der ADD-Befehl und die Identität der Register A und B konstant bleiben. Die Spaltennummern, wie sie durch die Signale auf den Pins I 13 bis I 17 repräsentiert werden, werden mit der Ausführung der ADD-Instruktion inkrementiert, so daß sie auf ein unterschiedliches Paar von Bits in den Registern A und B zugreifen. Bei der ersten Ausführung des ADD-Befehls werden die Signale auf den Pins I 18 bis I 21 während des Lesezyklusses 1111 sein, um das 0-Flag zu adressieren und dabei den Carry-Eingang mit einer 0 zu initialisieren. Für den ersten Schreibzyklus und für die Lese- und Schreibzyklen der übrigen einunddreißig Ausführungen der ADD-Operation werden Signale auf den Pins I 18 bis I 21 eines der Flag-Register 292 adressieren, so daß darin der Carry-Ausgang gespeichert und von dort gelesen werden kann. Der Summenausgang auf der Leitung 285 wird in das Register A zurückgeschrieben.
- Die Subtraktion kann durch den ADD-Befehl unter Komplementierung des Registereingangs, welches den Substrahenten darstellt ausgeführt werden. Die Multiplikation und Division können durch verschiedene Additions- und Subtraktionsalgorithmen ausgeführt werden.
- Die boolschen Funktionen werden in gleicher Weise mit einer Spalte pro Zeile ausgeführt. Im Falle der AND- und OR-Funktionen werden die Ergebnisse dem Register A über den Summenausgang zugeführt und die Ergebnisse werden ebenfalls einem Flag-Register über den Carry-Ausgang zugeführt. Die exclusive OR- (XOR-) Funktion wird durch den Carry-Ausgang der Move-Funktion zur Verfügung gestellt, wobei das Flag benützt wird, um festzustellen, ob irgend ein paar der A- und B-Eingänge nicht gleich ist. Die NAND- und NOR-Funktionen werden gemäß bekannter logischer Gleichungen von der OR-Funktion und der AND-Funktion abgeleitet, wenn alle Eingänge komplementiert sind.
- Die Registertransferoperationen werden in ähnlicher Weise mit einer Spalte pro Zeit unter Verwendung der MOVE-Funktion ausgeführt, um die Inhalte des Registers, das als Register B bezeichnet ist, zu dem Register, welches als Register A bezeichnet ist, zu transformieren.
- Die Datenverschiebeoperationen werden unter Verwendung der SWAP-Funktion und eines Flag-Registers ausgeführt. Jedes Bit der Daten, das geschoben werden soll, wird zuerst aus seiner Spalte in dem Register, welches als Register B bezeichnet ist, ausgelesen und in einem festgelegten Flag-Register gespeichert. Bei der nächsten Ausführung des SWAP-Befehls wird das Datenbit in dem Flag-Register in die nächste benachbarte Spalte in dem RAM-Register A geschrieben und das Datenbit in dieser Spalte, das RAM-Register B wird in das Flag-Register geschrieben. Die Richtung der Verschiebung hängt nur davon ab, ob die Daten in dem RAM-Register B vom LSB zum NSB oder umgekehrt adressiert werden.
- Die SWAP-Funktion erlaubt es außerdem, Daten von einem Prozessor zu einem anderen durchzulassen, indem die Daten von dem Register B zur Carry-Ausgangsleitung gegeben werden und indem die Daten von einem der Nord-, Ost-, Süd-, West- oder Daisy-Eingängen ins Register B geschrieben werden.
- Die Algorithmen zum Implementieren der Vergleichsoperationen sind für den Fachmann aufgrund obiger Beschreibung klar. Beispielsweise können Unterschiede zwischen zwei Bits dadurch identifiziert werden, daß sie miteinander addiert werden und jegliches Carry ignoriert wird. Ergibt die Summe ein 0-Bit, liegt kein Unterschied vor. Ergibt sich ein 1-Bit, liegt ein Unterschied vor.
- Der Carry-Ausgang, wie er von der Ausführung jedes der unterschiedlichen Befehle von einem Prozessor/Speicher sich ergibt, ist auf Leitung 287 für die Nord-, Ost-, Süd- und West-Eingänge der nächsten Nachbarprozessoren durch Speicher 36 auf den Chip verfügbar. Er ist außerdem an dem Daisy-Eingang des nächsten Prozessor/Speichers in der Daisy-Kette verfügbar. Durch diese Eingänge an benachbarte Prozessoren/Speicher kann der Carry-Ausgang anderen weiter entfernten Prozessoren/Speichern auf dem Chip verfügbar gemacht werden.
- Wenn das NAND-Gate 293 aktiv ist, wird der Carry-Ausgang außerdem der Nachrichtenpaketausgangssignalleitung 123 zur CIU 180 und zum Weiterleitungsschaltkreis 200, verfügbar gemacht. Durch diese Einrichtungen kann der Carry-Ausgang in einem Nachrichtenpaket jedem anderen Prozessor/Speicher 36 im Feld 30 verfügbar gemacht werden.
- Von der obigen Beschreibung der PLA 160, des RAMs 250, der ALU 280 und des Flag-Controllers 290 ist es möglich, alle Arten von Computerprogrammen, die von den parallel verarbeitenden Fähigkeiten des beschriebenen Computersystems Gebrauch machen, auszuführen. Die Verarbeitungsoperationen werden normalerweise in Verarbeitungszyklen ausgeführt, die eine Dauer des Basistaktzyklusses phi 1 haben, offensichtlich ein Wort) welcher entsprechend den zu verarbeitenden Daten geeignet gewählt wird. Um das Zusammenwirken zwischen verschiedenen Prozessoren/Speichern 36 des Feldes 30 zu verbessern, kann jeder individuelle Prozessor/Speicher auch mit jedem anderen über den Weiterleitungsschaltkreis 200 kommunizieren. Bevor ein Beispiel einer derartigen Weiterleitung diskutiert wird, erscheint es notwendig, den Betrieb der CIU 180 und des Weiterleitungsschaltkreises 200 zu erklären.
- Wie in den Fig. 6B und 8 gezeigt ist, umfaßt die CIU 180 einen Inverter 181, einen Latch 182, ein Schieberegister 184 (tapped shift register), erste und zweite Selektoren 186, 188 und erste und zweite Parity- Logikschaltkreise 190, 192, wobei jedes dieser Elemente in jeder Figur durch gleiche Bezugszeichen identifiziert ist. Wie in Fig. 8 gezeigt ist, umfaßt das Latch 182 erste und zweite D-Flipflops 312, 314. Das Schieberegister 814 ist ein 73-Bit-Schieberegister mit einem Eingangsanschluß und einem Ausgangsanschluß (output-tape) zwischen der 16. und 17. Schiebeposition gerechnet vom Eingangsanschluß. Der erste Selektor 186 umfaßt fünf AND-Gates 302, 322, 324, 326, 328 und ein NOR-Gate 330. Eine erste Parity-Logik 190 umfaßt erste und zweite D-Flipflops 332, 334 und erste und zweite NOR-Gates 336, 338. Diese Elemente empfangen die Bits eines Nachrichtenpaketes auf Leitung 123 von einem Prozessor/Speicher auf dem Chip und übertragen diese zum Weiterleitungsschaltkreis 200, nach dem gewisse Timing- und Datenverarbeitungs-Operationen, wie sie unten beschrieben werden, ausgeführt wurden. Der zweite Selektor 188 umfaßt einen Inverter 340, vier AND-Gates 342, 344, 346, 348 und ein NOR-Gate 352. Eine zweite Parity-Logik umfaßt ein D-Flipflop 376 und ein NOR-Gate 358. Diese Elemente empfangen die Bits eines Nachrichtenpakets von dem Weiterleitungsschaltkreis 200 und übertragen diese zu einem der Prozessoren/Speicher auf dem Chip, nachdem gewisse Timing- und Datenverarbeitungsoperationen, wie sie unten beschrieben werden, ausgeführt wurden.
- Wenn ein Nachrichtenpaket an den Weiterleitungsschaltkreis 200 übertragen werden soll, erwartet die CIU 180 am Eingang zum Inverter 181 die folgenden Informationen von dem Prozessor/Speicher an dem bezeichneten Punkt in dem Weiterleitungszyklus:
- Taktzyklus Information
- 53 Parity Bit für die absolute Adresse des ICs, von dem das Nachrichtenpaket gesendet werden soll;
- 54 Ein 1-Bit, wenn das Nachrichtenpaket im nächsten Zyklus übertragen werden soll;
- 55-86 die Daten des Nachrichtenpakets, das im nächsten Zyklus übertragen werden soll,
- 87 Parity-Bit für das Nachrichtenpaket;
- 0-14 IC-Adresse, an die das Nachrichtenpaket gesendet werden soll,
- 15-19 Adresse des Prozessors/Speichers im IC, an den das Nachrichtenpaket übertragen werden soll,
- 20-23 Adresse des Registers im Prozessor/Speicher des ICs, an den das Nachrichtenpaket übertragen werden soll.
- Alle diese Signale werden dem Schieberegister 184 zugeführt und durch das Register zum Selektor 186 geschoben. Jedoch werden gewisse dieser Signale auch dem Latch 182, dem Selektor 186 und der Parity Logik 190 zugeführt.
- Der Weiterleitungsschaltkreis 200 erwartet ein "Low"-Signal auf der Leitung 194, das mit dem ersten Taktzyklus des Weiterleitungszyklus, in welchem das Nachrichtenpaket gesendet werden soll, beginnt. Der Weiterleitungsschaltkreis 200 erwartet weiterhin die folgende Information auf Leitung 196 am Basistaktzyklus:
- Taktzyklus Information
- 0-14 IC-Adresse, an die das Nachrichtenpaket übertragen werden soll, wenn ein Nachrichtenpaket vorliegt;
- 5 1-Bit, wenn ein Nachrichtenpaket übertragen werden soll;
- 16-30 Duplikat der IC-Adresse, an die das Nachrichtenpaket übertragen werden soll;
- 31-35 Adresse des Prozessors/Speichers im IC, an den das Nachrichtenpaket übertragen werden soll;
- 36-39 Adresse des Registers im Prozessor/Speicher des ICs, an den das Nachrichtenpaket übertragen werden soll;
- 40-71 Daten des Nachrichtenpakets;
- 72 Parity-Bit.
- Dieses Nachrichtenpaketformat ist in Fig. 4 angegeben. Wegen der bis zu 15 Taktzyklen betragenden Zeitverzögerung, die durch den Line Assigner 205 beigeführt wird, werden zumindest zwei mal achtundachtzig Taktzyklen benötigt, um ein Nachrichtenpaket vollständig zu verarbeiten und bei einem oder mehreren Weiterleitungsschaltkreisen abzuliefern. Entsprechend beträgt die Länge eines Weiterleitungszyklusses achtundachtzig Basistaktzyklen, wie dies in Fig. 9 gezeigt ist.
- Um den Signalfluß von der CIU 180 zum Weiterleitungsschaltkreis 200 zu steuern, erzeugt der Timing-Generator 140 die Timing-Signale, wie sie in Fig. 9 gezeigt sind. Das Nachrichtenpaket, wie es von der CIU 180 auf der Leitung 123 empfangen wird, ist in Fig. 9 durch die zwei obigen Zeitverläufe verdeutlicht. Das erste Bit, das an der CIU, die mit dem Nachrichtenpaket assoziiert ist, empfangen wird, ist das Parity-Bit, das im Taktzyklus 53 empfangen wird. Dieses Bit wird im Flipflop 332 gesetzt, wenn das Signal TOCIU-CARITY-t dem Setanschluß dieses Flipflops während des Taktzyklusses 53 zugeführt wird. Dieses Bit ist die Parität der Adresse im Absolutwert des Quell-ICs. Ein Flipflop 334 und ein XOR-Gate 336 berechnen die Parität des Nachrichtenpakets beginnend mit dem Formatbit im Taktzyklus 15 und fortfahrend zum Ende der Nachricht in Taktzyklus 72. Dieses Parity-Bit und das Bit, welches im Flipflop 332 gespeichert ist, werden dann durch ein XOR-Gate 338 verglichen und das resultierende Bit wird dem Selektor 186 zugeführt, wo es invertiert und dem Weiterleitungsschaltkreis 200 zugeführt wird.
- Das Parity- Bit wird in dieser Weise berechnet, um Wechsel zu berücksichtigen, die bei der relativen Adresse vorgenommen werden, wenn das Nachrichtenpaket zu seinem Zielort weitergeleitet wird. Die relative Adresse des Nachrichtenpaketes wird berechnet, wenn das Nachrichtenpaket aus dem Prozessor/Speicher auf die Signalleitung 123 gelesen wird; das Parity-Bit für das Nachrichtenpaket, welches eine Kopie seiner relativen Adresse beinhaltet, wird durch das Flipflop 334 und XOR-Gate 336 berechnet. Wenn die relative Adresse eine ungerade Anzahl von 1-Bits ist, ist das Parity-Bit für dieses Nachrichtenpaket zu der Zeit, zu der das Nachrichtenpaket an seinem Zielort empfangen wird, falsch. Um dies zu kompensieren, wird die CIU 180 das berechnete Parity-Bit in dem XOR-Gate 338 wechseln, wenn das Parity-Bit für die IC Adresse der Quelle ein 1-Bit ist. An diesem Zielort wird die CIU 180 erneut das Parity-Bit des empfangenen Nachrichtenpakets berechnen und es ändern, wenn das Parity-Bit, welches in dem Nachrichtenpaket empfangen wurde, ein 1-Bit ist. Schließlich wird die resultierende Parität mit dem Parity-Bit der Adresse des Ziel-ICs verglichen. Es kann gezeigt werden, daß kein Parity-Fehler aufgetreten ist, wenn diese zwei Bits gleich sind.
- Während des Taktzyklus 54 wird ein 1-Bit der CIU 180 zugeführt, wenn ein Nachrichtenpaket in den nächsten Weiterleitungszyklus übertragen werden soll. Dieses Bit, welches durch den Inverter 181 invertiert wurde, wird in dem Flipflop 312 gesetzt, wenn das Signal TOCIU-MP-in an den setz-Anschluß dieses Flipflops während des Taktzyklus 54 zugeführt wird. Als Ergebnis wird der Q-Ausgangsanschluß des Flipflops 312 im Anschluß an den Taktzyklus 54 "low" sein, wenn ein Nachrichtenpaket übertragen werden soll. Während der Taktzyklen 55 bis 86 werden die Nachrichtendaten dem Eingangsanschluß des Schieberegisters 184 zugeführt und durch dieses geschoben. Da das Register 73 Bits lang ist, beginnen die Nachrichtendaten aus dem Ausgang des Schieberegisters während des Taktzyklus 40 des folgenden Weiterleitungszyklusses auszutreten. Während des Taktzyklusses 87, wird das Ausgangssignal des Q-Anschlusses des Flipflops 312 im Flipflop 314 gesetzt, wenn das Signal TEST dem Setzanschluß des Flipflops 314 zugeführt wird. Als Ergebnis wird, wenn eine Nachricht gesendet werden soll, ein Low-Signal an den Q-Anschluß anlegen und ein "High"-Signal an dem Q-Anschluß des Flipflops 314, wobei diese Zeit eine Zeit ist, die vor dem Anfang des Weiterleitungszyklusses liegt. Wie in Fig. 8 gezeigt ist, ist der Q-Anschluß des Flipflops 314 mit einem Eingang mit dem AND-Gate 328 verbunden und der Q-Anschluß ist mit der Leitung 194 verbunden. Entsprechend ist das Signal auf der Leitung 194 dasjenige, welches in Fig. 9 gezeigt ist, wenn eine Nachricht gesendet werden soll.
- Während der Taktzyklen 0 bis 14 wird die IC Adresse des Zielorts des Nachrichtenpakets auf der Leitung 123 dem Schieberegister 184 und dem AND-Gate 326 zugeführt. Während dieser Taktzyklen wird das AND-Gate 326 durch das Signal TOCIU-Add, aktiviert und die IC Adresse wird daher über der NOR-Gate 330 der Leitung 196 zum Weiterleitungsschaltkreis 200 zugeführt. Während des Taktzyklusses 15 wird das AND-Gate 328 von dem Signal TOCIU-MP-out, aktiviert, wodurch das Signal von dem Q-Anschluß des Flipflops 314 zum NOR-Gate 330 und der Leitung 196 zugeführt wird. Wenn eine Nachricht gesendet werden soll, ist das Signal am Q-Anschluß ein Low-Signal, welches durch das NOR-Gate 330 invertiert wird, um ein "High"-Signal für das Format-Bit des Nachrichtenpakets zur Verfügung zu stellen.
- Während der Taktzyklen 15 bis 19 wird die Adresse des besonderen Prozessors/Speichers dem Ziel-IC der CIU 180 zugeführt und in das Schieberegister 184 geschoben und während der Taktzyklen 20 bis 23 wird die Adresse des Registers in dem Zielprozessor/Speicher in das Schieberegister geschoben.
- Während der Taktzyklen 16 bis 39 wird das AND-Gate 322 durch das Signal TOCIU-TAP aktiviert. Während dieser Taktzyklen werden die fünfzehn Bits der Ziel-IC-Adresse, die fünf Bits der Prozessor/Speicher-Adresse und vier Bits der Registeradresse nacheinander an einer Stelle zwischen der sechzehnten und siebzehnten Schiebeposition auftauchen und durch das AND-Gate 322 und das NOR-Gate 330 zur Leitung 196 weitergeleitet.
- Während der Taktzyklen 40 bis 71 beginnen die Nachrichtendaten, welche in das Schieberegister 184 während des vorangegangenen Weiterleitungszyklusses eingegeben wurden, von dem Ausgangsanschluß des Schieberegisters auszutreten. Während dieser Taktzyklen wird das AND-Gate 324 durch das Signal TOCIU-DATA aktiviert und die Nachrichtendaten werden daher über das NOR-Gate 330 der Leitung 196 und dem Weiterleitungsschaltkreis 200 zugeführt. Da das Gate 324 während keines anderen Taktzyklusses aktiviert ist, werden jegliche Daten, die dem Schieberegister 184 zu anderen Zeiten als den Taktzyklen 55 bis 86 des vorhergehenden Zyklusses zugeführt werden, ignoriert.
- Schließlich wird während des Taktzyklusses 72 das Gate 320 durch das Signal TOCIU-Parity aktiviert und das Parity-bit wird über das NOR-Gate 330 der Leitung 196 dem Weiterleitungsschaltkreis 200 zugeführt. Im Ergebnis ergibt sich während des Weiterleitungszyklusses das Signal auf Leitung 196, welches in Fig. 9 gezeigt ist.
- Wenn ein Nachrichtenpaket von dem Weiterleitungsschaltkreis 200 empfangen werden soll, wird das Signal auf der Leitung 197 während des Taktzyklusses 45 ein Low-Signal und wird bis zum Beginn des nächsten Weiterleitungszyklus "low" bleiben. Zusätzlich erwartet die CIU 180 die folgende Information von dem Weiterleitungsschaltkreis 200 auf Leitung 198 während den angegebenen Basistaktzyklen:
- Taktzyklus Information
- 46-50 Adresse des Prozessors/Speichers, an welchen ein eingehendes Nachrichtenpaket gesendet werden soll.
- 51-54 Adresse des Registers im Prozessor/ Speicher, an den ein eingehendes Nachrichtenpaket gesendet wird.
- 55-86 Daten eines eingehenden Nachrichtenpaktes.
- 87 Parity-Bit für das Nachrichtenpaket.
- Das Signal auf Leitung 199 wird zum Ende des Weiterleitungszyklusses ebenfalls "low" werden und wird so lange "low", bleiben, bis das Signal auf Leitung 194 wechselt.
- Wenn das eingehende Nachrichtenpaket an der CIU 180 empfangen worden ist, führt die CIU die folgenden Signale zu folgenden Basistaktzyklen an den Nachrichtendateneingangssignaleitung 122:
- Taktzyklus Information
- 0-44 Ein 1-Bit, falls ein Nachrichtenpaket von der CIU 180 empfangen worden ist und im Weiterleitungsschaltkreis 200 weitergegeben wurde.
- 45 Ein 1-Bit, wenn das eingehende Nachrichtenpaket an die Prozessoren/ Speicher weitergegeben werden soll.
- 46-50 Adresse des Prozessors/Speichers, an den das eingehende Nachrichtenpaket gesendet werden soll.
- 51-54 Adresse des Registers im Prozessor/ Speicher, an den das eingehende Nachrichtenpaket gesendet werden soll.
- 55-86 Daten des eingehenden Nachrichtenpaketes.
- 87 Parity-Bit für das Nachrichtenpaket.
- Um diesen Signalfluß zu steuern, erzeugt der Timing-Generator 140 außerdem die Signale wie sie in Fig. 10 gezeigt sind. Wenn ein Nachrichtenpaket von der CIU empfangen worden ist und von dem Weiterleitungsschaltkreis 200 weitergegeben wurde, ist das Signal auf Leitung 199 vom Beginn des Weiterleitungszyklusses "low". Während der Taktzyklen 0-44 wird das AND-Gate 346 durch das Signal TOCIU-MWIN aktiviert, um dieses Signal an das NOR-Gate 352 weiterzuleiten, wo es invertiert wird und als 1-Bit der Signalleitung 122 zugeführt wird.
- Die Tatsache, daß ein eingehendes Nachrichtenpaket vorhanden ist, wird erkannt, wenn das Signal auf der Leitung 197 während des Taktzyklusses 45 "low" wird. Dieses Signal wird dem AND-Gate 342 zugeführt, welches durch das Signal TOCIU-MWIN während des Taktzyklusses 45 aktiviert wird. Als Ergebnis wird ein Low-Signal durch das NOR-Gate 352 zugeführt, um ein "High"-Signal während des Taktzyklus 45 auf der Nachrichtendateneingangsleitung 122 zur Verfügung zu stellen.
- Während der Taktzyklen 46 bis 50 empfängt der Selektor 188 auf der Leitung 198 die Adresse des Prozessors/Speichers, an den das eingehende Nachrichtenpaket gesendet werden soll. Dieses Signal wird durch den Inverter 340 invertiert und dem AND-Gate 348 zugeführt, welches durch das Signal TOCIU-M-in während der Taktzyklen 46 bis 86 aktiviert worden ist. Im Ergebnis wird die Prozessor/Speicher-Adresse durch das NOR-Gate 352 zur Signalleitung 122 weitergeführt.
- In gleicher Weise empfängt der Selektor 188 während der Taktzyklen 51 bis 54 und 55 bis 86 auf der Leitung 198 die Registeradresse, an die das eingehende Nachrichtenpaket gesendet werden soll und empfängt die Daten des Nachrichtenpaketes. Diese Signale werden ebenfalls durch den Inverter 340 invertiert und über das AND-Gate 348 und das NOR-Gate 352 an die Signalleitung 122 zu den Prozessoren/Speichern 36 weitergeleitet. Die Signale, wie sie auf Leitung 198 empfangen worden sind, werden ebenfalls dem XOR-Gate 358 und dem Flipflop 356 zugeführt, um daraus das Parity-Bit des empfangenen Nachrichtenpaketes zu berechnen.
- Während des Taktzyklusses 87 wird das Parity-Bit des empfangenen Nachrichtenpaketes auf der Leitung 198 empfangen. Es wird mit dem berechneten Parity-Bit im XOR-Gate 358 verglichen und das resultierende Parity-Bit wird im AND-Gate 344 zur Verfügung gestellt. Während des Taktzyklusses 85 wird das AND-Gate 344 aktiviert und das Parity-Bit wird über das NOR-Gate 352 der Nachrichtendateneingangssignalleitung 122 zugeführt.
- Im Ergebnis wird dem Prozessor/Speicher 36 während eines Weiterleitungszyklusses das in Fig. 10 gezeigte Signal zugeführt.
- Wie in Fig. 6B gezeigt wurde, umfaßt der Weiterleitungsschaltkreis 200 den Line Assigner 205, den Nachrichtendetektor 210, einen Puffer und einen Adressenwiederherstellter 215, sowie einen Nachrichteninjektor 220. Der Line Assigner 205 umfaßt ein fünfzehn mal fünf zehn Feld von praktisch gleichen logischen Weiterleitungszellen. Jede Spalte dieses Feldes steuert den Ausgang der Nachrichtenpakete in einer Dimension des Boolschen 15-Würfels. Jede Reihe dieses Feldes steuert das Speichern eines Nachrichtenpaketes im Weiterleitungsschaltkreises 200. Neun derartige Weiterleitungszellen 400 sind in Fig. 11 gezeigt, die drei in der äußersten linken Spalte sind mit der ersten Dimension assoziiert, die drei in der mittleren Spalte sind mit der zweiten Dimension und die drei in der am weitesten rechts liegenden Spalte sind mit der fünf zehnten Dimension assoziiert. Jede Spalte der Zellen weist einen Ausgangsbus 410 auf, der mit der Ausgangsleitung 39, welche mit ihrer Dimension assoziiert ist, verbunden ist. Bezüglich der Reihen sind die am unteren Rand liegenden drei Zellen die untersten Zellen in dem Feld und diese empfangen Eingänge von den Eingangsleitungen 38. Die oberen drei Zellen sind die obersten Zellen des Feldes. Die mittleren drei Zellen stellen beliebige Zellen zwischen den obersten und untersten Zellen dar, sind jedoch, wie gezeigt, mit der untersten Reihe verbunden.
- In Fig. 11 sind außerdem drei Verarbeitungs- und Speichereinrichtungen 420 gezeigt, welche Teile des Nachrichtendetektors 210, des Puffers und des Adreßwiederherstellers 215 und des Nachrichteninjektors 220 des Weiterleitungsschaltkreises 200, welcher die Nachrichten von den korrespondierenden drei Reihen der Zellen 400 im Line Assigner 205 verarbeitet und speichert. Zwölf ähnliche Verarbeitungs- und Speichereinrichtungen (nicht gezeigt) werden benutzt, um Nachrichten von anderen Reihen zu verarbeiten und zu speichern. Eine Einrichtung 420 wird genauer in Zusammenhang mit Fig. 15 beschrieben.
- Wenn keine Weiterleitungskonflikte vorliegen, wird ein Nachrichtenpaket von einem Eingang an eine Weiterleitungszelle der ersten Dimension und zum Register in dem Prozessor/Speicher, an den es adressiert ist, während eines Nachrichtenzyklusses bestehend aus 88 Basistaktsignalen, weitergeleitet.
- Wenn Weiterleitungskonflikte vorliegen, wird das Nachrichtenpaket temporär in der Verarbeitungs- und Speichereinrichtung eines Weiterleitungsschaltkreises an einem oder mehreren zwischenliegenden Punkten gespeichert. Außerdem wird mehr als ein Weiterleitungszyklus benötigt werden, um das Nachrichtenpaket an seinen Zielort weiterzuleiten.
- Die Fig. 11 stellt eine Zusammenfassung der Eingangs- und Ausgangsanschlüsse jeder Weiterleitungszelle 400 dar. Wie dabei angedeutet ist, werden durch die drei Zellen 400 entlang der untersten Reihe die Nachrichtenpaket von unterschiedlichen Dimensionen des Boolschen 15-Würfels den NAND-Gattern 405 zugeführt. Diese Gatter werden zu jeder Zeit aktiviert mit Ausnahme, wenn die Reset Bedingung vorliegt. Der Ausgang jedes NAND-Gatters 405, welches das invertierte Nachrichtenpaket darstellt, wird einem Eingangsanschluß Lin eines der Zellen 400 in der untersten Reihe zugeführt. Ein Signal, welches das Vorliegen eines Nachrichtenpakets am Anschluß Lin angibt, wird ebenfalls einem Eingangsanschluß Lin der gleichen Zelle zugeführt. Für jede Zelle in der untersten Reihe wird diese die Präsenz einer Nachricht anzeigende Signal auf Masse gehalten, was dazu führt, daß die Zelle in der nächsten Spalte der untersten Reihe für die weitere Verarbeitung des in der Zelle empfangenen Nachrichtenpaketes konditioniert wird. Wie ersichtlich ist, werden derartige Signale, welche das vorliegen eines Nachrichtenpakts am Eingang der Zelle repräsentieren, dazu verwendet, in dem Weiterleitungsschaltkreis 200 Datenpfade durch den Schaltkreis 200 für das Nachrichtenpaket auf zubauen.
- Ein Nachrichtenpaket, das von einer der Leitungen 38 empfangen worden ist, wird von der untersten Zelle 400 in einer Spalte von dem Anschluß M-OUT herausgeleitet und dem Anschluß M-IN der Zelle 400 in der zur rechten Seite unmittelbar benachbarten Spalte zugeführt. Zur gleichen Zeit wird das Nachrichten-Vorhandensein-Signal aus dem Anschluß MP-OUT an den Anschluß MP-IN der rechts unmittelbar benachbarten Zelle herausgeleitet.
- Das Signal, welches an dem M-IN-Anschluß jeder Zelle 400 empfangen wird, kann aus der Zelle in beliebiger Weise den Bus-Anschluß, den UOUT-Anschluß oder den M-OUT-Anschluß herausgeleitet werden, jeweils abhängig davon, welche anderen Signale in dem Netzwerk vorhanden sind. Die Bus-Anschlüsse aller Zellen 400 einer Spalte sind mit einem gemeinsamen Ausgangsbus 410 verbunden, welcher über ein XOR-Gatter 415 mit der Ausgangsleitung 39 mit der nächsten Nachbar-Zelle in dieser Dimension des Boolschen n-Würfels verbunden. Der andere Eingang zum XOR-Gatter 415 stellt ein Timning-Signal t-INV-OUTn dar, wobei n die Nummer der Dimension ist. Dieses Timing-Signal komplementiert das geeignete Adreßbit in der Duplikat-Adresse in dem Nachrichtenpaket, um diese Adresse abzutreten, wenn das Nachrichtenpaket durch den Boolschen 15-Würfel bewegt wird.
- Die Nachrichten, die die Zelle von dem Uout-Anschluß verlassen, werden dem Lin-Anschluß der in der Spalte unmittelbar über ihr liegenden Zelle zugeführt und von dieser Zelle in der gleichen Weise verarbeitet, wie jedes Signal, welches an dem Lin-Anschluß empfangen worden ist. Das Nachrichten-Vorhanden-Signal wird in gleicher Weise von einem UPout-Anschluß an einen LPin-Anschluß der Zelle weitergeleitet, welche unmittelbar über ihm ist.
- Der Schaltkreis in den Zellen 400 jeder Spalte ist so ausgelegt, um die an diese Dimension adressierte Nachricht auf den Ausgangsbus 410 jeder Spalte (oder Dimension) zu plazieren, welche in der Reihe zirkuliert, welche am nächsten zum oberen Punkt ist und um alle Reihen bis zur obersten Reihe zu umfassen. Dabei werden Steuersignale Grant (G) und All Full (AF) in jeder Spalte zur Verfügung gestellt, um die individuellen Zellen der Spalte vom Status der Zellen über ihnen in dieser Spalte zu informieren. Insbesondere steuert das Grant (G)-Signal den Zugriff auf den Ausgangsbus 410 jeder Spalte oder Dimension durch ein Signal, welches zu jeder Spalte der Zellen über die Gin- und Gout-Anschlüsse heruntergeführt wird. Der Schaltkreis der dieses Signal weitergibt, stellt einen Buszugriff für das oberste Nachrichtenpaket in jeder Spalte, welches für diese Dimension adressiert ist, zur Verfügung und verhindert, daß irgend eine Nachricht einer tieferen Zelle dieser Spalte auf den Ausgangsbus weitergeleitet wird. Das All Full (AF)-Signal steuert die Übertragung der Nachrichten von einer Zelle 400 zu einer Zelle über ihr in derselben Spalte, indem sie jeder Zelle über die AFout- und die AFin-Anschlüsse anzeigt, ob eine Nachricht in jeder Zelle über ihr in der Spalte anliegt. Falls irgend eine obere Zelle leer ist, wird die Nachricht in jeder tieferen Zelle um eine Zelle in der Spalte nach oben verschoben.
- Der Betrieb einiger Flipflops in der Zelle wird durch die Timing-Signale t-COL-n gesteuert, wobei ein n die Anzahl der Dimension ist, während andere Flipflops von dem Basistaktsignal phi 1 getaktet werden. Wie von der folgenden Beschreibung klar werden wird, arbeiten die Weiterleitungszellen jeder Spalte synchron mit allen anderen Weiterleitungszellen der gleichen Spalte aller Weiterleitungsschaltkreise in dem Feld 30.
- Für die Zellen in der obersten Reihe, ist der Eingang für den AFin-Anschluß jeweils "high". Für diese Zellen ist das Eingangssignal für den Gin-Anschluß das Komplement des Reset-Signals und daher ist dieses "high" mit Ausnahme während des Resets. Im Ergebnis wird ein Nachrichtenpaket in der oberen Zelle einer Spalte normalerweise Zugriff zum Ausgangsbus 420 haben, wenn es für diese Dimension adressiert ist. Falls jedoch eine Ausgangsleitung 39 brechen sollte, kann diese Leitung vom verbundenen 15-Würfel-Netzwerk entfernt werden, indem ein Low-Signal an den Gin-Eingangsanschluß der oberen Zelle der Dimension, mit der diese Leitung assoziiert ist, zugeführt wird. Bei der unteren Reihe von Zellen 400, wird das Grant-Signal von dem Gout-Anschluß dazu benutzt, um einen Pass-Transistor 425 zu steuern, welcher dem Ausgangsbus ein Massesignal zuführen kann. Insbesondere werden, wenn keine Nachricht auf dieser Ausgansleitung weitergeleitet werden soll, 0-Bits auf die Ausgangsleitung dieser Dimension geschrieben.
- Spezielle Details des logischen Schaltkreises des Line Assigners 205 sind in Fig. 12 gezeigt. Diese Figur zeigt vier Zellen, welche zum einfachen Verständnis in den untersten zwei Reihen und in den Spalten, welche mit der ersten und zweiten Dimension assoziiert sind, liegen. Die Schaltkreise sind mit Ausnahme des OR-Gatters 480 die gleichen wie sie unten beschrieben werden. Jeder Schaltkreis hat Eingangsleitungen oder Anschlüsse Lin, LPin, M-IN und MP-IN, wie in Verbindung mit Fig. 11 erklärt worden ist. Jeder Schaltkreis weist auch Ausgangsleitungen oder Anschlüsse Uout, UPout, Bus, M-OUT und MP-OUT auf. Die Steuersignale werden jeder Zelle an den Anschlüssen Gin und AFin zugeführt und mit Ausnahme der untersten Zellen werden diese Steuersignale auch über die Anschlüsse Gout und AFout zur nächsten tieferen Zelle in der Spalte weitergeleitet.
- Der logische Schaltkreis umfaßt zwei NAND-Gates 450 und 452, vier AND-Gates 460, 462, 464 und 466, welche die Auswahl der Ausgangssignale für die Anschlüsse M-OUT und MP-OUT, steuern, ein NAND-Gate 470 und einen Inverter 472, welche entweder das Paar von AND-Gates von 460 und 464 oder das Paar von AND-Gates von 462 und 466 auswählen, ein NOR-Gate 476, welches die Ausgänge der AND-Gates 460 und 462 kombiniert und ein NOR-Gate 478, welches die Ausgange der AND-Gates 464 und 466 kombiniert. Der Ausgang des Inverters 472 ist ebenfalls das All Full (AF)-Signal, welches über den Anschluß AFout der nächst tieferen Zelle in der Spalte zugeführt wird, um das Schieben der Signale von den M-IN- und MP-IN-Leitungen zu den Uout- und UPout-Leitungen zu steuern. Zusätzlich umfassen die Zellen in der untersten Zeile ein OR-Gate 480, dessen Eingänge mit den AFin- und den M-IN-Anschlüssen verbunden ist. Jede Zelle umfaßt drei D-Flipflops 490, 492 und 494, einen Bustreiber 500 und einen logischen Schaltkreis 502 zum Steuern des Bustreibe- und Grant-Signals.
- Das Flipflop 490 zeichnet das führende Bit des Nachrichtenpaket auf Empfangs eines Spaltentaktsignals t-COLn auf und hält dieses Signal bis zum Empfang des nächsten Spaltentaktsignals, welches 88 Basistaktzyklen später auftritt. Wenn das führende Bit ein 1-Bit ist, und wenn der Ausgangsbus 410 nicht für eine Zelle, die weiter oben in der Spalte liegt, erteilt wurde, führt der logische Schaltkreis 502 ein Low-Signal dem Bustreiber zu. Der Lew-Ausgang auf der Leitung zum Bustreiber 500 aktiviert den Bustreiber und deaktiviert die NAND-Gates 450, 452 und 470. Im Ergebnis wird eine Nachricht vom Eingangsanschluß M-IN auf dem Bus 410 der Ausgangsleitung 39, welche mit der Spalte oder Dimension assoziiert ist, weitergeleitet. Wenn das NAND-Gate 470 deaktiviert wird, ist sein Ausgang "high", wodurch die AND-Gates 462, 466 aktiviert werden, was dazu führt, daß der Ausgang von dem Inverter 472 "low" wird, wodurch die AND-Gates 460, 464 deaktiviert werden. Dies führt dazu, daß das All Full (AF)-Signal, welches der nächst höheren Zelle zugeführt wird, "low" ist, was der Zelle anzeigt, daß eine leere Zelle über ihr in der Spalte liegt und weiterhin werden die AND-Gates 462, 466 aktiviert, um die Signale, wie sie an den Eingangsanschlüssen Lin und LPin empfangen werden, weiterzuleiten.
- Wenn das führende Bit des Nachrichtenpaketes 0-Bit ist oder wenn kein Nachrichtenpaket am M-IN-Anschluß der Weiterleitungszelle ansteht, wird der Ausgang des logischen Schaltkreises 502 zum Bustreiber 500 "high" sein. Das "High"-Signal zum Bustreiber wird auch den NAND-Gates 450, 452 und 470 zugeführt und wird die Gates 450 und 452 aktivieren. Wenn das All Full-Signal am Terminal AFin auch "high" wird, was anzeigt, daß Nachrichten in jeder der oberen Zellen dieser Spalte sind, wird auch das NAND-Gate 470 aktiviert.
- Wenn das Signal am MP-IN-Anschluß "high" ist, wenn das Gate 470 aktiviert ist, wird ein "High"-Signal über den Inverter 472 zu den AND-Gates 460 und 464 zugeführt, wodurch diese Gates aktiviert werden; und es wird ein Low-Signal den AND-Gates 462 und 466 zugeführt, wodurch diese Gates deaktiviert werden. Im Ergebnis werden die Signale an den M-IN- und MP-IN-Anschlüssen über die NAND-Gates 450, 452, die AND-Gates 460, 464 und die NOR-Gates 466, 468 an die Eingänge der Flipflop 492, 494 zugeführt. Das Flipflop 492 wird mit jedem Basistaktzyklus phi 1 gesetzt. Im Ergebnis wird das erste Ausgangsbit des Nachrichtenpaketes, das durch das Flipflop 492 übertragen worden ist, das sein, das unmittelbar dem führenden Bit, welches dem Flipflop 490 zugeführt wurde, ist. Das ursprüngliche führende Bit des Nachrichtenpakets wird verworfen. Weiterhin wird das neue führende Bit um einen Basistaktzyklus verzögert, bevor es am Ausgangsanschluß M-OUT der Weiterleitungszelle verfügbar ist. Danach wird jedes folgende Bit des Nachrichtenpakets durch dieses Flipflop getaktet und am Anschluß M-OUT- dem N-IN-Anschluß der nächsten Zelle verfügbar gemacht. Das Flipflop 494 wird in gleicher Weise mit jedem Taktzyklus phi 1 gesetzt. Dieser Ausgang des Flipflops 494 bleibt jedoch während der Dauer des Nachrichtenpakets konstant. Im Ergebnis wird das "High"-Signal MP-IN, das im Eingang des Flipflops 494 zugeführt worden ist, am Ausgangsanschluß MP-OUT der Weiterleitungszelle zur gleichen Zeit verfügbar gemacht, wie das neue führende Bit des Nachrichtenpakets am Ausgangsanschluß M-OUT verfügbar gemacht wird. Das Signal am MP-OUT-Anschluß wird dann dem MP-IN-Anschluß der nächsten Zelle zugeführt und dazu verwendet, um einen Datenpfad durch die Zelle für das Nachrichtenpaket, welches an dem M-IN-Anschluß empfangen worden ist, auf zubauen.
- Da die Flipflops 492, 494 in den Zellen 400 jede der fünfzehn Spalten des Line Assigners 205 vorliegen, wird das Nachrichtenpaket um fünf zehn Basistaktzyklen verzögert, also sobald es sich seinen Weg durch die fünfzehn Spalten oder Dimensionen eines oder mehrerer Line Assigners bahnt.
- Wenn das Signal an dem MP-IN-Anschluß "low" ist, wenn das NAND-Gate 470 aktiviert ist, wird der Ausgang des Gates 470 "high", wodurch die AND-Gates 462, 466 aktiviert werden und der Ausgang des Inverters 472 nach "low" gezogen wird. Im Ergebnis wird das All Full (M.)-Signal der nächsten tieferen Zelle "low" sein, was der Zelle anzeigt, daß über ihr eine leere Zelle in der Spalte ist und die AND-Gates 462, 466 werden aktiviert, um Signale, die an den Eingangsanschlüssen Lin und LPin einfangen wurden, durchzulassen.
- Wenn das All Full-Signal, welches an einer Zelle empfangen worden ist, "low" ist, wird das NAND-Gate 470 deaktiviert mit dem Ergebnis, daß die AND-Gates 460 und 464 deaktiviert werden. Somit kann kein Nachrichtenpaket an dem M-IN-Anschluß an dem M-OUT-Anschluß weitergeleitet werden. Wenn jedoch das führende Bit des Nachrichtenpakets ein 0-Bit ist, werden die AND-Gates 450 und 452 aktiviert nach dem das Set-Signal t-COLn dem Flipflop 490 zugeführt wurde. Weiterhin werden die AND-Gates 462, 466 in der nächsten Zelle über der Zelle in der Spalte aktiviert. Im Ergebnis werden die Signale an den M-IN- und MP-IN-Anschlüssen über die Uout- und UPout-Anschlüsse an die Lin- und LPout-Anschlüsse der nächst höheren Zelle in der Spalte zugeführt und durch die NAD-Gates 462, 466 und durch die NOR-Gates 476, 478 zu den Flipflops 492, 496 in der nächst höheren Zelle weitergeleitet. Diese Flipflop arbeiten in der gleichen Weise und synchron mit allen anderen Flipflops 492, 494 dieser Spalte und Weiterleitungszellen, um das Nachrichtenpaket und die Nachrichten-Vorhanden-Signale an die Ausgangsanschlüsse M-OUT der Zelle zur Verfügung zu stellen.
- Das OR-Gate 480 jeder Zelle in der untersten Zellenreihe wird verwendet, um jedes Nachrichtenpaket, das eine Zelle in der untersten Reihe der Zellen über den M-IN-Anschluß eintritt, auf den Ausgangsbus 410 zu zwingen und wird sonst diese Zelle durch den M-OUT-Anschluß verlassen, da alle Zellen über ihr in der Spalte voll sind. Dies wird ausgeführt unabhängig von der Adresse des Nachrichtenpaket, um sicherzugehen, daß in dem Weiterleitungsschaltkreis für jedes eingehende Nachrichtenpaket der Dimension, welche mit dieser Spalte von Zellen assoziiert ist, Raum ist. Die Eingänge der OR-Gates 480 sind All Full (AF) und das erste Bit der Adresse des Nachrichtenpakets. Das All Full-Signal wird "high", wenn alle oberen Zellen in der Spalte voll sind. Unter diesen Umständen wird der Ausgangsbus verfügbar. Entsprechend wird unabhängig vom Zustand des ersten Adreßbits des Nachrichtenpakets der Ausgang des OR-Gates 480 "high" und der Eingang zum Flipflop 490 wird gleich dem sein, wenn das führende Bit des Nachrichtenpakets eine l ist. Wenn dieses Bit im Flipflop 490 gesetzt wird, wird der Ausgang des logischen Schaltkreises 502 ein Low-Signal zum Bustreiber 500 sein, welches den Bustreiber aktiviert und das Nachrichtenpaket von M-IN zum Bus 420 weiterleitet, unabhängig von der Adresse des Nachrichtenpakets.
- Das XOR-Gate 415 jeder Spalte oder Dimension erneuert die relative Adresse an den Bit-Positionen 16 bis 30 des Nachrichtenpakets. Ein Eingang dieses Gates bildet das Nachrichtenpaket, welches auf den Ausgangsbus 410 zur Leitung 39 weitergegeben wird. Den anderen Eingang bildet ein Signal t-INV-outn, wobei n die Anzahl der Dimensionen ist, und dieses Signal dem XOR-Gate jeder Dimension zur gleichen Zeit zugeführt wird, wie das Adreßbit dieser Dimension in der zweiten Adresse des Nachrichtenpakets. Im Ergebnis wird das relative Adreßbit komplementiert, was anzeigt, daß das Nachrichtenpaket zu dieser Dimension herausgeleitet wurde. Wenn das Nachrichtenpaket nicht auf den Ausgangsbus 410 gezwungen wurde, wird das momentane Bit in der zweiten Adresse des Nachrichtenpakets ein 1-Bit sein. Dieses Bit wird in ein 0-Bit komplementiert, was anzeigt, daß die Nachricht an die gewünschte Adresse dieser Dimension weitergeleitet worden ist. Wenn das Nachrichtenpaket auf den Ausgangsbus 410 gezwungen wurde, wird das anstehende Adreßbit in dem Nachrichtenpaket ein 0-Bit sein. Dieses Bit wird in ein 1-Bit komplementiert, was anzeigt, daß das Nachrichtenpaket von der gewünschten Adresse dieser Dimension herausgeleitet wurde. Zu einem späteren Zeitpunkt wird es notwendig sein, das Nachrichtenpaket zurück zu der gewünschten Adresse dieser Dimension zu leiten.
- Details des logischen Schaltkreises 502 sind in Fig. 13 gezeigt. Um die Verzögerungszeit durch die logischen Schaltkreise 502 der Zellen in einer Spalte zu minimieren, wird das Grant-Signal an jeder Zelle der Spalte invertiert. Im Ergebnis ist der interne Schaltkreis der logischen Schaltkreise 502 in den ungeraden Reihen unterschiedlich von den geradzahligen Reihen in einer Spalte. In Fig. 13 wird die oberste Reihe als Null-Reihe betrachtet und ist gerade. Die logischen Schaltkreise in den geraden Reihen werden durch 502'' bezeichnet; diejenigen in den geraden Reihen durch 502'. Jeder gerade logische Schaltkreis 502'' umfaßt erste und zweite NAND-Gates 520, 525. Jeder ungerade logische Schaltkreis 502 umfaßt ein NAND-Gate 530, ein NOR-Gate 535 und einen Inverter 540. Die NAND-Gates 520 und 530 steuern die Zuteilung des Buszugriffs. Wenn beide Eingänge dieser Gates "high" sind, erzeugt das Gate ein Lew-Ausgangssignal, welches den Zugriff für den Ausgangsbus 410 erteilt. Wenn der Buszugriff von einer ungeraden Zelle 502'' erteilt wird, wird der Ausgang des NAND-Gates 525 "high". Wenn der Buszugriff von einer geraden Zelle 502' erteilt wird, wird der Ausgang des NOR-Gates 535 "low". Zusätzlich wird, wenn ein "High"-Signal an einer ungeraden Zelle von einer geraden Zelle über dieser in derselben Spalte empfangen wird, der Ausgang des NAND-Gates 530 "high" und der des NOR-Gates 535 "low". Wenn ein Lew-Signal an einer gerad numerierten Zelle von einer ungerad-numerierten Zelle über ihr in der Spalte empfangen wird, werden die Ausgänge der NAND-Gates 520 und 525 "high". Im Ergebnis wird, wenn eine Zelle den Zugriff an den Ausgangsbus 420 erteilt, keine Zelle unter ihr in der Spalte in der Lage sein, den Zugriff für den Ausgangsbus zu erhalten. Entgegengesetzt wird, wenn der Buszugriff nicht erteilt worden ist, jede Zelle an eine Zelle unmittelbar unter ihr ein Signal zuführen, das diese Zelle aktiviert, den Buszugriff zu erteilen, wenn ein Zugriff erwünscht ist.
- Die Zellen 400 in den unterschiedlichen Spalten werden durch die Timing-Signale t-COLn zeitlich gesetzt, so daß sie die Adreßbits des Nachrichtenpakets erzeugen. Zum Beginn eines Weiterleitungszyklusses werden alle Nachrichtenpakete, welche weitergeleitet werden sollen, an den Eingängen M-IN zu den Zellen 400 des Line Assigners 205 in den anderen ICs 35 präsentiert. Jedes der fünf zehn Adreßbits wird dann nacheinander in fünf zehn Adreßzeitperioden aus jeweils zwei Basistaktzyklen, analysiert. Wie in Fig. 14 gezeigt ist, wird das Timing-Signal t-COL&sub1; den Flipflops 490 der ersten Spalte aller Line Assigner während des Basistaktzyklusses 0 zugeführt. Im Ergebnis wird das erste Bit des Nachrichtenpakets durch ein Flipflop 490 aufgezeichnet und durch einen logischen Schaltkreis 502 auf ein 1-Bit getestet. Der logische Schaltkreis 502 in der ersten Spalte jedes Line Assigners erteilt den Zugriff zum Bus 410 der ersten Dimension an das Nachrichtenpaket mit einem führenden 1-Bit, das in der obersten Reihe in jedem Line Assigner angeordnet ist. Im Ergebnis werden zumindest einige der Nachrichtenpakete, die ein führendes 1-Bit haben, auf den Ausgangsbus 410 der ersten Dimension weitergeleitet und auf der Ausgangsleitung 39 zur untersten Weiterleitungszelle 400 der ersten Spalte der Line Assigner in den nächsten Nachbar-ICs, weitergegeben. Die anderen Nachrichtenpakete an den M-IN-Anschlüssen der Zelle der ersten Dimension aller Line Assigner sind aufwärts in den Zellen der ersten Spalte zusammengefaßt und werden durch die Flipflops 492 an die M-OUT-Anschlüsse der ersten Spalte der Zellen getaktet. Zur selben Zeit werden die Nachrichtenpakete, die zu den nächsten Nachbar-ICs weitergeleitet werden, durch die untersten Zellen in jeder Spalte der Line Assigner dieser ICs empfangen und durch die Flipflops 492 dieser Zellen an die M-OUT-Anschlüsse getaktet. Wie oben angedeutet wurde, verzögern die Flipflops 492 die Nachrichtenpakete um einen Taktzyklus. Das führende Bit, das im Flipflop 490 präsentiert wird, wird verworfen.
- Wenn das Timing-Signal t-COL-&sub2; während des Taktzyklusses 2 den Flipflops 490 der zweiten Spalte der Zellen in den Line Assignern zugeführt wird, zeichnen diese Flipflops das neue führende Bit des Nachrichtenpakets auf. Erneut erteilen die logischen Schaltkreise 502 in jeder zweiten Spalte jedes Line Assigners den Zugriff für den Bus 410 der zweiten Dimension an das Nachrichtenpaket, welches ein führendes 1-Bit in der obersten Reihe der zweiten Spalte in jedem Line Assigner hat. Die anderen Nachrichtenpakete werden aufwärts in der zweiten Spalte der Zellen zusammengefaßt und dem M-OUT-Anschluß jeder Zelle nach einer Verzögerung um einen Taktzyklus zugeführt. Erneut werden die Nachrichtenpakete, die auf dem Bus 410 der zweiten Dimension an den nächsten Nachbar-IC weitergeleitet wurden, an der untersten Zelle der zweiten Spalte des Line Assigners dieser Zelle, empfangen und durch die Flipflops 492 dieser Zellen an die M-OUT-Anschlüsse getaktet. Das führende Bit des Nachrichtenpakets wird ebenfalls verworfen.
- In gleicher Weise schreitet das Nachrichtenpaket durch die übrigen dreizehn Dimensionen der Line Assigner voran, wobei das führende Bit in jeder Spalte getestet und verworfen wird, und die Nachrichtenpakete um einen Taktzyklus verzögert werden. Während dieses Prozesses beschreitet das Nachrichtenpaket seinen Weg von dem Line Assigner eines ICs zu dem eines anderen ICs gemäß der durch seine Adreßbits vorgesehen Route und unter Voraussetzung, daß die gewünschte Ausgangsleitung 39 verfügbar ist. Im Ergebnis sind nach dem Taktzyklus 29 die ersten fünf zehn Bits jedes Nachrichtenpakets verworfen worden. Das Format-Bit jedes Nachrichtenpaketes erreicht den Ausgang eines Flipflop 492 in einer der Zellen in den fünfzehn Spalten eines Line Assigners. Wenn keine Weiterleitungskonflikte während der Weiterleitung auftreten, ist dieser Line Assigner an dem Zielort und das Nachrichtenpaket kann an seinen Ziel-Prozessor/Speicher weitergeleitet werden. Wenn Weiterleitungskonflikte entstehen, steht das Nachrichtenpaket an einem mittleren Punkt und muß mindestens einen weiteren Weiterleitungszyklus warten, um seine Reise abzuschließen. Nach Abschluß des Taktzyklusses 29 wird der Rest des Nachrichtenpaketes an das Formatbit gehängt, wobei die ersten 29 Bits des Nachrichtenpakets in den Line Assignern eines oder mehrerer ICs positioniert sind, und die letzten 27 Bits noch in dem Schieberegister 194 der CIU 180 des ICs, von dem das Nachrichtenpaket ausgeht, sind.
- Beispielsweise ist, wenn ein Nachrichtenpaket vom IC 000 000 000 000 111 ausgeht und an den IC 110 000 000 000 010 adressiert ist, die relative Adresse die durch Nachrichtenpaket spezifiziert ist, 110 000 000 000 101, sein. Wenn keine Weiterleitungskonflikte entstehen, wird das Nachrichtenpaket wie folgt weitergeleitet. Das Nachrichtenpaket wird von einem der Prozessoren/Speicher 36 im IC 000 000 000 000 111 gebildet und der Verarbeitungs- und Speichereinrichtung 420 zu geführt.
- Beginnend mit Taktzyklus 0 im Weiterleitungszyklus, werden die Bits dieses Nachrichtenpaketes nacheinander an den M-IN-Anschluß eines der Zellen 400 in der ersten Spalte des Line Assigners dieses ICs, präsentiert. Während des Taktzyklus 0 in der Adreßzeit 1, wird das Timing-Signal t-COL&sub1; des Flipflop 490 der ersten Spalte jedes Line Assigners zugeführt. Am IC 000 000 000 000 111 wird dies dazu führen, daß das führende Bit der Adresse in einem Flipflop 490 aufgezeichnet wird. Da dieses Bit ein 1-Bit ist, und wir angenommen haben, daß keine Weiterleitungskonflikte auftreten, wird der logische Schaltkreis 502 das Nachrichtenpaket an den Bus 410 der ersten Dimension weiterleiten. Entsprechend wird das Nachrichtenpaket an der Adressenleitung 39 der ersten Dimension an den IC 100 000 000 000 111 weitergeleitet, wo es einen Flipflop 492 der untersten Zelle in der ersten Spalte der Zellen zugeführt wird. Dort wird das Nachrichtenpaket um einen Taktzyklus verzögert. Während der Taktzyklus 2 in der zweiten Adreßzeitperiode, wird das führende Bit des Nachrichtenpakets getestet und erneut festgestellt, daß ein 1-Bit vorliegt. Entsprechend wird das Nachrichtenpaket auf der Ausgangsleitung 39 der zweiten Dimension zum IC mit der Adresse 110 000 000 000 111, weitergeleitet. Während der Taktzyklen 4, 6 . . . 22 der nächsten zehn Adreßzeitperioden wird das führende Bit der IC-Adresse durch den logischen Schaltkreis 502 in jeder der Spalten 3 bis 12 des Line Assigner des ICs 110 000 000 000 111, getestet. In jedem Fall wird der logische Schaltkreis ein 0-Bit identifizieren, das Nachrichtenpaket im Line Assigner nach oben führen, das führende Bit verwerfen und das Nachrichtenpaket zur nächsten Spalte weiterleiten nach der Verzögerung um einen Taktzyklus.
- Während des Taktzyklusses 24 in der dreizehnten Adressenzeitperiode, wird der logische Schaltkreis 502 das führende Bit der IC-Adresse testen und ein 1-Bit identifizieren. Werden keine Weiterleitungskonflikte angenommen, wird es das Nachrichtenpaket den ICs 110 000 000 000 011 weiterleiten, wo es von der untersten Zelle in der dreizehnten Spalte des Line Assigner empfangen wird und um einen Taktzyklus verzögert wird. Während des Taktzyklusses 26 in der fünfzehnten Adreßzeitperiode wird das Timing-Signal t-COL-&sub1;&sub4; in Flipflops 490 der vierzehnten Spalte jedes Line Assigners zugeführt. Am IC 110 000 000 000 011 wird ein 0-Bit in dem Flipflop 490 der untersten Zelle in der vierzehnten Spalte aufgezeichnet. Im Ergebnis wird das Nachrichtenpaket in diesem IC gehalten und nach einer Verzögerung von einem Taktzyklus an die fünf zehnte Spalte der Zellen weitergeleitet.
- Während des Taktzyklus 28 der fünf zehnten Adreßzeitperiode wird das Timing-Signal t-COL-&sub1;&sub5; dem Flipflop 490 der fünfzehnten Spalte jedes Line Assigners zugeführt. Bei der Zellenadresse 110 000 000 000 011 zeichnet eines der Flipflops das übrige 1-Bit in der Adresse des Nachrichtenpakets auf. Werden keine Weiterleitungskonflikte angenommen, erteilt der logische Schaltkreis 502 dem Bus Zugriff an das Nachrichtenpaket und leitet das Nachrichtenpaket an das Flipflop 492 in der untersten Zelle des Line Assigners bei der Adresse 110 000 000 000 010 weiter. Zu Beginn des Taktzyklus 30, wird das Format-Bit des Nachrichtenpakets der Speicher- und Verarbeitungseinrichtung des Weiterleitungsschaltkreises bei der Adresse 110 000 000 000 010, präsentiert.
- Während des Weiterleitens des Nachrichtenpakets werden die Signale t-INVn den XOR-Gates 415 von unterschiedlichen Spalten oder Dimensionen der Line Assigner zur gleichen Zeit zugeführt wie das Adreßbit dieser Dimension in der Duplikatadresse jedes Nachrichtenpakets. Diese Signale komplementieren das Adreßbit dieser Dimension der Duplikats-IC-Adresse, durch die das Nachrichtenpaket dann weitergleitet wird. Mehrere dieser Signale sind in Fig. 14 gezeigt. Für das oben diskutierte Nachrichtenpaket-Weiterleitungsschema invertieren die Signale in Taktzyklen 16, 18, 40 und 44 die vier 1-Bits der relativen Duplikat-Adresse des Nachrichtenpakets. Als Ergebnis sind alle Bits der Duplikat-Adresse 0-Bits, wenn das Nachrichtenpaket der Speicher- und Verarbeitungseinrichtung präsentiert wird.
- Die Speicher- und Verarbeitungseinrichtung 420 leitet Nachrichtenpakete an die Prozessoren/Speicher des Chips weiter, leitet die Nachrichtenpakete von den prozessoren/Speichern weg und speichert Nachrichtenpakete, die nicht von der Zelle unmittelbar nach Empfang aufgrund früherer Zuweisung einer besonderen Ausgangsleitung 39, weitergeleitet werden können. Wie in Fig. 11 gezeigt ist, ist für jede Reihe der Zellen 400 in dem Line Assigner 205 des Weiterleitungsschaltkreises eine individuelle Verarbeitungs- und Speichereinrichtung, die durch den Block 420 identifiziert ist, vorhanden. Die Eingangsanschlüsse an jedem Block sind D-IN, die mit den Ausgangsanschlüssen M-OUT der korrespondierenden Zelle in den fünfzehn Spalten des Line Assigners verbunden sind, C-EXTin, welche das Nachrichtenpaket dem Weiterleitungsschaltkreis auf Leitung 196 von der CIU 180 zur Verfügung stellt, und DP-EXTin, welche das Signal, welches dem Weiterleitungsschaltkreis auf der Leitung 194 von der CIU 180 zugeführt wurde, zur Verfügung stellt. Das dem DP-EXTin zugeführte Signal wird benutzt, um die oberste verfügbare Verarbeitungs- und Speichereinrichtung 420 aufzufinden und um das Nachrichtenpaket von der CIU 180 zu derartigen Einrichtungen 420, weiterzuleiten. Ein anderer Eingang zu jeder Verarbeitungs- und Speichereinrichtung 420 ist ein Grant-Signal, welches benutzt wird, um das Nachrichtenpaket, welches zu der besonderen Zelle, welche in der obersten Verarbeitungs- und Speichereinrichtung 420 lokalisiert ist, zu extrahieren. Die Ausgangsanschlüsse von jeder Verarbeitungs- und Speichereinrichtung 420 sind D-OUT und DP-OUT, die mit den M-IN UND MP-IN-Anschlüssen der Zelle 400 in der gleichen Reihe des Line Assigners verbunden sind und der Lokal-Busanschluß, welcher ein Nachrichtenpaket über die Leitung 198 der CIU 180 zuführt. Zusätzlich weist jede Verarbeitungs- und Speichereinrichtung 420 Ausgangsanschlüsse DP-EXTout und Gout auf, die mit korrespondierenden Anschlüssen DP-EXTin und Gin der Verarbeitungs- und Speichereinrichtung der unmittelbar darunter liegenden Reihe verbunden sind. Die Signale an den Anschlüssen DP-EXTout und Gout der untersten Verarbeitungs- und Speichereinrichtung 420 stellen die Signale auf den Leitungen 190 und 197 der CIU 180 zur Verfügung. Insbesondere wird, wenn ein Nachrichtenpaket über die Leitung 198 der CIU 180 zugeführt wird, das Grant-Signal, das Zugriff auf die Leitung 198 erteilt, auch das Signal auf der Leitung 197 dazu veranlassen, zu der Zeit "low" zu werden, zu der es einen derartigen Zugriff zur Verfügung stellt. Falls ein Nachrichtenpaket von der CIU 180 von der Verarbeitungs- und Speichereinrichtung 420 angenommen wird, wird das Signal am Anschluß DP-EXTout und auf Leitung 199 "low" sein.
- Jede Verarbeitungs- und Speichereinrichtung 410 umfaßt einen Nachrichtendetektor 210, einen Puffer und Adressenwiederhersteller 215 und einen Nachrichteninjektor 220, die im Detail in Fig. 15 gezeigt sind. Zeitdiagramme der in diesem Schaltkreis zur Verarbeitung des Nachrichtenpakets der Fig. 4 verwendeten Signale sind in Fig. 16 gezeigt. Jeder Nachrichtendetektor umfaßt Latches 610, 612, 616, einen Inverter 618, drei NAND-Gates 620, 622, 624, ein AND-Gate 630, einen logischen Schaltkreis 640 und einen Bustreiber 650. Das Latch 610 prüft das Format-Bit, welches zwischen den zwei Kopien der Adresse des Nachrichtenpakets übertragen wurde. Dieses Bit zeigt das Vorliegen einer Nachricht an, dadurch vom Zustand in dem keine Nachricht vorliegt zu unterscheiden. Das Latch kann nur dann gesetzt werden, wenn das Signal t-MSGP während des Basistaktzyklus 30 am Setzeingang empfangen wird. Wenn das Format-Bit in diesem Taktzyklus identifiziert worden ist, wird am Ausgangsanschluß Q ein "High"-Signal gesetzt und am Anschluß Q des Latches 610 ein Low-Signal. Das NAND-Gate 620 und ein Latch 612 überprüfen die Duplikatadresse des Nachrichtenpakets, um festzustellen, daß alle Bits 0-Bits sind. Das Latch 612 wird während des Taktzyklus 0 gesetzt und sein Ausgang am Q-Anschluß wird "low" bleiben bis ein Lew-Signal vom NAND-Gate 620 empfangen wird. Das Gate 620 wird durch das Signal t-ADDR2 nur während dem Empfang der zweiten Adresse des Nachrichtenpakets während der Basistaktzyklen 31 bis 45 aktiviert. Wenn alle Adreßbits 0-Bits sind, hat das Nachrichtenpaket die korrekte Zelle in dem Feld erreicht und kann zur CIU 180 weitergeleitet werden. Außerdem wird der Ausgang des NAND-Gates 620 "high" bleiben. Das Latch 612 stellt dementsprechend ein Low-Signal am Ausgangsanschluß Q des Latches 612 zur Verfügung. Um Interferenzen von Übergängen zu minimieren, wird das Signal t-ADDR2 mit dem Taktsignal phi 1 verknüpft, so daß das NAND-Gate 620 nur während der phi 1-Phase jedes Taktzyklusses 31 bis 45 aktiviert wird.
- Die Low-Signale von den Q-Anschlüssen der Latches 610 und 612 aktivieren das NAD-Gate 630. Während des Taktzyklusses 44 und während der Taktzyklen 45 bis 87, zu denen der Nicht-Adreßteil des Nachrichtenpakets an dem D-IN-Anschluß verfügbar ist, ist das Signal t-DATA "low", wodurch ein "High"-Signal am Ausgang des AND-Gates 630 erzeugt wird. Dieses "High"-Signal ist eine Anfrage nach Zugriff auf Leitung 198 zur ACIU 180. Das "High"-Signal und ein Low-Signal, welches durch den Inverter 680 geformt wurde, werden dem logischen Schaltkreis 640 und dem Bustreiber 650 zugeführt, um Buszugriff für die oberste Reihe, die einen Zugriff wünscht, zu erteilen und um einen derartigen Zugriff für alle anderen Reihen zu verweigern. Der logische Schaltkreis 640 und der Bustreiber 650 sind beispielhaft als gleiche Einrichtungstypen, wie der logische Schaltkreis 502 und der Bustreiber 500 der Fig. 12 und 13 dargestellt und arbeiten in gleicher Weise. Die Signale von dem AND-Gate 630 und von dem Inverter 618 üben dieselbe Funktion in gleicher Weise aus wie die Signale von den Q und Q-Anschlüssen des Latches 490. Im Ergebnis wird das Gout-Signal der Leitung 187 der Verarbeitungs- und Speichereinrichtung 420 in der untersten Reihe des Weiterleitungsschaltkreises 200 auf "low" gehen, sobald der Zugriff dem Bus 198 erteilt worden ist.
- Der Ausgang von dem Anschluß des Latches 610 und der Buszugriffsausgang des logischen Schaltkreises 640 werden dem NAND-Gate 624 zugeführt. Der Buszugriffausgang des Schaltkreises 640 wird nur dann "low", wenn der Buszugriff dem Nachrichtenpaket am Eingangsanschluß D-IN erteilt wird. Zu dieser Zeit wird der Ausgang des NAND-Gates 624 "high" sein. Dieser Ausgang wird dem Eingang des Latches 616 zugeführt. Wenn das Signal t-LAST dem Latch während dem Taktzyklus 87 zum Ende des Nachrichtenzyklus zugeführt wird, wird dieses "High"-Signal in dem Latch gespeichert. Der Ausgang des NAND-Gates 624 wird ebenfalls "high" werden falls keine Nachricht in dieser Reihe des Weiterleitungsschaltkreises zirkuliert. Unter diesen Umständen wird das Latch 610 während des Taktzyklus 30 nicht gesetzt und das Signal am Q-Anschluß des Latches 610 wird "low" werden, was bewirkt, daß der Ausgang des NAND-Gates 624 "high" wird. Der Ausgang des Latches 616 wird sowohl dem Puffer und Adressenwiederhersteller 215 als auch dem Nachrichteninjektor 220 zugeführt.
- Der Q-Ausgang des Latches 610 wird auch dem NAND-Gate 622 mit dem Signal von dem D-IN-Anschluß zugeführt. Im Ergebnis wird das NAND-Gate 622 dann aktiviert, wenn das Nachrichtenformat-Bit detektiert wurde und das Gatter invertiert das Nachrichtenpaket, das am D-IN-Anschluß empfangen worden ist, wenn dieses dem Puffer-Wiederhersteller zugeführt worden ist.
- Der Nachrichteninjektor 220 umfaßt einen Selektor 670, einen Inverter 680, ein OR-Gate 682, ein AND-Gate 684 und ein NAND-Gate 686. Der Ausgang des Latches 616 wird dem Inverter 680 und dem NAND-Gate 686 zugeführt. Das Signal auf der Leitung 194 wird dem Anschluß DP-EXTin in der obersten Reihe der Verarbeitungs- und Speichereinrichtung 410 zugeführt, von wo es zum NAND-Gate 686 sowie zum OR-Gate 682 und AND-Gate 684, weitergeleitet wird. Der Ausgang des NAND-Gates 686 wird dem Auswahlanschluß des Selektors 670 zugeführt. Wenn dieses Signal "high" ist, wird das Signal am Anschluß A des Selektors dem D-OUT-Anschluß zugeführt. Wenn das Signal "low" ist, wird das Signal am Anschluß B dem Ausgangsanschluß D-OUT zugeführt.
- Wie in der Diskussion der CIU 180 in Verbindung mit Fig. 8 angedeutet wurde, wird das 314 durch das Signal t-LAST während des Basistaktzyklus 87 gesetzt. Im Ergebnis wird das Signal auf Leitung 194 zum Anschluß DP-EXTin "high" sein noch bevor der Nachrichtenzyklus startet, falls ein Nachrichtenpaket an CIU 180 ansteht, welches an den Nachrichteninjektor 220 abgegeben werden soll. Das Latch 616 wird ebenfalls durch das Signal t-LAST während des Basistaktzyklus 87 gesetzt. Im Ergebnis wird, wenn der Ausgang des NAND-Gates 624 "high" ist, wie das der Fall ist, wenn ein Nachrichtenpaket über dem Bus 198 zur CIU 180 übermittelt werden soll, der Ausgang des Latches 616 ebenfalls zu einer Zeit vor dem Start des Nachrichtenzyklusses "high" sein. Die "High"-Signale von dem Latch 616 und dem Anschluß DP-EXTin bewirken, daß der Ausgang des NAND-Gates "low" wird. Im Ergebnis wird der Anschluß B des Selektors 670 mit dem Anschluß D-OUT des Nachrichteninjektors 220 verbunden und das Nachrichtenpaket auf Leitung 196 von der CIU 180 wird vom Nachrichteninjektor 220 akzeptiert und dem D-OUT-Anschluß zugeführt.
- Zur selben Zeit wird das "High"-Signal vom Latch 616 dem Inverter 680 zugeführt, um das AND-Gate 684 zu deaktivieren und um ein Low-Signal im DP-EXTout-Anschluß zuzuführen. Dieses Signal wird die AND-Gates 684 in allen tieferen Reihen deaktivieren und wird dabei ein Low-Signal an dem DP-EXTout-Anschluß jeder dieser Reihen ein Low-Signal zur Verfügung stellen. Diese Low-Signale werden alle ein "High"-Signal an den Auswahlanschluß des Latches 670 in allen tieferen Reihen zur Verfügung stellen. Im Ergebnis kann die Nachricht auf der Leitung 196 nur an eine Reihe des Injektors 220 abgegeben werden. Zusätzlich wird das Low-Signal von dem Ausgangsanschluß DP-EXTout des Nachrichteninjektors für die unterste Reihe des Weiterleitungsschaltkreises auf Leitung 199 der CIU 180 zugeführt, um anzuzeigen, daß ein ausgehendes Nachrichtenpaket vom Nachrichteninjektor 220 akzeptiert wurde, um dieses dem Line Assigner 205 zur Verfügung zu stellen. Das High-Signal, wie es vom Anschluß DP-EXTin zum OR-Gate 682 der Nachrichteninjektorreihe, die das Signal auf Leitung 196 akzeptiert, zugeführt wurde, wird auch ein "High"-Signal am Anschluß DP-OUT zur Verfügung stellen, was das Vorliegen einer Nachricht an dem Anschluß D-OUT anzeigt.
- Alternativ kann keine Nachricht in dieser Reihe zirkulieren oder die Nachricht kann nicht für diese Zelle adressiert sein. Wenn keine Nachricht zirkuliert, wird der Eingang des NAND-Gates 624 von dem Q-Anschluß des Latches 610 "low" sein und der Ausgang des Latches 616 wird während des nächsten Nachrichtenzyklus "high" sein. Unter diesen Umständen kann ein Nachrichtenpaket von der Leitung 196 vom Nachrichteninjektor in gleicher Weise akzeptiert werden wie das der Fall ist, wenn die Reihe durch Schreiben des Nachrichtenpakets auf den Bus 198 entleert worden ist.
- Wenn ein Nachrichtenpaket in der Reihe vorliegt, jedoch nicht für diese Zelle adressiert ist, werden beide Eingänge des NAND-Gates 624 "high" werden mit dem Ergebnis, daß der Ausgang des NAND-Gates 624 "low" wird und der Ausgang des Latches 616 zu einem Zeitpunkt "low" wird, der vor dem Beginn des Nachrichtenzyklusses liegt. Im Ergebnis werden der Ausgang des NAND-Gates 686 und damit der Eingang zum Auswahlanschluß des Selektors 670 "high". Die Signale, die dem Anschluß A des Selektors zugeführt werden, werden dem D-OUT-Anschluß zugeführt. Zusätzlich wird das Low-Signal vom Inverter 680 invertiert, um ein "High"-Signal am DP-OUT-Anschluß zur Verfügung zu stellen, was anzeigt, daß eine Nachricht in dieser Reihe vorliegt. Der Ausgang des Inverters 680 wird auch das Gate 684 aktivieren. Im Ergebnis wird, wenn eine Anfrage von der CIU 180 auf Leitung 194 zum Einsetzen einer Nachricht in eine der Reihen vorliegt, dieses Signal durch das AND-Gate 684 und den DP-EXTout-Anschluß zur nächst tieferen Reihe weitergeleitet werden.
- Das Nachrichtenpaket, das dem Anschluß A des Selektors 670 zugeführt wird, ist das Nachrichtenpaket mit der ersten und zweiten relativen Zellenadresse. Dieses Nachrichtenpaket wird vom Puffer-Wiederhersteller 210, welcher das am D-IN-Anschluß empfangene Nachrichtenpaket speichert, zur Verfügung gestellt und stellt die erste relative Zellenadresse von der zweiten relativen Zellenadresse wieder her.
- Der Puffer-Wiederhersteller 210 umfaßt ein Schieberegister 700, AND-Gates 710, 712 und 714 und ein NOR-Gate 720. Das Nachrichtenpaket wird in das Schieberegister 700 eingeschoben, wenn es den AD-IN-Anschluß erreicht. Dieses Register hat eine ausreichende Länge, um das gesamte Nachrichtenpaket vom Beginn der zweiten relativen Zellenadresse bis zum letzten Fehlerkorrekturbit zu speichern. Wie in Fig. 14 gezeigt ist, hat das Register 700 einen Ausgang 702 (tap), der an der sechzehnten Schiebeposition vom Ausganganschluß liegt. Im Ergebnis sind, wenn das Nachrichtenpaket durch das Schieberegister geschoben wird, die ersten sechzehn Bits des Nachrichtenpakets infolge an dem Eingang zum AND-Gate 714 verfügbar, noch bevor diese Bits das Ausgangsende des Schieberegisters erreichen. Die ersten fünfzehn dieser Bits sind die relative Zelladresse.
- Um die erste relative Zelladresse wiederherzustellen, wird das Gate 714 durch das Signal SEL-TAP während der Basistaktzyklen 0 bis 14 aktiviert, wenn diese am Tap 702 anliegen und der Ausgang des Gates 714 wird durch das NOR-Gate 720 dem Anschluß A des Selektors 670 zugeführt. Während des Taktzyklusses 15, wird das AND-Gate 710 durch das Signal SFL-MSGP aktiviert, so daß das Format-Bit erzeigt wird. Dieses Bit wird von dem Ausgang des Latches 616 erhalten und der Ausgang des AND-Gates 710 wird durch das NSOR-Gate 720 dem Anschluß A des Selektors 670 zugeführt. Während des Taktzyklusses 15 wird der Ausgang des Latches 616 "high" werden falls ein Nachrichtenpaket zum Bus 198 übertragen wird oder wenn kein Nachrichtenpaket am D-IN-Anschluß während dieses Nachrichtenzyklusses empfangen worden ist. In diesen Fällen wird das Signal, welches vom den AND-Gate 710 weitergeleitet wird, ein "High"-Signal sein, welches von dem NOR-Gate 720 invertiert wird, um die Abwesenheit eines gültigen Nachrichtenpakets am Ausgang des Puffers und Wiederherstellers 215 anzuzeigen. In allen anderen Fällen wird der Ausgang des Latches 616 "low". Dieses Signal wird von dem NOR-Gate 720 invertiert, um anzuzeigen, daß das Nachrichtenpaket von dem Puffer und Wiederhersteller 215 gültig ist. Nach diesen sechzehn Zyklen wird das Nachrichtenpaket, welches durch das Schieberegister 700 geschoben worden ist, den Ausgangsanschluß erreichen und damit den Eingang zum AND-Gate 712. Zu dieser Zeit und während der Basistaktzyklen 16 bis 72 wird das Gate 712 durch das Signal SEL-END aktiviert, um die zweite relative Zellenadresse und den Rest des Nachrichtenpakets an den Anschluß A des Selektors 670 zur Verfügung zu stellen.
- Ein Beispiel für die Erzeugung und Empfang eines Nachrichtenpakets an einem Register eines Prozessors/Speichers 36 wird im folgenden gegeben. Die Tabelle VII spezifiziert die Information, wie sie bei den folgenden Registern und Flags des Prozessors/Speichers dieses Beispiels verfügbar ist. Tabelle VII Register Information Zieladresse (absolut) Lokale Adresse (absolut) Statuts zu sendende Daten gerade/empfangene Daten ungerade/empfangene Daten Daten-In Null Flag kein Bit empfangen Sink Global ComE Daten-In Null
- Die lokale Adresseninformation wird im Register 2 mit vier Bits der Registeradresse an Spalten 0 bis 3, fünf Adreßbits die den lokalen Prozessor/Speicher in Spalten 4 bis 8, fünfzehn Bits einer IC-Adresse an Spalten 9 bis 23, welche die Adresse des ICs als absoluten Wert angeben und ein Paritäts-Bit an Spalte 24, welches die Parität für die IC-Adresse zur Verfügung stellt, gespeichert. Wenn eine Nachricht zum Senden verfügbar ist, werden die Nachrichtendaten im Register 4 gespeichert, die Adresse seines Ziels umfassend den IC-Chip, den Prozessor/Speicher und das Register befindet sich in Register 1 in gleicher Reihenfolge wie die lokale Adresseninformation im Register 2, eine Anfrage zum Senden von Bits wird als 1-Bit in Spalte 0 des Statusregisters 3 gesetzt und eine Anfrage zum Senden eines Flags wird als 1-Bit im Global-Flag-Register 6 gesetzt. Bei diesem Beispiel können Nachrichtenpakete in entweder in einem geraden Empfangsregister 6 (falls die Registeradresse 1110 ist) oder in einem ungeraden Empfangsregister 7 (wenn die Registeradresse 1111 ist), empfangen werden.
- Bezüglich der an diesen Punkten gespeicherten Information gibt Tabelle VIII die zum Erzeugen eines Nachrichtenpaketes notwendigen Befehle an, welche die Daten im Register 4 an den durch die Adresse im Register 1 spezifizierten IC weitergibt und die benötigt werden, um die Daten eines Nachrichtenpakets zu empfangen. Tabelle VIII Lese Schreibe Cycle Oper. Reg A Col. Flag
- Während des Zyklusses 51 wird das ComE-Bit gesetzt, wenn der lokale Prozessor/Speicher eine Nachricht senden will und kein Prozessor/Speicher, der sich an einer höheren Position in der Daisy-Kette befindet, eine Sende-Anfrage gemacht hat. Zu dieser Zeit würde jede Anfrage zum Senden von dem momentanen Prozessor/Speicher bereits als 1-Bit im Global-Flag-Register 6 gespeichert sein, um jede Anfrage zum Senden von höheren Prozessoren/Speichern würde als 1-bit in der nullten Spalte des Statusregisters 3 gespeichert sein. Ob der momentane Prozessor/Speicher senden kann, wird berechnet, indem das Status-Bit komplementiert wird und eine AND-Verknüpfung dieses komplementierten Bits mit den Inhalten des Global-Flag-Registers 6 gebildet wird. Das Ergebnis wird in das ComE-Flag-Register geschrieben, wenn das ComE-Bit gesetzt ist, wird das NAND-Gate 293 aktiviert, wodurch die Signale auf der carry-Ausgangsleitung 287 zur Signalleitung 123 und der ACIU 180 zur Verfügung gestellt werden. Während des Zyklusses 52 wird das 1-Bit des Global-Registers 6 in die nullte Spalte des Statusregisters durch die SWAP-Operation geschrieben.
- Während des Zyklusses 53 stellt der Prozessor/Speicher das Parity-Bit für seine AIC-Adresse über die Leitung 123 der CIU 180 zur Verfügung. Wie oben angedeutet wurde, wird das Parity-Bit in Spalte 24 des Registers 2 gespeichert. Es wird während des Lesezyklusses ausgelesen, indem eine OR-Verknüpfung des Inhalts dieser Spalte des Registers 2 mit einem 0-Bit, welches von dem 0-Flag erhalten wird, durchgeführt wird. Das Ergebnis dieser Operation wird auf der carry-Ausgangsleitung der Datensenke im Flag-Register 2 und dem NAND-Gate 293 zur Verfügung gestellt, von wo es der Leitung 123 zur Verfügung gestellt wird.
- Während des Zyklusses 54 wird ein 1-Bit weitergegeben, falls ein Nachrichtenpaket gesendet werden soll. Dieses 1-Bit wird im ComE-Flag-Register 7 gesetzt. Es wird gelesen, in dem die OR-Verknüpfung des Registers 15, welches Nullen enthält, mit den Inhalten des ComE-Flag-Registers gebildet wird. Das Ergebnis dieser Operation wird durch das NAND-Gate 293 zur Leitung 123 zur Verfügung gestellt.
- Während der Zyklen 55 bis 86 werden Daten aus dem Register 4 jeweils mit einer Spalte gleichzeitig ausgelesen. Wenn das "Nicht-Empfangen"-Flag "low" ist, werden die Daten in eines der Empfangsregister 6, 7 jeweils spaltenweise geschrieben. Das gleichzeitige Senden und Empfangen von Nachrichtenpaketen wird durch die SWAP-Operation ausgeführt, welche den Ausgang des Registers B der Carry-Ausgangsleitung 287 und den Eingang von einem Flag dem Register A zur Verfügung stellt. Das Register B wird als Register 4 spezifiziert und in diesem Beispiel ist das Register A als Register 7 spezifiziert. Der Eingang von der Leitung 122 von der CIU 180 wird dem DataIn-Flag zugeführt, welches das Flag 13 ist. Während der Leseabschnitte eines jeden dieser Zyklen werden die Signale an einer Spalte des Registers 4 und das Signal am DatIn-Anschluß gelesen. Während des Schreibabschnitts dieser Operationen wird das Signal an der carry-Ausgangsleitung über das NAND-Gate 293 der Ausgangsleitung 123 zugeführt. Zur gleichen Zeit wird das Signal, welches dem DataIn-Flag 13 von der CIU 180 zugeführt wurde, in eine Spalte des Registers 7 geschrieben.
- Wie oben angedeutet wurde, ist das Schreiben von Daten in die Register 6 und 7 vom Zustand des "Nicht-Empfangen"-Flags 1 abhängig. Diese Bedingung wird durch Lesen des Flags 1 mittels der Leitung 176 und des Selektors 294 und durch Vergleichen im XOR-Gate 199 des "Nicht-Empfangen"-Flags und des Signals auf der Leitung 178, festgestellt. Das Signal für das Lese-Flag 1 ist 0001 auf den Pins 122-25.
- Während des Zyklusses 87 wird das Parity-Bit des empfangenen Nachrichtenpakets mit dem Parity-Bit der absoluten IC-Adresse in Register 2 verglichen. Dies wird unter Benutzung der MOVE-Operation getan, um eine exklusive OR-Verknüpfung des Signals am DataIn-Flag-Eingang mit dem Parity-Bit in Spalte 24 des Registers 2 auszuführen. Falls kein Parity-Fehler vorliegt, sollte das Ergebnis dieser Operation ein Low-Signal sein, das in das Global-Flag-Register 6 geschrieben wird. Der Microcontroller 20 überprüft diese Leitung, um Parity-Fehler zu erkennen.
- Während der Zyklen 0 bis 14 wird die relative IC-Adresse für das Nachrichtenpaket erzeugt und der CIU 180 zur Verfügung gestellt. Dies wird erreicht indem die MOVE-Operation verwendet wir, um die exklusiv OR-Verknüpfung des absoluten Wertes der IC-Adresse der Quelle mit dem absoluten Wert der IC-Adresse des Ziels und das Bereitstellen dieser an die carry-Ausgangsleitung, zu erreichen. Während der Zyklen 15 bis 19 wird die Adresse eines speziellen prozessors/Speichers innerhalb des ICs des aus dem Register 1 ausgelesen und der Carry-Ausgangsleitung durch die MOVE-Operation zugeführt. Während des Zyklusses 20 wird 1-Bit gesendet, welches anzeigt, ob das Zielregister ungerade oder gerade sein sollte, und während der Zyklen 21 bis 23 werden zusätzliche Bits gesendet, die die Adresse des Zielregisters spezifizieren. In dem vorliegenden Beispiel ist der Zustand der Bits wie sie während der Zyklen 21 bis 23 gesendet werden, irrelevant, da die Daten nur in das Register 6 oder 7, abhängig vom Zustand des während des Zyklus 20 erzeugten Bits beschrieben werden. Der Einfachheit halber sind die während der Zyklen 21 bis 23 gesendeten Bits 1-Bits, die durch Invertieren des Ausganges des 0-Registers 15 und des 0-Flag-Eingangs 15 und einer entsprechenden OR-Verknüpfung erhalten werden.
- Während des Zyklusses 24 wird ein Test durchgeführt, ob ein Nachrichtenpaket der Leitung 123 zugeführt wurde, um festzustellen, ob der Weiterleitungsschaltkreis das Nachrichtenpaket akzeptiert hat. Das Akzeptieren wird durch ein Low-Signal auf Leitung 199 angezeigt, welches durch das NOR-Gate 352 invertiert ist und dem DataIn-Flag während der Zyklen 0 bis 44 zugeführt wird. Während des Zyklusses 24 wird dieses Signal erneut invertiert und in die nullte Spalte des Statusregisters 3 durch die SWAP-Operation geschrieben.
- Die Zyklen 25 bis 38 sind frei, so daß die Befehle für diese Zyklen eine Nicht-Operation (NOP) mit dem Übertragen von 0-Bits mittels der MOVE-Operation vorsehen.
- Während des Zyklus 39 berechnet der Prozessor/Speicher, ob er um Erlaubnis nachfragt, ein Nachrichtenpaket im nächsten Weiterleitungszyklus senden zu dürfen. Diese Information wird von dem Statusregister erhalten und durch eine OR-Operation dem Global-Flag-Register 6 zugeführt, welches einen Ausgang auf die Leitung 124 zur Verfügung stellt. Während der Zyklen 40-43 wird eine Anfrage, die gesendet werden soll, von dem Statusregister gelesen und über die carry-Ausgangsleitung den Daisy-Eingängen der Prozessoren/Speicher zugeführt, die unter dem lokalen Prozessor/Speicher in der Daisy-Kette des Chips liegen. Zur gleichen Zeit werden die Eingänge von den Prozessoren/Speichern, die sich in der Daisy-Kette höher befinden, von dem Daisy-Eingang gelesen und durch den Carry-Ausgang den Prozessoren/Speichern, die tiefer in der Kette liegen, zugeführt. Vier Zyklen sind erlaubt, um sicherzustellen, daß jede Anfrage, die von einem Prozessor/Speicher gesendet werden soll, über die Kette nach unten weitergeleitet wird. Während des Zyklus 44 wird die Anfrage, die von irgendeinem Prozessor/Speicher nach einem höheren Punkt in der Kette gesendet werden soll, auf die Carry-Ausgangsleitung geschrieben, und diese Information wird auch in das Statusregister geschrieben.
- Während des Zyklus 45 wird auf der Leitung 122 dem DataIn-Flag ein 1-Bit zur Verfügung gestellt, wenn eine Nachricht an diesen IC abgegeben werden soll. Dieses Bit wird zum Berechnen des Zustandes des "Nicht-Empfangen-Flag-Registers 1" verwendet, indem dieses Register mit einem 0-Bit gesetzt wird, welches entgegengesetzt dem Zustand des Eingangs an ComIn ist. Dies wird durch Komplementieren des DataIn-Eingangs und entsprechendes schreiben in das Flag-Register 1 mittels einer OR-Operation erreicht.
- Während der Zyklen 46 bis 50 wird eine Prozessor/Speicheradresse auf Leitung 122 von der CIU 180 abgegeben. Jeder Prozessor/Speicher vergleicht diese Adresse mit seiner eigenen Adresse unter Verwendung der MOVE-Operation, um eine Exklusiv-OR-Verknüpfung dieser zwei Adressen zu erreichen, und um jegliche Unterschiede, die im Flag-Register 1 beobachtet wurden, zusammenzuführen. Wenn keine Unterschiede beobachtet worden sind, behält das Flag-Register 1 ein 0-Bit, was anzeigt, daß der lokale Prozessor/Speicher das Ziel des Nachrichtenpakets ist.
- Der Weiterleitungszyklus wird dann fortfahren, bis alle Nachrichtenpakete abgeliefert worden sind.
- Wie es für den Fachmann klar sein wird, können unterschiedliche Modifikationen in dem oben beschriebenen System vorgenommen werden, ohne dabei vom Wesen der Erfindung abzuweichen. Das Benutzen eines Mainframe-Computers 10, eines Mikrocontrollers 30 und eines rechteckförmigen Feldes von Prozessoren/Speichern sowie das Zuführen von Daten zu und von derartigen Prozessoren/Speichern durch Datenquellen 40 und Datensenken 90 und die zugeordneten Puffer sind lediglich beispielhafter Natur. Beispielsweise könnte, falls der Mainframe-Computer schnell genug ist, die Befehlssequenzerzeugung durch den Computer anstatt durch den Mikrocontroller vorgenommen werden. Alternativ besteht in mehreren Anwendungen kein Bedürfnis nach der Verwendung eines Mainframe-Computers für den Betrieb des Mikrocontrollers und des Feldes der Prozessoren/Speicher. Andere Konfigurationen der Datenquellen 40, Puffern 50, 60, 65, 70, 75, 80 und der Datensenke drängen sich auf. Obwohl ein rechteckförmiges Feld von Prozessoren/Speichern den Vorteil einer relativ einfachen Operation und schneller Ausführung der streng parallelen Operationen hat, ist diese Organisation nicht notwendig für die Ausführung der Erfindung. Individuelle Prozessoren/Speicher könnten in einem streng linearen Feld miteinander verbunden sein, so wie dies durch eine spiralförmige Verbindung der Fig. 1B repräsentiert ist. Weiter könnten sie in zweidimensionalen hexagonalen oder orthogonalen Feldern oder anderen Konfigurationen oder selbst in dreidimensionalen Feldern miteinander verbunden sein. In einigen Anwendungen könnte es möglich sein, jegliche Verbindungen zwischen den Prozessoren/Speichern auf unterschiedlichen Chips mit Ausnahme derer über die Weiterleitungsschaltkreise des Chips zu vermeiden.
- Die Anzahl der Prozessoren/Speicher, ihrer Positionierung und ihrer individuellen Funktionen können ebenfalls variiert werden. Das Computersystem der vorliegenden Erfindung kann mit einer kleineren oder größeren Anzahl von Prozessoren/Speichern ausgeführt sein. Die Vorteile der vorliegenden Erfindung beginnen sich bezahlt zu machen, wenn etwa 10.000 Prozessoren/Speicher verwendet werden. Das Probieren dieser 2²&sup0;-Prozessoren/Speicher in einer Weise, daß zweiunddreißig Prozessoren/Speicher sich auf einen Chip und vierundsechzig Chips auf jedem PC-Bord befinden, stellt nur ein Beispiel dar. Mit heutiger Technologie kann diese Gruppierung mit vertretbaren Kosten erreicht werden. In Zukunft ist es sehr wahrscheinlich, daß mehr Prozessoren/Speicher auf jedem Chip angeordnet sein können. Die Anzahl der Dimensionen in dem n-Würfel kann so variiert werden, daß die Anzahl der Prozessoren/Speicher miteinander verbunden werden können. In einigen Anwendungen kann es vorteilhaft sein, die Weiterleitungsschaltkreise auf getrennten integrierten Schaltungen von den ICs, auf denen die Prozessoren/Speicher implementiert sind, zu fertigen. In einigen Anwendungen kann es auch wünschenswert sein, mehr als einen Typ von Prozessoren/Speicher zu verwenden. Beispielsweise könnten sich Prozessoren/Speicher mit speziellen arithmetischen Funktionen zusammen mit den "general purpose"-Prozessoren/Speichern als nützlich erweisen. Design-Variationen können in den Schaltkreisen des ICs ebenso implementiert sein. Beispielsweise kann die Pin-Anzahl durch Zeitmultiplextechnik an den Befehls-Pins verändert werden.
- Es wurde ein Weiterleitungsschaltkreis für einen Boolschen n-Würfel beschrieben, bei dem es für jeden IC-Chip in jeder Dimension des Würfels zwei mögliche Plätze gibt. Es ist jedoch möglich, die Erfindung auch so umzusetzen, daß die individuellen Chips sich an mehr als zwei Positionen in einer oder mehreren Positionen des n-Würfels befinden. In einer derartigen Anordnung existieren mehrere Möglichkeiten für das Verbinden der individuellen Chips. Eine Konfiguration, die die allgemeine Konfiguration des Weiterleitungsschaltkreises 200 erhält, verbindet die Ausgangsleitungen 39 jeder Dimension einer jeden Zelle mit den Eingangsleitungen 38 von lediglich einer anderen Zelle in der gleichen Dimension. Um dieses Verbindungsmuster von Eingangs- und Ausgangsleitungen 38, 39 auf jedem Chip 100 der Fig. 5 zu verallgemeinern, sei angemerkt, daß dort, wo ein Chip an der 1-Adresse in einer Dimension angeordnet ist, seine Ausgangsleitung mit ihrem nächsten Nachbar-Chip, der auf der 0-Adresse angeordnet ist, verbunden wird, wobei diese Adresse um eine Einheit kleiner ist, und das in Fällen, in denen ein Chip auf einer 0-Adresse in einer Dimension angeordnet ist, seine Ausgangsleitungen mit dem Chip verbunden werden, der an einer 1-Adresse angeordnet ist, die die höchste Adresse in dieser Dimension ist. Um dieses Muster auf Fälle anzuwenden, wo die Chips in mehr als zwei Adressen in einer Dimension angeordnet sind, verbinden wir einfach die Ausgangsleitungen des Chips an der höchsten Adresse mit dem Eingang des Chips an der nächst höheren Adresse und so fort. Wir können die Ausgangsleitung des Chips an der 0-Adresse mit der Eingangsleitung des Chips an der höchsten Adresse verbinden. Beispielsweise können wir, wenn die Chips an vier Adressen in einer Dimension angeordnet sein können, die Ausgangsleitung des Chips an der dritten Adresse mit der Eingangsleitung des Chips an der zweiten Adresse, die Ausgangsleitung des Chips an der Adresse 2 der Eingangsleitung des Chips an Adresse 1, die Ausgangsleitung des Chips an Adresse 1 mit der Eingangsleitung des Chips an der Adresse 0 und die Ausgangsleitung des Chips an der Adresse 0 mit der Eingangsleitung des Chips an der Adresse 3 verbinden. Alternativ könnten die Verbindungen in umgekehrter Richtung gemacht werden, wenn dies erwünscht ist.
- Auch sind Modifikationen bezüglich der relativen Adressenerzeugung notwendig und bezüglich des Weiterleitungsschaltkreises. Diese Modifikationen sind jedoch von einer Verallgemeinerung dieser Funktionen verständlich. Somit wird, wenn nur zwei IC-Adressen in jeder Dimension vorliegen, die relative Adresse dadurch bestimmt werden, daß die Exklusiv-OR-Verknüpfung dieser zwei Adressen verwendet wird. Dies ist jedoch äquivalent zur Subtraktion einer Adresse von der anderen und Darstellen dieser negativen Zahlen in Komplementdarstellung. In gleicher Weise ist die Untersuchungsfunktion des Weiterleitungsschaltkreises bezüglich des führenden Adreß-Bit zur Feststellung, ob das Nachrichtenpaket sein Ziel erreicht hat, in der Verallgemeinerung eine Bestimmung, ob das führende Adreß-Bit ein 0-Digit ist oder nicht. Wenn es eine 0-Stelle ist, hat das Nachrichtenpaket sein Ziel in dieser Dimension erreicht. Anderenfalls hat es dies nicht und sollte an eine unterschiedliche Adresse dieser Dimension weitergeleitet werden. Falls mehr als zwei Adressen in dieser Funktion vorhanden sind, wird die Erzeugung einer relativen Adresse und das Weiterleiten eines Nachrichtenpaketes, das bei dieser Adresse spezifiziert ist, gleich sein. Die relative Adresse wird durch Subtrahieren der Adresse des Ziel-ICs von der Adresse des ursprünglichen ICs bestimmt, um dadurch die Anzahl der Knoten zu erhalten, die das Nachrichtenpaket in dieser Dimension überqueren muß, um sein Ziel zu erreichen. Negative Zahlen können in einfacher Weise durch eine Konvertierung in ihre Komplementdarstellung gehandhabt werden. Der Weiterleitungsschaltkreis in der Bus-Zugriffslogik jeder Spalte des Line-Assigners testet einfach das Vorhandensein eine 0-Stelle in dem führenden Adreß-Bit des Nachrichtenpakets. Wenn eine 0-Stelle vorliegt, hat das Nachrichtenpaket die Adresse erreicht, für die es in dieser Dimension erreicht wird, und muß nicht weiter zu einer unterschiedlichen Adresse in dieser Dimension weitergeleitet werden. Wenn das führende Bit kein 0-Digit ist, befindet sich das Nachrichtenpaket nicht an der richtigen Adresse und kann auf dem nächsten Nachbar-Knoten, dessen Adresse in dieser Dimension eine Einheit kleiner ist, weitergeleitet werden. Zu dieser Zeit wird die Duplikat-Adresse weitergeleitet und das relative Adreß-Digit dieser Dimension sollte durch Inkrementieren mit Eins erneuert werden.
- Das Betrachten dieses Beispiels eines Schaltkreises, in dem mehr als zwei Adressen für einen IC-Chip in einer Dimension vorhanden sind, zeigt, daß das Schema der Anzahl der Eingangs- und Ausgangsleitungen 38, 39, die für das Verbinden einer gleichen Anzahl von IC-Chips in dem Boolschen n-Würfel, der oben beschrieben wurde, benötigt werden, reduziert und daher die Wahrscheinlichkeit von Weiterleitungsschaltkreisen erhöht. Jedoch für Anwendungen, bei denen die Zwischenkommunikation zwischen den Chips gering ist, kann eine solche Alternative Vorzüge aufweisen.
- Bezüglich der individuellen oben beschriebenen Komponenten gilt das oben Gesagte entsprechend, nämlich, daß sie nur Beispiele zeigen. Die besondere Größe des RAMs 250 und des Flag-Controllers 290 dienen nur der Beschreibung. Größere RAMs und Controller können sich in manchen Anwendungen als vorteilhaft erweisen. Kleinere derartige Bausteine können ebenfalls Verwendung finden. Die Bit-serielle ALU 280 könnte durch eine parallele ALU und die Anzahl der Eingänge zur ALU und/oder die Ausgänge von ihr könnten unterschiedlich sein. Das angegebene Ausgangsbeispiel des Prozessors/Speichers führt jegliche Adressendecodierungen in der PLA 150 aus, jedoch kann es in manchen Anwendungen vorteilhaft sein, das Decodieren am individuellen Prozessor/Speicher auszuführen. Während die ALU, das RAM und der Flag-Controller eines jeden Prozessors/Speichers unabhängig von den anderen Prozessoren/Speichern in der oben beschriebenen Ausführungsform arbeitet, sind auch andere Anordnungen denkbar. Beispielsweise kann jede ALU Zugriff zu einem oder mehreren RAM-Registern haben, so wie ein einzelnes Register, wo die IC-Adresse für alle Prozessoren/Speicher eines IC-Chips gespeichert sind. Während die Benutzung eines Befehls-Sets von fünf Basisoperationen AND, OR, ADD, SW und MOVE eine bevorzugte Wahl darstellt, kann die Erfindung auch mit zusätzlichen Operationen ausgeführt werden. Beispielsweise kann die Erfindung ausgeführt werden, indem eine unterschiedliche Anzahl von Befehlen in Abweichung von den zweiunddreißig Befehlen der Tabelle VI Verwendung findet.
- Zahlreiche Variationen können bezüglich des Weiterleitungsschaltkreises 200 vorgenommen werden. Die Anzahl der Spalten im Line-Assigner 205 hängt von der Anzahl der Dimensionen in den n-Würfel ab. Die Anzahl der Reihen kann gemäß den Speichererfordernissen der Weiterleitungsschaltkreise variiert werden. Derartige Erfordernisse variieren von einem System zum anderen in Abhängigkeit, wieviele Nachrichtenpakete in jedem System weitergeleitet werden müssen. Alternative Speichersysteme ergeben sich von der obigen Beschreibung. In einigen Anwendungen kann es vorteilhaft sein, mehrfache Eingangsleitungen 194, 196 für den Nachrichten-Injektor 220 und/oder mehrfache Ausgangsleitungen 197, 198, 199 von dem Nachrichtendetektor 210 und dem Injektor 220 vorzusehen. Es kann auch wünschenswert sein, die Nachrichtenpakete in dem Puffer und dem Adressenwiederhersteller 215 gemäß der Anzahl der Dimensionen, durch die sie weitergeleitet werden müssen, zu sortieren. Zahlreiche Variationen können auch bezüglich der Verarbeitung der Befehle gemacht werden. Es kann vorteilhaft sein, die Weiterleitungszyklen so zu überlappen, daß nachfolgende Nachrichtenpakete bereits erzeugt werden, noch bevor frühere Nachrichtenpakete vollständig abgeliefert sind. Zusätzliche Fehlerdetektion und Korrektur kann dadurch vorgesehen sein, daß zusätzliche Parity-Bits verwendet werden. Abhängige Operationen können von einem oder mehreren Flags abhängig sein. Indirekte Adressierung kann ebenfalls erwünscht sein.
- Zahlreiche Merkmale können auch mit dem oben beschriebenen System kombiniert werden, um die Leistung zu verbessern. Beispielsweise kann jeder Chip mit einem zusätzlichen externen Speicher ausgestattet sein, so daß der Zustand der Inhalte der individuellen dynamischen RAMs 250 jedes Prozessors/Speichers auf dem Chip gesichert wird. Die Adresse eine jeden Prozessors/Speichers könnte durch Festverdrahtung ausgeführt sein, um das Laden jeder Adresse zu Beginn der Operationen zu vermeiden. Auch könnte ein Eingang für jeden Prozessor/Speicher direkt über einen Image-Sensor statt über eine Datenquelle 40 vorgesehen sein. Alternativ könnte der Computer 10 mit direktem Zugriff auf die individuellen Register eines jeden Prozessors/Speichers ausgestattet sein. Schließlich sei festgehalten, daß, obwohl die Erfindung in Ausdrücken momentaner Technologie von VLSI-Schaltkreisen, die auf Silikon-Basis hergestellt sind, und durch herkömmliche Kabel verbunden sind, beschrieben wurde, das Konzept der Erfindung auch auf andere Technologien übertragen werden kann. Die Silikon-ICs 35 könnten durch andere Schaltkreise ersetzt werden, die die gleiche Funktion bereitstellen, jedoch beispielsweise aus Gallium-Arsenid gefertigt sind, und die herkömmlichen Kabel könnten beispielsweise durch Glasfaserkabel ersetzt sein.
Claims (11)
1. Parallel-Prozessor-Feld mit einem Feld aus
prozessoren/Speichern, welches ein erstes
Kommunikations-Netzwerk beinhaltet, welches die
prozessoren/Speicher in einer Gitterstruktur
miteinander verbindet, und zum Übertragen der Daten
zwischen benachbarten Prozessoren innerhalb der
Gitterstruktur dient,
dadurch gekennzeichnet,
daß ein zweites Kommunikations-Netzwerk vorgesehen
ist, welches eine Vielzahl von Verbindungsknoten
aufweist, für die Kommunikation zwischen den
Prozessoren/Speichern, in dem Nachrichten von denen
jede eine Adresse und Daten enthält, zwischen den
Prozessoren/Speichern übertragen werden.
2. Parallel-Prozessor-Feld gemäß Anspruch 1, bei dem
jeder Prozessor/Speicher eine
Datenerzeugungseinrichtung (280, 287) zum selektiven
Erzeugen von Nachrichten, von denen jede eine Adresse
und Daten aufweist, enthält.
3. Parallel-Prozessor-Feld gemäß Anspruch 1 oder 2, bei
dem die Datenerzeugungseinrichtung (280) eine
arithmetische und logische Einheit (280) zum Erzeugen
eines Summensignals und eines Carry-Signals enthält,
wobei das Carry-Signal die Daten darstellt, welche
von dem entsprechenden Prozessor erzeugt wurden.
4. Parallel-Prozessor-Feld gemäß Anspruch 3, bei dem
jede arithmetische und logische Einheit aufweist:
A. einen Dekoder (282), der Eingangssignale von
einem Speicher und von einem Flag-Controller empfängt
und in Antwort darauf ein Ausgangssignal auf einer
von einer Vielzahl von Ausgangsleitungen erzeugt,
B. einen summen-Selektor-Schaltkreis (284), der mit
den Ausgangsleitungen des Dekoders verbunden ist und
weiterhin so verbunden ist, daß er
Summenbefehlssignale empfängt, um das Summensignal
in Antwort darauf zu erzeugen, und
C. einen carry-Selektor-Schaltkreis (286), der mit
den Ausgangsleitungen des Dekoders verbunden ist und
weiterhin so verbunden ist, daß er die
Carry-Befehlssignale empfängt, um das Carry-Signal in
Antwort darauf zu erzeugen.
5. Parallel-Prozessor nach einem der Ansprüche 3 oder 4,
bei dem die Prozessoren/Speicher die
Summen-Befehlssignale (284, 162) und die
Carry-Befehlssignale (286, 164) parallel empfangen.
6. Parallel-Prozessor-Feld nach mindestens einem der
Ansprüche 1 bis 5, bei dem das erste
Kommunikations-Netzwerk aufweist:
eine Vielzahl von Übertragungsgattern (287), von
denen jede mit der Datenerzeugungseinrichtung der
Prozessoren/Speicher verbunden ist, um die
Prozessoren/Speichern zu aktivieren, Daten, die von
den Prozessoren/Speichern erzeugt wurden, zu
übertragen,
eine Vielzahl von Empfangsgattern zum Empfangen von
Daten von den Übertragungsgattern benachbarter
Prozessoren/Speicher.
7. Parallel-prozessor-Feld nach mindestens einem der
vorhergehenden Ansprüche bei denen jeder
Verbindungsknoten über eine Vielzahl von
Kommunikationsverbindungen mit anderen Knoten
verbunden ist, um das zweite Kommunikationsnetzwerk
zu bilden, wobei die Adresse in jeder Nachricht eine
Vielzahl von Adressenstellen aufweist und jede
Adreßstelle eine verbindungs-Auswahlbedingung oder
eine verbindung-Nicht-Auswahlbedingung aufweist und
mit einer der Kommunikationsverbindungen assoziiert
ist, wobei der Knoten aufweist:
A. einen Empfänger (38) zum Empfangen von
Nachrichten von der Vielzahl von
Kommunikationsverbindungen, die mit dem Knoten
verbunden sind, und der Empfänger von zumindest
einigen der Knoten weiterhin die Nachrichten von
zumindest einem Prozessor/Speicher empfängt;
B. einen Kommunikations-Verbindungsassoziierschaltkreis (200)
zum Bestimmen der Bedingung von zumindest einigen der
Adreßstellen der Nachricht, wie sie von dem Empfänger
empfangen wurde und zum Zuordnen von einer der
Kommunikationsverbindungen damit in Antwort auf die
Adreßstelle, welche mit der Kommunikationsverbindung
assoziiert ist, die eine Verbindungsauswahlbedingung
hat, und
C. einen Nachrichtenübertragungsschaltkreis (39) zum
Übertragen der Nachricht über die assoziierte
Kommunikationsverbindung, wie sie von dem
Kommunikationsverbindungsassoziierschaltkreis
bestimmt wurde.
8. Parallel-Prozessor-Feld gemäß Anspruch 7, bei dem der
Nachrichtenübertragungsschaltkreis (415) die
Adreßstelle, die mit der Kommunikationsverbindung
über die die Nachricht übertragen worden ist,
assoziiert ist, komplementiert.
9. Parallel-prozessor-Feld nach Anspruch 7 oder 8
weiterhin umfassend einen Nachrichtenspeicher (215),
der mit der
Kommunikationsverbindungsassoziierschaltung verbunden
ist, wobei die
Kommunikationsverbindungsassoziierschaltung
feststellt, ob eine Vielzahl von momentan empfangener
Nachrichten mit einer einzelnen
Kommunikationsverbindung assoziiert sind und für den
Fall, daß dies zutrifft, zumindest eine mit dem
Nachrichtenspeicher koppelt, wobei der
Nachrichtenspeicher anschließend die gespeicherte
Nachricht zurück zur
Kommunikationsverbindungsassoziierschaltung
überträgt.
10. Parallel-Prozessor-Feld nach Anspruch 7 bis 9, bei
dem der Knoten weiterhin einen Nachrichten-Extraktor
(210), der mit der
Kommunikationsverbindungsassoziierschaltung und den
Prozessoren/Speichern verbunden ist, enthält und
wobei weiterhin der
Kommunikationsverbindungsassoziierschaltkreis
feststellen kann, daß eine Nachricht mit keiner der
Kommunikationsverbindungen assoziiert ist, wobei die
Kommunikationsverbindungsassoziierschaltung solche
Nachrichten zu dem Nachrichtenextraktor überträgt für
die sie feststellt, daß sie mit keinem der
Kommunikationsverbindungen assoziiert sind, und wobei
der Nachrichtenextraktor, der diese Nachrichten, die
an ihn von der
Kommunikationsverbindungsassoziierschaltung gerichtet
wurden, empfängt und diese mit einem
Prozessor/Speicher, der damit verbunden ist, koppelt.
11. Parallel-Prozessor-Feld nach mindestens einem der
vorhergehenden Ansprüche weiterhin aufweisend eine
Steuereinheit (10, 20) zum Erzeugen von
Steuersignalen, die die Prozessoren/Speicher, die
Verbindungsknoten, und das erste
Kommunikationsnetzwerk parallel steuern.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06/499,474 US4814973A (en) | 1983-05-31 | 1983-05-31 | Parallel processor |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3486141D1 DE3486141D1 (de) | 1993-06-09 |
DE3486141T2 true DE3486141T2 (de) | 1993-08-19 |
Family
ID=23985391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE8484303598T Expired - Fee Related DE3486141T2 (de) | 1983-05-31 | 1984-05-29 | Parallel-prozessor. |
Country Status (5)
Country | Link |
---|---|
US (1) | US4814973A (de) |
EP (4) | EP0495537A3 (de) |
JP (2) | JPH0797362B2 (de) |
CA (1) | CA1212480A (de) |
DE (1) | DE3486141T2 (de) |
Families Citing this family (119)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4816449A (en) * | 1984-08-09 | 1989-03-28 | Immunetech Pharmaceuticals | Immunotherapeutic anti-inflammatory peptide agents |
CA1253912A (en) * | 1984-11-08 | 1989-05-09 | Masao Hosaka | System for controlling image formation |
JPS61264470A (ja) * | 1985-05-03 | 1986-11-22 | アドバンスト・マイクロ・デイバイシズ・インコ−ポレ−テツド | モノリシツク集積回路装置 |
US5113523A (en) * | 1985-05-06 | 1992-05-12 | Ncube Corporation | High performance computer system |
DE3607241A1 (de) * | 1986-03-05 | 1987-09-10 | Gerhard G Thomas | Rechner |
CA1293819C (en) * | 1986-08-29 | 1991-12-31 | Thinking Machines Corporation | Very large scale computer |
CA1289671C (en) * | 1986-10-28 | 1991-09-24 | Thinking Machines Corporation | Massively parallel processor |
US5175865A (en) * | 1986-10-28 | 1992-12-29 | Thinking Machines Corporation | Partitioning the processors of a massively parallel single array processor into sub-arrays selectively controlled by host computers |
WO1988004077A1 (en) * | 1986-11-24 | 1988-06-02 | Thinking Machines Corporation | Pipelining technique and pipelined processes |
GB2201817A (en) * | 1987-02-27 | 1988-09-07 | Massachusetts Inst Technology | Geometry-defining processors |
GB2203574A (en) * | 1987-04-03 | 1988-10-19 | Univ Southampton | Parallel processor arrays |
GB2206428A (en) * | 1987-06-15 | 1989-01-05 | Texas Instruments Ltd | Computer |
US5170482A (en) * | 1987-08-14 | 1992-12-08 | Regents Of The University Of Minnesota | Improved hypercube topology for multiprocessor computer systems |
WO1989001665A1 (en) * | 1987-08-14 | 1989-02-23 | Regents Of The University Of Minnesota | Hypercube topology for multiprocessor systems with added communication paths between nodes or substituted corner topologies |
US4908751A (en) * | 1987-10-15 | 1990-03-13 | Smith Harry F | Parallel data processor |
JPH0624361B2 (ja) * | 1988-02-15 | 1994-03-30 | 工業技術院長 | データ伝送方式 |
US5377123A (en) * | 1992-06-08 | 1994-12-27 | Hyman; Edward | Programmable logic device |
US5253363A (en) * | 1988-03-15 | 1993-10-12 | Edward Hyman | Method and apparatus for compiling and implementing state-machine states and outputs for a universal cellular sequential local array |
US5644497A (en) * | 1988-03-15 | 1997-07-01 | Hyman; Edward | Method and apparatus for compiling and implementing state-machine states and outputs for a universal cellular sequential logic array |
US5212778A (en) * | 1988-05-27 | 1993-05-18 | Massachusetts Institute Of Technology | Message-driven processor in a concurrent computer |
US5088048A (en) * | 1988-06-10 | 1992-02-11 | Xerox Corporation | Massively parallel propositional reasoning |
US5583506A (en) * | 1988-07-22 | 1996-12-10 | Northrop Grumman Corporation | Signal processing system and method |
GB2223867A (en) * | 1988-09-09 | 1990-04-18 | Univ City | Multiprocessor data processing system |
US5159690A (en) * | 1988-09-30 | 1992-10-27 | Massachusetts Institute Of Technology | Multidimensional cellular data array processing system which separately permutes stored data elements and applies transformation rules to permuted elements |
GB2227341A (en) * | 1989-01-18 | 1990-07-25 | Intel Corp | Message routing in a multiprocessor computer system |
US5594866A (en) * | 1989-01-18 | 1997-01-14 | Intel Corporation | Message routing in a multi-processor computer system with alternate edge strobe regeneration |
US5276893A (en) * | 1989-02-08 | 1994-01-04 | Yvon Savaria | Parallel microprocessor architecture |
GB2232512A (en) * | 1989-05-31 | 1990-12-12 | Plessey Telecomm | Processor unit networks |
US5345578A (en) * | 1989-06-30 | 1994-09-06 | Digital Equipment Corporation | Competitive snoopy caching for large-scale multiprocessors |
US5218709A (en) * | 1989-12-28 | 1993-06-08 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Special purpose parallel computer architecture for real-time control and simulation in robotic applications |
US5187801A (en) * | 1990-04-11 | 1993-02-16 | Thinking Machines Corporation | Massively-parallel computer system for generating paths in a binomial lattice |
US5367677A (en) * | 1990-05-11 | 1994-11-22 | Thinking Machines Corporation | System for iterated generation from an array of records of a posting file with row segments based on column entry value ranges |
US5157785A (en) * | 1990-05-29 | 1992-10-20 | Wavetracer, Inc. | Process cell for an n-dimensional processor array having a single input element with 2n data inputs, memory, and full function arithmetic logic unit |
US5193202A (en) * | 1990-05-29 | 1993-03-09 | Wavetracer, Inc. | Processor array with relocated operand physical address generator capable of data transfer to distant physical processor for each virtual processor while simulating dimensionally larger array processor |
US5133073A (en) * | 1990-05-29 | 1992-07-21 | Wavetracer, Inc. | Processor array of N-dimensions which is physically reconfigurable into N-1 |
CA2050559A1 (en) * | 1990-10-24 | 1992-04-25 | John D. S. Babcock | Data communication network and method of operation |
US5765015A (en) | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Slide network for an array processor |
US5963746A (en) | 1990-11-13 | 1999-10-05 | International Business Machines Corporation | Fully distributed processing memory element |
US5809292A (en) | 1990-11-13 | 1998-09-15 | International Business Machines Corporation | Floating point for simid array machine |
US5588152A (en) | 1990-11-13 | 1996-12-24 | International Business Machines Corporation | Advanced parallel processor including advanced support hardware |
US5765012A (en) | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Controller for a SIMD/MIMD array having an instruction sequencer utilizing a canned routine library |
US5765011A (en) | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams |
US5963745A (en) | 1990-11-13 | 1999-10-05 | International Business Machines Corporation | APAP I/O programmable router |
US5815723A (en) | 1990-11-13 | 1998-09-29 | International Business Machines Corporation | Picket autonomy on a SIMD machine |
US5734921A (en) | 1990-11-13 | 1998-03-31 | International Business Machines Corporation | Advanced parallel array processor computer package |
EP0485690B1 (de) | 1990-11-13 | 1999-05-26 | International Business Machines Corporation | Paralleles Assoziativprozessor-System |
US5794059A (en) | 1990-11-13 | 1998-08-11 | International Business Machines Corporation | N-dimensional modified hypercube |
US5713037A (en) | 1990-11-13 | 1998-01-27 | International Business Machines Corporation | Slide bus communication functions for SIMD/MIMD array processor |
US5630162A (en) | 1990-11-13 | 1997-05-13 | International Business Machines Corporation | Array processor dotted communication network based on H-DOTs |
US5590345A (en) | 1990-11-13 | 1996-12-31 | International Business Machines Corporation | Advanced parallel array processor(APAP) |
US5828894A (en) | 1990-11-13 | 1998-10-27 | International Business Machines Corporation | Array processor having grouping of SIMD pickets |
US5625836A (en) | 1990-11-13 | 1997-04-29 | International Business Machines Corporation | SIMD/MIMD processing memory element (PME) |
US5617577A (en) | 1990-11-13 | 1997-04-01 | International Business Machines Corporation | Advanced parallel array processor I/O connection |
US5966528A (en) | 1990-11-13 | 1999-10-12 | International Business Machines Corporation | SIMD/MIMD array processor with vector processing |
JPH04193033A (ja) * | 1990-11-26 | 1992-07-13 | Hitachi Ltd | バッテリシステム |
US5379438A (en) * | 1990-12-14 | 1995-01-03 | Xerox Corporation | Transferring a processing unit's data between substrates in a parallel processor |
GB2251320A (en) * | 1990-12-20 | 1992-07-01 | Motorola Ltd | Parallel processor |
US5131054A (en) * | 1991-01-09 | 1992-07-14 | Thinking Machines Corporation | Character recognition system using massively parallel computer that identifies a query character using degree of similarity with plurality of training characters of known identity |
IE920032A1 (en) * | 1991-01-11 | 1992-07-15 | Marconi Gec Ltd | Parallel processing apparatus |
US5301310A (en) * | 1991-02-07 | 1994-04-05 | Thinking Machines Corporation | Parallel disk storage array system with independent drive operation mode |
US5321813A (en) | 1991-05-01 | 1994-06-14 | Teradata Corporation | Reconfigurable, fault tolerant, multistage interconnect network and protocol |
US5594918A (en) | 1991-05-13 | 1997-01-14 | International Business Machines Corporation | Parallel computer system providing multi-ported intelligent memory |
US5151900A (en) * | 1991-06-14 | 1992-09-29 | Washington Research Foundation | Chaos router system |
US5251131A (en) * | 1991-07-31 | 1993-10-05 | Thinking Machines Corporation | Classification of data records by comparison of records to a training database using probability weights |
CA2076293A1 (en) * | 1991-10-11 | 1993-04-12 | Prathima Agrawal | Multiprocessor computer for solving sets of equations |
US5715391A (en) * | 1991-11-15 | 1998-02-03 | International Business Machines Corporation | Modular and infinitely extendable three dimensional torus packaging scheme for parallel processing |
US5442797A (en) * | 1991-12-04 | 1995-08-15 | Casavant; Thomas L. | Latency tolerant risc-based multiple processor with event driven locality managers resulting from variable tagging |
EP0570729A3 (en) * | 1992-05-22 | 1994-07-20 | Ibm | Apap i/o programmable router |
JP2642039B2 (ja) | 1992-05-22 | 1997-08-20 | インターナショナル・ビジネス・マシーンズ・コーポレイション | アレイ・プロセッサ |
JP2620487B2 (ja) * | 1992-05-22 | 1997-06-11 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータ・パッケージ |
US5561805A (en) * | 1992-10-22 | 1996-10-01 | International Business Machines Corporation | System for selectively packing together datablocks and efficiently routing independent of network topology in a parallel computer system in accordance with a selected numbering system |
US5355364A (en) * | 1992-10-30 | 1994-10-11 | International Business Machines Corporation | Method of routing electronic messages |
US5533198A (en) * | 1992-11-30 | 1996-07-02 | Cray Research, Inc. | Direction order priority routing of packets between nodes in a networked system |
US5655131A (en) * | 1992-12-18 | 1997-08-05 | Xerox Corporation | SIMD architecture for connection to host processor's bus |
US5450603A (en) * | 1992-12-18 | 1995-09-12 | Xerox Corporation | SIMD architecture with transfer register or value source circuitry connected to bus |
US5717947A (en) * | 1993-03-31 | 1998-02-10 | Motorola, Inc. | Data processing system and method thereof |
US5835492A (en) * | 1993-09-08 | 1998-11-10 | Hitachi, Ltd. | Network for mutually connecting computers and communicating method using such network |
US5583990A (en) * | 1993-12-10 | 1996-12-10 | Cray Research, Inc. | System for allocating messages between virtual channels to avoid deadlock and to optimize the amount of message traffic on each type of virtual channel |
US5987622A (en) * | 1993-12-10 | 1999-11-16 | Tm Patents, Lp | Parallel computer system including parallel storage subsystem including facility for correction of data in the event of failure of a storage device in parallel storage subsystem |
US5581705A (en) * | 1993-12-13 | 1996-12-03 | Cray Research, Inc. | Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system |
US5659686A (en) * | 1994-09-22 | 1997-08-19 | Unisys Corporation | Method of routing a message to multiple data processing nodes along a tree-shaped path |
US5701416A (en) * | 1995-04-13 | 1997-12-23 | Cray Research, Inc. | Adaptive routing mechanism for torus interconnection network |
US6055618A (en) * | 1995-10-31 | 2000-04-25 | Cray Research, Inc. | Virtual maintenance network in multiprocessing system having a non-flow controlled virtual maintenance channel |
US5913070A (en) * | 1996-01-16 | 1999-06-15 | Tm Patents, L.P. | Inter-connector for use with a partitionable massively parallel processing system |
US5835925A (en) * | 1996-03-13 | 1998-11-10 | Cray Research, Inc. | Using external registers to extend memory reference capabilities of a microprocessor |
US5864738A (en) * | 1996-03-13 | 1999-01-26 | Cray Research, Inc. | Massively parallel processing system using two data paths: one connecting router circuit to the interconnect network and the other connecting router circuit to I/O controller |
US5841973A (en) * | 1996-03-13 | 1998-11-24 | Cray Research, Inc. | Messaging in distributed memory multiprocessing system having shell circuitry for atomic control of message storage queue's tail pointer structure in local memory |
JPH09330304A (ja) * | 1996-06-05 | 1997-12-22 | Internatl Business Mach Corp <Ibm> | プロセッサ間の通信スケジュールを決定する方法 |
WO1996035997A1 (fr) * | 1996-05-22 | 1996-11-14 | Yalestown Corporation N.V. | Processeur parallele |
US6230252B1 (en) | 1997-11-17 | 2001-05-08 | Silicon Graphics, Inc. | Hybrid hypercube/torus architecture |
US5970232A (en) * | 1997-11-17 | 1999-10-19 | Cray Research, Inc. | Router table lookup mechanism |
US6101181A (en) * | 1997-11-17 | 2000-08-08 | Cray Research Inc. | Virtual channel assignment in large torus systems |
US6216174B1 (en) | 1998-09-29 | 2001-04-10 | Silicon Graphics, Inc. | System and method for fast barrier synchronization |
US6751698B1 (en) | 1999-09-29 | 2004-06-15 | Silicon Graphics, Inc. | Multiprocessor node controller circuit and method |
US6674720B1 (en) | 1999-09-29 | 2004-01-06 | Silicon Graphics, Inc. | Age-based network arbitration system and method |
US6745240B1 (en) | 1999-11-15 | 2004-06-01 | Ncr Corporation | Method and apparatus for configuring massively parallel systems |
US6412002B1 (en) | 1999-11-15 | 2002-06-25 | Ncr Corporation | Method and apparatus for selecting nodes in configuring massively parallel systems |
US6519697B1 (en) | 1999-11-15 | 2003-02-11 | Ncr Corporation | Method and apparatus for coordinating the configuration of massively parallel systems |
US6418526B1 (en) | 1999-11-15 | 2002-07-09 | Ncr Corporation | Method and apparatus for synchronizing nodes in massively parallel systems |
US7415594B2 (en) | 2002-06-26 | 2008-08-19 | Coherent Logix, Incorporated | Processing system with interspersed stall propagating processors and communication elements |
US20040111590A1 (en) * | 2002-07-23 | 2004-06-10 | Klein Robert C. | Self-configuring processing element |
US7577816B2 (en) | 2003-08-18 | 2009-08-18 | Cray Inc. | Remote translation mechanism for a multinode system |
US7673118B2 (en) | 2003-02-12 | 2010-03-02 | Swarztrauber Paul N | System and method for vector-parallel multiprocessor communication |
US7735088B1 (en) | 2003-08-18 | 2010-06-08 | Cray Inc. | Scheduling synchronization of programs running as streams on multiple processors |
US7379424B1 (en) | 2003-08-18 | 2008-05-27 | Cray Inc. | Systems and methods for routing packets in multiprocessor computer systems |
US7421565B1 (en) | 2003-08-18 | 2008-09-02 | Cray Inc. | Method and apparatus for indirectly addressed vector load-add -store across multi-processors |
US8307194B1 (en) | 2003-08-18 | 2012-11-06 | Cray Inc. | Relaxed memory consistency model |
US7366873B1 (en) | 2003-08-18 | 2008-04-29 | Cray, Inc. | Indirectly addressed vector load-operate-store method and apparatus |
US7437521B1 (en) | 2003-08-18 | 2008-10-14 | Cray Inc. | Multistream processing memory-and barrier-synchronization method and apparatus |
US7334110B1 (en) | 2003-08-18 | 2008-02-19 | Cray Inc. | Decoupled scalar/vector computer architecture system and method |
US7743223B2 (en) | 2003-08-18 | 2010-06-22 | Cray Inc. | Decoupling of write address from its associated write data in a store to a shared memory in a multiprocessor system |
US7363393B2 (en) * | 2003-12-30 | 2008-04-22 | Intel Corporation | Chipset feature detection and configuration by an I/O device |
US7478769B1 (en) | 2005-03-09 | 2009-01-20 | Cray Inc. | Method and apparatus for cooling electronic components |
US7962717B2 (en) * | 2007-03-14 | 2011-06-14 | Xmos Limited | Message routing scheme |
JP5540609B2 (ja) * | 2009-09-01 | 2014-07-02 | 富士通株式会社 | 並列計算システムおよび通信制御プログラム |
JP2012048573A (ja) * | 2010-08-27 | 2012-03-08 | Canon Inc | 半導体集積回路、データ処理装置 |
GB2516288B (en) | 2013-07-18 | 2015-04-08 | Imagination Tech Ltd | Image processing system |
EP3079073A1 (de) * | 2015-04-10 | 2016-10-12 | Politechnika Lodzka | Parallele maschine mit betriebszellen, die an knoten eines flächenzentrierten gitters angeordnet sind |
US10437743B1 (en) * | 2016-04-01 | 2019-10-08 | Altera Corporation | Interface circuitry for parallel computing architecture circuits |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3287703A (en) * | 1962-12-04 | 1966-11-22 | Westinghouse Electric Corp | Computer |
ZA742069B (en) * | 1973-04-13 | 1975-03-26 | Int Computers Ltd | Improvements in or relating to array processors |
US3970993A (en) * | 1974-01-02 | 1976-07-20 | Hughes Aircraft Company | Cooperative-word linear array parallel processor |
US4270170A (en) * | 1978-05-03 | 1981-05-26 | International Computers Limited | Array processor |
US4247892A (en) * | 1978-10-12 | 1981-01-27 | Lawrence Patrick N | Arrays of machines such as computers |
US4229790A (en) * | 1978-10-16 | 1980-10-21 | Denelcor, Inc. | Concurrent task and instruction processor and method |
JPS55115155A (en) * | 1979-02-27 | 1980-09-04 | Matsushita Electric Ind Co Ltd | One chip multi-microcomputer |
US4380046A (en) * | 1979-05-21 | 1983-04-12 | Nasa | Massively parallel processor computer |
US4314349A (en) * | 1979-12-31 | 1982-02-02 | Goodyear Aerospace Corporation | Processing element for parallel array processors |
DE3176869D1 (en) * | 1980-12-15 | 1988-10-13 | Texas Instruments Inc | Multiple digital processor system |
US4445171A (en) * | 1981-04-01 | 1984-04-24 | Teradata Corporation | Data processing systems and methods |
US4523273A (en) * | 1982-12-23 | 1985-06-11 | Purdue Research Foundation | Extra stage cube |
-
1983
- 1983-05-31 US US06/499,474 patent/US4814973A/en not_active Expired - Fee Related
-
1984
- 1984-05-24 CA CA000455008A patent/CA1212480A/en not_active Expired
- 1984-05-29 DE DE8484303598T patent/DE3486141T2/de not_active Expired - Fee Related
- 1984-05-29 EP EP19920106010 patent/EP0495537A3/en not_active Withdrawn
- 1984-05-29 EP EP19920106018 patent/EP0501525A3/en not_active Withdrawn
- 1984-05-29 EP EP84303598A patent/EP0132926B1/de not_active Expired - Lifetime
- 1984-05-29 EP EP19920105979 patent/EP0501524A3/en not_active Withdrawn
- 1984-05-31 JP JP59109776A patent/JPH0797362B2/ja not_active Expired - Lifetime
-
1993
- 1993-11-18 JP JP5289349A patent/JP2538185B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0495537A3 (en) | 1993-06-16 |
EP0495537A2 (de) | 1992-07-22 |
JP2538185B2 (ja) | 1996-09-25 |
EP0132926A2 (de) | 1985-02-13 |
CA1212480A (en) | 1986-10-07 |
EP0501525A2 (de) | 1992-09-02 |
EP0501524A3 (en) | 1993-06-16 |
DE3486141D1 (de) | 1993-06-09 |
JPS6084661A (ja) | 1985-05-14 |
JPH06223045A (ja) | 1994-08-12 |
EP0501524A2 (de) | 1992-09-02 |
US4814973A (en) | 1989-03-21 |
EP0132926A3 (en) | 1987-07-01 |
EP0501525A3 (en) | 1993-06-23 |
EP0132926B1 (de) | 1993-05-05 |
JPH0797362B2 (ja) | 1995-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3486141T2 (de) | Parallel-prozessor. | |
US4709327A (en) | Parallel processor/memory circuit | |
DE69128017T2 (de) | Verteiltes rechnersystem | |
US5123109A (en) | Parallel processor including a processor array with plural data transfer arrangements including (1) a global router and (2) a proximate-neighbor transfer system | |
US5008815A (en) | Parallel processor | |
US5212773A (en) | Wormhole communications arrangement for massively parallel processor | |
DE3784050T2 (de) | Ein paralleler datenprozessor. | |
DE3854568T2 (de) | SIMD-Feldrechner. | |
US5535408A (en) | Processor chip for parallel processing system | |
DE69132495T2 (de) | Verteilter Verarbeitungsspeicher | |
DE69709078T2 (de) | Verwaltungssystem zur datenverarbeitung | |
DE69323861T2 (de) | Multiprozessorsystem mit gemeinsamem Speicher | |
DE69419524T2 (de) | Sperrsynchronisierung für verteilte speicher-massivparallelrechner | |
DE3248215C2 (de) | ||
DE3049437C2 (de) | Matrixanordnung einer Vielzahl von Verarbeitungselementen | |
DE3587439T2 (de) | Gemeinsam benutzter Mehrprozessor-Pipeline-Cachespeicher. | |
DE69131272T2 (de) | Paralleles Assoziativprozessor-System | |
DE69132652T2 (de) | Rechnerdatenleitweglenkungssystem | |
US5146608A (en) | Parallel processor array system controlled in response to composition status signal | |
US5151996A (en) | Multi-dimensional message transfer router | |
DE68924313T2 (de) | Mehrprozessoranordnungen mit kreuzweise abgefragten Schreib-in-Cachespeichern. | |
DE3851554T2 (de) | Steuerungsanordnung für gemeinschaftlichen Speicher. | |
DE4134192A1 (de) | Integrierter schaltkreis mit verarbeitung im speicher | |
DE3508640A1 (de) | Computersystem zur implementierung eines ereignisgesteuerten simulationsalgorithmus | |
DE3588186T2 (de) | Halbleiterspeicher mit Serienzugriff |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |