DE3620982A1 - Ein-befehl, mehrfach-datenstrom (simd) computersystem - Google Patents
Ein-befehl, mehrfach-datenstrom (simd) computersystemInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
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.
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)
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)
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)
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 |
-
1986
- 1986-06-19 GB GB8614907A patent/GB2177526B/en not_active Expired - Fee Related
- 1986-06-23 WO PCT/US1986/001354 patent/WO1987000318A1/en unknown
- 1986-06-23 EP EP19860904568 patent/EP0227811A1/de active Pending
- 1986-06-23 AU AU61284/86A patent/AU6128486A/en not_active Abandoned
- 1986-06-23 DE DE19863620982 patent/DE3620982A1/de not_active Withdrawn
- 1986-06-24 JP JP14629086A patent/JPS6254359A/ja active Granted
- 1986-06-24 CA CA000512328A patent/CA1267230A/en not_active Expired
- 1986-06-24 FR FR8609106A patent/FR2583904A1/fr not_active Withdrawn
Non-Patent Citations (1)
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)
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 |