DE3787886T2 - Parallelprozessor mit binärer baumstruktur. - Google Patents
Parallelprozessor mit binärer baumstruktur.Info
- Publication number
- DE3787886T2 DE3787886T2 DE87906327T DE3787886T DE3787886T2 DE 3787886 T2 DE3787886 T2 DE 3787886T2 DE 87906327 T DE87906327 T DE 87906327T DE 3787886 T DE3787886 T DE 3787886T DE 3787886 T2 DE3787886 T2 DE 3787886T2
- Authority
- DE
- Germany
- Prior art keywords
- processor
- data
- input
- register
- binary tree
- 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
- 230000005540 biological transmission Effects 0.000 claims description 12
- 230000006854 communication Effects 0.000 description 31
- 238000004891 communication Methods 0.000 description 31
- 230000006870 function Effects 0.000 description 24
- 230000001360 synchronised effect Effects 0.000 description 23
- 238000012545 processing Methods 0.000 description 16
- 239000000872 buffer Substances 0.000 description 13
- 238000000034 method Methods 0.000 description 12
- 238000012546 transfer Methods 0.000 description 9
- 238000004519 manufacturing process Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 4
- 230000001934 delay Effects 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 4
- 238000007781 pre-processing Methods 0.000 description 4
- 239000000243 solution Substances 0.000 description 4
- 101000687727 Homo sapiens Transcriptional regulator PINT87aa Proteins 0.000 description 3
- 102100024797 Transcriptional regulator PINT87aa Human genes 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000003909 pattern recognition Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 239000013598 vector Substances 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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0721—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
- G06F11/0724—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
-
- 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/17337—Direct connection machines, e.g. completely connected computers, point to point communication networks
-
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90348—Query processing by searching ordered data, e.g. alpha-numerically ordered data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
- G06F11/0754—Error or fault detection not based on redundancy by exceeding limits
- G06F11/0757—Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Multi Processors (AREA)
- Eye Examination Apparatus (AREA)
Description
- Eine zusammenhängende Anmeldung ist "Parallelverarbeitungsverfahren", WO-A-88/01769, die gleichzeitig angemeldet worden ist.
- Diese Erfindung betrifft Datenparallelverarbeitung im allgemeinen und insbesondere eine Parallel-Prozessoranordnung mit einer Binärbaumstruktur, die eine Vielzahl von Prozessoren verwendet, wobei jeder derartige einzelne Prozessor seine eigenen Ein/Ausgabemittel aufweist.
- Während der gesamten Geschichte des Computers bestand eine fortwährende Forderung nach einer Erhöhung des Durchsatzes des Computers. Die meisten dieser Anstrengungen haben sich auf die Erhöhung der Betriebsgeschwindigkeit des Computers konzentriert, so daß es möglich war, mehr Befehle pro Zeiteinheit zu verarbeiten. In seriellen Computern waren diese Anstrengungen in gewisser Hinsicht jedoch selbst erstörend, da die gesamte Verarbeitung von einem einzelnen Teil des Computers ausgeführt worden ist, während die meisten der Resourcen des Computers gleichzeitig untätig waren.
- In einem Versuch, einige dieser Probleme zu lösen, wurden Maschinen für spezielle Zwecke, z. B. Feldprozessoren, entwickelt, die speziell für die Lösung bestimmter Problemklassen entwickelt wurden. Während derartige Computer wirtschaftlich erfolgreich in der Ausführung bestimmter Computeraufgaben sind, lassen sie eine angemessene Leistung in anderen Bereichen vermissen.
- In vergangenen Jahren wurden wesentliche Anstrengungen gemacht, um den Durchsatz zu erhöhen, indem eine Vielzahl von Prozessoren parallel betrieben worden sind. Siehe z. B. Chuan-lin Wu und Tse-yun Feng, Interconnection Networks für Parallel and Distributed Processing (IEEE 1984). Ein solcher Parallelprozessor ist derart, daß eine Vielzahl von Prozessoren in einem Netzwerk mit einer Baumstruktur, üblicherweise einen binären Baum, miteinander verbunden sind. S. A. Browning, "Computations on a Tree of Processors", Proc. VLSI Conf., California Institute of Technology, Pasadena, Jan. 22-24, 1979; A. M. Despain et al., "The Computer as a Component", (1979); A. Mago, "A Cellular Language-directed Computer Architecture", Proc. VLSI Conf., California Institute of Technology, Jan. 22-24, 1979; R.J. Swan et al., "Cm*-A Modular, Multimicroprocessor", Proc. 1977 NCC, S. 645-655 (Juni 1979); J R. Goodman et al., "Hypertree: A Multiprocessor Interconnection Topology", IEEE Trans. on Computers, Vol. C-30, Nr. 12, 5. 923-933 (Dezember 1981), Abdruck in Wu und Feng auf S. 46-56; J. L. Bentley und H. T. Kung, "Two Papers on a Tree-Structured Parallel Computer", Technical Report, Dept. of Computer Science, Carnegie-Mellon University, Sept. 1979.
- In einem Computer mit binärer Baumstruktur sind eine Vielzahl von Prozessoren so verbunden, daß jeder Prozessor, außer denen an der Wurzel und an den Blättern des Baumes, mit einem einzelnen Eltern-Prozessor und mit zwei Kinder-Prozessoren verbunden sind. Die Prozessoren arbeiten üblicherweise synchron an den Daten, die ihnen von dem Eltern-Prozessor zufließen und geben die Ergebnisse an nachfolgende Prozessoren weiter.
- Eine Beschreibung auf hoher Ebene eines derartigen Computers mit binärer Baumstruktur, genannt "DADO", findet sich in einem Bericht von S. Stolfo et al., "DADO: A Parallel Processor for Expert Systems", IEEE Proceedings of the 1984 International Conference on Parallel Processing, Livermore, 21.-24. August 1984, S. 74-82. Die DADO-Maschine ist in Stolfo als ein Parallel-Prozessorfeld-Computer mit binärer Baumstruktur für Expertensystemanwendungen beschrieben. Eine vollständige Ausführung der DADO-Maschine würde einen großen Satz von Prozessorelementen erfordern, die miteinander verbunden sind, um einen vollständigen binären Baum zu bilden. Das Prozessorelement, das in dem Stolfo-Bericht beschrieben worden ist, enthält einen Prozessor, einen örtlichen Speicher und einen spezialisierten Eingabe/Ausgabeschalter. Die Leistungsfähigkeit einer DADO-Maschine wurde in einem anderen Bericht von A. Gupta, "Implementing of OPS5 Production Systems on DADO", IEEE Proceedings of the 1984 International Conference on Parallel Processing, Livermore, 21.-24. August 1984, S. 83-91 analysiert. Die Analyse basiert auf der Leistungsfähigkeit der DADO-Maschine, wenn sogenannte "OPS5"-Produktionssystemprogramme ausgeführt werden. Man hat herausgefunden, daß die baumstrukturierte Topologie der DADO-Architektur besonders wünschenswert hinsichtlich der Ausführungsgeschwindigkeit ist.
- Ein weiteres Binärbaum-strukturiertes System ist in dem US-Patent 4 543 630, veröffentlicht am 24. September 1985, für Neches beschrieben. Dieses System ist ein verteiltes Prozessorsystem, in dem mehrere Prozessoren durch ein bidirektionales Datenübertragungsnetz verbunden sind, das aus einem binären Baum aktiver Logik-Knoten besteht. Das Datenübertragungsnetzwerk wird verwendet, um Datennachrichten von den mehreren Prozessoren zu priorisieren, die gleichzeitig Zugang zu dem Netzwerk anfordern, und die Knoten werden verwendet für den Transfer von Datennachrichten zwischen den mehreren Prozessoren und führen keine allgemeinen Datenverarbeitungsfunktionen aus.
- Wichtige Probleme bei der Speicherung und der Wiederauffindung von Daten können J. L. Bentley, "Decomposable Searching Problems", Information Processing Letters, Vol. 8, Nr. 5, S. 244-250 (Juni 1978) folgend untersucht werden. Bentley definiert ein statistisches Suchproblem als eines der Vorverarbeitung eines Satzes F von N Objekten in einer inneren Datenstruktur D und Beantworten von Nachfragen über den Satz F durch Analysieren der Datenstruktur D. Bentley definiert drei Funktionen von N, die die Komplexität der Suchfunktion charakterisieren: Die Menge des Speicherplatzes S, die von D benötigt wird, um die N Objekte zu speichern, die Vorverarbeitungszeit P, die erforderlich ist, um D in S zu bilden, und die Zeit Q, die benötigt wird, um eine Anfrage zu beantworten, indem D durchsucht wird.
- Eine Erläuterung eines Problems, das durch eine solche Datenbank gelöst werden kann, ist das Mitgliederproblem. In diesem Fall werden N Elemente eines vollständig geordneten Satzes F vorverarbeitet, so daß Anfragen der Form "Befindet sich x in F?" schnell beantwortet werden können. Die herkömmliche Lösung für serielle Computer besteht darin, F in einem sortierten Feld D zu speichern und binär zu durchsuchen. Auf diese Weise kann das Mitgliederproblem auf sequentiellen Computern mit der folgenden Komplexität gelöst werden: S = N; P = O(NlogN); Q = O(logN).
- Bentley definiert ein zerlegbares Suchproblem als ein solches, in dem eine Abfrage, die die Beziehung eines neuen Objektes x zu einem Satz von Objekten F als:
- Abfrage (x,F) = B q (x,f)
- geschrieben werden kann, wobei B die wiederholte Anwendung eines kommutativen, assoziativen Binäroperators b ist, der eine Identität hat, und q ist eine einfache Abfrage, die zwischen dem neuen Objekt x und jedem Element f von F ausgeführt wird. Daher ist das Mitgliederproblem ein zerlegbares Suchproblem, wenn es in der Form geschrieben wird:
- Mitglied (x,F) = ODER gleich (x,f)
- wobei ODER die logische ODER-Funktion ist und gleich die einfache Abfrage ist "Ist x gleich f?", die zwischen dem Objekt x und jedem Element f von F angewendet wird.
- Die Schlüsselidee dieser Art von Problemen ist die Zerlegbarkeit. Um eine Anfrage über F zu beantworten, können wir die Antworten der Abfragen kombinieren, die auf beliebige Untermengen von F angewendet werden.
- Diese Art von Problem ist zur schnellen Verarbeitung in einer Parallelprozessorumgebung gut geeignet. Die Menge F wird in eine Anzahl von beliebigen Untermengen unterteilt, die gleich der Anzahl der verfügbaren Prozessoren ist. Die einfache Abfrage q wird dann parallel an jedem Prozessor zwischen der Unbekannten x, die allen Prozessoren mitgeteilt wird, und dem lokal gespeicherten Mengenelement f angewendet. Die Ergebnisse werden dann parallel durch log&sub2;N Wiederholungen des Operators b verbunden, wobei zuerst b Berechnungen von N/2 aneinander angrenzender Paare von Prozessoren ausgeführt werden, dann b Berechnungen von N/4 Paaren von Ergebnissen der ersten Menge von Berechnungen, usw., bis ein einziges Ergebnis erhalten wird.
- Die Komplexität dieser Operation in der Parallelprozessorumgebung ist wie folgt berechnet. Jedes der N Elemente der Menge F muß unter den Prozessoren so verteilt werden, daß die N Elemente unter all den Prozessoren verteilt sind. Die Anzahl von Zeitschritten, um dies auszuführen, ist gleich der Anzahl von Elementen der Menge. Somit ist P = O(N). Falls jedes Element in einem anderen Prozessor gespeichert ist, so daß S = N die zur Beantwortung einer einfachen Anfrage benötigte Zeit ein einzelner Zeitschritt ist; und die zur Berechnung der endgültigen Antwort benötigte Zeit die Zahl der Zeitschritte ist, die benötigt wird, um durch den binären Baum zurückzuberichten, was O(log&sub2;N) ist. Auf diese Weise ist Q = O(1) + O(log&sub2;N). Verglichen mit der Komplexität des Mitgliederproblems, wenn es auf einem seriellen Computer ausgeführt wird, stellt die Verwendung eines Parallelprozessors erhebliche Einsparungen in der Vorverarbeitungszeit dar, die benötigt wird, um die Datenstruktur aufzubauen, da keine Zeit benötigt wird, um die Datenstruktur in einem geordneten Feld abzuspeichern.
- Bentley und Kung schlugen eine spezielle Baumstruktur vor, wie sie in Fig. 1 veranschaulicht ist, die gestaltet wurde, um Durchsätze in der vorstehend beschriebenen Größenordnung zu erreichen. Wie in Fig. 1 gezeigt, weist die Baumstruktur ein Feld von Prozessoren P1-P10 auf, die in zwei binären Bäumen organisiert sind, die Blatt-Prozessoren P4-P7 sich teilen. Die Daten fließen in einem binären Baum vom Wurzel- Prozessor P1 zu den Blatt-Prozessoren P4-P7. Die Daten werden in den Blatt-Prozessoren verarbeitet und die Ergebnisse fließen in dem zweiten Baum von den Blatt-Prozessoren P4-P7 zu dem Wurzel-Prozessor P10. Offensichtlich können sehr viele Prozessoren näher in dem Feld verwendet werden, falls dies gewünscht wird.
- Um Daten in jeden der Blatt-Prozessoren P4-P7 von Fig. 1 zu laden, werden die Daten für jeden Blatt-Prozessor dem Wurzel-Prozessor P1 in aufeinanderfolgenden Zeitschritten zugeführt und durch das Feld zu jedem Blatt-Prozessor durch dazwischenliegende Prozessoren P2 und P3 übertragen. Auf diese Weise braucht es zumindest einen Zeitschritt pro Blatt-Prozessor, um Daten in die Blatt-Prozessoren zu laden.
- Die Datenstruktur wird abgefragt durch Bereitstellen der Ab frage an dem Wurzel-Prozessor P1 und durch Weiterleiten der Abfrage parallel zu jedem Blatt-Prozessor. Die Ergebnisse der Abfrage werden dann nach außen durch die Prozessoren P8 und P9 zu dem Wurzel-Prozessor P10 berichtet, wobei jeder dieser Prozessoren ein Ergebnis aus zwei Eingaben rechnet, die von weiter oben in dem Baum kommen. Wie ersichtlich ist, führen die Übertragungszeiten der Abfrage und des Ergebnisses durch den binären Baum bedeutsame Verzögerungen in dem Gesamtdurchsatz herbei, die vergleichbar sind denen eines seriellen Computers.
- Während die zur Beantwortung einer einfachen Anfrage in dem Parallelprozessor benötigte Zeit vergleichbar ist mit der in einem seriellen Computer, können Anfragen in dem Parallelprozessor manchmal in einer Pipeline-Weise verarbeitet werden, während dies in einem seriellen Computer nicht möglich ist. So beginnen nach O(log&sub2;N)-Schritten die Ergebnisse aus dem Parallelprozessor mit einer Rate von eins pro Zeiteinheit auszufließen. Falls die Anzahl von Antworten groß genug ist, daß die Zeiten zum Füllen und Entleeren des Kanals als vernachlässigbar betrachtet werden können, kann die Komplexität als S = N, P = O(N) und Q = O(1) berechnet werden.
- Es gibt jedoch zahlreiche Fälle, in denen eine Pipeline-Verarbeitung nicht verwendet werden kann, um die Wirkung der Ausbreitungsverzögerungen in dem binären Baum zu minimieren. Diese umfassen:
- 1. Zerlegbare Suchprobleme, bei denen die Anzahl von "externen" Anfragen klein ist, oder eine Serie von Anfragen intern von Prozessorelementen in dem Baum erzeugt werden. Intern erzeugte Anfragen müßten zu der Wurzel in logN- Schritten unter dem Schema von Bentley und Kung wandern und dann noch einmal in logN-Schritten "ausgesendet" werden. Da jede Anfrage ein Füllen der Leitung erzwingen würde, beträgt Q = O(logN) für alle Anfragen. Künstliche Intelligenz-Produktionssysteme stellen ein Beispiel dieser Arten von Problemen dar.
- 2. Suchprobleme, bei denen eine einzelne Datenstruktur D nicht aufgebaut werden kann. Das heißt, daß für bestimmte Mengen komplexer (oder mehrdimensionaler) Objekte Suchprobleme nicht auf eine einzelne Datenstruktur D angewendet werden können. Unter Betrachtung relationaler Datenbanken, bei denen jedes Element einer Menge eine komplexe Datensatzstruktur ist, die möglicherweise viele Felder oder Schlüssel hat. Um derartige Datensätze zu durchsuchen, würde eine Datenstruktur D für jedes Feld notwendigerweise benötigt werden. Daher ist in diesem Fall P(N) = kN für k Felder in jedem Datensatz.
- 3. Eine Menge F von Zeichen einer Prädikatenlogik der ersten Ordnung, d. h. eine Wissensbasis. Wir wollen eine Serie von Vereinheitlichungen einer Serie von "Zielbuchstaben" gegen jedes Element der Elemente von F berechnen. Da logische Variablen während der Vereinheitlichung an beliebige Begriffe erster Ordnung gebunden sein können, kann eine einzelne Anfrage sämtliche Menge von Elementen in der Wissensbasis verändern, indem neue Werte für veränderbare Begriffe gebunden und ersetzt werden. Aufeinanderfolgende Anfragen werden daher gegen aufeinanderfolgende unterschiedliche Mengen von Buchstaben ausgeführt. (Der einfachere Fall betrifft regelmäßige Veränderungen an einer dynamischen Menge F, was den regelmäßigen Wiederaufbau von D erfordert. Relationale Datenbanken stellen ein geeignetes Beispiel dar.) Daher
- Anfrage(xi,Fi) = B q(xi,fi),
- wobei Fi = Funktion (Fi-1, Abfrage (xi-1, Fi-1)). (Im Fall von Logikprogrammierung ist Funktion gleich Ersetzung nach logischer Vereinheitlichung, während für relationale Datenbanken Funktion Einfügen oder Löschen sein kann.
- 4. Probleme, bei denen eine einzelne Anfrage in einer Serie von Anfragen nicht errechnet werden kann, ohne das Ergebnis der vorherigen Anfrage zu kennen. In dynamischen Programmieransätzen für statistische Mustererkennungsaufgaben kann eine einzelne Übereinstimmung einer Unbekannten gegen die Menge der Referenzmuster nicht berechnet werden, ohne die besten Übereinstimmungen der vorherigen Unbekannten zu kennen. Daher ist für eine Serie von Unbekannten xi, i = 1, . . . ,M,
- Abfrage(xiF) = B q (xi, Abfrage(xi-1,F),f).
- In diesem Fall tritt das gleiche Kanalfüllungsphänomen auf, wie in dem ersten vorstehend beschriebenen Fall.
- 5. Suchprobleme, bei denen wir eine Anzahl von unterschiedlichen Anfragen über die gleiche Unbekannte x über eine Menge oder möglicherweise unterschiedliche Mengen auszuführen wünschen. Daher ist
- Abfragei(x,F) = B qi(x,f) für i=1, . . . ,m.
- Künstliche Intelligenz-Produktionssysteme stellen ein Beispiel dieser Art von Problemen ebenfalls dar. Wir werden auf Probleme dieser Art als beinahe zerlegbare Suchprobleme Bezug nehmen.
- Zusätzliche Unzulänglichkeiten von Parallelprozessoren mit binärer Baumstruktur betreffen die Effizienz und Fehlertoleranz. Die Effizienz einer durch den Baum ausgeführten Berechnung ist oft verringert, da die Menge der benötigten Berechnungszeit von jedem Prozessor für einen bestimmten Zyklus stark schwanken kann, in Abhängigkeit von seinem örtlichen Zustand. Derartige Unterschiede resultieren oft in unnötigem Warten und erhöhter Berechnungszeit. Zusätzlich ist es gut bekannt, daß Binärbaumprozessoren inhärent nicht sehr fehlertolerant sind. Da jeder Fehler die Tendenz hat, sich durch die Binärbaum-Architektur fortzupflanzen, ist es zwingend, daß der/die Fehler nicht nur erkannt sondern auch ausgeglichen werden, um so eine genaue Berechnung trotz des/der Fehler(s) zu erreichen.
- Die vorliegende Erfindung umfaßt, wie beansprucht, eine Vielzahl von Parallelprozessorelementen, die in einer Binärbaumkonfiguration miteinander verbunden sind, wobei jedes Prozessorelement, außer denen an den höchsten und an den niedrigsten Ebenen des Baumes, in Verbindung mit einem einzelnen Eltern-Prozessorelement und mit ersten und zweiten (oder linken oder rechten) Kinder-Prozessorelementen steht. Zum Beispiel sind 1023 Prozessorelemente in dem Baum in zehn Ebenen angeordnet.
- Jedes Prozessorelement weist einen Prozessor, einen Lese/Schreib- oder wahlfreien Zugriffsspeicher, und ein Ein/Ausgabe-(I/O)-Mittel auf. Das Ein/Ausgabemittel stellt eine Verbindung zwischen jedem Prozessorelement und seinen Eltern- und Kinder-Prozessorelementen her, um so eine deutliche Verbesserung in den Ausbreitungsgeschwindigkeiten durch den binären Baum bereitzustellen. Das Ein/Ausgabemittel erlaubt, die derzeit bevorzugte Ausführungsform der Erfindung mit 12 Megahertz zu takten. Die durchschnittliche Prozessorbefehlszykluszeit beträgt 1,8 Mikrosekunden, was in dem Fall eines Baumes von 1023 Prozessoren ein System mit einem ungefähren Berechnungsdurchsatz von annähernd 570 Millionen Befehlen pro Sekunde bewirkt, wovon nur sehr wenig für Kommunikationszwecke benötigt wird.
- Um Ausbreitungsverzögerungen in dem binären Baumcomputer der vorliegenden Erfindung zu minimieren, überträgt das Eingabe/Ausgabemittel Daten und Anfragen von dem Wurzel-Prozessorelement zu allen anderen N Prozessorelementen in einem Prozessorbefehlszyklus, anstatt in O(log&sub2;N) Prozessorbefehlszyklen, wie in den binären Baumfeldern im Stand der Technik. Einfache Anfragen werden parallel durch jedes Prozessorelement ausgeführt, und die Ergebnisse werden zum Zurückgerichten zu dem Wurzel-Prozessorelement bereitgestellt. In einigen wichtigen Fällen können diese Ergebnisse kombiniert werden und dem Wurzel-Prozessorelement in einem einzigen Prozessorbefehlszyklus zurückberichtet werden, anstelle von O(log&sub2;N) Prozessorbefehlszyklen wie bei binären Baumfeldern aus dem Stand der Technik. Diese Betriebsweise wird Aussenden/Abgleichen/Auflösen/Berichten genannt.
- Das Ergebnis ist, daß die für eine Aussende- und Berichtsoperation verstrichene Zeit bei der Vorrichtung nach der vorliegenden Erfindung tatsächlich eine konstante Zeit ist, unabhängig von der Anzahl der Prozessoren in dem Feld. In der vorliegenden Ausführungsform der Erfindung ist diese Zeit annähernd 1,5 Mikrosekunden/Byte. Als ein Ergebnis hiervon kann jedes der vorstehend genannten annähernd zerlegbaren Suchprobleme auf der vorliegenden Erfindung effizient laufen. Intern erzeugte Anfragen, wie im Fall 1, können in einer konstanten Anzahl von Maschinenzyklen berichtet und ausgesendet werden. In ähnlicher Weise ist der Fall 4 in effizienter Weise durch die gleichen konstanten Aussenden/Bericht-Zyklenzeit bearbeitet. Im Fall 2 sind keine Mehrfachdatenstrukturen für das Prozessorfeld der vorliegenden Erfindung erforderlich. Abfragen über unterschiedliche Felder in einem Datensatz können durch Aussenden des Feldortes vor der Ausführung der Anfrage implementiert werden. In Fall 3 werden die aufeinanderfolgenden unterschiedlichen Mengen unmittelbar berechnet und in jedem Prozessorelement unverändert belassen, während nachfolgende Anfragen kontinuierlich ausgesendet werden, jede in einer konstanten Anzahl von Maschinenzyklen.
- Eine weitere Schlüssel-Fähigkeit der vorliegenden Erfindung besteht darin, eine direkte Hardwareunterstützung zum schnellen Berechnen eines Bereiches kommutativer und assoziativer Binäroperatoren b bereitzustellen. In dem vorstehend beschriebenen Mitgliederproblem wird der binäre Operator ODER wiederholt aufalle die Ergebnisse der einfachen Anfrage angewendet: Gleichheit von (x,f). In einer sequentiellen Umgebung kann diese Operation eine lineare Zeit zur Berechnung erfordern. In einer parallelen Umgebung kann sie im Logarithmus der Zeit berechnet werden. Mit der vorliegenden Erfindung wird sie in einer konstanten Zeit berechnet.
- Die Eingabe/Ausgabemittel der vorliegenden Erfindung erlauben auch eine Auflösungs- und Berichtsfunktion mit hoher Geschwindigkeit, die einen am meisten bevorzugten Wert einer Menge von Werten bestimmt, die in den Prozessorelementen gespeichert sind und berichtet diesen Wert. Erläuternd kann dieser Wert ein Minimalwert sein und die Funktion wird min-Auflösung genannt. Min-Auflösung berechnet in der Hardware in einem Befehlszyklus den kleinsten Wert einer Menge von Werten, die jeweils in einem Prozessorelement verteilt sind. Es wird nicht nur der kleinste Wert berichtet, sondern das Prozessorelement mit dem kleinsten Wert wird in einen "Gewinner-Zustand" gesetzt, was eine Anzeige für alle Prozessorelemente über die Verlierer und den einzigen Gewinner in der Berechnung bereitstellt, was nachfolgend in konstanter Zeit berichtet werden kann. (Verbindungen sind in der Hardware wahlfrei verteilt gemäß einer festen Prozessorelementordnungsvorgabe.) Das Mitgliederproblem kann so durch Anwenden von min-Auflösung auf Nullen und Einsen werden (verteilt in dem Baum nach dem Anwenden des komplementären Gleichheitsoperators), um ODER zu berechnen. In ähnlicher Weise können Daten in dem Prozessorfeld in sortierter Reihenfolge in O(N)-Zeit gelesen werden, indem die min-aufgelösten Gewinner nacheinander aufgezählt werden.
- Zum Beispiel kann in dem Fall des Mitgliederproblems die min-Auflösungsfunktion wie folgt implementiert werden:
- 1. Pufferarbeiten von N Objekten der Menge F durch Verteilen jedes Elementes nacheinander an ein Prozessorelement des Feldes. Setze S=N für die gesamte Maschine und P=N.
- 2. Aussenden des unbekannten Objektes x an alle Prozessorelemente in konstanter Zeit.
- 3. Anwenden der Abfragegleichheit von (x,f)? parallel an jedes Prozessorelement. Parallel setzt jedes Prozessorelement den min-Auflösungswert auf 0, falls x=f, ansonsten setzt es den Wert auf 1.
- 4. Min-Auflösung in einem Befehlszyklus. Die Gesamtberechnungszeit ist Q=O(1), die Summe der Schritte 2, 3 und 4. In Fällen, in denen die einfache Abfrage q komplexer als Gleichheit ist, wächst die Laufzeit proportional zu der langsamsten der gesamten Menge gleichzeitiger Ausführungen von q.
- Falls vier Datenelemente in dem Prozessorfeld der vorliegenden Erfindung zu speichern sind, wird es somit vier Befehlszyklen benötigen, um diese Datenelemente in vier Prozessorelementen zu speichern. An jedem beliebigen Zeitpunkt danach kann eine Anfrage ausgeführt werden, indem die Anfrage dem Wurzel-Prozessorelement dargeboten wird. Innerhalb eines Befehlszyklus wird die Anfrage an jedes Prozessorelement weitergeleitet, gegen die in jedem Prozessorelement gespeicherte Information überprüft und eine Antwort zurückberichtet.
- Andere Beispiele von Problemen, die zur Lösung auf der Vorrichtung nach der vorliegenden Erfindung gut geeignet sind, sind künstliche Intelligenz-Produktionssysteme. Beispiele derartiger Produktionssysteme sind in Salvatore J. Stolfo, "Five Parallel Algorithms for Production System Execution on the DADO Machine", Proc. of National Conference on Artificial Intelligence, AAAI, Univerisity of Texas at Austin, Seiten 300-307 (August 6-10, 1984) beschrieben.
- Logikprogrammierung, relationale Datenbankoperationen und statistische Mustererkennung können in ähnlicher Weise definiert werden, wie annähernd zerlegbare Suchprobleme. Jedes dieser Probleme beruht auf dem gleichen gemeinsamen Programmparadigma des Prozessorfeldes der vorliegenden Erfindung:
- - Verteilen einer ursprünglichen Datenmenge.
- - Aussenden von Daten in konstanter Zeit.
- - örtliche Ausführung einer einfachen Abfrage gegen ein vorgespeichertes Element der Referenzmenge (Vereinheitlichung von logischen Zeichen erster Ordnung, relationale Auswahl von Tupeln, dynamische Zeitfaltungsübereinstimmung eines Musters einer Sprachsilbe).
- - Auflösung zum Finden der besten Antwort in konstanter Zeit.
- - Bericht der endgültigen Antwort.
- Aus dem Vorstehenden können einige Schlüsselprinzipien der vorliegenden Erfindung erkannt werden:
- - Die Form der durch die Vorrichtung der vorliegenden Erfindung manipulierten Daten kann von beliebiger Art oder Größe sein und kann daher den gleichen weiten Bereich von Daten verarbeiten, die jedes herkömmliche Computersystem, das derzeit existiert, bearbeiten kann.
- - Die einfache Abfrage q kann jede Berechnung sein, die auf jedem heute existierenden Computer programmierbar ist. Daher ist die Vorrichtung der vorliegenden Erfindung nicht auf eine bestimmte Klasse von Anwendungen begrenzt.
- - Die erfindungsgemäße Vorrichtung kann beliebige Speicher- und Auslesefunktionen ausführen, die als ein annähernd zerlegbares Suchproblem definierbar sind, die für jedes Anwendungsgebiet definierbar sind, inklusive KI, Signalverarbeitung, Datenbankverarbeitung, Textverarbeitung; numerische Verarbeitung etc.
- Zum Beispiel kann die einfache Abfrage q komplexer sein als eine einfache Gleichheitsprüfung. Im Gebiet der Spracherkennung können wir wünschen, eine einfache Abfrage q zu definieren, die das Maß der Übereinstimmung zwischen dem Unbekannten und jedem der Referenzmengenelemente (Menge F in unserem Beispiel) berechnet in diesem Fall kann q eine Funktion sein, die 0 berechnet, falls die Unbekannte genau mit dem Mengenelement übereinstimmt, unendlich (die größte in dem Computerspeicher darstellbare Zahl), falls überhaupt keine Übereinstimmungen bestehen, und eine ganze Zahl, die den metrischen Abstand wiedergibt, d. h. ungefähr wie nahe das Unbekannte mit dem Mengenelement übereinstimmt. Eine Vielzahl von programmierbaren Techniken kann verwendet werden, um diese Funktion zu definieren. Die vorliegende Erfindung unterstützt diese alle, da jedes Prozessorelement ein programmierbarer Computer ist.
- Auf diese Weise kann im Fall einer Computerübereinstimmung von Namen eine geeignete definierte einfache Abfrage q die teilweise Übereinstimmung von "Smith" mit "Smythe" als dichter (zu 0) bewerten als die Bewertung der Übereinstimmung von "Jones", "Mason" und "Hamershold". Falls in diesem Zusammenhang q als Abstand bezeichnet wird, dann definieren wir
- Abfrage(x,F) = MIN-Abstand (x,f),
- um zu bestimmen, ob "Smith" ein Element unserer Menge ist, oder ob "Smith" einem Element von F nahe kommt. Der Schlüsselpunkt besteht darin, daß die vorstehend dargestellten Prinzipien zur schnellen Ausführung annähernd zerlegbarer Suchprobleme allgemein sind und daher auf einen allgemeinen Bereich von Problemfeldern anwendbar sind - in der Tat auf alle Problemfelder. In diesem kurzen Beispiel kann die Abstandsfunktion eine teilweise Übereinstimmung von Zeichenketten, Manhattan-Abständen oder einem Satz von Punkten in der Ebene, teilweise Übereinstimmung von AI-symbolischen Ausdrücken (definierbar z. B. in LISP-Ausdrücken oder logischen Ausdrücken erster Ordnung oder PROLOG-Ausdrücken) enthalten, oder eine Menge von Vektoren, die gemessene Parameter eines Signals wiedergeben, wie z. B. LPC-Koeffizienten eines Sprachsignals oder einer akustischen Wellenform. Die vorliegende Erfindung unterstützt alle diese Datentypen und andere, die definiert, dargestellt und in jedem beliebigen Computersystem gespeichert werden können.
- Dementsprechend ist es ein grundsätzliches Ziel der vorliegenden Erfindung, neue und verbesserte Parallelprozessorsysteme bereitzustellen.
- Ein weiteres Ziel der Erfindung besteht darin, eine Vielzahl von Prozessorelementen bereitzustellen, die in einer binären Baumkonfiguration angeordnet sind, wobei jedes Prozessorelement mit seinem eigenen Eingabe/Ausgabemittel verbunden ist, das in der Lage ist, sowohl mit diesem Prozessorelement als auch mit anderen Prozessorelementen zu kommunizieren.
- Ein weiteres Ziel der Erfindung besteht darin, einen Parallelprozessor bereitzustellen, der in einer Binärbaumkonfiguration angeordnet ist, die eine verbesserte Effizienz und Fehlertoleranzfähigkeit hat.
- Noch ein weiteres Ziel der Erfindung besteht darin, einen Parallelprozessor bereitzustellen, der im wesentlichen einen korrekten Betrieb einer Binärbaummaschine nach zwei aufeinanderfolgenden Fehlern, sowie eine 15%ige Wahrscheinlichkeit eines richtigen Betriebes nach einem dritten aufeinanderfolgenden Fehler sicherstellt.
- Ein weiteres Ziel der Erfindung besteht darin, ein System bereitzustellen, das die Effizienz von Parallelprozessormaschinen erhöht, indem die Berechnungszeitabweichung jedes Prozessors von der durchschnittlichen Berechnungszeit verringert ist.
- Diese und andere Ziele, Eigenschaften und Vorteile der Erfindung werden deutlicher erkennbar unter Bezugnahme auf die nachfolgende Beschreibung der Erfindung, in der:
- Fig. 1 eine schematische Erläuterung einer Binärbaumstruktur nach dem Stand der Technik ist;
- Fig. 2 die allgemeine Konfiguration einer bevorzugten Ausführungsform der Erfindung erläutert, die einen Binärbaum von 1023 Prozessorelementen aufweist;
- Fig. 3 in Blockdiagrammform ein einzelnes Prozessorelement zeigt, das einen 8751-Prozessor, ein Eingabe/Ausgabemittel und einen Schreib/Lese-Speicher aufweist;
- Fig. 4A und 4B stellen eine detaillierte Schemazeichnung des einzelnen Prozessorelementes von Fig. 3 dar;
- Fig. 5 ist ein Funktions-Flußdiagramm des zugrundliegenden Modells für einen einzelnen Berechnungszyklus;
- Fig. 6A und 6B sind ein schematisches Diagramm des Eingabe/- Ausgabemittels mit Aussende-, Berichts-, Auflösungs-, Fehlersuch-, Paritätsprüfungs-, Befehlsdecodierungs-, Speicherunterstützungs- und Adreßspeicherblöcken;
- Fig. 7 ist eine allgemeine Schemazeichnung des Aussendeblocks der Fig. 6A und 6B;
- Fig. 8 ist eine detaillierte Schemazeichnung des Aussendeblocks von Fig. 7;
- Fig. 9 ist eine allgemeine Schemazeichnung des Auflösungsabschnittes des Auflösungs-Berichtsblocks der Fig. 6A und 6B;
- Fig. 10A und 10B sind eine detaillierte Schemazeichnung des Auflösungs-Berichtsblocks der Fig. 6A und 6B;
- Fig. 11 bis 16 sind detaillierte Schemazeichnungen des Blocks der Fig. 10A und 10B;
- Fig. 17A und 17B sind eine detaillierte Schemazeichnung des Befehlsdecoderblocks der Fig. 6A und 6B;
- Fig. 18 ist eine allgemeine Schemazeichnung eines Fehlerkontrollsystems; und
- Fig. 19 ist ein Flußdiagramm des Softwarekerns.
- Wie in Fig. 2 gezeigt, weist der Parallelprozessor mit Baumstruktur der vorliegenden Erfindung eine Vielzahl von Prozessorelementen auf, die als PE1 bis PE1023 bezeichnet sind, die in der Form eines binären Baums angeordnet sind. Jedes PE, außer des Wurzel-PE1, der kein Eltern-Prozessorelement hat, und die Blatt-Prozessorelemente PE512 bis PE1023, die keine Kinder-Prozessorelemente haben, kommuniziert mit einem Eltern-Prozessorelement sowie mit zwei Kinder-Prozessorelementen. Zum Beispiel kommuniziert PE2 mit seinem Eltern-PE1 über die Kommunikationsleitung C2 mit einem ersten (oder linken) Kind PE4 über die Kommunikationsleitung C4 und mit einem zweiten (oder rechten) Kind PE5 über die Kommunikationsleitung C5. In ähnlicher Weise kommuniziert PE4 mit seinem Eltern-PE2 über die Kommunikationsleitung C4 sowie mit seinen linken und rechten Kindern PE8 und PE9 (nicht gezeigt) über Kommunikationsleitungen C8 und C9.
- Das Wurzel-Prozessorelement PE1 kommuniziert mit einem Gast-Coprozessor 3 über eine Leiterplatten-zu-Leiterplatten Verbindungsschaltung 7 über die Leitung 5. In dem bevorzugten Ausführungsbeispiel dient eine Digital Equipment Corporation VAX 11/750 (Wz) als der Gast-Coprozessor und ist das einzige Gerät, das einem Benutzer der vorliegenden Erfindung sichtbar wird. Das vorliegende bevorzugte Ausführungsbei-spiel kann so als ein transparenter Back-End- Prozessor für die VAX 11/750 betrachtet werden.
- Unter Bezugnahme auf Fig. 3, 4A und 4B ist ein einzelnes Prozessorelement der bevorzugten Ausführungsform in Blockdiagrammform gezeigt. Dieses Prozessorelement weist einen Intel 8751 Mikrocomputerchip auf, der als Prozessor 30 wirkt, einen Schreib/Lese- oder wahlfreien Zugriffsspeicher (RAM) 40, der zwei 8kx8 statische wahlfreie Zugriffsspeicherchips 42, 44 und ein 16kx1 Paritäts-RAM 46, sowie einen Eingabe/Ausgabe-Baustein 50 auf.
- Prozessor 30 ist ein 8-Bit-Mikrocomputer, in dem ein 4K- löschbar programmierbarer nur-Lese-Speicher (EPROM) und ein 256-Byte RAM auf einem einzigen Siliciumchip vorgesehen sind. Der EPROM kann vorteilhafterweise für nachfolgende Fehlersuche, Veränderungen o. dgl. verwendet werden. Der Prozessor 30 ist mit vier Parallelen, 8-Bit-Anschlüssen versehen, die die Verbindung zwischen Prozessoren vereinfachen und das Eingabe/Ausgabeverfahren erheblich unterstützen. Die RAM 42, 44 dienen als der lokale Speicher für den Prozessor 30.
- Das Eingabe/Ausgabemittel 50 dient in erster Linie zur Eingabe und Ausgabe von Befehlen und Daten zu und von dem Prozessorelement. Das Eingabe/Ausgabemittel 50 enthält Speicherunterstützungsschaltkreise und berechnet auch die Parität für den Speicher und die Kommunikation, was die Fehlererkennung vereinfacht. Das Eingabe/Ausgabemittel 50 ist vorzugsweise ein IC, der in Gatterzellentechnologie implementiert ist, um zu ermöglichen, daß der Prozessor mit 12 Megahertz getaktet wird, der Maximalgeschwindigkeit des Prozessors 30 und der RAM 42, 44, 46. Die durchschnittliche Maschinenbefehlszykluszeit beträgt 1,8 Mikrosekunden, wodurch ein System entsteht, das einen Roh-Berechnungsdurchsatz von ungefähr 570 Millionen Befehlen pro Sekunden hat.
- Wie nachstehend erläutert, wird sehr wenig dieser Berechnungsmöglichkeiten für Kommunikationsaufgaben benötigt.
- Das Eingabe/Ausgabemittel 50 wird als ein Speicheradressenbaustein angesprochen, d. h. der Prozessor 30 greift auf das Eingabe/Ausgabemittel zu, indem spezielle Adressen in seinem Adreßraum gelesen und beschrieben werden. Das Eingabe/Ausgabemittel 50 enthält sechs beschreibbare Stellen und acht lesbare Stellen. Die vier acht Bit Parallelanschlüsse des Prozessors 30 sind als Anschlüsse P0 bis P3 bezeichnet. P0 ist mit einem Adreß-/Datenbus 51 verbunden, der den Prozessor 30 mit dem Anschluß P1 seiner linken und rechten Kinder-Prozessoren verbindet, der als Datenbus zwischen dem Prozessor 30 und dem Speicher 40 dient, und auch als der Adressenbus für die niederwertigen acht Bit der Adresse dient, die in einem Zwischenspeicher in dem Eingabe/Ausgabemittel 50 abgelegt sind. Der Anschluß P1 dient als die Verbindung zwischen dem Prozessor 30 und seinen Eltern. Die Verbindung zwischen dem Anschluß P0 des Prozessors 30 und dem Anschluß P1 seiner Kinder dient als der Datenpfad zwischen den Prozessoren und kann eine direkte Prozessorchip-zu-Prozessorchip-Verbindung sein oder kann eine von der Leiterplatte gelöste Verbindung durch einen Bus-Sende/Empfänger sein.
- Fünf Bit des acht-Bit Anschlusses P2, die an den Anschlüssen A8 bis A12 anstehen, stellen die höherwertigen 5 Bit der Adresse für den Speicher 40 dar. Ein Bit des Anschlusses P2, das an dem Anschluß A13 des Prozessors ansteht, wird als die Richtungssteuerung für den Bus-Sende/Empfänger verwendet, während ein weiteres Bit, das an einem Anschluß A14 des Prozessors ansteht, als eine Eingangs-Protokolleitung dient.
- Sechs Bit der Leitungen vom Anschluß P3 werden als Protokolleitungen verwendet, wenn auf benachbarte Prozessorelemente zugegriffen wird, und zwei Bit werden verwendet als die Lese- und Schreibhaltesignale für den Speicher. Unter Bezugnahme auf die Fig. 4A und 4B werden die Anschlüsse LACK, LINT des Anschlusses P3 am Prozessor 30 mit den Anschlüssen PACK, PINT seines linken Kindes verbunden, während die Anschlüsse RACK, RINT des Anschlusses P3 am Prozessor 30 mit den Anschlüssen PACK, PINT seines linken Kindes verbunden sind. In ähnlicher Weise sind die Anschlüsse PACK, PINT von Anschluß P3 am Prozessor 30 mit entweder LACK, LINT, (falls es das linke Kind ist), oder RACK, RINT, (falls es das rechte Kind ist), seines Eltern-Prozessors verbunden. Die Signale an diesen sechs Anschlüssen stellen die Kommunikationskontrolle zu/von den Kinder/Eltern-Prozessoren dar. Ein asynchrones vier Zyklen-Kommunikationsprotokoll wird verwendet, um Daten zu verschieben, wenn Übertragungen auf benachbarte Prozessoren (Baumnachbarkommunikation) begrenzt ist.
- Unter erneuter Bezugnahme auf die Fig. 3, 4A und 4B weisen die Leitungen 52, 53 und 54 die Datenleitungen auf, die vom Prozessor 30 des PE zu seinen Eltern-, linkem Kind- und rechtem Kind-Prozessor geführt sind. Wie erkennbar ist, ist die Datenleitung 52 eines PE entweder mit der Datenleitung 53 oder mit der Datenleitung 54 seines Eltern-Prozessors auf der nächst höheren Ebene verbunden. In ähnlicher Weise umfassen die Leitungen 56, 57, 58 Eingabe/Ausgabeleitungen, die von einem Eingabe/Ausgabemittel 50 des PE zu seinen Eltern-, linkem Kind- und rechtem Kind-Prozessor jeweils geführt sind; und die Eingabe/Ausgabeleitung 56 eines PE ist entweder zu der Eingabe/Ausgabeleitung 57 oder zu der Eingabe/Ausgabeleitung 58 seines Elternprozessors auf der nächst höheren Ebene geführt.
- Unter Bezugnahme auf Fig. 5 ist ein Funktions-Flußdiagramm des zugrundeliegenden Modells für einen einzelnen Berechnungszyklus dargestellt, wie er durch eine Vielzahl von PEen gemäß der vorliegenden Erfindung ausgeführt wird. Im wesentlichen umfaßt ein einzelner Berechnungszyklus eine Aussendephase 60, eine Berechnungsphase 65, eine Auflösungsphase 70 und eine Berichtsphase 75. Die Aussendephase 60 umfaßt die Schritte Aussenden von Daten und/oder Befehlen zu einer Untermenge von PEen in dem binären Baum. Diesem Aussenden folgend, wird eine Berechnung durch eine Zweituntermenge von PEen während der Berechnungsphase 65 ausgeführt. Dieser Berechnung folgend, bestimmt die Auflösungsphase 70 die Identität einer dritten Untermenge von PEen, die das Ergebnis der Berechnung während der Berichtsphase 75 berichten. Zur Darstellung werden die Daten und die Befehle durch den Gast-Coprozessor ausgesendet.
- Für dieses Modell sind vier softwareabhängige Betriebsarten unterscheidbar, in Abhängigkeit von der Untermenge von PEen, die während jeder Phase ausgewählt sind, und der Art von Daten und/oder Befehlen, die ausgesendet werden. Diese vier Betriebsarten sind: SIMD für Einzelbefehlsstrom - Mehrfachdatenstrom, MIMD für Mehrfachbefehlsstrom - Mehrfachdatenstrom, MSIMD für Mehrfach-Einzelbefehlsstrom - Mehrfachdatenstrom und SPMD für Einfachprogramm-Mehrfachdaten.
- Genauer gesagt wird in der SIMD-Betriebsart jedes PE zuerst mit seinen eigenen Daten geladen und dann wird ein einziger Strom von Befehlen an alle PEen ausgesendet. Abhängig von seinem örtlichen Zustand, der das Ergebnis der ursprünglich ausgesendeten Daten und der nachfolgenden Befehle ist, bestimmt jedes SIMD-PE, welche Befehle des Stromes auszuführen sind.
- In der MIMD-Betriebsart wird an jedes PE zuerst sein örtliches Programm und die Daten ausgesendet und dann wird jedes PE logisch von seinen Nachbar-PEen getrennt und arbeitet unabhängig. Eine logische Wieder-Verbindung mit dem Rest des binären Baums erfolgt, wenn das PE seine Berechnungen beendet hat.
- In der MSIMD-Betriebsart wird der binäre Baum von PEen in eine Anzahl von Unterbäumen unterteilt, die die volle Funktionalität des ganzen Baumes erhalten. Die Wurzel jedes derartigen Unterbaumes, der in der MIMD-Betriebsart arbeitet, ist funktional identisch mit der Wurzel des gesamten Baumes, außer den Eingabe/Ausgabemöglichkeiten mit einem Gastrechner. Das in der MSIMD-Betriebsart arbeitende System kann daher als eine Menge von binären Bäumen betrachtet werden.
- In der SPMD-Betriebsart wird jedem PE zuerst eine Kopie des gemeinsamen Programms zugesendet und dann werden ihm seine lokalen Daten zugesendet. Im Gegensatz zu der MIMD-Betriebsart trennt sich das PE an diesem Punkt nicht selbst logisch, sondern fährt fort, den Datenstrom zu empfangen, der von oben ausgesendet wird. Die Rechnung jedes PE wird dann durch drei Komponenten bestimmt, nämlich dem gemeinsamen Programm, das jedes PE ausführt, den lokalen Daten, mit denen das PE ursprünglich geladen wurde, und dem kontinuierlichen Datenstrom, der von oben ausgesendet wird.
- Das Eingabe/Ausgabemittel muß wissen, ob sein PE und die PEen seiner Kinder in der MIMD- oder in der SIMD-Betriebsart sind, da ein PE, das sich im MIMD befindet, logisch von seinen Eltern unterbrochen ist und daher zwischen ihnen keine Eingabe/Ausgabekommunikation auftreten kann. Drei Bit der Information, die dem MIMD/SIMD-Zustand eines PE, seinem linken und seinem rechten Kind entspricht, werden durch das Eingabe/Ausgabemittel verwendet.
- Um diese Bits aufrechtzuerhalten, wird ein beschreibbares Bit in jedem Eingabe/Ausgabemittel verwendet, um sich selbst auf MIMD oder SIMD zu setzen. Ein weiteres Paar von Bit MIMD_RC und MIMD_LC werden verwendet, um anzuzeigen, falls die Kinder dieses PE in der MIMD- oder SIMD-Betriebsart sind. Die Paare der Bits MIMD_RC und MIMD_LC sind auf zwei Weisen beschreibbar. Eine ist direkt durch den Eltern-Prozessor. Der zweite Weg ist durch Weiterleiten eines MIMD/SIMD-Zustandsbit von dem Eingabe/Ausgabemittel eines Kindes zu seinen Eltern. Dieses Bit ist direkt durch die Eltern lesbar oder kann gelesen und gleichzeitig in die MIMD_RC- oder MIMD_LC-Bit der Eltern zwischengespeichert werden.
- Wie oben angedeutet, sind der Prozessor 30 und der RAM 40 jedes PE im Handel erhältliche integrierte Schaltkreise. Das Eingabe/Ausgabemittel ist es nicht. Das Eingabe/Ausgabemittel eines PE führt im wesentlichen fünf Operationen aus, nämlich die Eingabe/Ausgabefunktionen Aussenden, Auflösen und Berichten sowie Funktionen der Speicherunterstützung und Fehlersuche. Diese Funktionen werden durch die Vorrichtung der Fig. 6A und 6B erzielt, die einen Aussende-Block 100, einen Fehlersuche-Block 200, einen Befehldecoder-Block 300, einen Speicherunterstützungs-Block 400, einen Paritäts-Prüf- Block 500, einen Berichts-Auflösungs-Block 600 und einen Adreß-Zwischenspeicher-Block 700 aufweist.
- Der Befehlsdecoder 300 steuert das Eingabe/Ausgabemittel durch Kontrollieren der Adressierung des Aussende-Blocks 100, des Fehlersuche-Blocks 200, des Paritäts-Überprüfungs- Blocks 500 und des Auflöse-Berichts-Blocks 600, sowie des MIMD-Zustands seiner Kinder und seiner selbst, überwacht die Übermittlung von Unterbrechungen zu dem Prozessor und zeichnet die Adresse in dem Adreß-Zwischenspeicher 700 zum Zeitpunkt des Auftretens einer Unterbrechung auf.
- Der Speicherunterstützungs-Block 400 handhabt alle externen Speicheroperationen. Dieser Block bestimmt, welches 8Kx8 RAM auszuwählen ist, gibt das 16Kx1-Paritäts-RAM frei, und steuert die Auffrischung der zwei 8Kx8 RAMs.
- Jeder Sendeblock 100 handhabt Aussendungen von Daten und Befehlen systemweit. Er ist verantwortlich für Empfangen eines Byte von einem Eltern-PE und Übermitteln eines Byte an Kinder-PEen innerhalb von drei 8751-Prozessor-Befehlszyklen und dann so zu re-synchronisieren, daß ein weiteres Byte von dem MIMD-Wurzelprozessor gesendet werden kann.
- Der Fehlersuch-Block 200 handhabt Unterbrechungen von sich selbst, seinen Eltern und seinen Kindern systemweit und erzeugt ganz allgemein das Unterbrechungssignal in dem gesamten Baum.
- Der Paritäts-Prüf-Block 500 überprüft die Byte-Übertragung zwischen der Vielzahl von PEen sowie Speicheroperationen auf Paritätsfehler.
- Der Auflöse-Berichts-Block 600 ist verantwortlich für das Bestimmen, welches einzelne PE freizugeben ist, um sein Ergebnis durch Übermitteln an den Gast-Coprozessor zu berichten.
- Der Adreß-Zwischenspeicher 700 versorgt das Eingabe/Ausgabemittel mit Adressen und/oder Daten. Der Adressen-Zwischenspeicher 700 wird durch die Adressen-Zwischenspeicherfreigabe auf der Leitung ALE von dem Prozessor 30 gesteuert. Wenn ALE hoch ist, wird die Adresse auf der Leitung
- AD(7 . . 0), oder die Daten auf der Leitung IO_BUS7 . . 0 werden durch den Zwischenspeicher auf die Adreßleitung AD_ Zwischenspeicher 7 . . 0 zu dem Befehlsdecoder 300 gesendet.
- Bevor die einzelnen Bestandteile des Eingabe/Ausgabemittels 50 diskutiert werden, ist es hilfreich, die Registerorganisation dieser Baugruppe darzustellen. Wie vorstehend beschrieben, ist das Eingabe/Ausgabemittel an den externen RAM-Adreßraum des Prozessors 30 speicheradressiert, im Beispiel an die ersten 256 Byte eines Intel 8751 Mikroprozessors. In der vorliegenden Ausführungsform der Erfindung sind alle 14 Adressen definiert, bestehend aus Daten-Steuer- und Eingabe/Ausgabeprozessor-Zustandsregister, die in drei Funktionsblöcke organisiert sind: Steuer/Zustandsblock, Sendeblock und Auflöse/Berichtsblock. Die Beschreibung dieser Register ist nachstehend in Tabelle I gegeben: Tabelle I Hex-Adresse Register Bit Bit-Bezeichn. Beschreibung mimd Zustand d. eigenen PEmimd Zustand des rechten Kind-PE mimd Zustand des linken Kind-PE Auslösen des Gesamt-Interrupt Eigener mimd-Zustand Verhindere Paritäts-Interrupts Verhindere Gesamt-Interrupts Freigabe des Kern-Modus Ein Paritäts-Fehler ist aufgetreten Externe RAM-Auffrischung ist überfällig Ein Gesamt-Interrupt ist aufgetreten Fehlerhafte Paritäts-Quelle war externes RAM Dynamischer Linkes-Kind-mimd-Zustand Dynamischer Rechtes-Kind-mimd-Zustand Tabelle I (Forts.) Hex-Adresse Register Bit Bit-Bezeichn. Beschreibung Paritäts-Kontroll-Adreß-Register Reset-Register Ein Paritätsfehler ist aufgetreten Aussende-Logik-fertig Aussende-Datenregister-voll Auflösungs-/Berichtslogik fertig Auflösungs-/Berichts-Datenregister voll Gesamt-Interrupt ist aufgetreten Aussende-Eingangsregister Aussende-Ausgangsregister Aussendung-Fertig-Zustand Aussendung Ausgangslogik ist fertig (mimd-Modus) Logisches UND der Unterkammer Fertig-Leitungen Aussende-Daten sind verfügbar (simd-Modus) Baumkommunikationsfreigabe Dynamische Parität von Auflösungen/Berichts-Eingangs-Register Tabelle I (Forts.) Hex-Adresse Register Bit Bit-Bezeichn. Beschreibung Auflösungs-Ausgangs-Register Berichts-Ausgangs-Register Rechtes-Kind-FiFo-Freigabe Linkes-Kind-FiFo-Freigabe Auflösungs-/Berichts-"Gang"-Leitung zu Eltern Taktfreigabe Auflösungs-/Berichts-Senderfreigabe Auflösungs-/Berichtslogik ist fertig für nächstes Byte Auflösungs-/Berichtsdaten sind verfügbar Paritäts-Bit Rechtes Kind-Ein-Bit-Vergleichflag Linkes Kind-Ein-Bit-Vergleichsfertig Örtliches Ein-Bit-Vergleichsflag Töte Rechtes-Kind-Flag Töte Linkes-Kind-Flag Töte eigenes Flag Töte Eltern-Flag Auflösungs-/Berichts-Auusgangs-Paritätsbit
- Unbenutzte Register in jedem dieser Blocks und andere Register zwischen den Hex-Adressen 30 bis 18FFFF sind für zukünftige Erweiterung des Eingabe/Ausgabemittel reserviert, und ein Zugriff auf diese Register sowie beliebige andere Register über der Obergrenze des externen RAM wird unbestimmte Ergebnisse bringen. Die Funktion dieser Register ist wie folgt.
- Die Register SYNC, CTRL, STAT, PCAR, RESET und STATE in dem Steuer/Zustandsblock werden verwendet, um den Prozessor 30 mit Informationen über den derzeitigen Zustand des Eingabe/Ausgabemitteis und seiner Nachbarn zu versorgen, sowie es dem Prozessor zu ermöglichen, das Umfeld seines Eingabe/Ausgabemittels zu speichern und wieder auszulesen (z. B. während einer Unterbrechungsbehandlung) und explizite (obwohl begrenzte) Kontrolle über die globalen Kommunikationswege bereitzustellen.
- Das SYNC-Register ermöglicht es dem Prozessor 30, die MIMD-Zustandsflaggen zu spezifizieren, die durch das Eingabe/Ausgabemittel verwendet werden, um die Handhabung von Aussende- und Auflöse/Berichtsoperationen zu steuern. Im normalen Betrieb bewirkt ein Beschreiben des SYNC-Registers, daß die Signale, die momentan auf den dynamischen MIMD-Zustandsleitungen des Eingabe/Ausgabemittels vorhanden sind, in den internen SYNC-Zwischenspeichern gespeichert werden, wobei diese Werte das Verhalten der Aussende- und Auflöse/Berichtslogik steuern. In der Kernel-Betriebsart werden die internen SYNC-Zwischenspeicher von dem Quellenoperand anstelle der externen MIMD-Zustandsleitungen geladen. Dies sichert einen Weg für den Prozessor 30, um explizit das Verhalten der Aussende- und Auflösungs-Berichtsoperationen bezüglich benachbarter Eingabe/Ausgabemittel zu steuern, unabhängig von deren tatsächlichem Zustand. Ein Zurücksetzen des Eingabe/Ausgabemittels löscht das SYNC-Register, wodurch eine SIMD-Betriebsweise für das örtliche Eingabe/Ausgabemittel sowie seine Nachfolger angezeigt wird. Durch Lesen des SYNC-Registers wird der Inhalt der internen SYNC-Zwischenspeicher des Eingabe/Ausgabemittels erhalten.
- Das CTRL(Control)-Register kann verwendet werden, um die SIMD- und MIMD-Betriebsweise für das lokale Eingabe/Ausgabemittel zu spezifizieren, um zu spezifizieren, welche Ereignisse das Eingabe/Ausgabemittel den Prozessor 30 unterbrechen können, die Kernel-Betriebsart freigeben oder sperren oder globale Unterbrechungen auslösen.
- Das CTRL-Register enthält Bits, die dem MIMD-Selbst-Zwischenspeicher des Eingabe/Ausgabemittels entsprechen, den Kernel-Betriebsart-Freigabezwischenspeicher, Maskierbits für die drei Quellen von Eingabe/Ausgabemittel-Unterbrechungen an den Prozessor 30 und eine globale Unterbrechungsauslösung. Mit Ausnahme der globalen Unterbrechungsauslösung ist jedes dieser Bits ein einfacher Zwischenspeicher, und kann sowohl in der Benutzerbetriebsart, als auch in der Kernel- Betriebsart gelesen oder beschrieben werden. Durch Einschreiben einer Eins in die globale Unterbrechungsauslösung wird eine globale Unterbrechung an den gesamten Baum ausgelöst und das Eingabe/Ausgabemittel ungeachtet der Einstellung des globalen Unterbrechungs-Maskierbit unterbrochen. Durch Zurücksetzen des Eingabe/Ausgabemittel gelangt das Eingabe/Ausgabemittel in die SIMD-Betriebsart, werden Parität und globale Unterbrechungen gesperrt und die Kernel-Betriebsart gesperrt.
- Das STAT(Status)-Register stellt dem Prozessor 30 unterschiedliche Informationen über interne und externe Eingabe/Ausgabemittel-Ereignisse bereit. Das Vorhandensein eines Eins-Bits in parity_err, refresh_err oder global_err bedeutet, daß entsprechende Ereignis aufgetreten ist. Das Eingabe/Ausgabemittel kann den Prozessor 30 auch unterbrechen, wann immer eines dieser Ereignisse auftritt, in Abhängigkeit von den Werten der Unterbrechungs-Maskierbits in dem Kontroll-Register. Wenn ein Paritätsfehler erkannt worden ist, ist das mem_arity-Bit Eins, falls die Quelle der fehlerhaften Parität ein externes RAM war, Null, falls die Quelle die Kommunikationslogik zwischen den Prozessorelementen war. Durch Zurücksetzen des Eingabe/Ausgabemittels werden diese Bits gelöscht.
- Durch Lesen von ext_mimd_lc und ext_mimd_rc wird der derzeitige Wert der Signale an den externen MIMD-Anschlüssen an die linken und rechten Nachkömmlings-Eingabe/Ausgabemittel zurückgeschrieben. Da diese Werte nicht zwischengespeichert werden, haben Schreiboperationen keine Wirkung auf sie. (Dies sind die Werte, die in die internen SYNC-Zwischenspeicher durch Benutzer-Betriebsart-Schreibvorgänge in das SYNC-Register geladen werden.)
- Das Eingabe/Ausgabemittel speichert das niederwertige Adreßbyte von dem Adreßbus des Prozessors 30 in das PCAR(Parity-Prüfadresse)-Register zwischen, wann immer eine globale Unterbrechung auftritt, vorausgesetzt, daß das PCAR-Register von dem Prozessor 30 gelesen worden ist (oder eine Rücksetz-Operation ausgeführt worden ist) seit dem Auftreten der vorherigen globalen Unterbrechung. Diese Zwischenverriegelung wird vorgesehen, so daß die Daten in dem PCAR-Register nicht durch neue Daten überschrieben werden, falls aufeinanderfolgende globale Unterbrechungen auftreten, bevor der Prozessor 30 in der Lage ist, das PCAR-Register zu untersuchen, während die ursprüngliche Unterbrechung abgearbeitet ist. Lese- und Rücksetzoperationen geben das PCAR-Register intern zum Beschreiben frei. Durch Zurücksetzen des Eingabe/Ausgabemittels wird es ebenfalls auf Null gesetzt. Dem Prozessor 30 wird ermöglicht, Daten in dieses Register nur dann zu schreiben, wenn das Eingabe/Ausgabemittel sich in der Kernel-Betriebsart befindet.
- Das RESET-Register wird durch den Prozessor 30 beschrieben, um eine Software-Rücksetzung des Eingabe/Ausgabemittels auszuführen, eine Operation, die nur in der Kernel-Betriebsart ausgeführt werden darf. Der Quellenoperand von Prozessor 30 wird während Schreiboperationen nicht beachtet, und Leseoperationen erhalten unbestimmte Daten.
- Das STATE-Register enthält Zustandsflaggen, die den Zustand der Auflöse-Berichts- und Aussendelogik beschreiben, sowie Paritätsfehler- und globale Unterbrechungs-Anzeiger.
- Der Aussende-Block enthält die B_IN, B_OUT und B_STATUS-Register, die von dem Prozessor 30 angesprochen werden, um globale Aussendedaten in der SIMD-Betriebsart auszulesen, und um Daten an den örtlich verwurzelten Unterbaum in der MIMD-Betriebsart auszusenden.
- Durch Lesen des B_IN(Broadcast Input)-Registers liefert das letzte Byte ausgesendete Daten und gibt den Aussenden-Fertig-Anschluß des Eingabe/Ausgabemittels frei, wodurch angezeigt wird, daß das Eingabe/Ausgabemittel bereit ist, das nächste Byte von seinem MIMD-Vorgänger zu empfangen. Das B_IN-Register kann durch den Prozessor 30 nur dann beschrieben werden, wenn das Eingabe/Ausgabemittel in der MIMD-Betriebsart ist.
- Das B_OUT(Broadcast Output)-Register wird durch den Prozessor 30 in der MIMD-Betriebsart beschrieben, um ein Datenbyte an den MIMD-Unterbaum auszusenden, der an dem örtlichen Prozessorelement verwurzelt ist. Die Daten treten in dem B_EIN-Register jedes nachfolgenden SIMD-Prozessorelementes auf, sowie in dem B_IN-Register des lokalen Eingabe/Ausgabemittels. (Die Semantik der Aussendeoperation erfordert, daß das MIMD-Wurzelprozessorelement seine eigenen ausgesendeten Daten liest, da MIMD-Betriebsart-Prozessorelemente auch als SIMD-Prozessorelemente funktionieren, um einen vollständig binären Baum bereitzustellen. (Falls das B_OUT-Register in der SIMD-Betriebsart beschrieben wird, werden die Daten ausgesendet, wenn das Eingabe/Ausgabemittel in die MIMD-Betriebsart gebracht wird und der Unterbaum bereit ist, sie zu empfangen. Dies ist nicht empfohlen, da eine simultane Aussendung von einem Vorläufer-Prozessorelement jedoch entweder die Daten überschreiben könnte, während das lokale Eingabe/Ausgabemittel in der SIMD-Betriebsart ist, oder einen Eingabe/Ausgabe-Paritätsfehler auslösen könnten, während die lokale Aussendung gerade abläuft.
- Das B_STATUS(Broadcast Status)-Register enthält drei Arten von Informationen: Die Bits b_ready und b_dav zeigen an, ob die Aussendelogik bereit ist, das Byte, das in der MIMD-Betriebsart auszusenden ist, zu empfangen, und ob neue auszusendende Daten in der SIMD-Betriebsart jeweils vorhanden sind; tree_ready gibt an, ob oder ob nicht der örtlich verwurzelte Unterbaum bereit ist, Daten zu empfangen; input_parity und output_parity enthalten jeweils die dynamischen Paritätsbits für die B_IN- und B_OUT-Register.
- Die Flagge b_dav wird auf Eins gesetzt, wenn das Eingabe/Ausgabemittel auszusendende Daten in der SIMD-Betriebsart von einem Vorläufer-Prozessorelement empfängt oder aus zusendende Daten in der MIMD-Betriebsart (da alle Prozessorelemente jeweils ihre eigenen Aussendungen empfangen). Diese Flagge wird gelöscht, wann immer der Prozessor 30 den Inhalt des B_IN-Registers liest oder das Eingabe/Ausgabemittel zurücksetzt. Die Flagge b_ready wird auf Eins gesetzt, wann immer sich das Eingabe/Ausgabemittel in der MIMD-Betriebsart befindet und keine ausstehenden Daten an nachfolgende Prozessorelemente auszusenden sind. Diese Flagge zeigt jedoch nicht an, daß die nachfolgenden Prozessorelemente vorherige Daten von ihren Eingabe/Ausgabemitteln geholt haben. Es bedeutet nur, daß das örtliche Eingabe/Ausgabemittel fertig ist, um ein weiteres Ausgabe- Byte zu puffern. Sub_tree_ready kann in MIMD-Betriebsart- Prozessorelementen benutzt werden, um zu bestimmen, ob ein auszusendendes Byte unmittelbar abgeliefert werden kann, da es anzeigt, daß kein Prozessorelement ausstehende Daten in den B_IN-Registern ihrer örtlichen Eingabe/Ausgabemittel haben. Die Flagge tree_enable kann gelöscht werden, um sämtliche serielle Kommunikationen zwischen dem örtlichen Eingabe/Ausgabemittel und allen seinen Kindern zu sperren. Dies hat den Nebeneffekt, daß die Flagge sub_tree_ready in allen Vorläufer-Prozessorelementen gelöscht wird.
- Nur b_ready, tree_enable und b_dav sind durch Schreib- und Rücksetz-Operationen betroffen und dann nur, falls das Eingabe/Ausgabemittel in der Kernel-Betriebsart ist. Rücksetzen schaltet b_enable, tree_enable und b_ready an und schaltet b_dav aus, wodurch angezeigt ist, daß keine SIMD- Eingangsdaten verfügbar sind und keine MIMD-Betriebsart momentan anhängig ist.
- Der Auflösungs-/Berichts-Block enthält die Register RR_IN, RESOLVE, REPORT, RR_STATE_0 und RR_STATE_1, auf die der Prozessor 30 zugreift, um die Min-Auflösungs- und Berichts- Operationen auszuführen.
- Wenn die Flagge rr_dav des RR_STATE_0-Registers gesetzt ist, enthält das RR_IN-Register das nächste verfügbare Byte der Auflösungs-/Berichtsdaten. Beim Lesen des RR_IN-Registers wird diese Flagge gelöscht. Das RR_IN-Register wird normalerweise nur durch einen MIMD-Betriebsart-Prozessor 30 gelesen oder wenn der Zustand des Eingabe/Ausgabemittel gespeichert werden muß.
- Das RESOLVE-Register akzeptiert ein Byte der Auflösungs/- Berichtsdaten und initialisiert die Auflösungs/Berichtslogik. Sowohl MIMD- als auch SIMD-Betriebsarten-Prozessorelemente schreiben Auflösungs-/Berichtsdaten in dieses Register am Anfang eines Auflösungs-/Berichtsablaufes. Jedes SIMD-Eingabe/Ausgabemittel leitet den größten berechneten Wert zwischen sich und seinen beiden Nachfolgern zu seinen Eltern weiter, bis das MIMD-Prozessorelement an der Wurzel des Unterbaums das größte derartige Byte in seinem RR_IN-Register empfängt.
- Das REPORT-Register empfängt aufeinanderfolgende Bytes der Auflösungs-/Berichtsdaten, die einem Anfangsbyte folgen, das in das RESOLVE-Register geschrieben ist.
- Ein Prozessorelement in der MIMD-Betriebsart muß die Flagge rr_dav des RR_STATE_0-Registers lesen, um zu bestimmen, ob oder ob nicht Auflösungs-/Berichtsdaten in dem RR_IN-Register verfügbar sind. Die anderen Bits dieses Registers sind interne Zustandsregister und existieren nur, um zu ermöglichen, daß die Auflösungs-/Berichtslogik während Unterbrechungen in der Auflösungs-/Berichtsoperation geschützt ist. In der SIMD-Berichtsart zeigt das Bit r_ready an, ob oder ob nicht die Auflösungs-/Berichtslogik bereit ist, ein neues Byte der Daten in den RESOLVE- oder REPORT- Registern zu empfangen; das Bit rr_dav zeigt an, daß Auflösungs-/Berichtsdaten in dem RR_IN-Register verfügbar sind. Die verbleibenden Bits in diesem Register werden nur verwendet, um das Umfeld der Auflösungs-/Berichtslogik während eines Umfeldumschaltens zu speichern oder wieder auszulesen.
- Das RR_STATE_1-Register enthält zusätzliche Auflösungs-/Berichts-Zustands-Informationen, inklusive Flaggen, um anzuzeigen, ob das örtliche Prozessorelement noch in der Auflösungs-/Berichtsoperation zur Konkurrenz auswählbar ist (d. h. daß es nicht "getötet" worden ist), was durch die Auflösungs-/Berichts-Firmware überwacht wird.
- Ein Zurücksetzen des Eingabe/Ausgabemittels hat die folgenden Effekte auf dessen interne Register:
- In dem SYNC-Register werden die internen MIMD-Zwischenspeicher gelöscht, was anzeigt, daß das lokale Eingabe/Ausgabemittel und seine unmittelbaren Nachkömmlinge in der SIMD-Betriebsart sind;
- in dem CTRL-Register wird der interne MIMD-Selbst-Zwischenspeicher gelöscht, die Paritätsunterbrechungen und globalen Unterbrechungen werden verhindert und die Kernel-Betriebsart wird verhindert;
- in dem STATE-Register werden Paritäts- und globale Unterbrechungs-Ereignisflaggen gelöscht;
- in dem PCAR-Register wird das Register gelöscht und zum Empfang des Adreßbytes mit niedriger Ordnung freigegeben, das bei der nächsten globalen Unterbrechung aufgezeichnet wird;
- In dem STATE-Register wird die Aussendungs- und Auflösungs-/Berichtslogik in ihren Ruhezustand zurückgesetzt, und die Paritäts-Fehler- und globale -unterbrechungs-Flaggen werden gelöscht;
- in dem B_STATUS-Register wird die gesamte Aussendungslogik freigegeben und die Aussendungs-Daten-verfügbar-Flagge b_dav wird gelöscht; und
- in den RR_STATE_0_ und RR_STATE_1-Registern wird die gesamte Auflösungs-/Berichtslogik freigegeben und die Auflösungs-/Berichts-Daten-verfügbar-Flagge rr_dav wird gelöscht.
- Der Befehlsdecoder 300 der Fig. 6A und 6B ist in größerem Detail in den Fig. 17A und 17B dargestellt. Der Befehlsdecoder 300 enthält sechs funktionelle Blöcke, nämlich einen Primärdecoder 320, einen Unter-Decoder 330, ein Steuerregister 340, ein Zustandsregister 350, ein Synchronregister 360 und ein Paritätsfehleradreßregister 370. Die vier Register 340-370 sind die CTRL-, STAT-, SYNC- und PCAR-Register, die vorstehend beschrieben sind.
- Der Primärdecoder 320 decodiert die Adreßzwischenspeicherung 700 der höherwertigen Bits in Fig. 6A und 6B über die Leitung AD_LATCH 6 . . 4 und Anschluß A14 des 8751-Prozessors von Fig. 4A, um anfänglich zu bestimmen, ob das Eingabe/Ausgabemittel adressiert wird, und dann, falls es tatsächlich adressiert worden ist, den entsprechenden Block entweder mit einer Lese- oder mit einer Schreiboperation auszuwählen.
- Der Subdecoder 330 ist ein Block, der durch den Primärdecoder 320 ausgewählt werden kann. Wenn er einmal ausgewählt ist, liest der Subdecoder 330 die untersten drei Bits der Adresse auf der Leitung ADLATCH(2 . . 0) an den Subdecoder 330, um entweder eine Eingabe/Ausgabemittel-Rücksetzung oder das Steuerregister 340 über die Steuerregister-Schreib- und Steuerregister-Leseleitungen CNTREGWR, CNTREGRD, das Zustandsregister 350 über die Zustandsregister-Schreib- und Zustandsregister-Leseleitungen STREGOWR, STREGORD, das Synchronregister 360 über die Synchronregister-Schreib- und Synchronregister-Leseleitungen SYNCREGWR, SYNCREGRD oder das Paritätsadreßregister 370 über die Paritätsadreßregister- Leseleitung PADDRREGRD auszuwählen.
- Das Steuer(CTRL)-Register 340 enthält Maskierbits für die Unterbrechungsbehandlung, ein Kernel-Freigabebit und ein globale Unterbrechung-Setzen-Bit auf der Leitung SET_GLOBAL_INT, von denen alle durch das Zustandsregister 350 verwendet werden. Das Steuerregister 340 stellt auch einen Bitzustand auf der Leitung MIMD_S für die MIMD/SIMD-Operation bereit. Bei einer Zurücksetzung werden alle Masken freigegeben, das Kernel-Bit wird gelöscht und die Baugruppe wird für die SIMD-Betriebsart konfiguriert.
- Das Zustands(STAT)-Register 350 ermöglicht ein dynamisches Lesen des MIMD-Zustands der linken und rechten Kinder-PEen auf den Leitungen MIMD_LC, MIMC_RC und empfängt Informationen von dem Eingabe/Ausgabemittel, das den internen Zustand seiner Kinder und sich selbst betrifft. Das Zustandsregister 350 dient im wesentlichen dazu, Paritätsfehler und globale Unterbrechungen zu behandeln und den Prozessor zu unterbrechen, falls die Masken gesperrt sind. Sobald ein Prozessor unterbrochen wird, wird er das Zustandsregister lesen, um zu überprüfen, ob die Unterbrechung durch eine globale Unterbrechung oder durch einen Paritätsfehler hervorgerufen worden ist. Falls die Unterbrechung durch einen Paritätsfehler hervorgerufen worden ist, liefert das Zustandsregister ein Bit, das, falls es gesetzt ist, anzeigt, daß der Fehler durch eine Speicher-Lese-Operation hervorgerufen worden ist. Falls dieses Bit nicht gesetzt ist, wurde der Paritätsfehler durch einen Übertragungsfehler in dem Aussende- oder Auflösungs-Berichtsblock hervorgerufen. Durch Zurücksetzen werden alle Register gelöscht.
- Das Synchron(SYNC)-Register 360 speichert beim Empfangen eines Schreibbefehls auf der Leitung SYNCWR die Zustandsinformation auf den MIMD-Zustandsleitungen MIMD_LD, MIMD_RC von den Kindern und die MIMD-Zustandsinformation MIMD_S im Steuerregister 340 zwischen, so daß diese Daten für die anderen Blocks des Eingabe/Ausgabemittels verfügbar sind. Das Kernel-Freigabebit muß gesetzt sein, um explizit in dieses Register von dem Datenbus zu schreiben. Beim Zurücksetzen löscht das Synchronregister 360 alle Bit, wodurch alle PEen in die SIMD-Betriebsart gesetzt werden.
- Das Paritätsfehleradreß(PCAR)-Register 370 zeichnet die Adresse in dem Adreßzwischenspeicher 700 der Fig. 6A und 6B über die Leitung AD_LATCH7 . . 0 zur Zeit einer Unterbrechung auf. Das Paritätsfehleradreß-Register 370 wird hauptsächlich verwendet, um Hardware-Speicherbausteinfehler aufzuzeichnen.
- Der Speicherunterstützungs-Block 400 von Fig. 6A und 6B handhabt alle externen Speicheroperationen. Dieser Block bestimmt, welches 8Kx8-dynamische oder statische RAM-Speicherbauteil 42 oder 44 von Fig. 3 auszuwählen ist, gibt das 16kx1-statische Paritätsspeicherbauteil 46 von Fig. 3 frei und steuert die Auffrischung der zwei 8Kx8 RAMs. Der Speicherunterstützungs-Block 400 wird durch die Adreß-Zwischenspeicher-Freigabe ALE auf der Leitung A14 des Prozessors 30 und das niederwertige Bit der Adreßzwischenspeicherung des Prozessors 30 von Fig. 4A gesteuert. Die Leitung A14 wird untersucht, um festzustellen, ob oder ob nicht eine Speicheroperation stattfinden kann. In ähnlicher Weise wird das niederwertige Bit der Adreßzwischenspeicherung untersucht, um festzustellen, welches der beiden 8Kx8 RAMs ausgewählt werden sollte für eine Speicheroperation, während das andere RAM aufgefrischt wird. Falls keine Speicheroperation in einem Maschinenbefehlszyklus stattfindet, wird der Speicherunterstützungs-Block 400 beide Speicherbausteine auffrischen. Der Paritätsbaustein wird über die Leitung PC_EN des Speicherunterstützungs-Blockes 400 freigegeben, wann immer eine externe Speicheroperation auftritt.
- Genauer gesagt, falls eine Speicheroperation auftreten soll, speichert der Speicherunterstützungs-Block 400 von Fig. 6A und 6B die niederwertigen acht Bit der Adresse, die auf dem Anschluß PO des Prozessors 30 der Fig. 3 und 4A auftreten, zwischen und stellt diese niederwertigen acht Bits dem externen Speicher zur Verfügung. Der Speicherunterstützungs- Block 400 muß ebenfalls bestimmen, ob der Speicherzugriff sich auf das Eingabe/Ausgabemittel oder den externen Speicher bezieht. Dies wird durch eine Bit-Einspeisung in das Eingabe/Ausgabemittel von der Leitung A14 des Anschlusses P2 des Prozessors 30 der Fig. 3 und 4A erzielt und von dem Speicherunterstützungs-Block nachfolgend erzeugte Steuersignale, die zu dem externen Speicher sowie dem Eingabe/Ausgabemittel geschickt werden. Bezüglich der Fehlererkennung erzeugt der Speicherunterstützungs-Block 400 auch Paritätssignale für die Speicheroperation und Eingabe/Ausgabeoperationen und überprüft diese auch. Beim Auffinden eines Paritätsfehlers werden die niederwertigen acht Bits der Adresse in dem PCAR-Register durch den Speicherunterstützungs-Block 400 gespeichert.
- Eine allgemeine Darstellung der Aussendeoperation ist in Fig. 7 gezeigt. Der Aussendeblock 100 umfaßt ein Aussende- Eingangsregister 82, ein Aussende-Ausgaberegister 80, einen Multiplexer 84, UND Gatter 86, 92 und ein D-Flip-Flop 88. Die Aussende-Eingangs- und Aussende-Ausgaberegister sind die B_IN- und B_OUT-Register, die vorstehend im Zusammenhang mit Tabelle I beschrieben sind. Das Aussenden wird als eine synchrone Bit-serielle Operation ausgeführt und ist abhängig von der Betriebsart, d. h. SIMD, MSIMD, MIMD oder SPMD. Das Aussenden umfaßt die Übertragung von Befehlen und/oder Daten zu/von den einzelnen PEen. Zur Erläuterung werden Daten und Instruktionen durch den Gast-Coprozessor zu einer Untermenge von PEen ausgesendet, die dann fortfahren, wenigstens einige der übertragenen Befehle auf wenigstens einige der übertragenen Daten auszuführen.
- Das Aussende-Eingaberegister 82 ist ein Schieberegister mit einem seriellen Eingangsanschluß Sin, einem Schiebe-Freigabe-, und einem parallelen Ausgabeanschluß. Falls das PE in der SIMD-Betriebsart ist, werden ankommende ausgesendete Daten, die zur Erläuterung von dem Gast-Coprozessor stammen und durch höherrangige PEen übertragen wurden, werden seriell in die Eingangszelle durch das UND-Gatter 86 hineingeschoben. Wenn ein 0-Startbit in das Ende des Schieberegisters hineingeschoben wird, erzeugt dieses auf der Leitung 19 ein bin-fertig-Signal, das zu der Schiebefreigabe weitergeleitet wird und der Schieben verhindert. Wenn die ankommenden Daten parallel von dem Eingangsregister gelesen werden, werden 1-Bit parallel in das Eingangsschieberegister geladen, um dieses davon abzuhalten, Datenbit als ein Startbit zu lesen. Die parallele Ausgabe von dem Register 32 ist zur Erläuterung mit dem Prozessor 30 über den Bus 51 und den Anschluß 0 verbunden.
- Das bin-fertig-Signal stellt ein Steuersignal dar, um zu verhindern, daß Ausgangsdaten verloren gehen, falls die Ausgangszelle geladen wird, bevor alle Kinder die vorherige Aussendung lesen. Um gültige ankommende Daten in dem Eingangsregister 82 zu erkennen, müssen die empfangenden PEen einfach dieses Steuersignal dauernd abfragen. Um zu prüfen, ob ein Byte ausgesendet werden kann, wird ein Aussenden-fertig-Signal P_READY auf der Leitung 94 von jedem Eingabe/Ausgabemittel erzeugt, um durch das PE verwendet zu werden, und um durch das Eingabe/Ausgabemittel des Eltern-PE den Baum hinauf weitergeleitet zu werden. Aussenden-fertig wird durch das UND-Gatter 92 eines PE erzeugt, indem es zusammen mit seinem bin-ready-Signal auf der Leitung 90 und den Aussende-fertig-Signalen von seinen beiden Kindern und den MIMD/SIMD-Zustandsbit für seine Kinder verknüpft wird.
- Das D-Flip-Flop 88 empfängt auch die die ankommenden Daten von dem Eltern-PE über das UND-Gatter 86 und leitet die Daten durch den Multiplexer 84 weiter, den Baum hinunter zu den Kinder-PEen, verzögert um einen Taktzyklus. Diese Daten können an alle die PEen des Feldes mit der Verzögerung von nur einem Taktzyklus für jede Ebene des Feldes ausgesendet werden. So dauert es nur neun Taktzyklen, bis die Daten die unterste Ebene (PEen 512-1023) des Feldes von Fig. 2 erreichen und weitere zehn Taktzyklen, um ein Anfangsbit, acht Datenbit und ein Paritätsbit in das Aussende-Eingangs-Schieberegister 82 hineinzutakten. Da ein Prozessorbefehlszyklus üblicherweise über zwanzig Taktzyklen braucht, ist genügend Zeit in einem Prozessorbefehlszyklus, um Daten an alle PEen auszusenden.
- Das Aussenden-Ausgaberegister 80 ist ein 10 Bit-Schieberegister, 8 Bit für Daten, 1 Bit für die Parität und 1 Bit für ein 0-Wertstartbit. Das Schieberegister hat einen seriellen Eingangsanschluß Sin, einen 10 Bit-Parallel-Eingangsanschluß, einen Lade-Anschluß und einen Serienausgangsanschluß Sout. Der serielle Eingangsanschluß Sin ist mit einer logischen 1 verdrahtet. Das Ausgabeschieberegister schiebt kontinuierlich. In einer Aussendeoperation werden acht Datenbit, die z. B. das Ergebnis einer Berechnung durch den Prozessor 30 sind oder von einem anderen PE empfangen worden sind, ein Datenbit und ein Startbit parallel in das Schieberegister durch die Ladeleitung geladen. Diese zehn Bit werden dann durch die Sout-Leitung hinaus und in einen Multiplexer 84 geschoben, um gemultiplexte serielle Ausgangsdaten bereitzustellen.
- Unter Bezugnahme auf Fig. 8 ist der Aussendeblock 100 der Fig. 6A, 6B und 7 in größerem Detail dargestellt. Der Aussendeblock enthält funktionell ein Aussende-Eingangsschieberegister 110, das bin zu dem Eingabe/Ausgabemittel gesendetes Byte aufnimmt und hält, ein Aussende-Ausgabeschieberegister 140, das ein Byte durch den tieferen Unterbaum aussenden kann, und einen Aussendesteuerblock 170, der Synchronisierung ausführt und das Weiterleiten der Daten den Baum hinab bewacht. Wie vorstehend gezeigt, sind das Aussendeeingangsregister 110 und das Ausgaberegister 140 beide durch Speicheradressierung zugänglich, wodurch der Prozessor in der Lage ist, ein Byte zu lesen oder zu schreiben. Der Prozessor kann bestimmen, ob ein Byte empfangen worden ist, indem das b_dav-Zustandsbit abgefragt wird, oder ob ein Byte verfügbar ist, um ausgesendet zu werden, indem das b_ready- Zustandsbit abgefragt wird. Diese Bits können von der Adresse 12H (jeweils Bits 4 und 0) oder Adresse 05H (jeweils Bits 2 und 1) gelesen werden.
- Das Eingangsschieberegister 110 und das Ausgangsschieberegister 140 von Fig. 8 entsprechen dem Eingangsregister 82 und dem Ausgaberegister 80 von Fig. 7. Der Aussendekontrollblock 170 von Fig. 8 verwendet die Signale Aussenden - linkes Kind - B_LC, linkes Kind bereit - LC_Fertig, Aussenden rechtes Kind - B_RC und rechtes Kind bereit - RC_Bereit, um zu bestimmen, wann ein Byte ordnungsgemäß ausgesendet werden kann. Ähnliche Eltern Aussende- und Eltern Bereitsignale werden für den Elternprozessor auf den Leitungen B_P und P_Bereit des Aussendesteuerblocks 170 bereitgestellt. Die Leitungen B_P und P_Bereit sind zwei der acht Leitungen 56, die das Eingabe/Ausgabemittel eines PE mit dem Eingabe/Ausgabemittel seines Eltern-PE verbinden, und diese Leitungen werden an dem Eltern-PE als zwei (B_LC, LC_Bereit) der acht Leitungen 57 von einem linken Kinder-PE oder zwei (B_RC, RC_Bereit) der acht Leitungen 58 von einem rechten Kinder-PE je nachdem empfangen.
- Der Aussendeblock von Fig. 8 kann in einem von drei Zuständen sein, nämlich ruhend, Sendungen empfangend oder Sendungen aussendend. Der Aussendeblock verbringt normalerweise einen wesentlichen Anteil der Zeit in dem Ruhezustand. Falls der Prozessor nicht in der MIMD-Betriebsart ist, ist es für ein Eingabe/Ausgabemittel möglich, eine von oberhalb in dem binären Baum ausgesendete Sendung selbst zu empfangen. Der Übergang von dem Ruhezustand zu dem Sendungen empfangen- Zustand wird folgendermaßen erzielt. In dem Ruhezustand ist die Aussendeleitung zu dem Eltern-B_P durch die Eltern hochgehalten, während das Eingangsschieberegister 110 fortwährend Einsen einschiebt, um das Register 110 davon abzuhalten, ein Datenbit als ein Null-Startbit zu lesen, wie dies im Zusammenhang mit Fig. 7 beschrieben ist. Die Aussendeleitungen zu den Kindern B_LC B_RC sind ebenfalls durch den Aussendesteuerblock 170 hochgehalten. Wenn ein Unterbaum dem MIMD-Wurzel-PE signalisiert, daß er bereit ist, indem die zugehörigen Bereit-Leitungen hochgesetzt werden, wird eine Aussendung von dem MIMD-Wurzel-PE oberhalb in dem Baum ausgesendet, indem ein Null-Startbit ausgesendet wird. Dieses Startbit gibt den Steuerblock 170 frei und wird an jedes der Kinder weitergeleitet. Die Bits werden durch das D-Flip-Flop 88 verzögert, um die Übertragung synchron mit dem Systemtakt zu halten. Dies verursacht eine ein Bit-Verzögerung pro Eingabe/Ausgabemittel. Sobald 9 Bits (8 Datenbits und 1 Paritätsbit) ausgesendet sind, sperrt das Null- Startbit das Eingangsschieberegister 110 und steuert die Eltern-bereit-Leitung P_Bereit zu dem Eltern niedrig. In ähnlicher Weise gehen die P_Bereit-Leitungen in nachfolgenden Ebenen des Baumes niedrig, wenn das Null-Startbit zu dem Ausgang des Schieberegisters 110 dieser Ebene geschoben wird und das UND-Gatter 92 gesperrt ist.
- Auf jeder Ebene überprüft der Prozessor 30 sein B_Dav-Zustandsbit, um zu sehen, ob das Schieberegister 110 das Datenbyte empfangen hat. Falls dies der Fall ist, kann der Prozessor dieses von dem Eingabe/Ausgabemittel lesen. Das Eingabe/Ausgabemittel überprüft das Eingangsschieberegister 110 und, falls der Prozessor das Byte gelesen hat und die Leitungen RC_Bereit, LC_Bereit der Kinder hoch sind, dann zwingt das Eingabe/Ausgabemittel, daß die Eltern-bereit-Leitung hoch ist, wodurch angezeigt wird, daß es bereit ist, um das nächste Byte zu empfangen. Falls der Prozessor das Byte nicht gelesen hat, dann hält der Steuerblock 170 die Eltern-bereit-Leitung niedrig, bis das Byte durch den Prozessor gelesen ist.
- Nun sei auf Fig. 9 Bezug genommen, in der ein allgemeiner Schaltplan des Auflösungs-Bereiches der Auflösungs-Berichtsoperation dargestellt ist. Im wesentlichen betrifft die Auflösungsoperation die Bestimmung der Identität des einzelnen PE, da die Operation Berichten des Ergebnisses einer Berechnung ausführen wird, die durch eine Anzahl von PEen ausgeführt worden ist. Jedes PE, das die Berechnung ausführt, hat einen zugeordneten Wert. Das einzelne gewinnende PE wird benachrichtigt, daß es gewonnen hat, und daraufhin berichtet es alleine das Ergebnis. Im Falle eines Unentschiedens bestimmt der Auflösungsschaltkreis als den Gewinner das PE mit dem gewinnenden Wert, das zuerst in einer "in der Reihenfolge"-Absuche des binären Baums gefunden wird.
- Der Auflösungsblock jedes Eingabe/Ausgabemittels berechnet die folgenden Werte, wobei VP der Minimum-Auflösungswert ist:
- VP = Minimum (VS, VL, VR)
- KL = KP OR (VS VL) OR (VR VL)
- KR = KP OR (VS VR) OR (VL VR)
- KS = KP OR (VS VL) OR (VS VR)
- wobei VS der Wert der Zahl ist, die durch das lokale PE angebunden wird, VL der VP-Wert ist, der durch das linke Kind berechnet worden ist, und VR der VP-Wert ist, der durch das rechte Kind berechnet worden ist. In anderen Worten berechnet jedes Eingabe/Ausgabemittel das Minimum des Auflösungswertes, der lokal angeboten wird und den Minimumwert, der durch seine beiden Kinder berechnet worden ist.
- KP, für "töte von Eltern", ist ein Boolean-Signal, das in ein Eingabe/Ausgabemittel eingespeist wird und anzeigt, daß das lokale PE nicht der Gewinner einer Auflösung sein kann, noch daß eines seiner Kinder der Gewinner sein kann. Falls das linke Kind getötet wird, KL, falls da ein Tötungssignal von seinen Eltern KP vorhanden ist oder der Wert entweder des örtlichen PE oder von dem rechten Kind war geringer als der Wert von dem linken Kind, VL. KR und KS, für "töte rechts" und "töte selbst" werden in ähnlicher Weise berechnet. KS ist das Signal, das lokal in dem PE gelesen wird, um zu bestimmen, ob es der Gewinner der Auflösung ist.
- Der Minimierungsteil der Auflösung wird Bit-seriell berechnet, wie in Fig. 9 dargestellt. Block 600 der Fig. 6A und 6B enthält erste und zweite FIFO-serielle Register 92, 94, Puffer 95, Multiplexer 96, Vergleicher 97 und Puffer 98. Die Puffer 95 und 98 sind die RESOLVE- und RR_IN-Register, die in Verbindung mit Tabelle 1 beschrieben sind. Der serielle Vergleicher 97 berechnet das momentan gewinnende PE durch Vergleichen eines Bits zu einem Zeitpunkt von jedem der drei Quellen, VS, VL und VR, und Weiterleiten des gewinnenden Bits durch den Multiplexer 96 zu dem ersten oder zweiten FIFO-seriellen Register 93, 95 in einem Eltern-PE. Da der Unterbaum, der die Auflösung berechnet, nicht ein vollständiger binärer Baum sein muß, müssen die Bitwerte von den Kindern nicht in dem gleichen Taktzyklus ankommen. Die FIFO-Puffer 93, 94 werden verwendet, um die ankommenden Bits der Kinder mit den Bits der Eltern in dem Puffer 95 zu synchronisieren.
- Beim Eintreffen eines KP-Signals oder bei der Beendigung eines Vergleiches gibt der Vergleicher 97 ebenfalls die Signale KL, KR und KS aus, die so bestimmt werden, wie durch die logischen Gleichungen angegeben ist, die obenstehend dargestellt sind.
- Die vorstehende Anordnung erlaubt das Ausführen von Vergleichen von Werten in einer Pipeline-Weise gleichzeitig auf mehreren Ebenen des binären Baums. So kann das erste Bit eines gewinnenden Wertes mit den ersten Bits von anderen gewinnenden Werten in einem Großeltern-PE verglichen werden, während das zweite Bit in einem Eltern-PE verglichen wird und ein drittes Bit in einem Kinder-PE verglichen wird und noch weitere Bits darauf warten, verglichen zu werden. In vorteilhafter Weise besteht nur eine Verzögerung von einem einzigen Taktzyklus bei der Ausführung des Vergleiches auf jeder Ebene in dem binären Baum, und der Vergleicher ist in der Lage, ein Bit der angebotenen Werte pro Taktzyklus zu vergleichen. Als ein Ergebnis kann die gesamte Auflösungsoperation in der Zeit ausgeführt werden, die eine Zahl benötigt, die von einem PE angeboten wird, um durch den Vergleicher hindurchgetaktet zu werden, zuzüglich der Weiterleitungszeit durch den Baum von einem Taktzyklus pro Ebene. Falls die angebotene Zahl nur ein Byte ist und das Prozessorfeld nur zehn Ebenen hat, wie in Fig. 2, kann die gesamte Auflösungsoperation in weniger als zwanzig Taktzyklen beendet werden, was weniger ist als die durchschnittlichen Prozessorinstruktionszyklen.
- Die Berichtsoperation ist in dem Kernel-Programm implementiert, in dem der Auflösungsschaltkreis verwendet wird. "Bericht" ist nur dann gut definiert, wenn ein einziges freigegebenes PE in dem SIMD-Unterbaum vorhanden ist. Um die Berichtsoperationen zu implementieren, führen alle PEen eine Auflösung auf, wobei die SIMD-gesperrten PEen Maximalwerte verwenden (z. B. FF(hex)) und das einzelne freigegebene PE bietet den Wert zum Bericht als seinen Auflösungswert an.
- Der von dem frei gegebenen PE angebotene Wert wird daher weniger als oder gleich sein wie alle anderen Wert, die aufgelöst worden sind, und das korrekt Ergebnis wird berichtet.
- Der Auflösungs-Berichtsblock 600 der Fig. 6A und 6B ist in größerem Detail in den Fig. 10A und 10B dargestellt. Der Auflösungs-Berichtsblock 600 umfaßt vier Blöcke, nämlich den Subdecoder 610, das Ausgangsregister 620, den Komparator 640 und den Steuerblock 660. Der Subdecoder 610 führt die Decodierung aus und sendet Lese/Schreib-Freigabesignale an das Ausgangsregister 620, den Komparator 640 und den Steuerblock 660. Das Ausgangsregister 620, welches das RESOLVE-Register von Tabelle 1, empfängt ein Byte von dem Prozessor 30, das den binären Baum auf der Leitung BUS7 . . 0 des Registers 620 hinauf zu übertragen ist. Der Komparator 640 wird hauptsächlich in dem Auflösungsvorgang verwendet und ist ein spezielle Implementierung des seriellen Vergleichers 97 von Fig. 9. Der Komparator 640 bestimmt den Gewinner einer Auflösung und gibt TÖTEN-Kommando an die Kinder aus, die nicht den richtigen Wert haben. Der Steuerblock 660 führt die Funktionen Übermitteln, Synchronisieren und Empfangen aus. Jedes PE ist verantwortlich dafür, daß es ein Byte von jedem seiner Kinder empfängt und das gewinnende Byte seinen Eltern so schnell wie möglich übermittelt. Um dies so schnell wie möglich zu tun, werden zwei FIFOs verwendet. Sobald eine Auflösung erfolgt ist, wird ein Datenpfad von dem gewinnenden Prozessorelement zu dem MIMD-Wurzel-PE aufgebaut.
- In der Praxis der Erfindung führt der Berichts-Auflösungsblock der Fig. 10A und 10B zwei Arten von Übertragungen aus, nämlich Berichten und Auflösen. Die Auflösungsübertragung verwendet zwei spezielle Adressen. Das erste Byte einer Auflösung wird in eine erste Adresse geschrieben, die den Komparator 640 zurücksetzt. Nachfolgende Bytes werden in eine zweite Adresse geschrieben, aber setzen den Komparator nicht zurück. Falls der Komparator 640 des Auflösungs-Berichtsblocks einen Vergleich von drei Bytes, von sich selbst und seinen beiden Kindern ausführt und einen Gewinner bestimmt, dann berichtet dieser Gewinner das Ergebnis. Falls jedoch ein Unentschieden im Zusammenhang mit dem linken Kind auftritt, wird der Komparator das linke Kind als den Gewinner ausrufen; falls ein Unentschieden zwischen sich selbst und dem recht Kind auftritt, bestimmt der Komparator sich selbst als den Gewinner. In jedem Fall wird das Eingabe/Ausgabemittel das gewinnende Byte mit einem NULL-Startbit hinauf übertragen. Beim Auftreten des letzten Byte einer Auflösung liest der Prozessor 30 die TÖTEN-Signale von dem Komparator 640 auf den Leitungen töte rechts Kind KILLRC, töte linkes Kind KILLLC und töte Eltern KILLP, um zu bestimmen, ob dieses Byte das gewinnende Byte der Auflösung war.
- Auf diese Weise wählen aufeinanderfolgende Ebenen des binären Baums einen einzelnen gewinnenden Wert, leiten ihn weiter zu der nächsten Ebene und sperren alle Prozessorelemente außer dem Prozessorelement, das den gewinnenden Wert hat.
- Die Berichtsfunktion kann dann implementiert sein, indem alle die gesperrten Prozessorelemente einen Maximumwert, z. B. FF(hex) berichten, wenn sie gesperrt sind und Aussenden eines Befehls an das gewinnende Prozessorelement, um zu berichten, was immer von seinen Daten von Interesse ist. Da all die anderen Prozessorelemente auf einen Maximalwert gesetzt sind, wird die Operation der Auflösung ein weiteres Mal hervorrufen, daß die Daten von dem gewinnenden Prozessorelement konsistent als der gewinnende Wert ausgewählt werden und an das Wurzelprozessorelement weitergeleitet werden.
- Die Fig. 11-16 stellen die Elemente den Steuerblock 660 der Fig. 10A und 10B in größerem Detail dar. Genauer gesagt, empfängt und hält das Eingangsregister 680 von Fig. 11, welches das RR_IN-Register von Tabelle 1 ist, das von dem Kind an MIMD-Eltern auf der Leitung BUS(7 . . 0) des Eingangsregisters 680 gesendet worden ist. Synchronisier- und Datenfreigabesignale SYNC, XMTDTA werden dem NAND-Gatter 681 zugeleitet, dessen Ausgang als der Takt zu dem Eingangsregister 680 dient.
- Zwei zuerst-ein-zuerst-aus-Bausteine (FIFOs) 690, 695 von Fig. 12 empfangen die von SIMD-Kindern an ihre Eltern übertragene Bytes. Diese Bausteine sind als FIFOs 93, 94 in Fig. 9 dargestellt. Falls FIFO 690 des PE ein gewinnendes Byte von dem rechten Kind des PE empfängt, wird es dieses gewinnende Byte an seine Eltern so schnell wie möglich auf der Leitung FIRCDO weiterleiten. Falls das FIFO 695 des gleichen PE ein gewinnendes Byte von dem linken Kind des PE empfängt, wird es in ähnlicher Weise dieses gewinnende Byte zu seinen Eltern nach oben so schnell wie möglich auf der Leitung FILCDO weiterleiten. Genauer gesagt wird das FIFO 690 mit Daten von dem rechten Kind über die Eingangsleitung RRDRC von Fig. 12 versorgt. Die Steuersignale PRENXMT, die an dem NAND-Gatter 692 anliegen und XMTDTA, das dem D-Flip- Flop 691 zugeführt wird, erlauben die Ausgabe der Daten an das PE. In ähnlicher Weise wird das FIFO 695 mit Daten von seinem linken Kind über die Eingangsleitung RRDLC versorgt. Die Steuersignale PRENXMT, die dem NAND-Gatter 697 zugeführt werden und XMTDTA, das dem D-Flip-Flop 696 zugeführt wird, erlauben die Ausgabe der Daten an das PE. Die Rücksetzsignale werden auf die Leitungen FIFORESET und R/I der NOR-Gatters 693 angelegt, um das Flip-Flop 690 für das rechte Kind zurückzusetzen, und zu dem NOR-Gatter 695, um das FIFO 695 für das linke Kind zurückzusetzen.
- Das Eingangsregister 680 von Fig. 11 und das Ausgangsregister 620 der Fig. 10A und 10B sind speicheradressiert, um dem Prozessor zu ermöglichen, ein Byte zu lesen oder zu schreiben. Der Prozessor 30 kann den Zustand des Steuerblocks 660 überprüfen, um zu bestimmen, ob ein Byte empfangen worden ist oder ausgesendet werden muß.
- Fig. 13 stellt die GANG-Schaltung dar, um das Zustandssignal RRCLGO zu erzeugen. Eingangssignale in diesem Schaltkreis umfassen die Signale RRPARDY und RRPAGO.
- Fig. 14 stellt die ENTLEER-Logik dar, um das Signal PREMPTY zu erzeugen. Eingangssignale zu diesem Schaltkreis umfassen die Signale ROUTOWR und RROUT1WR.
- Fig. 15 stellt die BEREIT-Logik dar, um das Signal RRPARDY zu erzeugen. Eingangssignale für diesen Schaltkreis umfassen die Signale RRRCRDY, SYNCRC RRLCRDY, SYNCLC und das von der ENTLEEREN-Logik von Fig. 14 erzeugte RREMPTY-Signal.
- Fig. 16 stellt die AUSSENDEN-Logik dar, um die Signale XMTDTA, ENXMT und RSTFLL zu erzeugen. Eingangssignale für diesen Schaltkreis umfassen die Signale FILC, FIRC (die beide von dem EMPFANGEN-FIFO-Schaltkreis von Fig. 12 erzeugt werden), SYNCLC, SYNCRC und RRCLGO (die von der GANG-Logik von Fig. 13 erzeugt werden).
- Der Auflösen-Berichtsblock kann in einem von mehreren Zuständen sein, nämlich ruhend, Auflösungs-Berichtsbyte senden, Auflösungs-Berichtsbyte empfangen und Auflösungs-Bericht beginnen.
- Falls das PE nicht in der MIMD-Wurzel-Betriebsart ist, wird der Ruhezustand wie folgt definiert: Ein Zustandssignal auf der Leitung RRCLGO der Steuerblocks 660 der Fig. 10A und 10B wird auflogisch Eins durch die MIMD-Wurzel-Eltern gehalten; die Datenleitungen RRDRC, RRDLC, jeweils des rechten Kindes und des linken Kindes des Steuerblocks 660 werden auf logisch Eins gehalten; und die Eltern-bereit-Leitung RRPARDY des Steuerblocks 660 wird durch das Kind ebenfalls auf logisch Null gehalten.
- Das Eingabe/Ausgabemittel verläßt den Ruhezustand und tritt in den Zustand Auflösungs-Bericht Senden ein, wenn der SIMD-Kinder-Prozessor 30 ein Auflösungsbyte in das Berichts-Auflösungs-Ausgaberegister 620 des Eingabe/Ausgabebausteins der Fig. 10A und 10B schreibt. Falls das SIMD-Kind ein Blatt-PE in dem binären Baum ist, tritt die Eltern-bereit-Leitung RRPARDY des Steuerblocks 660 der Fig. 10A und 10B in den logisch hohen Zustand ein. Falls das SIMD-Kind nicht ein Blatt-PE ist, wird das Auflösungs-Berichts-bereit-Zustandsbit, d. h. das bin-ready-Signal auf der Leitung 90 von Fig. 7 durch das UND-Gatter 92 von Fig. 7 mit jeder der Kinder-bereit-Leitungen UND verknüpft, um den Wert der Eltern-Aussenden-bereit-Leitung zu bestimmen, wie dies in Fig. 7 veranschaulicht ist. Sobald ein MIMD-Wurzelprozessor feststellt, daß der SIMD-Unter-Baum bereit ist, wird das PE bewirken, daß das Zustandssignal auf der Leitung RRCLGO des Steuerblocks 660 der Fig. 10A und 10B den niedrigen Zustand annimmt. Wenn dies auftritt, senden die Blatt-PEen den Wert in dem Ausgangsregister 620 der Fig. 10A und 10B nach oben. Falls das PE nicht ein Blatt ist und auch nicht in SIMD ist, muß es warten, bis seine beiden Kinder begonnen haben, ihre Auflösungsbytes den binären Baum hinaufzuschicken. Die FIFOs 690, 695, die die von den SIMD-rechten und -linken Kindern zu ihren Eltern schicken, ermöglichen dem Komparator 640 der Fig. 10A und 10B, die Bits zu vergleichen, sobald alle drei ersten Bits von dem linken Kind, dem rechten Kind und ihren Eltern empfangen worden sind. Sobald ein SIMD-PE einen ein Bit-Vergleich beendet hat, zwingt es die Zustandsleitung an der Leitung RRCLGO nach hoch, auch wenn die Eltern noch eine niedrige Leitung haben, um so zu ermöglichen, daß das nächste Byte ohne irgendwelche Verzögerungen geschrieben wird.
- Zusätzlich zu den Zuständen ruhend, Auflösungs-Berichtsbyte schreiben und Auflösungs-Bericht beginnen, kann ein MIMD- Wurzel-PE auch in dem Zustand Auflösungs-Bericht empfangen sein. Wenn ein Unterbaum einem MIMD-Wurzel-PE signalisiert, daß er bereit ist, ein Byte nach oben zu senden, überprüft das Eingabe/Ausgabemittel des MIMD-Wurzel-PE anfänglich, daß es einen Byte an das Ausgaberegister 620 der Fig. 10A und 10B geschrieben hat, so, wie wenn es ein SIMD-PE wäre. An diesem Punkt fällt das Zustandssignal auf der Leitung RRCLGO des Steuerblocks 660 an den Eingabe/Ausgabemittel des MIMD-Wurzel-PE nach unten, wodurch dem unteren Bereich des Baumes signalisiert wird, die Übertragung zu beginnen. Das Signal RRCLGO ist in der GANG-Logik und der AUS SENDEN-Logik der Fig. 13 und 16 jeweils dargestellt. Das Eingabe/Ausgabemittel betritt nun den Zustand Empfangen- des Auflösungs-Berichtes. Jedes Kind sendet entweder sein Auflösungsbyte oder sein Berichtsbyte nach oben, abhängig von der gerade stattfindenden Operation. Sobald das Kind des MIMD-Wurzel-PE die Daten nach oben schickt, führt das MIMD-Wurzel-PE einen ein Bit-Vergleich an den Daten aus, und wie jedes andere SIMD-PE wird das gewinnende Byte zu dem Eingangsregister 660 der Fig. 10 des Auflösungs-Berichtsblocks über die Leitung BUS(7 . . 0) geschickt, wo es durch den Prozessor 30 gelesen werden kann.
- Unter erneuter Bezugnahme auf Fig. 6A und 6B, überprüft der Paritätsprüfblock 500 die Byte-Kommunikation zwischen den zahlreichen PEen sowie der Speicheroperationen auf Paritätsfehler. Der Paritätsprüfblock 500 liest im wesentlichen die Parität der acht Bit-Daten-Leitung IO_BUS7 . . 0, die den Aussendeblock 100, den Befehlsdecodierblock 300, den Berichts-Auflösungsblock 600 und den Adreßzwischenspeicherblock 700 verbindet, und überprüft die Parität gegen ein Paritätsbit, um zu bestimmen, ob ein Paritätsfehler aufgetreten ist.
- Falls der Prozessor 30 an den Aussendeblock 100 oder den Berichts-Auflösungsblock 600 schreibt, wird genauer gesagt ein Paritätsbit an dem internen Paritätsbitbus IPB des Paritätsprüfblocks 500 angelegt und als das neunte Bit an die Datenregister des Berichts-Auflösungsblock 600 geschrieben. Die Leitung IPB verbindet den Paritätsprüfblock 500, den Aussendeblock 100 und den Berichts-Auflösungsblock 600. Wenn eine Speicher-Schreib-Operation stattfindet, erzeugt der Paritätsprüfblock 500 ein Paritätsbit, das für zukünftigen Zugriff gespeichert wird, indem es durch die Datenleitung PB_OUT des Paritätsprüfblocks 500 in das 16kx1 Paritäts-RAM 46 der Fig. 3, 4B eingeschrieben wird.
- Wann immer der Prozessor 30 die Dateneingangsregister in dem Aussendeblock 100 oder in dem Auflösungs-Berichtsblock 600 liest, wird die Parität der Daten gegen das Paritätsbit, das mit den Daten übertragen wird, geprüft. Falls sie nicht übereinstimmen, wird ein Paritätsfehlersignal PAR_ERR an den Befehlsdecodierblock 300 geschickt, der, falls die Paritätsfehlermaske gesperrt ist, den Prozessor unterbricht. Wenn eine externe Speicherleseoperation auftritt, wird die Parität der Daten in den 8Kx8 RAMs 42, 44 von Fig. 3 gegen die Parität geprüft, die ursprünglich in das 16Kx1 RAM 46 von Fig. 3 geschrieben worden ist. Die Leitung, die das Paritätsbit von dem 16Kx1 RAM zu dem Eingabe/Ausgabemittel bringt, ist die Leitung PB_IN des Paritätsprüfblocks 500 der Fig. 5A und 5B. Falls die Parität des Datenbus IO_BUS7 . . 0 des Paritätsprüfblocks 500 nicht mit PB_IN übereinstimmt, geht die Paritätsfehlerleitung PAR_ERR nach unten. Die Paritätsfehlerleitung PAR-ERR des Paritätsprüfblocks 500 ist mit dem Befehlsdecoderblock 300 verbunden und informiert den Befehlsdecoder, daß ein Paritätsfehler aufgetreten ist. In beiden Lese-Fällen findet eine Verzögerung von zwei Taktzyklen statt, von dem Zeitpunkt, wann die Leseleitung nach unten kippt, bis zu dem Zeitpunkt, wenn das Paritätsbit gegen den Datenbus IO_BUS7 . . 0 geprüft wird. Ein Bit in dem Befehlsdecoderblock 300 weiß, ob der Paritätsfehler in dem Eingabe/Ausgabemittel lokal war, oder ob es ein Speicherfehler war.
- Es wird erneut Bezug genommen auf die Fig. 6A und 6B, in denen der Fehlersuchblock 200 gezeigt ist, der systemweit oder global Unterbrechungen behandelt. Diese globalen Unterbrechungen können entweder durch den Prozessor 30 erzeugt werden, indem er seine eigene globale Unterbrechung erzeugt (bekannt als "debug") oder durch ein anderes Eingabe/Ausgabemittel.
- Globale Unterbrechungen ermöglichen jedem PE in dem Baum, eine Unterbrechung in jedem anderen PE und in dem Gast- Coprozessor zu erzeugen. Der Fehlersuchblock 200 kann verwendet werden, um einen Hardware-Fehler anzuzeigen, oder kann verwendet werden, um ein Fehlersuch- und Diagnoseüberwachungsprogramm zu starten. Das Eingabe/Ausgabemittel ist so konstruiert, daß der Prozessor den Zustand des Eingabe/Ausgabemittels lesen und schreiben kann, um eine Umgebungsumschaltung vorzunehmen. Umgebungsumschaltung bedeutet das Sichern des Zustandes in dem Eingabe/Ausgabemittel in einen externen Speicher. Bei einer globalen Unterbrechung werden der Zustand des Prozessors und des Eingabe/Ausgabebausteins gespeichert und ein Überwachungsprogramm läuft an. Beim Beenden des Überwachungsprogramms können der Zustand des PE und des Eingabe/Ausgabebausteines zurückgespeichert werden und der Baum kann die Verarbeitung an der Stelle aufnehmen, an der die Unterbrechung aufgetreten ist.
- Der Fehlersuchblock 200 ist im wesentlichen ein Mehrrichtungs-Busverstärker. Der Fehlersuchblock 200 kann ein Unterbrechungssignal von vier unterschiedlichen Quellen empfangen; dem lokalen PE, als ein Ergebnis eines Schreibvorgangs eines bestimmten Bit an den PE, oder von einem seiner drei nächsten Nachbarn (Eltern-PE oder linkes oder rechtes Kinder-PE) in dem Baum. Bein Empfangen einer Unterbrechung wird der Fehlersuchblock 200 die Unterbrechung in die anderen drei Richtungen weiterleiten, bis der gesamte Baum unterbrochen ist. Durch die Entfernung des Unterbrechungssignals von der Unterbrechungsquelle wird der Block aufhören, das Signal in die anderen drei Richtungen weiterzuleiten.
- Funktional ist der Fehlersuchblock 200 der Fig. 6A und 6B eine endliche Zustands-Maschine. Das Eingangssignal IO_GLOBAL_INT zu dem Fehlersuchblock 200 kommt von dem Befehlsdecoder 300 und wird durch ein globales Unterbrechungs-Zustandsbit erzeugt, das von dem Prozessor 30 hoch oder niedrig gesetzt wird. Der Empfang des Unterbrechungssignals INT-IO von dem Fehlersuchblock 200 speist den Befehlsdecoder 300, um eine Unterbrechung zu erzeugen, die von dem Eingabe/Ausgabebaustein initiiert ist. Eingabe/Ausgabeleitungen, globale Unterbrechungen durch Eltern G_INT_P, globale Unterbrechungen durch das linke Kind G_INT_LC, und globale Unterbrechungen von dem rechten Kind G_INT_RC von dem Fehlersuchblock 200 können ebenfalls verwendet werden, um Unterbrechungen weiterzuleiten. Falls die globale Unterbrechung von den Eltern, dem linken oder dem rechten Kind erzeugt worden ist und nicht von dem Eingabe/Ausgabebaustein, dann wurde eine dieser drei Leitungen nach unten gezwungen, um eine Unterbrechung anzuzeigen, die dann ebenfalls die Leitung Unterbrechungsempfang INT_IO nach unten zwingen wird. Falls die globale Unterbrechung von dem Eingangssignal IO_GLOBAL-IN an dem Fehlersuchblock 200 verursacht wurde, dann werden die Signale G_INT_P, G_INT_LC und G_INT_RC ebenfalls nach unten gezwungen. Sobald eine Unterbrechung auftritt, liest der Prozessor 30 ein Zustandsbyte in dem Befehlsdecoderblock 300, welches anzeigt, ob die Unterbrechung örtlich in dem Eingabe/Ausgabebaustein oder von den Eltern oder einem Kind erzeugt wurde, und auch was zu tun sein würde.
- Gemäß der Erfindung werden alle oder ein Teil der Zustände des Eingabe/Ausgabebausteins in dem externen Speicher gespeichert werden, sobald eine Unterbrechung auftritt, um später wieder zurückgeschrieben zu werden. Der Zustand des Befehlsdecoderblock 300 der Fig. 6A und 6B sollte zuerst gespeichert werden, dann der Zustand des Aussendeblocks 100 und schließlich der Zustand des Auflösungs-Berichtsblocks 600, um jeder globalen Kommunikation, die begonnen haben könnte, bevor die Unterbrechung beendet ist, bevor der Zustand gespeichert ist. Dieser Reihenfolge folgend, werden keine Daten verloren gehen, da alle Aussendungen, die bis zur Zeit beendet worden sind, da der Befehlsdecoderblock 300 ausgelesen wird, und alle Auflösungs-Berichte werden sich bis zu der Zeit beruhigt haben, zu der der Aussendungsblock zu Ende ausgelesen ist. Nachdem der Zustand gespeichert worden ist, kann eine "weiche" Rücksetzung des Eingabe/Ausgabebausteins ausgeführt werden, oder ein vorbestimmter Zustand kann in das Eingabe/Ausgabebauteil eingeschrieben werden. Der Zustand muß in der gleichen Reihenfolge wie vorstehend beschrieben hineingeschrieben werden, da der Zustand in dem Befehlsdecoderblock 300 sowohl in dem Aussende- 100 und Auflöseblock 600 verwendet wird.
- Sobald die Fehlersuche beendet ist, kann der Zustand des Baumes zurückgeschrieben werden. Der Zustand des Eingabe/Ausgabebausteins wird ebenfalls in der gleichen Reihenfolge, wie er ausgelesen worden ist, wieder zurückgeschrieben, außer in einem Fall. Das Aussende/Eingangsschieberegister muß von dem Prozessor 30 zuerst ausgelesen werden, um das Register zu re-initialisieren. Erst nachdem es gelesen worden ist, können die Daten in das Register eingeschrieben werden. Dieser Fall trifft nur auf die Eingabe/Ausgabebausteine zu, die auch unter einer MIMD-Zustandsbedingung wieder beschrieben werden müssen.
- Bei der Ausführung der Erfindung ist die Effizienz dadurch erreicht, daß der Umfang der Berechnungszeit kontrolliert wird, der von jedem Prozessor in einem bestimmten Zyklus benötigt wird. Das der Umfang der von jedem Prozessor benötigten Zeit in Abhängigkeit von seinem örtlichen Zustand stark schwanken kann, wurde herausgefunden, daß das Ausgleichen der Belastung durch Kopieren einer beanspruchten Untermenge der Daten eines Prozessors mit einer verschobenen Berechnungslast aufandere Prozessoren sich als besonders vorteilhaft erwiesen hat. Die Daten können Zwängen unterworfen sein und daher unter Zugrundelegung jedes geeigneten Sortier- oder Zerteilverfahrens aufgeteilt werden, wodurch die durchschnittliche Berechnungszeit sowie die Standardabweichung des Mittelwertes verringert werden kann.
- Zusätzlich kann die vorliegende Erfindung in vorteilhafter Weise so ausgeführt werden, daß der Betrieb der Prozessoren im wesentlichen sichergestellt ist, nachdem zwei aufeinanderfolgende Fehler sowie eine 50%ige Wahrscheinlichkeit eines korrekten Betriebes nach einem dritten aufeinanderfolgenden Fehlers sichergestellt ist. Obwohl übliche Paritätsfehler mit herkömmlichen Fehlerkorrekturverfahren behandelt werden können, stellt eine vollständige und unwiderrufliche Betriebsunfähigkeit eines integrierten Schaltkreises ein viel schwierigeres Problem dar. Allerdings kann dies dadurch überwunden werden, daß die Berechnung viermal in einem binären Baum-Parallelprozessor der Größe 4N+3 ausgeführt wird, wobei N=1023 im Falle der bevorzugten Ausführungsform ist.
- Unter Bezugnahme auf Fig. 18 bilden drei zusätzliche Knoten den obersten Teil des Baumes der Größe N, nämlich T, L und R. Diese drei Knoten wirken im wesentlichen als die Auswähler, die ein Übereinstimmen zwischen den vier identischen und gleichzeitig ablaufenden Prozessen in den Unterbäumen 1-4 sicherstellen. Die Knoten L und R arbeiten gleichzeitig, um ein Übereinstimmen zwischen ihren nachfolgenden Unterbäumen sicherzustellen. T stellt sicher, daß zwischen L und R eine Übereinstimmung besteht, und unterstützt die Isolation von Fehlern, falls sie auftreten. T, L und R müssen ihrerseits gegen Fehler durch Verwendung herkömmlicher doppelter Auswahllogik gesichert werden.
- Genauer gesagt werden unter Annahme, daß ein Fehler in dem Unterbaum 2 auftritt, die Ergebnisse, die an L von den Unterbäumen 1 und 2 weitergeleitet werden, in irgendeinem Punkt der Berechnung voneinander abweichen. Unmittelbar nach dem Erfassen dieses Unterschiedes wird T von L durch Setzen eines Leitung benachrichtigt, die T kontinuierlich liest. Wenn R erfaßt hat, daß keine Fehler bei ihm selbst auftreten, leitet er richtige Ergebnisse an T weiter. T fährt fort, die Ergebnisse von R an den äußeren Gastrechner und an L weiterzuleiten.
- Der Knoten L, der diesen Wert verwendet, der von R über T bereitgestellt worden ist, stellt fest, daß der Unterbaum 2 einen Fehler erzeugt hat. Eine nachfolgende Operation von L leitet einfach Ergebnisse seinen funktionierenden Unterbaums 1 direkt an T weiter. Der Unterbaum 2 kann nun entweder unabhängig arbeiten, um seine eigenen Fehler zu isolieren, um sie einer direkten manuellen Reparatur zuzuführen, oder abgeschaltet verbleiben.
- Falls ein weiterer Fehler in einem der gültigen Unterbäume 1, 3 oder 4 auftritt, werden die beiden anderen Berechnungen korrekt bleiben und den fehlerhaften Unterbaum isolieren in der gleichen Weise, wie dies vorstehend beschrieben ist. Auf diese Weise wird sichergestellt, daß T mit gültigen Daten durch zwei Fehler hindurch antworten kann. Falls ein dritter Fehler auftritt, kann T wahlweise von den zwei verbleibenden Unterbäumen mit einer 50%igen Erfolgswahrscheinlichkeit wählen. Eine derartige Wahrscheinlichkeit kann mit Hilfe von Fehlererkennungs-Hardware erhöht werden.
- In vorteilhafter Weise kann ein derartiges Fehlersteuerungssystem in Übereinstimmung mit der vorliegenden Erfindung ohne die Notwendigkeit zusätzlicher PEen implementiert werden. Die Knoten T, L und R führen vorzugsweise relativ einfache Funktionen aus und erfordern kein deditiertes PE.
- Die Softwaresteuerung jedes PE ist vorzugsweise durch ein Kernel-System bereitgestellt, das in einem EPROM in jedem PE abgelegt ist. Der Kernel stellt vier Funktionen bereit: Einschaltdiagnosen, Eingabe/Ausgaberoutinen auf niedriger Ebene, Unterstützung der Hochsprache PPL/M und Unterstützung der Hochsprache PPSL, wie dies in dem Flußdiagramm von Fig. 19 dargestellt ist.
- Bezüglich der Einschaltdiagnosefunktion des Kernel setzen die PEen ihren Speicher auf 00 beim Anlegen von Strom und überprüfen dann ihre globalen Unterbrechungsleitungen. Falls die globalen Unterbrechungsleitungen niedrig sind, führt das PE eine EPROM-gespeicherte Diagnoseroutine aus, um allgemein die Funktionsfähigkeit des PE zu überprüfen. Falls die globalen Unterbrechungsleitungen ruhend sind (d. h. hoch, 5 Volt), wird das Eingabe/Ausgabemittel zurückgesetzt, die Unterbrechungsmasken gesperrt, Niederpegel-Zustandsbits werden initialisiert und ein Zeitschaltkreis, der zum Beginn der Initialisierung aktiviert wird, wird auf Zeitablauf geprüft. Falls der Zeitschaltkreis Zeitablauf signalisiert, weil die Initialisierung nicht vollständig ist, wird das PE das EPROM-gespeicherte Diagnoseprogramm ausführen. Alternativ dazu, falls die Initialisierung beendet ist, betritt das PE die PPL/M-Betriebsart.
- Bezüglich der Eingabe/Ausgabefunktionen auf niedriger Ebene des Kernel, umfassen die niederpegeligen Zustandsbits, die in dem Bitadreßraum angeordnet sind, Bits um anzuzeigen, ob ein PE ein Wurzel-PE ist, ob ein PE eine rechts Kind ist, ob ein PE sich in MIMD befindet und seine Eltern logisch abgeschaltet sind, ob ein linkes Kind logisch verbunden ist, ob ein rechtes Kind logisch verbunden ist, ob ein linkes Kind physikalisch existiert, ungeachtet seines MIMD/SIMD-Zustands, und ob ein rechtes Kind physikalisch existiert, unabhängig von seinem MIMD/SIMD-Zustand. Die Initialisierungssoftware untersucht vorzugsweise äußere Verbindungen und stellt entsprechende Zustände an den Statusbits auf niederer Ebene bereit.
- Eingabe/Ausgaberoutinen auf niedriger Ebene sind im allgemeinen Byte-orientiert, abgesehen von den Eingabe/Ausgabe- Umfeld-Umschaltroutinen, die wortorientiert sind. Falls eine Routine einen Wert zurückliefert, wird der rückgelieferte Wert im Akkumulator belassen.
- Die einzigen Routinen, die die Prozessoranschlüsse bedienen können, die mit den Anschlüssen von Eltern und Kindern des Prozessors 30 verbunden sind, sind die folgenden:
- Schreibe an linken Kinder-Anschluß.
- Schreibe an rechten Kinder-Anschluß.
- Schreibe an Eltern-Anschluß.
- Schreibe an den Gast (Elteranschluß, nur von der Wurzel auf rufbar).
- Schreibe an beide Kinder gleichzeitig.
- Schreibe ein Byte an den Gast, aber verwende richtiges Protokoll (Elternanschluß, nur von der Wurzel aufrufbar).
- Lese linken Kinderanschluß.
- Lese rechten Kinderanschluß.
- Lese Elternanschluß.
- Lese Gast (Elternanschluß, nur von Wurzel aufrufbar).
- Lese ein Bit von dem Gast, aber verwende richtiges Protokoll (Elternanschluß, nur von Wurzel aufrufbar).
- Diese drei Nachbarn-Eingabe/Ausgaberoutinen sind für die richtige Ausführung eines Übertragungsprotokolls mit vier Zyklen mit den Eltern- und Kinder-PEen verantwortlich, die logisch mit einem örtlichen PE verbunden sind. Falls irgendein PE nicht logisch verbunden ist, ist ein Schreibvorgang ein "kein Befehl" und ein nachfolgender Lesevorgang liefert eine Null zurück. Während diese Routinen die Zustandsbits abfragen, erhält der PPL/M-Hochsprachenkernel die Richtigkeit der Zustandsbits.
- Das die Anschlüsse eines PE im allgemeinen zur Kommunikation in einer abwärts gerichteten Richtung eingerichtet sind, müssen die Routinen auf niedriger Ebene, die ein Byte in den binären Baum nach oben befördern, ihre Anschlüsse in einer nach oben gerichteten Richtung re-konfigurieren, um für die nach oben gerichtete Übertragung eingerichtet zu sein und dann die Anschlüsse in der nach unten gerichteten Richtung wieder zurückversetzen, bevor sie beendet sind.
- Der grundlegende Betrieb auf niedriger Ebene zum Ausführen von Nachbar-Eingaben/Ausgaben ist ein Standard vier Zyklen- Quittierungsprotokoll, das eine Bereit-Leitung und eine Quittierungsleitung (Ack) benötigt. Ein üblicher Quittierungsbetrieb zwischen einem Meister und einem Sklaven umfaßt die folgenden Schritte:
- Meister Sklave
- Daten bereitstellen.
- Bereit-Signal bereitstellen.
- Warten bis bereit ansteht.
- Daten aufnehmen, Ack bereitstellen.
- Warten bis Ack bereitsteht.
- Bereit-Leitung zurücksetzen.
- Daten entfernen.
- Warten bis Bereit-Leitung zurückgesetzt ist.
- Ack zurücksetzen.
- Warten bis Ack zurückgesetzt ist.
- Bereit bereitstellen.
- Warten bis bereit ansteht.
- Die folgende erläuternde Liste von Routinen werden durch das Eingabe/Ausgabemittel durchgeführt.
- Lesen eines ausgesendeten Byte;
- Aussenden eines auszusendenden Byte (nur MIMD-PE);
- Aussenden des ersten Byte einer Auflösung;
- Aussenden von nachfolgenden Bytes einer Auflösung;
- Aussenden von Bytes eines Berichtes;
- Lesen eines ausgelösten oder berichteten Byte (nur MIMD-PE);
- Setzen des Eingabe/Ausgabebausteins des lokalen Prozessors in den derzeitigen MIMD/SIMD-Zustand des Kinder;
- Setzen des Eingabe/Ausgabebausteins des lokalen Prozessors in einen MIMD-Zustand;
- Setzen des Eingabe/Ausgabebausteins des lokalen Prozessors in einen SIMD-Zustand.
- Setzen des Eingabe/Ausgabebausteins des lokalen Prozessors, damit das linke Kind in MIMD ist.
- Setzen des Eingabe/Ausgabebausteins des lokalen Prozessors, damit das linke Kind in SIMD ist.
- Setzen des Eingabe/Ausgabebausteins des lokalen Prozessors, damit das rechte Kind in MIMD ist.
- Setzen des Eingabe/Ausgabebausteins des lokalen Prozessors, damit das rechte Kind in SIMD ist.
- Setze globale Unterbrechung.
- Setze globale Unterbrechung zurück.
- Maskiere globale Unterbrechung weg.
- Erlaube einer globalen Unterbrechung, die CPU zu unterbrechen.
- Maskiere eine Paritätsunterbrechung weg.
- Erlaube einer Paritätsunterbrechung, die CPU zu unterbrechen.
- Ein Prädikat liefert den dynamischen Zustand der MIMD-Leitung des linken Kindes zurück. Nicht-Null bedeutet MIMD. (beeinflußt das Übertrags-Bit.)
- Prädikat liefert dynamischen Zustand der MIMD-Leitung des rechten Kindes. Nicht-Null bedeutet MIMD. (Beeinträchtigt das Übertrags-Bit.)
- Prädikat liefert den Zustand des Eingabe/Ausgabemittels des linken Kindes. Nicht-Null bedeutet MIMD. (Beeinträchtigt den Übertrag.)
- Prädikat liefert den Zustand des Eingabe/Ausgabemittels des rechten Kindes. Nicht-Null bedeutet MIMD. (Beeinträchtigt das Übertrags-Bit.)
- Prädikat liefert den Zustand des Eingabe/Ausgabemittels der Kinder. Nicht-Null bedeutet, sie befinden sich beide in MIMD. (Beeinträchtigt das Übertrags- Bit.)
- Prädikat liefert den Wert eines Gewinner-Bits in dem Übertrag.
- Schreibe in das Eingabe/Ausgabebauteil Steuerregister.
- Lese das Eingabe/Ausgabebaustein-Steuerregister.
- Schreibe in das Eingabe/Ausgabebaustein-Zustandsregister.
- Lese das Eingabe/Ausgabebaustein-Zustandsregister.
- Umgebungsspeicherung liefert einen Zeiger auf einen Bereich von 12 Byte in einem RAM, das sich nicht auf dem Chip befindet. Diese Routine wird die derzeitige Umgebungsinformation von dem Eingabe/Ausgabebaustein herausschreiben und das Eingabe/Ausgabebauteil zurückgesetzt und in der SIMD-Betriebsart verlassen. (Beeinträchtigt DPTR und Übertrag.)
- Kontext zurückholen liefert einen Zeiger auf einen Speicher, der sich nicht auf dem Baustein befindet und eine vorher hinausgeschriebene Umgebung enthält. Diese Routine wird die Umgebung in ein Eingabe/Ausgabemittel zurückschreiben. (Beeinträchtigt DPTR und Übertrag.)
- Im allgemeinen enthält das Eingabe/Ausgabemittel eine Anzahl von speicheradressierbaren Daten- und Zustandsregistern. Kommunikationsroutinen haben die Gestalt, besetzt-warten auf ein Zustandsbit, wenn das Zustandsbit anzeigt, daß das Datenregister bereit ist und daß die Daten daher gelesen oder geschrieben werden können. Die Prädikate lesen und maskieren die entsprechenden Zustandsbits.
- Unter erneuter Bezugnahme auf Fig. 19 und bezüglich des PPL/M-Hochsprachenkernels, schaltet sich die vorliegende Erfindung in den PPL/M-Modus ein, wobei alle PEen, außer der Wurzel, anfangen, eine SIMD interpretierende Schleife SIMDLP auszuführen. Falls ein PE dazu bestimmt ist, ein Wurzel-PE zu sein, wird es den Urprogramm-Lader ausführen, um Code zu lesen und in einem Benutzerprogramm zu laden.
- Der Urprogramm-Lader ist selbst ein PPL/M-Programm. Es hat einen MIMD-Teil in der Wurzel und einen SIMD-Teil in jedem der PEen. Eingabedateien sind meist in dem Intel 8080 Objektmodulformat. Der Urprogramm-Lader entscheidet dann, ob ein bestimmter Satz einer Eingabedatei Teil des Programmbildes ist. Falls dies der Fall ist, wird durch die Kopfinformation in dem Datensatz festgelegt, wo der Abbild-Teil in einem externen RAM abzulegen ist. Dies wird in allen PEen ausgeführt, so daß jedes PE ein identisches Programmbild in seinem Speicher hat. Am Ende der Datei wird die Steuerung an das Benutzerprogramm übergeben, in Übereinstimmung mit der durch das Lademodul vorgegeben Startadresse.
- Das Parallelverhalten der vorliegenden Erfindung wird dadurch erreicht, daß identische Programmbilder des Benutzerprogramms in allen PEen abgelegt werden, zusammen mit der Verwendung von Laufzeitroutinen, um die Ausführung zu steuern und die Kommunikation auszuführen. Um dies zu erläutern, wird ein Teil des PPL/M-Codes bevor und nachdem er durch einen Vor-Prozessor verändert worden ist, dargestellt und die Wirkungen der Laufzeitroutinen werden wie folgt erläutert:
- Ein Teil des PPL/M-Codes:
- main:
- Ado;
- /*declarations of regular and slice variables*/
- declare a,b,c,d word external;
- declare s,t,u,v word slice external;
- /*code*/
- a = b + c;
- b = c * d;
- /*SIMD block*/
- do SIMD;
- s = t + v;
- a8 = s;
- send(lc);
- io8 = a8 + s;
- recv(p);
- t = s;
- end;
- end;
- Das gleiche Segment des PPL/M-Codes nach der Vor-Verarbeitung:
- main:
- do;
- /*declarations of regular and slice variables*/
- declare a,b,c,d word external;
- declare s,t,u,v word slice external;
- /*code*/
- example: procedure;
- a = b + c;
- b = c * d;
- /*SIMD block*/
- call SIMD;
- goto 10:
- if (not en1) then goto 11;
- s = t + v;
- a8 = s;
- 11: send(lc);
- if (not en1) then goto 12;
- io8 = a8 + s;
- enl = al
- if (not en1) then goto 12;
- 12: recv(p);
- if (not en1) then goto 13;
- t = s;
- 13: return;
- 10:
- end;
- end;
- Beachte, daß der Befehl "do SIMD" in "call SIMD" geändert worden ist. Der Code läuft üblicherweise in einem MIMD-Prozessor, bis ein "call SIMD" auftritt. SIMD ist eine Kernel- Funktion, die an den Rückkehradreß-Stapel des Prozessors 30 schaut. Die Rückkehradresse zeigt auf den Befehl direkt nach dem "call SIMD", der 2 weniger (aufgrund des "jump 10:") als die erste Adresse des SIMD-Blocks ist. Da das Programmbild in allen PEen identisch ist, zeigt diese Adresse auf den gleichen SIMD-Block in allen PEen. Die Adresse wird an alle SIMD-PEen ausgesendet. Die SIMD-Prozedur springt dann auf den SIMD-Block selbst (da jedes MIMD-PE sich auch wie ein SIMD-PE verhalten muß). Am Ende des SIMD-Blocks wirkt der Rückkehrbefehl wie der Rückkehrbefehl des ursprünglichen SIMD-Aufrufs. Diese veranlaßt das Programm, zu dem ursprünglichen "goto" nach dem Aufruf SIMD zurückzukehren.
- Die SIMD interpretierende Schleife SIMDLP in dem SIMD-PE empfängt die zwei Byte der Adresse und führt einen indirekten Unterprogrammaufruf zu dem SIMD-Block aus. Wenn der SIMD-PE die Rückkehradresse am Ende des SIMD-Blocks erreicht, verursacht er, daß der PE in die SIMD interpretierende Schleife zurückkehrt.
- Alle PEen können nun den gleichen Code-Block ausführen und dabei SIMD-Verhalten simulieren. Beachte, daß an dem Anfang des SIMD-Block und nach jedem Kommunikationsbefehl und einer Zuweisung von EN1 ein Befehl "if (not EN1) then goto 11;" steht. Auf diese Weise wird der SIMD-Freigabe/Sperr-Zustand simuliert. Jedesmal wenn ein Kommunikationsbefehl ausgeführt werden muß, muß dieser in jedem PE ausgeführt werden. In anderen Worten muß jedes PE genau die gleiche Sequenz von Kommunikationsbefehlen ausführen.
- Die Bedingungssprünge auf EN1 springen von Kommunikationsbefehl zu Kommunikationsbefehl. Andere Befehle werden nur übersprungen, falls das PE gesperrt ist. Dies zusammen mit dem nicht Zulassen anderer Bedingungen in den SIMD-Blöcken sowie aufgrund von Kommunikationsbefehlen in Scheibenprozeduren stellt eine Disziplin in der Abfolge der Kommunikationsbefehle sicher.
- Zusätzlich zu dem obenstehenden ist das folgende eine Liste von speziellen Plätzen, die von dem PPL/M-Hochsprachenkernel verwendet wird:
- EN1 Das Freigabebit. Verwendet von Kommunikationsbefehlen und SIMD- Begriffen.
- A1 Spezielles Bit-Register, um die Gewinnerinformation der Auflösung aufzunehmen.
- A8 Verwendet als die Quelle oder das Ziel von Kommunikationsbefehlen.
- IO8 Verwendet als die Quelle oder das Ziel von Kommunikationsbefehlen.
- cprbyte Ziel des Berichtsbefehls.
- Unter erneuter Bezugnahme auf Fig. 19 ist DoMIMD das Primitivum, welches die Zerteilung des binären Baumes verursacht und die Steuerung zu den Wurzeln jedes der Unterbäume in einen dreistufigen Vorgang übergibt. Zuerst wird die Adresse der MIMD-Routine, zu der die Steuerung übergeben wird, ausgesendet. Die Unterteilungs- und Zustandsbits werden dann eingestellt. Als letztes rufen die freigegebenen PEen die MIMD-Routine auf. In dem PPL/M-Betriebszustand befindet sich die Wurzel stets in dem MIMD-Betriebszustand, obwohl, falls SIMD gesperrt ist, es keine DoMIMD bezeichnete Routine ausführen wird.
- Am Ende des MIMD-Codes ist ein "exit" vorgesehen, um den Unterbaum oben wieder zu verbinden. Im Endeffekt schaltet das Eingabe/Ausgabemittel zurück in SIMD und aktualisiert die örtliche MIMD-Flagge. Die letzte Rückkehr von der MIMD-Prozedur wird den Rückkehrstapel zurückstellen und das PE in der SIMD interpretierenden Schleife SIMDLP zurücklassen.
- SYNC ist ein Befehl, der einen Wartezustand hervorrufen wird, bis alle PEen unter dem die SYNC-Routine ausführenden PE in die SIMD-Betriebsart zurückgekehrt sind, und verursacht, daß dieser Unterbaum vollkommen wieder angeschlossen wird.
- Man sieht also, daß ein neues und verbessertes System bereitgestellt worden ist für eine schnelle, effiziente und fehlertolerante Datenverarbeitung durch die Verwendung einer Vielzahl von Prozessorelementen, die in einer binären Baumanordnung angeordnet sind, wobei jedes Prozessorelement bei sich ein individuelles Eingabe/Ausgabemittel und einen Speicher zugeordnet hat.
Claims (9)
1. Parallel-Prozessoranordnung (Fig. 2), mit einer Vielzahl
von Prozessorelementen (z. B. PE1, PE2 und PE3), von denen jedes
einen Prozessor (30), der eine arithmetische, logische Einheit,
Steuerspeicher, Programmabfolgen und Befehlsdekoder hat; einen
mit dem Prozessor verbundenen Lese/Schreibspeicher (40); und
mit dem Prozessor und dem Lese/Schreibspeicher verbundene
Ein/Ausgabemittel (50); sowie Mittel (z. B. 53 und 54) aufweist,
um die Prozessorelemente in einem binären Baum zu verknüpfen,
in dem jedes Prozessorelement außer denen an den Enden des
binären Baums mit einem Eltern-Prozessorelement und wenigstens
einem ersten und einem zweiten Kinder-Prozessorelement
verbunden ist,
dadurch gekennzeichnet,
daß das Ein-Ausgabemittel (50)
Mittel (100) zum Aussenden von von einem
Eltern-Prozessorelement empfangener Information zu den
Kinder-Prozessorelementen, so daß gemeinsame Information an jedes Prozessorelement
des binären Baums oder einem Unterbaum davon ohne direkte
Steuerung der Prozessoren der Prozessorelemente verteilt wird;
und
Mittel (600) zum Bestimmen einer Rangfolge unter jeweiligen
Werten von Information aufweist, die von den
Kinder-Prozessorelementen empfangen wurde und Information die von dem Prozessor
empfangen wurde, mit dem das Ein/Ausgabemittel ohne direkte
Steuerung der Prozessoren der Prozessorelemente verbunden ist;
wobei die Ein/Ausgabemittel (50) der in dem binären Baum
verbundenen Prozessorelemente zusammenwirken, so daß Information
von einem ersten Eltern-Prozessorelement zu den
Kinder-Prozessorelementen in den binären Baum oder Unterbaum, die am
weitesten von den ersten Eltern-Prozessorelementen entfernt sind,
ausgesendet wird, und eine Rangfolge unter Werten der
Information an jedem Prozessorelement in dem binären Baum oder
Unterbaum bestimmt wird, jeder in einer Zeit der Größenordnung des
Logarithmus der Anzahl von Prozessorelementen in dem binären
Baum oder Unterbaum, multipliziert mit der Zeit zum Aussenden
von Informationen von einem Eltern-Prozessorelement zu damit
verbundenen Kinder-Prozessorelementen, und der Zeit, die
notwendig ist, um den Rang unter Werten der Information zu
bestimmen, die von dem Prozessor eines Prozessorelementes und den
damit verbundenen Kinder-Prozessorelementen jeweils empfangen
wird.
2. Vorrichtung nach Anspruch 1, bei der das Sendemittel
ein Register (82) mit einem seriellen Dateneingang und einem
Ausgang zu dem Prozessor,
ein Flip-Flop (88),
erste Mittel (86) zum gleichzeitigen Anlegen von Datensignalen
an den seriellen Dateneingang und das Flip-Flop, und
zweite Mittel (84) zum Anlegen von Datensignalen von dem
Flip-Flop an die ersten Mittel in ersten und zweiten Kinder-
Prozessorelementen aufweist, wodurch Signale durch dem binären
Baum oder Unterbaum durch die Flip-Flops der Prozessorelemente
des binären Baums oder Unterbaums weitergeleitet werden.
3. Vorrichtung nach Anspruch 2, die des weiteren
eine Einrichtung (110) zum Erzeugen eines Register-Voll-Signals,
wenn das Register voll ist, und
Mittel (170) zum Verhindern der Übertragung zusätzlicher Daten
zu der Vielzahl von Prozessorelementen während das Register-
Voll-Signal erzeugt wird, aufweist.
4. Vorrichtung nach Anspruch 1, bei der das Mittel zum
Bestimmen erste, zweite und dritte Register (95, 93 und 94),
wobei das erste Register mit dem Prozessorelement verbundene
Daten speichert und die zweiten und dritten Register mit den
ersten und zweiten Kinder-Prozessorelementen verbundene Daten
speichern,
einen Vergleicher (97), um die in den ersten, zweiten und
dritten Registern gespeicherten Daten zu vergleichen, um
gewinnende Daten gemäß einer vorherbestimmten Rangfolge
auszuwählen, und
Mittel (96), um die gewinnenden Daten einem der zweiten oder
dritten Register in einem Eltern-Prozessorelement mitzuteilen,
aufweist.
5. Vorrichtung nach Anspruch 4, die des weiteren Mittel (640)
zum Sperren jedes Prozessorelementes aufweist, dessen Daten
nicht als gewinnende Daten ausgewählt wurden, woraufhin jedes
Prozessorelement bis auf eines während der Zeit, in der die
gewinnenden Daten dem ersten Eltern-Prozessorelement in den
binären Baum oder Unterbaum mitgeteilt werden, gesperrt ist.
6. Vorrichtung nach Anspruch 5, die des weiteren Mittel (620)
aufweist, um dem ersten Eltern-Prozessorelement in dem binären
Baum Information mitzuteilen, die durch das Prozessorelement
gespeichert ist, das nicht gesperrt ist.
7. Vorrichtung nach Anspruch 1, die des weiteren Mittel zum
Unterteilen des binären Baums in eine Vielzahl von Unterbäumen
aufweist.
8. Vorrichtung nach Anspruch 7, bei der jeder Unterbaum in
einen Einzelbefehl-Mehrfachdatenmodus betrieben wird und die
Vielzahl von Unterbäumen in einem
Mehrfachbefehl-Mehrfachdatenmodus betrieben werden.
9. Vorrichtung nach Anspruch 7, bei der wenigstens zwei der
Unterbäume identische Programme auf identische Daten anwenden
und die Ergebnisse dieser Programmausführung verglichen werden,
um Fehler in den Unterbäumen zu erfassen.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06/902,547 US4860201A (en) | 1986-09-02 | 1986-09-02 | Binary tree parallel processor |
PCT/US1987/002107 WO1988001771A1 (en) | 1986-09-02 | 1987-08-27 | Binary tree parallel processor |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3787886D1 DE3787886D1 (de) | 1993-11-25 |
DE3787886T2 true DE3787886T2 (de) | 1994-04-14 |
Family
ID=25416008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE87906327T Expired - Fee Related DE3787886T2 (de) | 1986-09-02 | 1987-08-27 | Parallelprozessor mit binärer baumstruktur. |
Country Status (9)
Country | Link |
---|---|
US (1) | US4860201A (de) |
EP (1) | EP0279854B1 (de) |
JP (1) | JP2763886B2 (de) |
KR (1) | KR930009619B1 (de) |
AU (1) | AU598425B2 (de) |
CA (1) | CA1291828C (de) |
DE (1) | DE3787886T2 (de) |
IL (1) | IL83734A (de) |
WO (1) | WO1988001771A1 (de) |
Families Citing this family (186)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4843540A (en) * | 1986-09-02 | 1989-06-27 | The Trustees Of Columbia University In The City Of New York | Parallel processing method |
US5040109A (en) * | 1988-07-20 | 1991-08-13 | Digital Equipment Corporation | Efficient protocol for communicating between asychronous devices |
US5020059A (en) * | 1989-03-31 | 1991-05-28 | At&T Bell Laboratories | Reconfigurable signal processor |
US5471622A (en) * | 1989-10-04 | 1995-11-28 | Paralogic, Inc. | Run-time system having nodes for identifying parallel tasks in a logic program and searching for available nodes to execute the parallel tasks |
US5522083A (en) * | 1989-11-17 | 1996-05-28 | Texas Instruments Incorporated | Reconfigurable multi-processor operating in SIMD mode with one processor fetching instructions for use by remaining processors |
US5537593A (en) * | 1990-02-12 | 1996-07-16 | Fmc Corporation | Method for solving enumerative search problems using message passing on parallel computers |
DE69031865T2 (de) * | 1990-02-28 | 1998-08-06 | Texas Instruments Inc | Ein SIMD-Prozessor als digitales Filter |
US5230047A (en) * | 1990-04-16 | 1993-07-20 | International Business Machines Corporation | Method for balancing of distributed tree file structures in parallel computing systems to enable recovery after a failure |
US5517626A (en) * | 1990-05-07 | 1996-05-14 | S3, Incorporated | Open high speed bus for microcomputer system |
US5280547A (en) * | 1990-06-08 | 1994-01-18 | Xerox Corporation | Dense aggregative hierarhical techniques for data analysis |
US6970834B2 (en) * | 1990-06-15 | 2005-11-29 | Arachnid, Inc. | Advertisement downloading computer jukebox |
US5930765A (en) * | 1990-06-15 | 1999-07-27 | Martin; John R. | Downloading method for songs and advertisements |
AU665521B2 (en) * | 1990-10-03 | 1996-01-11 | Thinking Machines Corporation | Parallel computer system |
US5630162A (en) * | 1990-11-13 | 1997-05-13 | International Business Machines Corporation | Array processor dotted communication network based on H-DOTs |
US5752067A (en) * | 1990-11-13 | 1998-05-12 | International Business Machines Corporation | Fully scalable parallel processing system having asynchronous SIMD processing |
US5963745A (en) * | 1990-11-13 | 1999-10-05 | International Business Machines Corporation | APAP I/O programmable router |
US5809292A (en) * | 1990-11-13 | 1998-09-15 | International Business Machines Corporation | Floating point for simid array machine |
US5765011A (en) * | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams |
US5963746A (en) * | 1990-11-13 | 1999-10-05 | International Business Machines Corporation | Fully distributed processing memory element |
US5588152A (en) * | 1990-11-13 | 1996-12-24 | International Business Machines Corporation | Advanced parallel processor including advanced support hardware |
US5828894A (en) * | 1990-11-13 | 1998-10-27 | International Business Machines Corporation | Array processor having grouping of SIMD pickets |
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 |
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 |
US5966528A (en) * | 1990-11-13 | 1999-10-12 | International Business Machines Corporation | SIMD/MIMD array processor with vector processing |
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 |
US5765015A (en) * | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Slide network for an array processor |
US5794059A (en) * | 1990-11-13 | 1998-08-11 | International Business Machines Corporation | N-dimensional modified hypercube |
US5815723A (en) * | 1990-11-13 | 1998-09-29 | International Business Machines Corporation | Picket autonomy on a SIMD machine |
US5590345A (en) * | 1990-11-13 | 1996-12-31 | International Business Machines Corporation | Advanced parallel array processor(APAP) |
IE920032A1 (en) * | 1991-01-11 | 1992-07-15 | Marconi Gec Ltd | Parallel processing apparatus |
JP3047998B2 (ja) * | 1991-02-13 | 2000-06-05 | 株式会社日立製作所 | 並列計算機におけるプロセッサ割り当て方法、及び装置 |
US5978831A (en) * | 1991-03-07 | 1999-11-02 | Lucent Technologies Inc. | Synchronous multiprocessor using tasks directly proportional in size to the individual processors rates |
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 |
US20080228517A1 (en) * | 1992-03-06 | 2008-09-18 | Martin John R | Computer jukebox and jukebox network |
US6047122A (en) * | 1992-05-07 | 2000-04-04 | Tm Patents, L.P. | System for method for performing a context switch operation in a massively parallel computer system |
JP2647330B2 (ja) * | 1992-05-12 | 1997-08-27 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 超並列コンピューティングシステム |
JP2642039B2 (ja) * | 1992-05-22 | 1997-08-20 | インターナショナル・ビジネス・マシーンズ・コーポレイション | アレイ・プロセッサ |
US5394556A (en) * | 1992-12-21 | 1995-02-28 | Apple Computer, Inc. | Method and apparatus for unique address assignment, node self-identification and topology mapping for a directed acyclic graph |
JPH06208460A (ja) * | 1993-01-11 | 1994-07-26 | Hitachi Ltd | マイクロプログラムメモリ制御方式 |
US5742806A (en) * | 1994-01-31 | 1998-04-21 | Sun Microsystems, Inc. | Apparatus and method for decomposing database queries for database management system including multiprocessor digital data processing system |
US5748780A (en) * | 1994-04-07 | 1998-05-05 | Stolfo; Salvatore J. | Method and apparatus for imaging, image processing and data compression |
US5615127A (en) * | 1994-11-30 | 1997-03-25 | International Business Machines Corporation | Parallel execution of a complex task partitioned into a plurality of entities |
US7334030B2 (en) * | 1994-12-19 | 2008-02-19 | Apple Inc. | Method and apparatus for the addition and removal of nodes from a common interconnect |
US5875301A (en) * | 1994-12-19 | 1999-02-23 | Apple Computer, Inc. | Method and apparatus for the addition and removal of nodes from a common interconnect |
US5748877A (en) * | 1995-03-08 | 1998-05-05 | Dell Usa, L.P. | Method for executing embedded diagnostics from operating system-based applications |
US5692184A (en) * | 1995-05-09 | 1997-11-25 | Intergraph Corporation | Object relationship management system |
US5794243A (en) * | 1995-12-11 | 1998-08-11 | International Business Machines Corporation | Method and apparatus for executing a binary search in a data cache |
US7266725B2 (en) | 2001-09-03 | 2007-09-04 | Pact Xpp Technologies Ag | Method for debugging reconfigurable architectures |
WO2002029600A2 (de) | 2000-10-06 | 2002-04-11 | Pact Informationstechnologie Gmbh | Zellenarordnung mit segmentierterwischenzellstruktur |
DE19651075A1 (de) | 1996-12-09 | 1998-06-10 | Pact Inf Tech Gmbh | Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen |
DE19654595A1 (de) | 1996-12-20 | 1998-07-02 | Pact Inf Tech Gmbh | I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen |
DE19654593A1 (de) | 1996-12-20 | 1998-07-02 | Pact Inf Tech Gmbh | Umkonfigurierungs-Verfahren für programmierbare Bausteine zur Laufzeit |
DE19654846A1 (de) | 1996-12-27 | 1998-07-09 | Pact Inf Tech Gmbh | Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.) |
EP1329816B1 (de) | 1996-12-27 | 2011-06-22 | Richter, Thomas | Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.) |
DE19704728A1 (de) | 1997-02-08 | 1998-08-13 | Pact Inf Tech Gmbh | Verfahren zur Selbstsynchronisation von konfigurierbaren Elementen eines programmierbaren Bausteines |
US6542998B1 (en) | 1997-02-08 | 2003-04-01 | Pact Gmbh | Method of self-synchronization of configurable elements of a programmable module |
DE19704742A1 (de) * | 1997-02-11 | 1998-09-24 | Pact Inf Tech Gmbh | Internes Bussystem für DFPs, sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen, zur Bewältigung großer Datenmengen mit hohem Vernetzungsaufwand |
US5937194A (en) * | 1997-03-12 | 1999-08-10 | International Business Machines Corporation | Method of, system for, and article of manufacture for providing a generic reduction object for data parallelism |
US6237134B1 (en) | 1997-03-12 | 2001-05-22 | International Business Machines Corporation | Method of, system for, and article of manufacture for providing a generic adaptor for converting from a non-future function pointer to a future function object |
US5987255A (en) * | 1997-03-12 | 1999-11-16 | International Business Machines Corporation | Method of, system for, and article of manufacture for providing a generic adaptor for converting from a sequential iterator to a pre-thread parallel iterator |
US5991764A (en) * | 1997-03-12 | 1999-11-23 | International Business Machines Corporation | Data structure specifying differing fan-in tree and fan-out tree computation patterns supporting a generic reduction object for data parallelism |
US8686549B2 (en) | 2001-09-03 | 2014-04-01 | Martin Vorbach | Reconfigurable elements |
US6000024A (en) * | 1997-10-15 | 1999-12-07 | Fifth Generation Computer Corporation | Parallel computing system |
DE19861088A1 (de) | 1997-12-22 | 2000-02-10 | Pact Inf Tech Gmbh | Verfahren zur Reparatur von integrierten Schaltkreisen |
DE19807872A1 (de) * | 1998-02-25 | 1999-08-26 | Pact Inf Tech Gmbh | Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl. |
NO984746D0 (no) | 1998-10-09 | 1998-10-09 | Fast Search & Transfer Asa | Digital prosesseringsenhet |
NO309169B1 (no) * | 1998-11-13 | 2000-12-18 | Interagon As | Sokeprosessor |
US6006259A (en) * | 1998-11-20 | 1999-12-21 | Network Alchemy, Inc. | Method and apparatus for an internet protocol (IP) network clustering system |
NO992269D0 (no) * | 1999-05-10 | 1999-05-10 | Fast Search & Transfer Asa | S°kemotor med todimensjonalt skalerbart, parallell arkitektur |
JP2003505753A (ja) | 1999-06-10 | 2003-02-12 | ペーアーツェーテー インフォルマツィオーンステヒノロギー ゲゼルシャフト ミット ベシュレンクテル ハフツング | セル構造におけるシーケンス分割方法 |
US6973559B1 (en) * | 1999-09-29 | 2005-12-06 | Silicon Graphics, Inc. | Scalable hypercube multiprocessor network for massive parallel processing |
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 |
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 |
US7089240B2 (en) * | 2000-04-06 | 2006-08-08 | International Business Machines Corporation | Longest prefix match lookup using hash function |
JP2004506261A (ja) | 2000-06-13 | 2004-02-26 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | パイプラインctプロトコルおよびct通信 |
US8058899B2 (en) | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
US6990555B2 (en) * | 2001-01-09 | 2006-01-24 | Pact Xpp Technologies Ag | Method of hierarchical caching of configuration data having dataflow processors and modules having two- or multidimensional programmable cell structure (FPGAs, DPGAs, etc.) |
KR100553143B1 (ko) * | 2001-02-24 | 2006-02-22 | 인터내셔널 비지네스 머신즈 코포레이션 | 계산 구조에 대한 전역 트리 네트워크 |
CN1229739C (zh) | 2001-02-24 | 2005-11-30 | 国际商业机器公司 | 全局中断和障碍网络 |
US7210129B2 (en) | 2001-08-16 | 2007-04-24 | Pact Xpp Technologies Ag | Method for translating programs for reconfigurable architectures |
US9037807B2 (en) | 2001-03-05 | 2015-05-19 | Pact Xpp Technologies Ag | Processor arrangement on a chip including data processing, memory, and interface elements |
US7444531B2 (en) | 2001-03-05 | 2008-10-28 | Pact Xpp Technologies Ag | Methods and devices for treating and processing data |
US7844796B2 (en) | 2001-03-05 | 2010-11-30 | Martin Vorbach | Data processing device and method |
US7581076B2 (en) | 2001-03-05 | 2009-08-25 | Pact Xpp Technologies Ag | Methods and devices for treating and/or processing data |
WO2005045692A2 (en) | 2003-08-28 | 2005-05-19 | Pact Xpp Technologies Ag | Data processing device and method |
US7657877B2 (en) | 2001-06-20 | 2010-02-02 | Pact Xpp Technologies Ag | Method for processing data |
GB0119146D0 (en) * | 2001-08-06 | 2001-09-26 | Nokia Corp | Controlling processing networks |
US7996827B2 (en) | 2001-08-16 | 2011-08-09 | Martin Vorbach | Method for the translation of programs for reconfigurable architectures |
US6957318B2 (en) * | 2001-08-17 | 2005-10-18 | Sun Microsystems, Inc. | Method and apparatus for controlling a massively parallel processing environment |
US7434191B2 (en) | 2001-09-03 | 2008-10-07 | Pact Xpp Technologies Ag | Router |
US8686475B2 (en) | 2001-09-19 | 2014-04-01 | Pact Xpp Technologies Ag | Reconfigurable elements |
US7577822B2 (en) | 2001-12-14 | 2009-08-18 | Pact Xpp Technologies Ag | Parallel task operation in processor and reconfigurable coprocessor configured based on information in link list including termination information for synchronization |
AU2003208266A1 (en) | 2002-01-19 | 2003-07-30 | Pact Xpp Technologies Ag | Reconfigurable processor |
WO2003071432A2 (de) | 2002-02-18 | 2003-08-28 | Pact Xpp Technologies Ag | Bussysteme und rekonfigurationsverfahren |
US8914590B2 (en) | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
US7028122B2 (en) * | 2002-08-07 | 2006-04-11 | Sun Microsystems, Inc. | System and method for processing node interrupt status in a network |
AU2003286131A1 (en) | 2002-08-07 | 2004-03-19 | Pact Xpp Technologies Ag | Method and device for processing data |
US7657861B2 (en) | 2002-08-07 | 2010-02-02 | Pact Xpp Technologies Ag | Method and device for processing data |
US20070083730A1 (en) * | 2003-06-17 | 2007-04-12 | Martin Vorbach | Data processing device and method |
US7251690B2 (en) * | 2002-08-07 | 2007-07-31 | Sun Microsystems, Inc. | Method and system for reporting status over a communications link |
EP1537486A1 (de) | 2002-09-06 | 2005-06-08 | PACT XPP Technologies AG | Rekonfigurierbare sequenzerstruktur |
US7240059B2 (en) * | 2002-11-14 | 2007-07-03 | Seisint, Inc. | System and method for configuring a parallel-processing database system |
US7945581B2 (en) * | 2002-11-14 | 2011-05-17 | Lexisnexis Risk Data Management, Inc. | Global-results processing matrix for processing queries |
US7293024B2 (en) * | 2002-11-14 | 2007-11-06 | Seisint, Inc. | Method for sorting and distributing data among a plurality of nodes |
US8676843B2 (en) * | 2002-11-14 | 2014-03-18 | LexiNexis Risk Data Management Inc. | Failure recovery in a parallel-processing database system |
US6968335B2 (en) | 2002-11-14 | 2005-11-22 | Sesint, Inc. | Method and system for parallel processing of database queries |
US7185003B2 (en) * | 2002-11-14 | 2007-02-27 | Seisint, Inc. | Query scheduling in a parallel-processing database system |
US7912842B1 (en) | 2003-02-04 | 2011-03-22 | Lexisnexis Risk Data Management Inc. | Method and system for processing and linking data records |
US7720846B1 (en) | 2003-02-04 | 2010-05-18 | Lexisnexis Risk Data Management, Inc. | System and method of using ghost identifiers in a database |
US7657540B1 (en) | 2003-02-04 | 2010-02-02 | Seisint, Inc. | Method and system for linking and delinking data records |
US7403942B1 (en) | 2003-02-04 | 2008-07-22 | Seisint, Inc. | Method and system for processing data records |
US7155440B1 (en) * | 2003-04-29 | 2006-12-26 | Cadence Design Systems, Inc. | Hierarchical data processing |
EP1665065B1 (de) * | 2003-09-09 | 2007-10-03 | Koninklijke Philips Electronics N.V. | Integrierte datenverarbeitungsschaltung mit mehreren programmierbaren prozessoren |
US7451133B2 (en) * | 2003-12-16 | 2008-11-11 | Oracle International Corporation | Executing nested subqueries of parallel table functions in the parallel single cursor model |
US8086645B2 (en) * | 2003-12-16 | 2011-12-27 | Oracle International Corporation | Compilation and processing a parallel single cursor model |
US7958160B2 (en) * | 2003-12-16 | 2011-06-07 | Oracle International Corporation | Executing filter subqueries using a parallel single cursor model |
US7685095B2 (en) * | 2003-12-16 | 2010-03-23 | Oracle International Corporation | Executing a parallel single cursor model |
US7340452B2 (en) * | 2003-12-16 | 2008-03-04 | Oracle International Corporation | Parallel single cursor model on multiple-server configurations |
JP2006215816A (ja) * | 2005-02-03 | 2006-08-17 | Fujitsu Ltd | 情報処理システムおよび情報処理システムの制御方法 |
US8112655B2 (en) * | 2005-04-21 | 2012-02-07 | Violin Memory, Inc. | Mesosynchronous data bus apparatus and method of data transmission |
US8452929B2 (en) | 2005-04-21 | 2013-05-28 | Violin Memory Inc. | Method and system for storage of data in non-volatile media |
US9384818B2 (en) * | 2005-04-21 | 2016-07-05 | Violin Memory | Memory power management |
EP2383657A1 (de) * | 2005-04-21 | 2011-11-02 | Violin Memory, Inc. | Verbindungssystem |
US9582449B2 (en) | 2005-04-21 | 2017-02-28 | Violin Memory, Inc. | Interconnection system |
US9286198B2 (en) | 2005-04-21 | 2016-03-15 | Violin Memory | Method and system for storage of data in non-volatile media |
US8789021B2 (en) * | 2005-06-30 | 2014-07-22 | International Business Machines Corporation | Method and apparatus for object-oriented load testing of computing systems |
US7475056B2 (en) * | 2005-08-11 | 2009-01-06 | Oracle International Corporation | Query processing in a parallel single cursor model on multi-instance configurations, using hints |
US8566928B2 (en) | 2005-10-27 | 2013-10-22 | Georgia Tech Research Corporation | Method and system for detecting and responding to attacking networks |
JP2009524134A (ja) | 2006-01-18 | 2009-06-25 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | ハードウェア定義方法 |
US8516444B2 (en) * | 2006-02-23 | 2013-08-20 | International Business Machines Corporation | Debugging a high performance computing program |
US7697443B2 (en) * | 2006-04-13 | 2010-04-13 | International Business Machines Corporation | Locating hardware faults in a parallel computer |
US7796527B2 (en) * | 2006-04-13 | 2010-09-14 | International Business Machines Corporation | Computer hardware fault administration |
US20070242611A1 (en) * | 2006-04-13 | 2007-10-18 | Archer Charles J | Computer Hardware Fault Diagnosis |
US7779016B2 (en) * | 2006-09-14 | 2010-08-17 | International Business Machines Corporation | Parallel execution of operations for a partitioned binary radix tree on a parallel computer |
US8028186B2 (en) | 2006-10-23 | 2011-09-27 | Violin Memory, Inc. | Skew management in an interconnection system |
US8032899B2 (en) | 2006-10-26 | 2011-10-04 | International Business Machines Corporation | Providing policy-based operating system services in a hypervisor on a computing system |
US8656448B2 (en) * | 2006-10-26 | 2014-02-18 | International Business Machines Corporation | Providing policy-based application services to an application running on a computing system |
US8713582B2 (en) * | 2006-10-26 | 2014-04-29 | International Business Machines Corporation | Providing policy-based operating system services in an operating system on a computing system |
US9330230B2 (en) * | 2007-04-19 | 2016-05-03 | International Business Machines Corporation | Validating a cabling topology in a distributed computing system |
US7958274B2 (en) * | 2007-06-18 | 2011-06-07 | International Business Machines Corporation | Heuristic status polling |
US8296430B2 (en) | 2007-06-18 | 2012-10-23 | International Business Machines Corporation | Administering an epoch initiated for remote memory access |
US7831866B2 (en) * | 2007-08-02 | 2010-11-09 | International Business Machines Corporation | Link failure detection in a parallel computer |
US20090080339A1 (en) * | 2007-09-20 | 2009-03-26 | Nicholas Geoffrey Duffield | Multicast-based inference of temporal delay characteristics in packet data networks |
US8233402B2 (en) | 2007-09-20 | 2012-07-31 | At&T Intellectual Property Ii, L.P. | Multicast-based inference of temporal loss characteristics in packet data networks |
US8218811B2 (en) | 2007-09-28 | 2012-07-10 | Uti Limited Partnership | Method and system for video interaction based on motion swarms |
US9065839B2 (en) | 2007-10-02 | 2015-06-23 | International Business Machines Corporation | Minimally buffered data transfers between nodes in a data communications network |
US7984450B2 (en) * | 2007-11-28 | 2011-07-19 | International Business Machines Corporation | Dispatching packets on a global combining network of a parallel computer |
US8266168B2 (en) | 2008-04-24 | 2012-09-11 | Lexisnexis Risk & Information Analytics Group Inc. | Database systems and methods for linking records and entity representations with sufficiently high confidence |
US8190616B2 (en) * | 2008-07-02 | 2012-05-29 | Lexisnexis Risk & Information Analytics Group Inc. | Statistical measure and calibration of reflexive, symmetric and transitive fuzzy search criteria where one or both of the search criteria and database is incomplete |
WO2010011813A1 (en) * | 2008-07-23 | 2010-01-28 | Alkermes, Inc. | Complex of trospium and pharmaceutical compositions thereof |
US7895260B2 (en) * | 2008-07-28 | 2011-02-22 | International Business Machines Corporation | Processing data access requests among a plurality of compute nodes |
US10027688B2 (en) * | 2008-08-11 | 2018-07-17 | Damballa, Inc. | Method and system for detecting malicious and/or botnet-related domain names |
US8755515B1 (en) | 2008-09-29 | 2014-06-17 | Wai Wu | Parallel signal processing system and method |
US9411859B2 (en) | 2009-12-14 | 2016-08-09 | Lexisnexis Risk Solutions Fl Inc | External linking based on hierarchical level weightings |
US8504875B2 (en) * | 2009-12-28 | 2013-08-06 | International Business Machines Corporation | Debugging module to load error decoding logic from firmware and to execute logic in response to an error |
US8578497B2 (en) | 2010-01-06 | 2013-11-05 | Damballa, Inc. | Method and system for detecting malware |
US8826438B2 (en) | 2010-01-19 | 2014-09-02 | Damballa, Inc. | Method and system for network-based detecting of malware from behavioral clustering |
US8365186B2 (en) | 2010-04-14 | 2013-01-29 | International Business Machines Corporation | Runtime optimization of an application executing on a parallel computer |
US8504730B2 (en) | 2010-07-30 | 2013-08-06 | International Business Machines Corporation | Administering connection identifiers for collective operations in a parallel computer |
US9189505B2 (en) | 2010-08-09 | 2015-11-17 | Lexisnexis Risk Data Management, Inc. | System of and method for entity representation splitting without the need for human interaction |
US9516058B2 (en) | 2010-08-10 | 2016-12-06 | Damballa, Inc. | Method and system for determining whether domain names are legitimate or malicious |
US8565120B2 (en) | 2011-01-05 | 2013-10-22 | International Business Machines Corporation | Locality mapping in a distributed processing system |
US9317637B2 (en) | 2011-01-14 | 2016-04-19 | International Business Machines Corporation | Distributed hardware device simulation |
US8631489B2 (en) | 2011-02-01 | 2014-01-14 | Damballa, Inc. | Method and system for detecting malicious domain names at an upper DNS hierarchy |
US8689228B2 (en) | 2011-07-19 | 2014-04-01 | International Business Machines Corporation | Identifying data communications algorithms of all other tasks in a single collective operation in a distributed processing system |
US9250948B2 (en) | 2011-09-13 | 2016-02-02 | International Business Machines Corporation | Establishing a group of endpoints in a parallel computer |
US10547674B2 (en) | 2012-08-27 | 2020-01-28 | Help/Systems, Llc | Methods and systems for network flow analysis |
US9894088B2 (en) | 2012-08-31 | 2018-02-13 | Damballa, Inc. | Data mining to identify malicious activity |
US9166994B2 (en) | 2012-08-31 | 2015-10-20 | Damballa, Inc. | Automation discovery to identify malicious activity |
US10084806B2 (en) | 2012-08-31 | 2018-09-25 | Damballa, Inc. | Traffic simulation to identify malicious activity |
US9680861B2 (en) | 2012-08-31 | 2017-06-13 | Damballa, Inc. | Historical analysis to identify malicious activity |
US9571511B2 (en) | 2013-06-14 | 2017-02-14 | Damballa, Inc. | Systems and methods for traffic classification |
US10061531B2 (en) | 2015-01-29 | 2018-08-28 | Knuedge Incorporated | Uniform system wide addressing for a computing system |
US9552327B2 (en) | 2015-01-29 | 2017-01-24 | Knuedge Incorporated | Memory controller for a network on a chip device |
US20160224398A1 (en) * | 2015-01-29 | 2016-08-04 | Intellisis Corporation | Synchronization in a Multi-Processor Computing System |
US9930065B2 (en) | 2015-03-25 | 2018-03-27 | University Of Georgia Research Foundation, Inc. | Measuring, categorizing, and/or mitigating malware distribution paths |
EP3451197B1 (de) * | 2015-05-13 | 2021-08-25 | Huawei Technologies Co., Ltd. | System und verfahren zur erzeugung von selektiven schnappschüssen einer datenbank |
US10027583B2 (en) | 2016-03-22 | 2018-07-17 | Knuedge Incorporated | Chained packet sequences in a network on a chip architecture |
US10346049B2 (en) | 2016-04-29 | 2019-07-09 | Friday Harbor Llc | Distributed contiguous reads in a network on a chip architecture |
CN109960186B (zh) * | 2017-12-25 | 2022-01-07 | 紫石能源有限公司 | 控制流程的处理方法、装置、电子设备和存储介质 |
US11693832B2 (en) * | 2018-03-15 | 2023-07-04 | Vmware, Inc. | Flattening of hierarchical data into a relational schema in a computing system |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4101960A (en) * | 1977-03-29 | 1978-07-18 | Burroughs Corporation | Scientific processor |
US4247892A (en) * | 1978-10-12 | 1981-01-27 | Lawrence Patrick N | Arrays of machines such as computers |
US4251861A (en) * | 1978-10-27 | 1981-02-17 | Mago Gyula A | Cellular network of processors |
DE2920994A1 (de) * | 1979-05-23 | 1980-11-27 | Siemens Ag | Datensende/-empfangseinrichtung mit parallel/seriell- und seriell/parallel- zeichenumsetzung, insbesondere zum datenaustausch zwischen kommunizierenden datenverarbeitungsanlagen |
US4345309A (en) * | 1980-01-28 | 1982-08-17 | Digital Equipment Corporation | Relating to cached multiprocessor system with pipeline timing |
US4435758A (en) * | 1980-03-10 | 1984-03-06 | International Business Machines Corporation | Method for conditional branch execution in SIMD vector processors |
US4344134A (en) * | 1980-06-30 | 1982-08-10 | Burroughs Corporation | Partitionable parallel processor |
US4412285A (en) * | 1981-04-01 | 1983-10-25 | Teradata Corporation | Multiprocessor intercommunication system and method |
US4445171A (en) * | 1981-04-01 | 1984-04-24 | Teradata Corporation | Data processing systems and methods |
US4583164A (en) * | 1981-08-19 | 1986-04-15 | Tolle Donald M | Syntactically self-structuring cellular computer |
US4466060A (en) * | 1982-02-11 | 1984-08-14 | At&T Bell Telephone Laboratories, Incorporated | Message routing in a computer network |
DE3215080A1 (de) * | 1982-04-22 | 1983-10-27 | Siemens AG, 1000 Berlin und 8000 München | Anordnung zur kopplung von digitalen verarbeitungseinheiten |
US4622632A (en) * | 1982-08-18 | 1986-11-11 | Board Of Regents, University Of Washington | Data processing system having a pyramidal array of processors |
-
1986
- 1986-09-02 US US06/902,547 patent/US4860201A/en not_active Expired - Lifetime
-
1987
- 1987-08-27 DE DE87906327T patent/DE3787886T2/de not_active Expired - Fee Related
- 1987-08-27 EP EP87906327A patent/EP0279854B1/de not_active Expired - Lifetime
- 1987-08-27 JP JP62505775A patent/JP2763886B2/ja not_active Expired - Lifetime
- 1987-08-27 AU AU80328/87A patent/AU598425B2/en not_active Ceased
- 1987-08-27 KR KR1019880700484A patent/KR930009619B1/ko not_active IP Right Cessation
- 1987-08-27 WO PCT/US1987/002107 patent/WO1988001771A1/en active IP Right Grant
- 1987-08-31 CA CA000545782A patent/CA1291828C/en not_active Expired - Lifetime
- 1987-09-02 IL IL83734A patent/IL83734A/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
AU8032887A (en) | 1988-03-24 |
WO1988001771A1 (en) | 1988-03-10 |
DE3787886D1 (de) | 1993-11-25 |
CA1291828C (en) | 1991-11-05 |
KR930009619B1 (ko) | 1993-10-07 |
KR880701918A (ko) | 1988-11-07 |
AU598425B2 (en) | 1990-06-21 |
IL83734A0 (en) | 1988-02-29 |
EP0279854B1 (de) | 1993-10-20 |
JP2763886B2 (ja) | 1998-06-11 |
US4860201A (en) | 1989-08-22 |
JPH01501261A (ja) | 1989-04-27 |
EP0279854A4 (de) | 1990-01-26 |
EP0279854A1 (de) | 1988-08-31 |
IL83734A (en) | 1991-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3787886T2 (de) | Parallelprozessor mit binärer baumstruktur. | |
DE69132495T2 (de) | Verteilter Verarbeitungsspeicher | |
DE19722365B4 (de) | Rekonfigurierbares Rechenbauelement | |
DE3751205T2 (de) | Paralleles verarbeitungssystem und verfahren zu dessen anwendung. | |
DE69419524T2 (de) | Sperrsynchronisierung für verteilte speicher-massivparallelrechner | |
DE69231497T2 (de) | Massivparalleles rechnersystem mit eingangs-ausgangsanordnung | |
DE69033272T2 (de) | Verbundarchitektur für ein hochgradig paralleles skalar/vektor-multiprozessorsystem | |
DE69619366T2 (de) | Sperr- und eurekasynchronisierungsarchitektur für multiprozessoren | |
DE69322538T2 (de) | Methode und Prozessor zur Bearbeitung eines Programmes in Parallelbearbeitung | |
DE102013207049B4 (de) | Überwachen der Datenstrompufferung zur Optimierung der Operatorverarbeitung | |
DE68924934T2 (de) | Parallelsynchronisationstechnik. | |
EP1146432B1 (de) | Umkonfigurierungs-Verfahren für programmierbare Bausteine während der Laufzeit | |
DE69622776T2 (de) | Von Multitasking gebrauch machendes Sortieren | |
DE68927907T2 (de) | Einchipmikrorechner | |
DE69032381T2 (de) | Vorrichtung und Verfahren für die kollektive Verzweigung in einem Mehrbefehlsstrommultiprozessor | |
DE69021659T2 (de) | Verfahren und Vorrichtung zur reihenweisen Parallelprogrammfehlersuche. | |
DE3852115T2 (de) | Simulationsverfahren für Programme. | |
DE102012216029B4 (de) | Ein skalierbares anpassungsfähiges map-reduce-rahmenwerk mit verteilten daten | |
DE3049437A1 (de) | Matrixanordnung einer vielzahl von verarbeitungselementen fuer parallelprozessoren | |
DE112019005288T5 (de) | EFFEKTIVES UND SKALIERBARES AUFBAUEN UND SONDIEREN VON HASHTABELLEN UNTER VERWENDUNG MEHRERER GPUs | |
DE68923026T2 (de) | Speicherdiagnosegerät und Verfahren. | |
DE69106384T2 (de) | Skalierbares parallel-vektorrechnersystem. | |
DE3338333A1 (de) | Logiksimulatorgeraet zur gueltigkeitspruefung einer logikstruktur | |
DE10110504A1 (de) | Controller für Prozessoren mit mehreren Befehlsthreads | |
DE68927075T2 (de) | Verfahren und System zum Durchführen von Argumentations- aufgaben unter Verwendung von Lehrsätzen mit Hilfe von parallel betriebenen Prozessoren |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |