DE3620982A1 - Ein-befehl, mehrfach-datenstrom (simd) computersystem - Google Patents

Ein-befehl, mehrfach-datenstrom (simd) computersystem

Info

Publication number
DE3620982A1
DE3620982A1 DE19863620982 DE3620982A DE3620982A1 DE 3620982 A1 DE3620982 A1 DE 3620982A1 DE 19863620982 DE19863620982 DE 19863620982 DE 3620982 A DE3620982 A DE 3620982A DE 3620982 A1 DE3620982 A1 DE 3620982A1
Authority
DE
Germany
Prior art keywords
command
processors
instruction
test
processor
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.)
Withdrawn
Application number
DE19863620982
Other languages
English (en)
Inventor
Adam E Levinthal
Thomas K Porter
Thomas D S Duff
Loren C Carpenter
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Pixar
Original Assignee
Pixar
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Pixar filed Critical Pixar
Publication of DE3620982A1 publication Critical patent/DE3620982A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Image Processing (AREA)

Description

Die Erfindung bezieht sich allgemein auf eine parallele Daten­ verarbeitung und hierfür geeignete Computersysteme und insbe­ sondere auf ein Computersystem, bei dem jeder von mehreren parallelen Prozessoren gleichzeitig denselben Befehl an unter­ schiedlichen Daten ausführt. Ein solches Computersystem wird als ein Ein-Befehl, Mehrfach-Datenstrom (SIMD)-Prozessor be­ zeichnet. Genauer gesagt, bezieht sich die Erfindung auf ein Computersystem der im Oberbegriff des Anspruchs 1 angegebenen Art.
Es gibt viele Datenverarbeitungsanwendungen, bei denen mehrere Datenströme in der gleichen Weise verarbeitet werden können. Ein Bespiel ist das Gebiet von Computergraphiken, wo getrennte Video Rot-, Grün-, Blau- und Alpha-digitale Signale in identi­ scher Weise verarbeitet werden können. Um die höchste Verar­ beitungsfrequenz zu erreichen, ist es zweckmäßig, diese vier Datenströme gleichzeitig mit derselben Befehlsfolge zu verar­ beiten. Dies bedeutet, daß zu jedem Zeitpunkt getrennte rote, grüne, blaue und Alpha-Daten für ein besonderes Farbdisplay­ -Bildelement (color display pixel) gleichzeitig verarbeitet werden.
Eine parallele Verarbeitung ist besonders schnell, wenn das an den parallelen Datenströmen ausgeführte Programm eine unverän­ derte Folge von Anweisungen ist. Üblicherweise enthält das Steuerprogramm jedoch bedingte Anweisungen, deren Ausführung von den Daten in jedem der parallelen Prozessoren abhängig ist. Da sich die ausgeführten Daten in jedem Strom unterschei­ den, müssen in diesem Falle Vorkehrungen dafür getroffen wer­ den, daß diejenigen Prozessoren, deren Daten die Bedingung der Programmanweisung nicht erfüllen, während derjenigen Zeit inaktiviert werden, in der die restlichen Prozessoren die spezielle Anweisung ausführen. Bekanntlich ist eine WHILE-DO Anweisung das zum Implementieren aller möglichen Flußsteuer­ strukturen benötigte Minimum.
Ein übliches Beispiel einer solchen bedingten Programmanwei­ sung ist eine "IF-THEN" ("WENN-DANN") Anweisung: Dies bedeu­ tet, daß die einzelnen Prozessoren alle den Befehl erhalten, eine bestimmte Manipulation ihrer einzelnen Datenströme durch­ zuführen, jedoch nur "wenn" ihre Daten eine in der Programman­ weisung zum Ausdruck kommende bestimmte Bedingung erfüllen. Solche Prozessoren, deren Daten zu diesem Zeitpunkt die Bedin­ gung nicht erfüllen, führen den Befehl nicht aus. Ein "WENN­ -DANN"-Befehl wird häufig erweitert durch einen "ELSE"­ -("SONST")-Modifikator; dies bedeutet, daß diejenigen Prozes­ soren, die die "WENN-DANN"-Anweisung nicht ausführen, nachfol­ gend zum Ausführen einer anderen Operation an ihren Daten zum nächsten Zeitpunkt angewiesen werden, währenddessen die die "WENN-DANN"-Anweisung ausführenden Prozessoren inaktiviert sind.
Der Erfindung liegt die Aufgabe zugrunde, bei dem Computersy­ stem der eingangs genannten Art die Steuerung der Auswahl derjenigen Prozessoren aus mehreren parallelen Prozessoren, welche spezielle bedingte Anweisungen ausführen sollen, zu verbessern.
Zur Lösung dieser Aufgabe sieht die Erfindung die kennzeich­ nenden Merkmale des Anspruchs 1 vor. Jeder der parallelen Prozessoren hat ein separates Steuerelement, z. B. ein Bit eines Steuerregisters, welches den Prozessor aktiviert, um einen allen Prozessoren gemeinsamen Befehl auszuführen, wenn sich das Element in einem ersten Zustand befindet; wenn sich dagegen das Element in einem anderen Zustand befindet, entak­ tiviert es den Prozessor und unterbindet damit die Ausführung des Befehls. Der Zustand jedes Steuerelements ist so einge­ stellt, daß die Ausführung einer speziellen Anweisung in Ab­ hängigkeit davon gesteuert wird, ob die Daten für diesen Pro­ zessor den Test eines früheren Befehls, beispielsweise eines "WENN-DANN"-Befehls bestehen bzw. erfüllen. Bei einer nachfol­ genden komplementären Operation, wie sie bei einer "ELSE" ("SONST")-Instruktion ausgeführt wird, werden die Zustände des Steuerelements umgekehrt, so daß diejenigen Prozessoren, wel­ che die erste Anweisung nicht ausgeführt haben, die nachfol­ gende Anweisung ausführen, und umgekehrt.
Um die Anordnung zur verschachtelten (nested) Ausführung sol­ cher komplementären Arten von Befehlen zu befähigen, ist außerdem ein Speicher (bei einem bevorzugten Ausführungsbei­ spiel ein Stapelspeicher) vorgesehen, um die Zustände der individuellen Steuerelemente zu speichern, wenn die verschach­ telte bedingte Anweisung auftritt. Wenn die Ausführung des geschachtelten Befehls beendet ist, werden die Zustände der Steuerelemente zum Zeitpunkt der schachtelnden bedingten An­ weisung mit eingespeichert, so daß ihre Verarbeitung fortge­ setzt werden kann.
Im folgenden wird die Erfindung anhand von in der Zeichnung dargestellten Ausführungsbeispielen näher erläutert. In der Zeichnung zeigen:
Fig. 1 ein SIMD-Prozessorsystem in Form eines allgemeinen Blockschaltbilds;
Fig. 2 ein erstes Ausführungsbeispiel der Steuerschaltun­ gen des Systems gemäß Fig. 1;
Fig. 3 und 4 Tabellen zur Veranschaulichung der Opera­ tionsweise des Systems gemäß Fig. 1 bei Implemen­ tierung mit der Steuerschaltung gemäß Fig. 2;
Fig. 5 ein zweites Ausführungsbeispiel der Steuerschal­ tung des Systems gemäß Fig. 1;
Fig. 6 und 7 Tabellen zur Veranschaulichung der Opera­ tionsweise des Systems gemäß Fig. 1 bei Implemen­ tierung mit der Steuerschaltung gemäß Fig. 5; und
Fig. 8 die Schaltungsanordnung einer zu dem System gemäß Fig. 1 gehörigen Logik.
In Fig. 1 ist die Gesamtarchitektur eines von den Aspekten der vorliegenden Erfindung Gebrauch machenden Computersystems gezeigt. Getrennte Prozessoren 11, 13, 15 bzw. 17 erhalten unabhängige Datenströme über Eingabeleitungen 19, 21, 23 bzw. 25. In ähnlicher Weise sind unabhängige Daten-Ausgabeleitungen 27, 29, 31 bzw. 33 als Ausgänge der Prozessorelemente vorgese­ hen. Vier parallele Datenprozessoren sind bei diesem Ausfüh­ rungsbeispiel dargestellt; es ist jedoch klar, daß die Prinzi­ pien der Erfindung auf ein Parallelsystem mit beliebig vielen Prozessorelementen anwendbar sind. Vier Prozessoren werden zweckmäßigerweise in Graphik-Computersystemen verwendet, wobei ein Kanal zur Verarbeitung von Daten der Rotkomponente eines Videosignals, ein anderer für die grüne Komponente, ein drit­ ter für die Blaukomponente und ein vierter für eine Alphakom­ ponente vorgesehen ist, wobei letztere andere Informationen des Bildes liefert. Eine parallele Verarbeitung ist besonders für graphische Anwendungen geeignet, da dabei eine Hochge­ schwindigkeitsverarbeitung erforderlich ist und dieselbe Folge von Programmbefehlen gleichzeitig auf allen vier Datenwegen ausführt wird.
Es gibt jedoch gewisse Programmbefehle, die es erforderlich machen, daß ein oder mehrere Prozessorelemente an der Ausfüh­ rung eines speziellen Programmbefehls nicht beteiligt werden, obwohl der Programmbefehl gleichzeitig über einen Befehlsbus 35 an alle vier Prozessorelemente 11, 13, 15 und 17 angelegt wird. In Zuordnung zu jedem der vier Prozessorelemente ist eine Steuerschaltung, wie die Schaltung 37, vorgesehen, welche die Operation des zugehörigen Prozessorelements, z. B. 11, steuert, um diejenigen der vier Prozessorelemente auszuwählen, welche zur Ausführung eines speziellen Befehls aktiviert wer­ den. Eine Leitung 39 führt ein Signal zum Prozessorelement 11, das bestimmt, ob letzteres zur Ausführung eines auf dem Bus 35 anstehenden Befehls aktiviert ist oder nicht. So bewirkt bei­ spielsweise eine für eine logische "1" repräsentative Spannung an der Leitung 39, daß das Prozessorelement den Befehl aus­ führt, während eine für eine logische "0" repräsentative Span­ nung das Prozessorelement während der Ausführung des speziel­ len Befehls durch andere Prozessorelemente entaktiviert.
Jede der vier Steuerschaltungen des Systems gemäß Fig. 1, z. B. die Schaltung 37, bestimmt auf der Basis vorgegebener Informationen, ob das zugehörige Prozessorelement, z. B. Pro­ zessor 11, aktiviert wird oder nicht. Eine dieser Information­ en ist eine Anfangsbedingung, die über eine Setzleitung 41 von außen an die Steuerschaltungen angelegt wird. Ein anderer Teil der Informationen ist ein über einen Bus 43 zugeführter Zu­ standsbefehl, der für Prozessorbefehle auf dem Bus 35, die die Ausführung des Befehls durch weniger als alle Prozessorelemen­ te erforderlich machen, zusätzliche Befehle zur Bestimmung des Zustandes des Aktivierungssignals auf der Leitung 39 angibt. Ein letzter Teil der Information ist ein wahres "1" oder "un­ wahres" "0"-Signal auf einer Leitung 45, welches das Ergebnis eines Tests angibt, der von dem Prozessorelement 11 an dessen Daten in Abhängigkeit von einem laufenden oder unmittelbar vorhergehenden Befehl auf dem Bus 35 durchgeführt wird. Jede der vier in Fig. 1 gezeigten Steuerschaltungen arbeitet ähn­ lich, mit der Ausnahme, daß sich das das Testergebnis darstel­ lende Eingängssignal vom zugehörigen Prozessorelement unter­ scheiden kann und daher dazu führt, daß zu einem vorgegebenen Zeitpunkt einige Prozessoren aktiviert und andere entaktiviert sind.
Die Funktion der Steuerschaltungen im System gemäß Fig. 1 wird unter Bezugnahme auf zwei bevorzugte Ausführungsbeispiele erläutert, von denen eines in den Fig. 2 bis 4 und das andere in den Fig. 5 bis 7 dargestellt ist. Vor der Be­ schreibung dieser Ausführungsbeispiele sollen einige allgemei­ ne Erläuterungen zu dem System gemäß Fig. 1 gegeben werden. Die Prozessorbefehle im Bus 35 und die Zustandsbefehle im Bus 43 kommen von einer mikro-programmierten Steuereinheit 47, z. B. einem Mikro-Programmzuordner (micro-sequencer). Eine mikroprogrammierte Steuereinheit besteht aus einem Mikropro­ grammspeicher und einer Anordnung zur Bestimmung der Adresse des nächsten Mikrobefehls, deren Implementierungen im Stande der Technik bekannt sind.
Eine Logikschaltung 49 hat als Eingänge die einzelnen Tester­ gebnis-Leitungen jedes der Prozessorelemente. Die Logikschal­ tung 49 erzeugt einen Bedingungscode in einer Ausgangsleitung 51, wenn die Signale in den Testergebniseingangsleitungen einer bestimmten oder mehreren Kombinationen entsprechen. Das Signal in der Leitung 51 wird an den Bedingungscodeeingang des Mikroprogrammzuordners 47 angelegt und ermöglicht dadurch eine Änderung der Befehlsfolge in Abhängigkeit von einer besonderen Kombination von Testergebnis-Ausgangssignalen. Ein anderer Eingang der Logikschaltung 49 ist über eine Leitung 53 ein Befehlsfeld des Mikroprogramm-Zuordners (micro-sequencer) 47.
Bei einer speziellen Implementierung des Systems gemäß Fig. 1 zur Farbgraphik-Computerverarbeitung enthält jedes der Prozes­ sorelemente als Hauptkomponenten eine 16-Bit-Multiplizierein­ richtung und ein 16-Bit-Rechen- und Leitwerk (ALU). Eine ex­ trem schnelle Verarbeitung ist in Computergraphikanwendungen wegen der großen Zahl von Pixeln in jedem Rahmen eines Bildes erwünscht, wobei jedes Pixel durch vier 16-Bit-Worte definiert ist.
Im folgenden wird auf Fig. 2 Bezug genommen, in der eine Schaltung gezeigt ist, welche gemäß einem Ausführungsbeispiel der Erfindung zur Verwendung jeweils als eine der in Fig. 1 gezeigten Steuerschaltungen, z. B. der Schaltung 37, geeignet ist. Eine Flip-Flop-Schaltung 61 ist ausgangsseitig mit der Aktivierungsleitung 39 verbunden. Eine Eingangsleitung 63 ist mit einem Ausgang eines 4-Positions-Multiplexers 65 verbunden. Der Multiplexer 65 hat vier separate Eingänge 0 . . . 3. Der Zu­ standsbefehl im Bus 43 wählt aus, welcher der Eingänge 0-3 mit dem Ausgang 63 verbunden wird. Der 0-Eingang des Multiplexers ist direkt mit dem Ausgang des Flip-Flops 61 verbunden, wo­ durch der bestehende Zustand des Flip-Flops 61 gehalten werden kann, wenn der Multiplexer 65 auf seinen 0-Eingang geschaltet wird. Wenn, umgekehrt, der Multiplexer auf seinen Eingang 3 geschaltet wird, wird der Zustand des Flip-Flops 61 geändert, da sein Ausgang über einen Inverter 67 zu seinem Eingang zu­ rückgeführt ist. Die Nummer 1 und 2-Eingangspositionen des Multiplexers 65 sind mit der Testergebnisleitung 45 bzw. der Setzleitung 41 verbunden, die zuvor unter Bezugnahme auf Fig. 1 beschrieben worden sind.
Die speziellen, hier beschriebenen Schaltungsbeispiele sind zum Ausführen von WENN-DANN-SONST (IF-THEN-ELSE)-Programmbe­ fehlen besonders geeignet. Die Tabelle gemäß Fig. 3 faßt die vier möglichen Zustände der Steuerungschaltung gemäß Fig. 2 in Abhängigkeit von dem Zustandsbefehl auf dem Bus 43 zusam­ men. Wenn der Multiplexer 65 auf seinen 0-Eingang geschaltet ist, wird das Ausgangssignal auf der Leitung 39 gehalten, das ist die gewünschte Bedingung, wenn die von dem Befehl auf dem Bus 35 in Fig. 1 angeordnete logische Operation das Ausführen einer Anweisung ist. Der nächste Zustandsbefehl, bei dem der 1-Eingang des Multiplexers 65 gewählt ist, bewirkt in der zuvor beschriebenen Weise eine Speicherung des Testergebnisses des zugehörigen Prozessorelements, eine Operation, welche einen IF(WENN)-Befehl im Bus 35 begleitet. Der Zustandsbefehl 2 bewirkt ein Setzen des Flip-Flops 61, ein Zustandsbefehl auf Bus 43, der einen END IF-(ENDE WENN)-Befehl im Prozessorele­ ment-Befehlsbus 35 begleitet. Schließlich bewirkt ein Zu­ standsbefehl 3, daß das Flip-Flop 61 seinen Zustand ändert, um die zuvor entaktivierten Prozessoren zu aktivieren und, umge­ kehrt, die zuvor aktivierten Prozessoren zu entaktivieren. Der Zustandsbefehl 3 wird an den Bus 43 gleichzeitig mit dem SONST (ELSE)-Befehl im Bus 35 angelegt. Ein Mikrocode im Mikropro­ grammzuordner 47 sorgt dafür, daß die Befehle in den Bussen 35 und 43 entsprechend der Tabelle gemäß Fig. 3 zu anderen be­ sonderen Erfordernissen eines Anwendungsfalls korrespondie­ ren.
Die Tabelle gemäß Figur verdeutlicht die Operationsweise der Anordnung gemäß Fig. 1 bei Verwendung der Steuerschaltung gemäß Fig. 2 für ein spezielles Beispiel. Es sei das Beispiel einer IF (WENN)-Anweisung betrachtet, die fragt, ob die Daten eingabe zu jedem Prozessorelement (D I) größer als 1 ist. Wie in Zeile 2 der Tabelle gemäß Fig. 4 gezeigt ist, ist in der "Testergebnis"-Spalte angenommen, daß die ersten und dritten Prozessorelemente den Test bestanden haben und daher eine logische "1" an ihren zugehörigen Testergebnis-Ausgabeleitun­ gen 45 haben, während die zweiten und vierten Prozessoren den Test nicht bestanden und daher ein logisches Testergebnissi­ gnal von "0" haben. Obwohl jeder Prozessor denselben IF bzw. WENN-Befehl ausführt, können die Ergebnisse des von jedem Prozessor durchgeführten Tests wegen der Unterschiedlichkeit der von jedem Prozessor verarbeiteten Daten unterschiedlich sein.
Zum Zeitpunkt der Ausführung des IF-Befehls bewirkt der Zu­ standsbefehl auf dem Bus 43, daß der Multiplexer 65 jeder der Steuerschaltungen des Systems gemäß Fig. 1 in seine Position 1 umschaltet, um die Testergebnisse von den zugehörigen Pro­ zessoren aufnehmen zu können. Diese Testergebnisse, und zwar sowohl das positive Testergebnis "1" als auch das negative Testergebnis "0", werden sodann in den einzelnen Flip-Flops gespeichert. Die Aktivierungssignalausgänge der vier Flip­ -Flops sind als Aktivierungssignale in der Tabelle gemäß Fig. 4 angegeben und werden auch als "run flags" bezeichnet. In Zeile 2 der Tabelle gemäß Fig. 4 sorgen die run flags dafür, daß die Prozessorelemente, welche den Test bestanden haben, aktiviert werden und diejenige, welche den Test nicht bestan­ den haben, entaktiviert werden. Die aktivierten Prozessorele­ mente werden danach entsprechend Zeile 3 der Tabelle gemäß Fig. 4 zur Ausführung einer Anweisung veranlaßt, die in dem beschriebenen Beispiel das Setzen des Datenausgangs (D 0) = 1 bei den aktivierten Prozessorelementen ist. Die entaktivierten Prozessorelemente sind zu diesem Zeitpunkt funktionslos.
Ein ELSE (SONST)-Befehl wird danach an alle Prozessorelemente zur Ausführung gegeben, was bedeutet, daß diejenigen Prozes­ soren, welche den IF (WENN)-Test nicht bestanden haben, jetzt aufgerufen werden, etwas anderes zu tun, wie in den Zeilen 4 und 5 der Tabelle gemäß Fig. 4 angegeben ist. Der ELSE-Pro­ zessorbefehl wird von dem Zustandsbefehl 3 begleitet, der dafür sorgt, daß alle Steuerschaltungen (Fig. 2) die Zustände ihrer Flip-Flops invertieren. Dies ist durch Vergleich der run flags in den Zeilen 3 und 4 der Fig. 4 zu sehen, von denen die eine der Komplementärwert der anderen ist. Sobald die zuvor entaktivierten Prozessoren aktiviert werden, wird eine Anweisung entsprechend Zeile 5 der Fig. 4 ausgeführt, wobei in dem beschriebenen Ausführungsbeispiel der Ausgangsdatenwert gleich dem Eingabedatenwert gesetzt wird. Das Ergebnis der in Fig. 4 dargestellten Routine ist daher, den Wert der Daten­ ausgabeleitungen 27 und 31 gleich 1 und der Ausgabeleitungen 29 und 33 gleich dem Wert der entsprechenden Dateneingabe zu setzen. Eine komplementäre Operation der Prozessoren zur Aus­ führung der IF und ELSE-Befehle wird durch eine einfache Maß­ nahme in jeder der Steuerschaltungen zum Invertieren aller ihrer Zustände in Abhängigkeit von einem einzigen Zustands­ befehl ermöglicht.
Die Logikschaltungen 49 gemäß Fig. 1 sind zweckmäßig, um Bedingungen festzustellen, bei denen aufgrund einer besonderen Kombination von Eingabedaten gewisse Befehle nicht ausgeführt zu werden brauchen. In einem solchen Fall wird die mikropro­ grammierte Steuereinheit 47 veranlaßt, die unausführbaren Befehle auszulassen. Logikschaltungen 49 können bei Implemen­ tierungen fortgelassen werden, bei denen unausgeführte Be­ fehlsfolgen auftreten dürfen. Im Beispiel gemäß Fig. 4 be­ steht dann, wenn die in Zeile 2 aufgeführten Testergebnisse alle 0 sind, keine Notwendigkeit, die Anweisung gemäß Zeile 3 auszuführen da alle Prozessoren inaktiv sind. Für dieses be­ sondere Beispiel können die Logikschaltungen 49 daher so aus­ gebildet sein, daß sie feststellen, wann alle Prozessor-Te­ stergebnisse unwahr (0) sind, wobei eine Änderung des Bedin­ gungscodes in Leitung 51 mit der sich ergebenden Änderung der Befehlsfolge durch die Mikroprogramm-Steuereinheit 47 herbei­ geführt wird. Auch wenn die Testergebnisse alle wahr (1) sind, brauchen die Befehle gemäß Zeilen 4 und 5 in Fig. 4 nicht ausgeführt zu werden, so daß der Bedingungcode in der Leitung 51 bewirken kann, daß diese Befehlsfolge überbrückt wird. Ein Signal in der Leitung 53 ermöglicht eine Prüfung nach einer unwahren (0) Bedingung oder einer wahren (1) Bedingung. Damit ist die Fähigkeit geschaffen (in Verbindung mit dem Zustands­ befehl auf dem Bus 43), eine oder alle Bedingungen nach wahr oder unwahr zu testen.
Ein Beispiel einer speziellen Logik zur Ausführung dieser Funktionen ist in Fig. 8 dargestellt. Ein ODER-Gatter 52 ist mit seinen Eingängen an die Testergebnisleitungen aller Pro­ zessorelemente angeschaltet. Der Ausgang dieses Gatters bildet einen Eingang eines EXKLUSIV-ODER-Gatters 54, dessen zweiter Eingang durch die Auswahlleitung 53 gebildet ist. Der Ausgang des Gatters 54 bildet die Bedingungscodeleitung 51. Die Funk­ tionsweise des Gatters 54 ist so, daß es das Ausgangssignal des Gatters 52 durchläßt, wenn die Auswahlleitung 53 unwahr (0) ist, und einen Komplementärwert dieses Ausgangssignals entwickelt, wenn die Leitung 53 wahr (1) ist.
Gewisse Anwendungsfälle machen es erforderlich, daß die ein­ zelnen Prozessorelement-Steuerschaltungen einen Befehlssatz verarbeiten, der in einer IF-THEN-ELSE(WENN-DANN-SONST)-Folge von Befehlen verschachtelt ist. Ist dies erforderlich, so werden die run flags, die als Ergebnis der Ausführung des IF-Befehls bestimmt werden, gespeichert, während der verscha­ chtelte Satz von Befehlen ausgeführt wird. Sobald die verscha­ chtelten (nested) Befehle ausgeführt worden sind, werden die gespeicherten run flags aus dem Speicher abgerufen, so daß der Rest des IF-THEN-ELSE-Satzes von Befehlen ausgeführt werden kann.
Die Steuerschaltung gemäß Fig. 5 ermöglicht eine solche ver­ schachtelte Programmbefehlsoperation. Zusätzlich zu der Sy­ stemschaltung gemäß Fig. 1 sind ein Stapelspeicher 81 und zugehörige Steuerdekodierschaltungen 83 vorgesehen. Die Schal­ tungen innerhalb der gestrichelten Umgrenzung der Fig. 5 sind nicht für alle vier Steuerschaltungen der Fig. 1 wiederholt vorgesehen, sondern sind allen diesen Steuerschaltungen ge­ meinsam zugeordnet. Die Dekodierschaltungen 83 sind von Zu­ standsbefehlen im Bus 43 abhängig und bewirken, daß die lau­ fenden Aktivierungssignale (run flags) jeder der Steuerschal­ tungen im Stapelspeicher 81 über Leitungen 85 gespeichert ("push") oder aus dem Speicher über Leitungen 87 ausgelesen ("pop") werden. Bekanntlich lesen ("pop") Stapelspeicher die zuletzt geschriebenen ("pushed") Daten. Jedesmal, wenn Daten eingeschrieben werden und sich bereits Daten im Stapelspeicher befinden, werden die existierenden Daten in einer solchen Weise auf ein niedrigeres Niveau gedrückt, daß sie erst nach den zuletzt eingeschriebenen Daten aus dem Speicher ausgelesen werden können. Mit anderen Worten, die Daten werden in einer Zuerst-Ein-, Zuletzt-Aus-Folge gelesen.
Zurückkommend auf Fig. 5 wird die Schaltungsanordnung jeder der vier Steuerschaltungen gemäß Fig. 1 für dieses Ausfüh­ rungsbespiel beschrieben. Ein Flip-Flop 91 der auch bei der Ausführungsform gemäß Fig. 2 verwendeten Art entwickelt am Ausgang das Aktivierungssignal, ein Bit des 4-Bit run flag. Sein Eingang ist über eine Leitung 93 mit einem Ausgang eines Multiplexers 95 verbunden. Der Multiplexer hat jedoch 5 Posi­ tionen 0-4, d. h. eine mehr als bei dem Ausführungsbeispiel gemäß Fig. 2. Einer dieser Eingänge wird jeweils durch den Zustandsbefehl im Bus 43 ausgewählt bzw. angesteuert und da­ durch mit dem Eingang des Flip-Flops 91 verbunden. Der 0-Ein­ gang ist direkt mit dem Flip-Flop-Ausgang verbunden und dient daher zum Halten des Flip-Flops in jedem Zustand, in welchem es sich beim Umschalten auf diese Position befindet. Eingang 1 des Multiplexers erhält das Ausgangssignal eines UND-Gatters 97, dessen einer Eingang der Ausgang des Flip-Flops 91 und dessen anderer Eingang die Testergebnisleitung 45 des zuge­ hörigen Prozessors ist. Wie in der Tabelle gemäß Fig. 6 ange­ geben ist, wird der Zustandsbefehl 1 auch von den Schaltungen 83 dekodiert, um im obersten Niveau des Stapelspeichers 81 den Ausgang (run flags) der Flip-Flops innerhalb der Steuerschal­ tungen gemäß Fig. 1 zu speichern ("push").
Der Multiplexereingang 2 ist mit der Setzleitung 41 verbunden. Der Eingang 3 ist mit dem Stapelspeicher 81 verbunden, um die Flip-Flops entsprechend dem Speicherinhalt im obersten Niveau des Stapelspeichers zu setzen. Die Dekodierschaltungen 83 bewirken ein Lesen des obersten Datenniveaus des Stapelspei­ chers 81 (pop), wenn der Zustandsbefehl 3 eingeht.
Der letzte Eingang des Multiplexers 95, der in Abhängigkeit von einer Zustandsbefehlsnummer 4 geschaltet wird, erhält das Ausgangssignal eines anderen UND-Gatters 99, dessen zwei Ein­ gänge mit dem Stapelspeicherausgang und über einen Inverter 101 mit dem Ausgang des Flip-Flops 91 verbunden sind. Das Ergebnis ist eine UND-Verknüpfung der im obersten Niveau des Stapelspeichers gespeicherten Daten und eines Komplementärwer­ ts der derzeitigen run flags.
Die Steuerschaltung gemäß Fig. 5, deren Logikoperation in der Tabelle gemäß Fig. 6 gezeigt ist, ist zur Ausführung der Operationsfolge gemäß Fig. 7 besonders geeignet. In dieser Folge wird eine WENN-DANN-SONST (IF-THEN-ELSE)-Folge von Pro­ grammbefehlen in den Zeilen 1, 2, 3, 9, 10, 11, 17, 18 und 19 ausge­ führt. Verschachtelt innerhalb der WENN oder SONST-Abschnitte dieses Satzes von Befehlen ist eine weitere WENN-DANN-SONST­ -Folge von Befehlen in den Zeilen 4-8. In ähnlicher Weise ist ein zweiter Satz solcher Anweisungen in den Zeilen 12-16 in­ nerhalb der Basis-Befehlsfolge verschachtelt. In jeder drei WENN-DANN-SONST-Folgen von Befehlen wird ein anderes Tester­ gebnis angenommen, wie in der "Testergebnis"-Spalte in Fig. 7 gezeigt ist. Diese unterschiedlichen Testergebnisse ergeben unterschiedliche run flags für jede der drei IF-THEN-ELSE-Fol­ gen von Befehlen. Die gestrichelten Pfeile zeigen den Fluß von run flag Bits im Zuge der Operation des Stapelspeichers 81, wobei die nach rechts weisenden Pfeile das Ergebnis einer push-Operation und die allgemein etwa nach links weisenden Pfeile das Ergebnis einer pop-Operation sind.

Claims (4)

1. Computersystem mit mehreren Prozessoren (11, 13, 15, 17), die jeweils in einem anderen Datenweg (19-27, 21-29, 23-31, 25-33) arbeiten und so geschaltet sind, daß ihnen zu jedem Zeitpunkt ein gemeinsamer Befehl zuführbar ist, und mit einer Anordnung zur Ausführung wenigstens erster und zweiter Befehle in zeitlicher Folge, wobei der erste Befehl einen Test der Daten in den verschiedenen Datenwegen in Bezug auf eine ge­ meinsame Bedingung bewirkt und der zweite Befehl nur in den­ jenigen Datenwegen zur Ausführung kommt, für die der Test des ersten Befehls ein bestimmtes vorgegebenes Ergebnis erbracht hat, dadurch gekennzeichnet, daß ein Register (37; 61; 91) jedem der Prozessoren (11, 13, 15, 17) derart zugeordnet ist, daß der Prozessor in einem ersten Registerzustand zur Ausführung eines Befehls aktiviert und in einem zweiten Registerzustand entaktiviert ist, daß jeden Prozessor mit dessen zugeordneten Register verbindende Mittel vorgesehen sind, um das Register in dessen zweiten Zustand zu treiben, wenn der Test des ersten Befehls das vor­ gegebene Ergebnis erbringt, und in dessen ersten Zustand zu treiben, wenn der Test nicht das vorgegebene Ergebnis er­ bringt, und daß von dem zweiten Befehl abhängig gesteuerte Mittel vorgesehen sind, die den Zustand der Register ändern, bevor einer der Prozessoren den zweiten Befehl ausgeführt hat, so daß die den zweiten Befehl ausführenden Prozessoren die­ jenigen sind, deren Bedingungstest des ersten Befehls das vorgegebene Ergebnis erbracht hat und die anderen Prozessoren während des zweiten Befehls entaktiviert sind.
2. Computersystem nach Anspruch 1, dadurch gekennzeichnet, daß der erste Befehl einen WENN-Befehl und der zweite Befehl einen SONST-Befehl beinhaltet.
3. Computersystem nach Anspruch 1, dadurch gekennzeichnet, daß ein zusätzlicher Speicher (81) mit den Registern (91) verbun­ den und so ausgebildet und angeordnet ist, daß er die Inhalte der Register (91) zeitweilig speichert und ersetzt, so daß andere Befehle zwischen die Ausführungen der ersten und zwei­ ten Befehle einschiebbar sind, ohne die Testergebnisse des ersten Befehls für die Ausführung des zweiten Befehls zu ver­ lieren.
4. Computersystem nach Anspruch 4, dadurch gekennzeichnet, daß der zusätzliche Speicher ein Stapelspeicher (81) ist.
DE19863620982 1985-06-24 1986-06-23 Ein-befehl, mehrfach-datenstrom (simd) computersystem Withdrawn DE3620982A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US74840985A 1985-06-24 1985-06-24

Publications (1)

Publication Number Publication Date
DE3620982A1 true DE3620982A1 (de) 1987-01-29

Family

ID=25009327

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19863620982 Withdrawn DE3620982A1 (de) 1985-06-24 1986-06-23 Ein-befehl, mehrfach-datenstrom (simd) computersystem

Country Status (8)

Country Link
EP (1) EP0227811A1 (de)
JP (1) JPS6254359A (de)
AU (1) AU6128486A (de)
CA (1) CA1267230A (de)
DE (1) DE3620982A1 (de)
FR (1) FR2583904A1 (de)
GB (1) GB2177526B (de)
WO (1) WO1987000318A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19620263B4 (de) * 1995-06-08 2006-07-27 Hewlett-Packard Development Co., L.P., Houston Datensynchronisation zwischen einer Mehrzahl von asynchronen Datenaufbereitungen

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2211638A (en) * 1987-10-27 1989-07-05 Ibm Simd array processor
GB2201015B (en) * 1987-02-10 1990-10-10 Univ Southampton Parallel processor array and array element
US5262965A (en) * 1988-10-31 1993-11-16 Bts-Broadcast Television Systems, Inc. System and method for high speed computer graphics image computation using a parallel connected, asynchronous multiprocessor ring coupled to a synchronous special purpose video processing ring
JP2578286Y2 (ja) * 1992-03-18 1998-08-06 日本精工株式会社 等速ジョイント
FR2693576B1 (fr) * 1992-07-13 1994-09-30 Texas Instruments France Système multiprocesseur à contrôle local.
AU717336B2 (en) * 1997-04-30 2000-03-23 Canon Kabushiki Kaisha Graphics processor architecture
US6366999B1 (en) * 1998-01-28 2002-04-02 Bops, Inc. Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
JPH11246581A (ja) * 1998-02-28 1999-09-14 Tonen Corp 亜鉛−モリブデン系ジチオカルバミン酸塩誘導体、その製造方法およびそれを含有する潤滑油組成物
US6732253B1 (en) 2000-11-13 2004-05-04 Chipwrights Design, Inc. Loop handling for single instruction multiple datapath processor architectures
US6931518B1 (en) 2000-11-28 2005-08-16 Chipwrights Design, Inc. Branching around conditional processing if states of all single instruction multiple datapaths are disabled and the computer program is non-deterministic
US6970985B2 (en) 2002-07-09 2005-11-29 Bluerisc Inc. Statically speculative memory accessing
US20050114850A1 (en) 2003-10-29 2005-05-26 Saurabh Chheda Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
US7434028B2 (en) * 2004-12-15 2008-10-07 Intel Corporation Hardware stack having entries with a data portion and associated counter
US20080126766A1 (en) 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
JP5452066B2 (ja) * 2009-04-24 2014-03-26 本田技研工業株式会社 並列計算装置
JP5358287B2 (ja) * 2009-05-19 2013-12-04 本田技研工業株式会社 並列計算装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4101960A (en) * 1977-03-29 1978-07-18 Burroughs Corporation Scientific processor
JPS56127266A (en) * 1980-03-10 1981-10-05 Ibm Method of executing and controlling command stream
US4435758A (en) * 1980-03-10 1984-03-06 International Business Machines Corporation Method for conditional branch execution in SIMD vector processors
US4574348A (en) * 1983-06-01 1986-03-04 The Boeing Company High speed digital signal processor architecture

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
BARNES, George et al: The ILLIAC IV Computer. In: IEEE Trans. on Computers, Vol. C-17, No. 8, August 1968, S. 746-757 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19620263B4 (de) * 1995-06-08 2006-07-27 Hewlett-Packard Development Co., L.P., Houston Datensynchronisation zwischen einer Mehrzahl von asynchronen Datenaufbereitungen

Also Published As

Publication number Publication date
WO1987000318A1 (en) 1987-01-15
JPH031699B2 (de) 1991-01-11
JPS6254359A (ja) 1987-03-10
EP0227811A1 (de) 1987-07-08
FR2583904A1 (fr) 1986-12-26
AU6128486A (en) 1987-01-30
GB2177526A (en) 1987-01-21
CA1267230A (en) 1990-03-27
GB2177526B (en) 1990-02-14
GB8614907D0 (en) 1986-07-23

Similar Documents

Publication Publication Date Title
DE3620982A1 (de) Ein-befehl, mehrfach-datenstrom (simd) computersystem
DE2714805C2 (de)
DE4305442C2 (de) Verfahren und Vorrichtung zum Erzeugen eines Testvektors
DE69628034T2 (de) Hochimpedanzmodus für jtag
DE19983098B4 (de) Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren
DE3900248C2 (de) Verfahren zur schnellen Ablaufsteuerung digitaler Testmuster und Vorrichtung zur Durchführung des Verfahrens
DE2421130C2 (de)
DE3043100C2 (de)
DE19526008A1 (de) Vertikal partitionierter, primärer Befehls-Cache-Speicher
DE3121046C2 (de)
DE3307194C2 (de)
DE3543471C1 (de) In integrierter Technik hergestellter Baustein zur Erstellung integrierter Schaltungen
DE3933253A1 (de) Einrichtung und verfahren zur durchfuehrung von booleschen rasteroperationen an quellen- und zieldaten
DE2759120C2 (de)
DE2617485A1 (de) Verfahren und schaltungsanordnung zur abarbeitung von mikrobefehlsfolgen in datenverarbeitungsanlagen
DE3314139C2 (de)
DE2245284A1 (de) Datenverarbeitungsanlage
DE3941550A1 (de) Schaltungsanordnung zum zerlegen einer auf einem computer-ausgabedisplay anzuzeigenden graphikfigur
DE2418921A1 (de) Vorrichtung und verfahren zum speichern und ausfuehren von mikroprogrammen in einem datenverarbeitungssystem
DE2723706A1 (de) Einrichtung zum adressenvergleich
EP0640919B1 (de) Prozessorschaltung mit Testeinrichtung
DE2235883C3 (de) Datenverarbeitungseinrichtung
DE4206079A1 (de) Halbleiterspeichereinrichtung und datenleseverfahren hierfuer
DE2710436A1 (de) Datenverarbeitungseinrichtung
DE2204680C3 (de) Mikroprogramm-Steuereinrichtung

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8139 Disposal/non-payment of the annual fee