DE4342250A1 - Rechnerarchitektur und Verfahren zum Betreiben eines Parallelrechners - Google Patents
Rechnerarchitektur und Verfahren zum Betreiben eines ParallelrechnersInfo
- Publication number
- DE4342250A1 DE4342250A1 DE4342250A DE4342250A DE4342250A1 DE 4342250 A1 DE4342250 A1 DE 4342250A1 DE 4342250 A DE4342250 A DE 4342250A DE 4342250 A DE4342250 A DE 4342250A DE 4342250 A1 DE4342250 A1 DE 4342250A1
- Authority
- DE
- Germany
- Prior art keywords
- bit
- mask
- register
- bits
- instruction
- 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.)
- Ceased
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 230000000873 masking effect Effects 0.000 claims abstract description 40
- 238000012545 processing Methods 0.000 claims abstract description 13
- 230000004044 response Effects 0.000 claims description 20
- 230000007246 mechanism Effects 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 7
- 230000000295 complement effect Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 230000014509 gene expression Effects 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 3
- 239000000243 solution Substances 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 101000836150 Homo sapiens Transforming acidic coiled-coil-containing protein 3 Proteins 0.000 description 1
- 101100149256 Mus musculus Sema6b gene Proteins 0.000 description 1
- 102100027048 Transforming acidic coiled-coil-containing protein 3 Human genes 0.000 description 1
- 239000003637 basic solution Substances 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000008713 feedback mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 229940036310 program Drugs 0.000 description 1
- 238000001356 surgical procedure Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000010977 unit operation Methods 0.000 description 1
Classifications
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
- Executing Machine-Instructions (AREA)
Description
Die vorliegende Erfindung bezieht sich allgemein auf
Maskierungstechniken für Arraycomputer und insbesondere auf
feinkörnige Maskentechniken für einen SIMD-Computer, der
eine Maskierung mit mehrfachen Anweisungsebenen aufweist.
Typischerweise sind Computer Ein-Prozessor-Systeme, die
eine einzelne Anweisung und einen einzelnen Datenstrom
(single instruction single data stream, SISD) bearbeiten.
Das bedeutet, daß ein Ein-Prozessor-Computer ein einziges
Prozessorelement umfaßt, das eine einzelne Anweisung in ei
nem Programm mit nur einem Datensatz, der bei jedem Taktzy
klus zur Verfügung steht, bearbeitet. Es ist weiterhin in
der Technik bekannt, mehrfache Prozessorelemente in einem
Computer zu verwenden, in dem alle Prozessorelemente eine
einzelne Anweisung und mehrfache Datenströme bearbeiten
(single instruction multiple data stream, SIMD). Bei diesen
Arten von SIMD-Computern oder Prozessoren werden üblicher
weise verschiedene Daten an jedes einzelne Prozessorelement
angelegt, aber jedes Prozessorelement erhält dieselbe Anwei
sungssequenz während desselben Taktzyklus. Unter den Vortei
len der SIMD-Computer verglichen mit den Ein-Prozessor-Com
putern ist die Verringerung der Kosten für die Steuerungs
einheit und die Verringerung des notwendigen Programmspei
chers.
In dem SIMD-Computer und auch in anderen Arten von Com
putern ist ein fundamentales Konzept, allgemein als Maskie
rung bezeichnet, erforderlich für die bedingte Ausführung
von einzelnen Operationen in den Prozessorelementen. Die
Maskierung ermöglicht, daß die verschiedenen Anweisungen ei
ner Anweisungssequenz, die an die Prozessorelemente angelegt
wird, nur in denjenigen Prozessorelementen ausgeführt wird,
in denen die speziellen, an die einzelnen Prozessorelemente
angelegte Daten die Bedingungen der speziellen Anweisungen
innerhalb der Sequenz erfüllen. In der Technik sind ver
schiedene Techniken bekannt, die ein bestimmtes Prozessore
lement von Anweisungen in einer an die Prozessorelemente an
gelegten Anweisungssequenz maskieren. Eine detaillierte Zu
sammenfassung von heutigen SIMD-Maschinen, die Maskierungen
verwenden, findet man in Horde, R. Michael, "Parallel Super
computing in SIMD Architectures", 1990, CRC Press Inc., Boca
Raton, FL. Weiterhin stellen die US-Patente Nr. 4 907 148
und 5 045 995 Diskussionen über Maskierungen in dieser Art
von Systemen zur Verfügung.
Wie oben erwähnt, kann die Maskierung nach dem Stand der
Technik in einem SIMD-Computer die Anweisung für eine belie
bige Anzahl von Prozessorelementen in dem Computer maskie
ren, so daß die Anweisung die Daten nicht bearbeitet. Jedoch
können viele Anweisungsformate mehrfache, bedingte Ausfüh
rungen oder Operationen umfassen. Diese Anweisungen werden
allgemein als sehr lange Anweisungswörter (very long in
struction words, VLIW) bezeichnet. Ausgeklügelte SIMD-Compu
ter können daher nicht nur vom Parallelismus aufgrund mehr
facher Prozessorelemente profitieren, sondern auch von einem
Parallelismus aufgrund mehrfacher Operationen pro Anweisung.
Es ist in der Technik bekannt, selektives Maskieren von
mehrfachen Operationen in einer einzelnen Anweisung für
einen einzelnen Prozessor zur Verfügung zu stellen. Wenig
stens eine Diskussion der mehrfachen Maskentechnik findet
man in Steven et al., "HARP: A Parallel Pipeline RISC Pro
cessor", Microprocessors und Microsystems, Band 13, Nr. 9,
November 1989, Seiten 579-587. Steven et al. führten das
Konzept einer Konditionalisierung aller Anweisungen durch
Addition eines Feldes, welches ein Boolsches Register für
einen Kontrolltest einer bedingten Ausführung einer Anwei
sung spezifiziert, und eines Feldes zu einer Anweisung, das
den Sinn der Bedingung kontrolliert, also durchführt, wenn
das Boolsche Register wahr ist, oder durchführt, wenn das
Boolsche Register falsch ist, ein. Ein spezielles Register
ist inkorporiert, das immer wahr ist, was zu einer unbeding
ten Operation führt. Dieser Prozeß wurde jedoch auf einen
einzelnen Prozessor beschränkt. Mehrfache Maskierung in ei
ner SIMD-Architektur wurde anscheinend nicht in der Technik
diskutiert.
Mehrfache Maskierungstechniken nach dem Stand der Tech
nik sind nicht in der Lage, die notwendigen Maskierungen für
mehrfache Prozessorelemente zur Verfügung zu stellen, um be
dingte Unterprogramm-Aufrufe zu unterstützen. Daher begren
zen Maskierungstechniken nach dem Stand der Technik den Ver
arbeitungsdurchsatz, der bei der gegenwärtigen Compiler-
Technologie und identischen Hardwarekosten möglich ist. Es
wird also eine Maskentechnik benötigt, die in der Lage ist,
mehrfache, bedingte Durchführungen von einzelnen Operationen
in einer einzelnen Anweisung in einem SIMD-Computer zu mas
kieren. Es ist daher eine Aufgabe der vorliegenden Erfin
dung, eine solche Maskentechnik in einem SIMD-Computer zur
Verfügung zu stellen.
Diese und weitere Aufgaben werden durch die in den bei
gefügten Patentansprüchen definierte Erfindung gelöst.
Insbesondere wird eine Maskentechnik für einen SIMD-Pro
zessor offengelegt, um eine mehrfache Maskierung einer Mehr
zahl von Operationen zu ermöglichen, die unter bestimmten
Bedingungen innerhalb der Anweisungen durchführbar sind. Um
dies zu erreichen, enthält die Anweisung eine Reihe von Mas
kierungsbits für jede Operation, die eine bestimmte Position
in einem Register adressiert, die als die Maskierungsbitbank
bezeichnet werden kann.
Eine einzelne Anweisung in einer Realisierung, die auf
einer sehr langen Anweisungswort-Architektur beruht, kann
mehrfache Funktionen/Operationen, wie etwa eine oder mehrere
einer arithmetischen, funktionalen Einheit, einen Multipli
kator, eine Nord/Süd-Eingabe/Ausgabe- (I/O-) Funktion und
eine Ost/West-I/O-Funktion, enthalten. Jede dieser verschie
denen Funktionen in der Anweisung wird typischerweise eine
Adressenposition zum Registrieren eines erwünschten Masken
bits umfassen. Folglich kann jede der verschiedenen Maschi
nenoperationen bei einer einzelnen Maschinenanweisung ein
unterschiedliches, individuelles Maskenbit aus dem geeigne
ten Satz von Maskenregistern auswählen, wodurch die gleich
zeitige Durchführung von verschiedenen, unterschiedlichen
Fällen von bedingter Steuerung ermöglicht wird.
Dieselbe Lösung für mehrfache Masken findet auch im
Falle von Anweisungen, die nur eine einzige Operation spezi
fizieren, Anwendung. Dies ermöglicht, daß Operationen, die
bedingte Verzweigungen verlangt hätten, was die Prozessor
leistung verringert, ohne die Notwendigkeit von Verzweigun
gen durchgeführt werden. Mehrfache Maskierungen sind eben
falls auf "superskalare" Prozessoren anwendbar, die mehrfa
che Anweisungen verbinden, so daß sie parallel ausgeführt
werden, was zu ähnlichen Effekten wie im Falle der sehr lan
gen Anweisungswort-Architektur führt.
Zum Unterstützen von bedingten Unterprogramm-Aufrufen in
der Anwesenheit von mehrfachen Masken, wird ein global frei
gebendes Maskenkontextbit eingebaut. In einem SIMD-Prozessor
ist, wenn sich ein Unterprogramm-Aufruf in einem bedingten
Code-Block befindet, das gewünschte Verhalten, daß das Un
terprogramm nur bei der Gruppe von Prozessorelementen durch
geführt wird, wo die Bedingung des umgebenden Code-Blocks
wahr ist. In einer SIMD-Maschine führen alle Prozessorele
mente den Unterprogramm-Aufruf durch. Daher ist es notwen
dig, die Auswirkungen des Unterprogramm-Aufrufs auf diejeni
gen Prozessorelemente, die, wenn der Aufruf erfolgte, effek
tiv maskiert waren, selektiv zu unterbinden. Ein einzelnes
Maskenkontextbit wird in jedes Prozessorelement eingebaut.
Das Maskenkontextbit wird bitweise mit all denjenigen Bits
über eine UND-Verbindung verknüpft, die für die Maskierung
in einer spezifischen Maschinenoperation ausgewählt wurden.
Daher kann das spezielle Prozessorelement basierend auf dem
"Kontext" des Prozeduraufrufs freigegeben oder gesperrt wer
den.
Weitere Aufgaben, Vorteile und Merkmale der vorliegenden
Erfindung werden durch die nachfolgende Beschreibung und die
beigefügten Patentansprüche in Verbindung mit den beigefüg
ten Zeichnungen deutlich.
Fig. 1(a) ist ein Blockdiagramm, das die Basiskomponen
ten eines Prozessorelements eines Arrays von Prozessorele
menten nach einem bevorzugten Ausführungsbeispiel der vor
liegenden Erfindung zeigt.
Fig. 1(b) zeigt den Maskierungsbereich des Prozessorele
ments der Fig. 1(a).
Die Fig. 2(a) und 2(b) zeigen bestimmte Computer-Ar
chitekturkomponenten eines Prozessorelements eines SIMD-Com
puters nach einem bevorzugten Ausführungsbeispiel der vor
liegenden Erfindung.
Die Fig. 3(a)-3(e) zeigen ein Array von Prozessore
lementen in Blockform, die aktive und nicht aktive Prozesso
relemente darstellen.
Fig. 4 zeigt das Format einer SIMD-Mikrokode-Anweisung.
Die nachfolgende Beschreibung der bevorzugten Ausfüh
rungsbeispiele hinsichtlich der Maskierung von SIMD-Compu
tern ist lediglich beispielhaft und soll in keiner Weise die
Erfindung oder ihre Anwendung oder Verwendungen einschrän
ken.
Wie oben beschrieben, ist die Maskierung von Operationen
in SIMD-Parallelprozessoren eine Grundanforderung. Diese
Maskierung ist die Art und Weise, nach der ein SIMD-Prozes
sor bedingte Code-Anweisungen behandelt, bei denen die Be
dingung aus einem Array/Vektor-Vergleich entsteht. Man be
trachte zum Beispiel ein einfaches SIMD-System mit einer An
zahl von P Prozessorelementen (PE). Weiterhin sollen die
SIMD-Variablen ein Array/Vektor von Variablen sein, so daß
es eine Variable pro Prozessorelement gibt. Es sei eine
SIMD-Variable X gegeben, in der wir eine Operation nur in
den Prozessorelementen durchführen wollen, in denen X nega
tiv ist, dann können wir unter Verwendung der Notation der
Sprache "C", wobei /* */ beschreibende Kommentare sind,
schreiben:
Der bedingte SIMD-Ausdruck (X < 0.0) führt zu einer speziel
len SIMD-Boolschen Variablen, die bei denjenigen Prozessore
lementen wahr ist, wo der Ausdruck wahr ist, und bei denje
nigen Prozessorelementen falsch ist, wo der Ausdruck falsch
ist. Wir beziehen uns auf die Menge von Prozessoren, wo der
Ausdruck wahr ist, als die aktive Menge der Prozessorele
mente. In einer Hardwarekonfiguration kann man bestimmte Be
dingungen durch Verwendung eines Boolschen Maskenflags, die
dem Fachmann wohlbekannt sind, in jedem der Prozessorele
mente zum Sperren des Prozessorelements, wenn das Maskenflag
falsch ist, implementieren. Somit führen wir die "then"-Be
stimmung der obigen Operation für alle Prozessorelemente
aus, aber geben nur diejenigen Prozessorelemente frei, wo
das Maskenflag auf wahr gesetzt ist.
Man betrachte nun die komplexere, verschachtelte, be
dingte Anweisungssequenz:
In diesem Beispiel stellt die Zeile 2 eine bestimmte
SIMD-Bedingung dar, und die Zeilen 3-11 stellen den Körper
dieser Bedingung dar. Die SIMD-Bedingung in Zeile 2 setzt
die aktive Bestimmung auf diejenigen Prozessorelemente, wo
(X < 0.0). Somit wird die SIMD-Bedingung in Zeile 5 inner
halb des Körpers der Bedingung der Zeile 2 nur für diejeni
gen Prozessorelemente ausgewertet, die sich in der aktiven
Menge befinden. Daher besitzt der Bedingungskörper der Zei
len 6 und 7 der Bedingung in Zeile 5 eine aktive Menge, der
die Schnittmenge (logisches UND) der von den bedingten Aus
drücken (X < 0.0) und (Y == 1.0) weiter oben erzeugten Men
gen ist.
Fig. 3 gibt eine physikalische Darstellung der aktiven
Mengen der Sequenz des obigen Anweisungskodes. Insbesondere
zeigen die Fig. 3(a)-3(e) ein Array von Prozessorele
menten in einer quadratischen Anordnung (64 Prozessorele
mente), bei der die schraffierten Kästchen anzeigen, welche
Prozessorelemente bestimmte Bedingungen erfüllen. Typischer
weise werden die Prozessorelemente in jeder Zeile mit einem
I/O-Kanal verbunden, so daß die Prozessorelemente Daten in
einer Ost/West-Richtung austauschen können, und die Prozes
sorelemente in jeder Spalte werden mit einem I/O-Kanal ver
bunden, so daß die Prozessorelemente Daten in einer
Nord/Süd-Richtung austauschen können. Fig. 3(a) zeigt die
mit der Bedingung der Zeile 2 der obigen Anweisungskodese
quenz verbundene Menge. Mit anderen Worten zeigen die
schraffierten Kästchen diejenigen Prozessorelemente, die die
Anforderung (X < 0.0) erfüllen. Auf ähnliche Weise zeigt
Fig. 3(b) die aktive Menge der Prozessorelemente, die die
Bedingung der Zeile 5 der Anweisungskodesequenz erfüllen,
wenn diese unabhängig wäre, nämlich (Y = 1.0). Fig. 3(c)
zeigt die aktive Menge, die mit der Zeile 5 der obigen Ko
desequenz als solcher verbunden ist und als solche die Über
lappung der Fig. 3(a) und 3(b) darstellt. Mit anderen
Worten sind die schraffierten Kästchen der Fig. 3(c) das lo
gische UND von (X < 0.0) und (Y = 1.0).
Wie bekannt, weicht die SIMD-Programmierung von der her
kömmlichen Ein-Prozessor-Programmierung insofern ab, als
eine SIMD-Bedingung mit einem "then" und einem "else" beide
Bestimmungen ausführen muß, während bei einem Ein-Prozessor
nur eine der beiden Bedingungsbestimmungen durchgeführt
wird. Dies geschieht aufgrund der Tatsache, daß beide Be
stimmungen nicht leere, aktive Mengen besitzen. Fig. 3(d)
stellt den aktiven, schraffierten Bereich der Prozessorele
mente des logischen UND von (X < 0.0) und (Y! = 1.0) dar.
Zusätzlich stellt Fig. 3(e) diejenigen schraffierten, akti
ven Prozessorelemente dar, bei denen (X 0.0).
Diese Basislösung für eine SIMD-Maskierung ist ausrei
chend für einfache Prozessorelemente. Wenn es jedoch einen
funktionellen Parallelismus, also mehrfache Operationen in
einer einzelnen Anweisung in einem Prozessorelement gibt,
ist diese Lösung unzureichend. Man betrachte den Fall eines
Prozessorelements, das ein VLIW mit vier Funktionseinheiten
implementiert: 1) einen Multiplizierer; 2) eine arithmeti
sche Logikeinheit (ALU); 3) eine Nord/Süd-Eingabe/Ausgabe-
(I/O-) Einheit; und eine Ost/West-I/O-Einheit. In einigen
Algorithmen, wie bei einer schnellen Fouriertransformation
(FFT), können wir verlangen, daß einige der Prozessorele
mente basierend auf ihrer Position, an einem Datenaustausch
(I/O) mit anderen Prozessorelementen teilnehmen, um eine
Permutation einer Teilebene von Daten zu bewirken. Gleich
zeitig sollten unter einer einzigen Anweisungssteuerung alle
Prozessorelemente eine arithmetische Berechnung durchführen,
während außerdem die Daten (I/O) für eine weitere, unabhän
gige Datenberechnung heruntergeladen werden. Die Maskierung
des I/O unabhängig von der Berechnung ist lebenswichtig in
diesem FFT-Beispiel, da sie uns ermöglicht, die Berechnungen
mit dem I/O in jedem Prozessorelement maximal zu überlappen
und somit nicht nur den Parallelismus aufgrund der Wiederho
lung von Prozessorelementen sondern auch den Parallelismus
aufgrund der Fähigkeit, selektiv bestimmte Bereiche einer
einem Prozessorelement gegebenen Anweisung zu maskieren,
auszunutzen. Bei dieser Art von Bedingung sind die beiden
I/O-Richtungen (Ost/West und Nord/Süd) unabhängige Aufgaben
und erfordern somit sehr unterschiedliche Masken. Folglich
besitzen viele Algorithmen getrennte Aufgaben, die überlappt
werden können, wenn es einen Mechanismus zum Unterstützen
der mehrfachen Maskierung gibt.
Entsprechend einem bevorzugten Ausführungsbeispiel der
vorliegenden Erfindung wird eine feinkörnige Maskierung auf
Prozessorelemente des VLIW-Typs in einem SIMD-Prozessor an
wendbar gemacht, um eine Multiplikation, eine ALU-Operation,
eine Nord/Süd-I/O-Operation und eine Ost/West-I/O-Operation
in einer einzelnen Anweisung getrennt zu maskieren. Das be
vorzugte Ausführungsbeispiel der vorliegenden Erfindung
macht keine Unterscheidung zwischen dem Maskieren von I/O-
Operationen und anderen Funktionseinheit-Operationen. Jede
Maschinenoperation in einer einzelnen Mikrokodeanweisung
wird von einem von acht für einen Programmierer sichtbaren,
Einzelbitregistern (MB0-MB7) eines Maskenbitregisters mas
kiert, wie weiter unten diskutiert. Dadurch ist klar, daß
jede Mikrooperation eine bedingte Operation ist. Wie noch
beschrieben wird, kann jede der Maschinenoperationen in ei
ner einzelnen Maschinenanweisung ein unterschiedliches, in
dividuelles Maskenbit auswählen. Dieses Konzept einer archi
tektonischen Unterstützung der Maskierung ermöglicht einen
optimalen Überlapp von Operationen während Schleifenwieder
holungen und bleibt ein wichtiges Compilerziel.
Fig. 4 zeigt eine Bitdarstellung eines Mikrokode-Anwei
sungsformats für ein einzelnes Prozessorelement. Wie er
sichtlich, gibt es ein separates Maskenfeld, das mit jeder
von vier unabhängigen Funktionen der Mikrokodeanweisung ver
bunden ist. Speziell umfassen die Bits 0-30 die Bitdarstel
lung einer ALU-Operation, bei der die Operanden sich in dem
Register bei den Adressen L und R befinden und das Ergebnis
in das Register bei der Adresse Y abgelegt wird. Die Opera
tion umfaßt weiterhin eine 4-Bit-Maskenposition (Bits 21-
24). Auf ähnliche Weise wird eine Multiplikations-Operati
onsanweisung durch Bits 31-61 dargestellt. Die Multiplikati
onsoperation besitzt ebenfalls eine 4-Bit-Maskenposition
(Bits 52-55), wobei drei der Bits die Adresse des Maskenbits
angeben und das verbleibende Bit das komplementäre Bit ist.
Zusätzlich gibt es eine Nord/Süd-I/O-Operation, die eine 4-
Bit-Maskenposition (Bits 76-79) umfaßt. Außerdem gibt es
eine Ost/West-I/O-Operation, die eine 4-Bit-Maskenposition
(Bits 99-102) umfaßt.
Die Maskenfelder können in zwei Felder unterteilt wer
den, in ein Maskeninversions-Feststellfeld und ein Bitbank-
Adressenfeld. Das Maskeninversionsfeld ist ein einzelnes Bit
und das Bitbank-Adressenfeld sind die drei niederwertigsten
Bits des Maskenbitfelds. Mit anderen Worten sind die drei
letzten Bits jedes Maskenfelds eine Bitbankposition und kön
nen als solche jede von acht Positionen sein. Das Maskenin
versionsbit ist ein komplementäres Bit.
In Fig. 1a sind in Blockdiagrammform bestimmte Komponen
ten eines einzelnen Prozessorelements 10 einschließlich von
Komponenten entsprechend einem bevorzugten Ausführungsbei
spiel der vorliegenden Erfindung gezeigt. Insbesondere ist
gezeigt, daß ein Register 12, das eine Multi-Operations-An
weisung speichert, auf eine Prozessoreinheit 14 angewendet
wird, die eine Mehrzahl von Funktionseinheiten umfaßt. Die
Funktionseinheiten umfassen eine Ost/West-I/O-Einheit 16,
eine Nord/Süd-I/O-Einheit 18, eine Multiplikationseinheit 20
und eine arithmetische Logikeinheit 22, wie oben diskutiert.
Die von jeder der Funktionseinheiten durchzuführende Opera
tion wird von der Multi-Operations-Anweisung bestimmt. Die
Operation jeder Funktionseinheit wird freigegeben oder ge
sperrt durch Versehen jeder Funktionseinheit mit einem zu
sätzlichen Steuerungssignal von einer Reihe von UND-Gattern
24. Der Ausgang der UND-Gatter 24 ist der logische UND-Wert
eines Auswahl-Maskenregisters 26 und eines Maskenkontextre
gisters 28. Das erwünschte Bit des Maskenregisters 26 wird
von einem geeigneten Multiplexer 30 für die bestimmte Funk
tionseinheit ausgewählt, um die erwünschte Maskierung der
Operation durchzuführen.
Fig. 1(b) zeigt eine detaillierte Darstellung des Mas
kierungsbereichs des bevorzugten Ausführungsbeispiels. Jede
der vier Funktionseinheiten erfordert ihr eigenes Freigabe
signal, um ihre Operation zu maskieren. Die Freigabesignale
werden von einem 8-zu-1-Multiplexer 32 bestimmt, der die
niederwertigen 3 Bits (Maskenbits < 2 . . .0<) zur Steuerung
verwendet und das Freigabesignal als sein Ausgabesignal er
zeugt. Die erste Eingabe zum Multiplexer ist ein exklusives
ODER (XOR) des Maskenkontext- (MC-) Bits von dem Maskenkon
text-Bitregister 28 und eines Inversions-Steuerungsbits
(Maskenbit < 3 <). Die Eingaben 1 bis 5 sind die ausgewähl
ten Maskenbits (NBj, wobei 1 j 5), die über XOR mit dem
Inversions-Steuerungsbit und dann über UND mit dem MC-Bit
verbunden werden. Die sechste Eingabe zum Multiplexer 32 ist
die XOR-Verbindung des Inversions-Steuerungsbits mit MB6,
die dann mit einem PE_SCALAR-Signal über UND verknüpft wird.
Das Signal PE_SCALAR ist nur Eins bei einem einzelnen PE
(Prozessorelement) in dem Array, wodurch die skalare Verar
beitung vereinfacht wird. In dem bevorzugten Ausführungsbei
spiel ist PE_SCALAR nur Eins bei dem am weitesten nach Nord-
West liegenden PE. Die siebte Eingabe zum Multiplexer 32 ist
das Komplement des Maskenbits < 3 <.
Fig. 2(a) zeigt die Basiskomponenten des Rechnerbereichs
eines PE 36 eines Arrays von PEs eines SIMD-Prozessors. Die
Architektur und die Operation des Rechnerbereiches eines
SIMD-Prozessors sind bekannt, und daher wird ihre Beschrei
bung hier nur kursorisch gegeben. Weitere Details findet man
in einer Anzahl von Veröffentlichungen, wie zum Beispiel in
Przytula, K. Wojtek, "Medium Grain Parallel Architecture For
Image and Signal Processing", Parallel Architectures And Al
gorithms For Image Understanding, 1991. Die PE 36 umfaßt
eine Registerdatei 38 mit vier Schreibeingängen und sechs
Leseausgängen. Die Komponenten, die Anweisungen von der Re
gisterdatei 38 erhalten und an diese abgeben, umfassen einen
Fließkomma-Multiplizierer 40 (FP MULT), eine Fließkomma-
Arithmetische-Logikeinheit 42 (FP ALU), eine Nord/Süd-Ein
gabe/Ausgabe-Einheit 44 und eine Ost/West-Eingabe/Ausgabe-
Einheit 46. Sowohl der Multiplizierer 40 als auch die ALU 42
erfordern ein Maximum von zwei Lesevorgängen und einen
Schreibvorgang von der Registerdatei 38. Die I/O-Einheiten
44 und 46 erfordern ein Maximum von einem Lesevorgang und
einem Schreibvorgang von der Registerdatei 38.
Die Nord/Süd-Eingabe/Ausgabe-Einheit 44 umfaßt ein
Nord/Süd-Ausgaberegister 48, das eine Anweisung von der Re
gisterdatei 38 annimmt und die Anweisung an den Nord/Süd-
Eingabe/Ausgabe-Schaltkreis 50 anlegt, der Daten in einer
Nord-Südrichtung bewegt, wie gezeigt. Eine Ausgabe des
Nord/Süd-Eingabe/Ausgabe-Schaltkreises 50 wird an ein
Nord/Süd-Eingaberegister 52 angelegt, das Daten in die Regi
sterdatei 38 schreibt. Auf ähnliche Weise umfaßt die
Ost/West-Eingabe/Ausgabe-Einheit 46 ein Ost/West-Ausgabere
gister 54, das Leseanweisungen von der Registerdatei 38 an
nimmt und die Anweisung zu einem Ost/West-Eingabe/Ausgabe-
Schaltkreis 56 überträgt, um Daten in einer Ost/West-Rich
tung zu übertragen. Ein Ost/West-Eingaberegister 58 nimmt
eine Anweisung von dem Ost/West-Eingabe/Ausgabe-Schaltkreis
56 an, die in die Registerdatei 38 zu schreiben ist.
Wie in Fig. 2(b) gezeigt, umfaßt das Prozessorelement 36
außerdem ein Maskenregister 60, das als gestrichelter Kasten
gezeigt ist, mit einem Ausgang MR. Das Maskenregister 60 um
faßt eine Funktionseinheit Bitbank 62 mit acht Bits, die mit
MB0-MB7 bezeichnet sind. Diese Bits stellen die Maskenbits
für die Berechnungen dar, wie oben diskutiert. Das Funkti
onseinheitsbit MB0 ist ein hardwaremäßig verdrahtetes, wah
res Bit und das Funktionseinheitsbit MB7 ist ein hardwaremä
ßig verdrahtetes, unbedingtes Bit, wie hiernach diskutiert
wird. In einem bevorzugten Ausführungsbeispiel werden ska
lare Operationen bei der am weitesten nach Nord-Westen lie
genden PE durchgeführt. Ein spezielles Maskenbit MB6 ist für
die am weitesten nach Nord-Westen liegende PE vorgesehen, um
die skalare Verarbeitung zu vereinfachen. In der am weite
sten nach Nord-Westen liegenden PE werden skalare Operatio
nen unter Verwendung von MB6 maskiert. Mit anderen Worten
ermöglicht die Verwendung von vier Maskenbits pro Operation,
wie hiervor für Fig. 4 diskutiert, wobei drei der Bits die
Registerposition definieren und das vierte Bit ein komple
mentäres Bit ist, die Adressierung von nur acht Registerpo
sitionen.
Das Maskenregister 60 umfaßt außerdem ein Maskenkontext
register 66, das ein einzelnes Maskenkontext- (MC-) Bit ent
hält, und ein globales Responseflagregister 68, das ein ein
zelnes globales Responseflag- (GRF-) Bit enthält. Das Mas
kenkontextbit wird bitweise mit dem für die Maskierung einer
bestimmten Maschinenoperation in der Anweisung über UND ver
bunden, um das spezielle Prozessorelement während eines Un
terprogrammaufrufs entweder freizugeben oder zu sperren, wie
weiter unten im Detail beschrieben. Das globale Response
flagbit wird mit den globalen Responseflags aller anderen
Prozessorelemente in dem PE 36 über ein logisches ODER ver
bunden, um zu bestimmen, ob eines der Prozessorelemente die
Bedingung des bedingten Unterprogramms erfüllt, wie eben
falls hiernach in größerem Detail diskutiert.
Die Funktionsbitbank 62 wird über einen Demultiplexer 70
geladen. Der Demultiplexer 70 besitzt einen Ausgang, der mit
jedem Bit in der Bitbank 62 außer den hardwaremäßig als wahr
verdrahteten Bits MB0 und MB7 verbunden ist. Der Demultiple
xer 70 erhält seine Eingaben von einem XOR-Gatter 72. Das
XOR-Gatter 72 besitzt zwei Eingänge, einer von dem Ausgang
des Multiplexers 74 und eine komplementäre Steuerung als
zweiten. Wenn die komplementäre Steuerung Eins ist, ist der
Ausgang des XOR-Gatters 72 das Komplement des Ausgangs von
einem Multiplizierer 76, andernfalls wird ein wahrer Wert
des Multiplexerausgangs 74 durchgereicht. Fünf der Eingänge
zum Multiplexer 76 sind Bits von der Funktionsbitbank 62,
insbesondere MB1-MB6. Die Eingänge 7 und 8 kommen von dem
Null-Bit eines A0- und eines F0-Registers. Der Ausgang des
Multiplexers 76 wird auch als ein Eingang an einen Multiple
xer 78 angelegt. Der andere Eingang des Multiplexers 78 wird
als Eingang an ein XOR-Gatter 80 angelegt. Der Ausgang des
XOR-Gatter 80 wird als Eingang an das globale Response
flagregister 68 und an das Maskenkontextbitregister 66 ange
legt.
All die innerhalb des Maskenregisters 60 gezeigten Bits
bilden den augenblicklichen Maskenkontext eines bestimmten
Prozesses eines SIMD-Prozessors nach einem bevorzugten Aus
führungsbeispiel der vorliegenden Erfindung. Dieser Kontext
wird gespeichert und durch Prozeduraufrufe im Betrieb des PE
36 wiederhergestellt. In dem PE 36 wird dieser Stapel durch
Speichern in (oder Wiederherstellen aus) der allgemeinen Re
gisterdatei 68 implementiert. Mit anderen Worten werden die
augenblicklichen Werte in den Bitbanken des Maskenregisters
60 während eines Unterprogrammaufrufs an einen Stapel ausge
geben und dann am Ende des Unterprogrammaufrufs wieder für
die Bitbanken hergestellt. Das Management des Maskenkontexts
ist Teil des Prozeduraufruf- und rückkehrmechanismus.
Als eine spezielle Illustration der Maskierungstechnik
betracht man das folgende Quellkodebeispiel, bei dem ein
Funktionsaufruf (X < 0.0) von einem bedingten "if-then"-Aus
druck beherrscht wird:
Das Maskenkontextbit in dem Maskenkontextregister 66 imple
mentiert den augenblicklichen Prozedurmaskenkontext. In dem
obigen Beispiel wird, wenn irgendein Prozessorelement an
gibt, daß sein Wert für X größer als 0.0 ist, die Kontrolle
für alle Prozessorelemente mittels des globalen Response
flagbits in dem Register 68 nach foo() übertragen, wie oben
erwähnt. Wir wollen jedoch, daß nur bestimmte Prozessorele
mente, bei denen die Bedingung (X < 0.0) wahr ist, an der
Wirkung des foo()-Kodes teilnehmen. Das Maskenkontextbit in
dem Maskenregister 66 unterstützt diese Feststellung, indem
es als ein einzelnes Bit wirkt, das global ein gesamtes Pro
zessorelement sperrt oder freigibt. Das Maskenkontextregi
ster 62 gibt global frei, da sein Wert implizit bitweise mit
all denjenigen Bits über UND verbunden wird, die für eine
Maskierung in allen Maschinenoperationen ausgesucht sind.
Durch Setzen des Maskenkontextbits auf einen logisch
falschen Wert in dem Prozessorelement wird der Ausgang immer
falsch sein, unabhängig von dem ausgewählten Maskenwert
(MB0-MB5) für diese Maschinenoperation. Also wird jedes Pro
zessorelement, bei dem das Maskenkontextbit logisch falsch
ist, während es dieselbe Anweisung wie all die anderen er
hält, nicht in der Lage sein, bei einer tatsächlichen Durch
führung teilzunehmen. Dasselbe ist wahr für das SCM-Bit.
Das Bit MB0 ist hardwaremäßig als wahr verdrahtet, wie
oben diskutiert. Somit spezifiziert jede unbedingte Opera
tion in der Assemblersprache explizit (oder implizit) MB0.
Dies reduziert den Overhead zum Wiederladen der Bitbank auf
einen wahren Wert für unbedingten Kode. Das Bit MB7 ist eine
spezielle Ausnahme, da es wie MB0 immer wahr ist. Da jedoch
das Bit MB7 ein hardwaremäßig verdrahtetes, unbedingtes Bit
ist, wird es das Maskenkontextbit in dem Maskenkontextregi
ster 66 überlagern. Es ist mit anderen Worten global unbe
dingt. Dies wird benötigt, um Bewegungen zum Ändern des Mas
kierungskontexts, wie sie in speziellen Fällen, wie etwa in
Interrupthandlern oder beim skalaren Verarbeiten auf dem
SIMD-Array, vorkommen, zu handhaben.
Wenn die Prozessorelemente initialisiert werden, wird
das Maskenkontextregister 66 auf wahr eingestellt, und die
veränderbaren Bits der Bitbank 62 werden auf einen logisch
falschen Wert gelöscht. Zusätzlich wird das GRF-Bit auf
einen logisch falschen Wert gesetzt. Wenn ein Unterprogramm
aufgerufen wird, werden die Maskenregisterbits auf den Mas
kenstapel geschoben. In demselben Taktzyklus wird das Mas
kenkontextbit mit einer Kopie des bedingten Maskenbits (oder
seinem Komplement), das den Kontext des Aufrufs in dem Un
terprogramm steuert, geladen. Zusätzlich werden die verän
derbaren Bits der Bitbank 62 und das GRF-Bit auf einen lo
gisch falschen Wert gelöscht. Der Stapel fängt den vorherge
henden Zustand von dem aufrufenden Programm auf, und das
Maskenkontextbit stellt den Maskenkontext für das aufgeru
fene Programm her. Wenn die Prozedur von dem Unterprogramm
zurückkehrt, wird der Kontext der Aufrufprozedur von dem
Stapelrahmen wiederhergestellt.
Ein spezielles Beispiel einer Anweisungssequenz dieser
Prozedur wird hiernach gegeben. Der folgende Maschinenkode
verwendet "#-" und ";-" Pseudooperatoren, um alle Maschinen
operationen zu umfassen, die in einem einzelnen Maschinenzy
klus auftreten. Die "/* */"-Paare umschließen Kommentare.
Die "(MBi)"-Notierung zeigt ein spezielles Bitbankregister
für die Maskierungsoperation an.
In Zeile 1 wird der bedingte Ausdruck (X < 0.0) ausge
wertet und das Ergebnis in dem Bitbankregister MB3 angeord
net. Die Ausführung dieser Auswertung wird selbst von einem
Bitbankregister MB0 maskiert, das immer wahr ist. Die FLT-
(floating point less than, Fließkomma kleiner als) Ver
gleichsanweisung besitzt eine Latenz von zwei Zyklen, wes
halb während des Wartens auf seine Durchführung, der Wert
von X auf die Position des Stapelrahmens für Parameter 1, R2
bewegt wird (Zeile 2). In Zeile 3 erfolgt der Unterprogramm
aufruf nach foo(). Der Unterprogrammaufruf umfaßt mehrere
Aktionen, einschließlich:
Diese Prozedur speichert das Maskenregister, ändert den Pro
grammfluß über den Sequenzer und stellt einen neuen Masken-
und Rahmenkontext her. Es ist festzustellen, daß die Seman
tik der "CALL"-Anweisung vom allgemeinen Fall verschieden
ist. Wenn der Aufruf unbedingt ist, stellt das spezifizierte
Maskenregister den Maskenkontext für das aufgerufene Pro
gramm her.
Um einen unnötigen Overhead zum Wiederladen der skalaren
Maskenbitbank zu vermeiden, ist ein spezielles Maskenbit MB6
vorgesehen. Es wird wie jedes andere Maskenbit behandelt.
Jedoch ist es mit dem skalaren Maskenkontext- (MC-) Bit, das
überall Null ist außer bei der am weitesten im Nord-Westen
liegenden PE, über ein UND verbunden, was die skalare Verar
beitung vereinfacht. Das SCM-Bit wird mit dem MC-Bit im Mas
kenregister gespeichert.
Die Rückkehranweisung in Zeile 9 stellt die Maske und
den Kontext wieder her:
Zusätzlich zur Betrachtung des Maskierungsschemas über
die Funktionsaufrufe muß das Konzept der verschachtelten Be
dingungen, also eine Bedingung innerhalb einer anderen Be
dingung innerhalb einer weiteren Bedingung usw., unterstützt
werden. Allgemein ist die Verschachtelungstiefe von Bedin
gungen in einer SIMD-Maschine sehr klein, typischerweise
eine oder zwei Bedingungen tief. Dies rührt daher, daß eine
tiefe Verschachtelung zu einer sehr uneffektiven Durchfüh
rung auf einer SIMD-Maschine führt, die bedingte SIMD-Kodes
ausführt. Jedoch kann es immer noch notwendig sein, in be
stimmten Situationen tiefere Verschachtelungen auszuführen.
Außerdem kann eine Betriebsüberwachung ebenfalls die Anzahl
der abhängigen Bedingungen erhöhen. Wegen der Kombination
von wenigstens einem dieser beiden Faktoren zusammen mit der
Notwendigkeit für die wahren und unbedingten Bits (MB0, MB7)
wurde für eine Wahl von acht Maskierungsbits, von denen fünf
allgemeine Bits sind, eines der skalaren Verarbeitung dient
und zwei hardwaremäßig verdrahtet sind, entschieden. Ent
sprechend einem bevorzugten Ausführungsbeispiel der Erfin
dung beträgt die minimale Anzahl von erwünschten Bits in der
Bitbank sowohl für die Funktionsbitbank als auch für die I/O-
Bitbank vier allgemeine Bits, ein "wahres" Bit, ein
"unbedingtes" Bit und ein "skalares" Bit, was zusammen sie
ben Bits macht. In einem Fall, in dem die bedingte Ver
schachtelung die Anzahl der Maskenbits übersteigt, gibt es
eine gnädige Degradierung in der Leistung, da die Bitbank
durch die move-Anweisung in die allgemeinen Register gespült
werden kann.
Im Hinblick auf diese Diskussion betrachte man den fol
genden, verschachtelten Quellkode als Beispiel:
Man betrachte nun den folgenden SCAP-Assemblerkode. In die
sem Beispiel erfordert jedes MOVE einen Taktzyklus, jeder
Vergleich erfordert zwei Taktzyklen, jede Fließkommaopera
tion erfordert vier Taktzyklen von Register zu Register, und
jede I/O-Operation erfordert einen Zyklus.
Die verschachtelte Bedingung (A < X) sollte das logische
UND von (X < 9.0) und (A < X) sein. Ein Verfahren zum Errei
chen dessen ist in Zeile 4 gezeigt. In diesen Kodezeilen
werden die MB-Bits zuerst auf falsch gesetzt. Dann wird der
Vergleich (A < X) durch den Vergleich (X < 9.0) bedingt. So
mit ist MB2 nur dann wahr, wenn MB1 wahr ist und A < X. Nach
dem Abwarten eines Taktzyklus für das Ergebnis des inneren
Vergleichs bis zu dessen Beendigung kann man das "then" und
"else" auswerten. Es ist festzustellen, daß die letzten bei
den Operationen von der Berechnung von A abhängen. Somit
konnte man seine Auswertung durch die inneren Bedingungen
hochziehen. Schließlich bleibt festzustellen, daß das Mas
kieren durch "(MB0)" eine unbedingte Operation ist. Wie in
einer Assemblersprache üblich, impliziert das Fehlen einer
Bedienungsspezifikation einen Standard von MB0 als geeignet.
Wie oben erwähnt, verwenden SIMD-Computer Prozessormas
kierungen, um bedingte Operationen durchzuführen, bei denen
die Bedingung einen Vektor/Array-Ausdruck umfaßt. Während
ein Einzelprozessor nur die "then"-Bestimmung oder die
"else"-Bestimmung ausführt, führt ein SIMD-Prozessor beide
Bestimmungen aus, aber er sperrt jene Prozessorelemente, bei
denen die Bedingung der Bestimmung nicht wahr ist. Dies ist
deswegen so, weil für einige Elemente Xi < Yi, während für
andere Elemente Xj < Yj. Das Problem ist, daß bei vielen Be
dingungen nur eine Bestimmung Elemente enthält, bei denen
die Bedingung wahr ist. Mit zunehmender Verschachtelungs
tiefe der Bedingungsstatements nimmt die Wahrscheinlichkeit,
daß eine Bestimmung keine wahren Elemente besitzt, zu. Dies
kommt daher, daß die meisten Bedingungen außergewöhnliche
Umstände behandeln, wie etwa Randbedingungen. Unglücklicher
weise werden in SIMD-Maschinen typischerweise alle Bestim
mungen ausgeführt, es sei denn, daß der Programmierer expli
zit einen separaten Test, der einen Reduktionsschritt durch
führt, und einen nachfolgenden Test zum Übergehen einer Be
stimmung ohne wahre Elemente kodiert. Daher wird ein einfa
cher, impliziter Hardwaremechanismus eingeführt, um zu te
sten, ob eine Bestimmung eine leere, aktive Menge von Pro
zessorelementen besitzt. Dies ist ein Teil des Maskierungs
mechanismus und macht es möglich, auf effiziente Weise leere
Bestimmungen zu überspringen und die Prozessorleistung deut
lich zu verbessern. Dies wird erreicht durch die Verwendung
einer global verdrahteten ODER-Responseleitung von jedem der
Prozessorelemente, die das globale Responseflag (GRF) ge
nannt wird. Das globale Responseflag wird in dem globalen
Responseflagregister 68 gespeichert. Es ist ein Mechanismus
vorgesehen, damit das Ergebnis eines Vergleichs- oder expli
ziten Bewegungsvorgangs in das globale Responseflag ge
schrieben werden kann. Man betrachte zum Beispiel den folgen
den Kode, der aus dem obigen Koderahmen wiedergeschrieben
ist:
Die "IF"-Anweisungen sind bedingte Zweige des Sequenzers.
Das "∼" bezeichnet das logische Komplement. Das globale Re
sponseflag wird bitweise implizit mit dem Maskenkontextbit
über UND verbunden. Dies führt zu einem Endwert, der von je
dem Prozessorelement dem verdrahteten ODER zugewiesen wird,
das das Array als einen möglichen Eingang aufweist, der von
dem globalen Kontroller gelesen wird. Es ist festzustellen,
daß es notwendig ist, global sowohl das Ergebnis des Ver
gleichs für die "then"-Bestimmung als auch das Komplement
des Vergleichs für die "else"-Bestimmung über ODER zu ver
knüpfen. Dies gilt deswegen, weil das globale ODER(∼ GRF) ≠
∼globales ODER(GRF). Zusätzlich kann das GRF-Bit auch das
Ziel einer ALU-Operation oder einer Bewegungsanweisung sein.
Es könnte explizit geschrieben werden, um den von dem Kon
troller gelesenen Wert festzulegen. Dies führt zu einem all
gemeinen SIMD-Rückkopplungsmechanismus für den Kontroller.
Die vorstehende Diskussion offenbart und beschreibt le
diglich beispielhaft Ausführungsformen der vorliegenden Er
findung. Der Fachmann wird aus einer solchen Diskussion und
aus den beigefügten Zeichnungen und Patentansprüchen sofort
erkennen, daß verschiedene Änderungen, Modifikationen und
Variationen durchgeführt werden können, ohne vom Umfang und
Wesen der Erfindung, wie sie in den beigefügten Pa
tentansprüchen definiert ist, abzuweichen.
Claims (22)
1. SIMD-Rechner-Architektur mit mehrfachen, untereinander verbun
denen Prozessorelementen (14), dadurch gekennzeichnet, daß
jedes der Prozessorelemente umfaßt:
eine Speichervorrichtung (12) zum Speichern von Daten;
eine Funktionsvorrichtung (16, 18, 20, 22) zum Durchfüh ren von Rechen- und/oder Eingabe/Ausgabe-Operationen;
eine Mehrfach-Operations-Anweisungs-Registervorrichtung (26) zum Speichern einer Anweisung, um normal zu bewirken, daß die Funktionsvorrichtung gleichzeitig mehrfache Opera tionen durchführt;
eine Maskenregistervorrichtung (28, 60) zum Speichern einer Mehrzahl von Maskenbits, wobei wenigstens ein Masken bit mit der Funktionsvorrichtung verbunden ist; und
eine Vorrichtung zum Einstellen der Maskenbits als eine Funktion des Zustands der Daten in der Speichervorrichtung, wobei die Inhalte der Maskenregistervorrichtung selektiv die Durchführung bestimmter Operationen verhindern.
eine Speichervorrichtung (12) zum Speichern von Daten;
eine Funktionsvorrichtung (16, 18, 20, 22) zum Durchfüh ren von Rechen- und/oder Eingabe/Ausgabe-Operationen;
eine Mehrfach-Operations-Anweisungs-Registervorrichtung (26) zum Speichern einer Anweisung, um normal zu bewirken, daß die Funktionsvorrichtung gleichzeitig mehrfache Opera tionen durchführt;
eine Maskenregistervorrichtung (28, 60) zum Speichern einer Mehrzahl von Maskenbits, wobei wenigstens ein Masken bit mit der Funktionsvorrichtung verbunden ist; und
eine Vorrichtung zum Einstellen der Maskenbits als eine Funktion des Zustands der Daten in der Speichervorrichtung, wobei die Inhalte der Maskenregistervorrichtung selektiv die Durchführung bestimmter Operationen verhindern.
2. SIMD-Architektur nach Anspruch 1, dadurch gekenn
zeichnet, daß die Maskenregistervorrichtung ein Maskenkon
textbit (66) umfaßt, wobei das Maskenkontextbit selektiv,
bitweise mit wenigstens einem mit der Funktionsvorrichtung
verbundenen Bit logisch über ein UND-Gatter verbunden wird.
3. SIMD-Architektur nach Anspruch 1, dadurch gekenn
zeichnet, daß die Maskenregistervorrichtung eine Mehrzahl
von Funktionseinheitenbits umfaßt.
4. SIMD-Architektur nach Anspruch 3, dadurch gekenn
zeichnet, daß die Maskenregistervorrichtung ein hardwaremä
ßig verdrahtetes, wahres Bit ist.
5. SIMD-Architektur nach Anspruch 2, dadurch gekenn
zeichnet, daß die Maskenregistervorrichtung ein hardwaremä
ßig verdrahtetes, unbedingtes Bit ist, das das Maskenkon
textbit überlagert.
6. SIMD-Architektur nach Anspruch 1, dadurch gekenn
zeichnet, daß die Maskenregistervorrichtung ein globales Re
sponseflagregister (68) zum Speichern eines globalen Respon
seflagbits umfaßt, wobei das globale Responseflagbit mit je
dem globalen Responseflagbit jedes anderen Prozessorelements
logisch über ein ODER-Gatter verbunden wird, um zu bestim
men, ob jedes der Prozessorelemente die bedingten Anforde
rungen einer bestimmten Anweisungssequenz erfüllt.
7. SIMD-Architektur nach Anspruch 1, dadurch gekenn
zeichnet, daß die Maskenregistervorrichtung eine Vorrichtung
zur Ausgabe der Werte der individuellen Maskenbits an einen
Stapelmechanismus bei Beginn einer bestimmten Anweisungsse
quenz und zum Wiederladen der Maskenbits am Ende der Anwei
sungssequenz aus dem Stapelmechanismus umfaßt.
8. SIMD-Architektur nach Anspruch 3, dadurch gekenn
zeichnet, daß die Maskenregistervorrichtung acht Bits um
faßt, die selektiv durch eine Drei-Bit-Position adressierbar
sind.
9. SIMD-Architektur nach Anspruch 1, dadurch gekenn
zeichnet, daß ein am weitesten nach Nord-Westen liegendes
Prozessorelement die skalare Verarbeitung vereinfacht.
10. SIMD-Architektur nach Anspruch 9, dadurch gekenn
zeichnet, daß die Maskenregistervorrichtung ein skalares
Maskenkontextbit umfaßt, wobei das skalare Maskenkontextbit
bei jedem Prozessorelement außer beim am weitesten nach
Nord-Westen liegenden Prozessorelement Null ist, um die ska
lare Verarbeitung durch das am weitesten nach Nord-Westen
liegende Prozessorelement zu vereinfachen.
11. Verfahren zur Datenverarbeitung in einem Prozessor
für eine einzelne Anweisung mit mehrfachem Datenstrom, der
eine Mehrzahl von Prozessorelementen umfaßt, dadurch gekenn
zeichnet, daß dieses Verfahren folgende Schritte umfaßt:
Zuweisen eines Satzes von Anweisungen für jedes der Pro zessorelemente, von denen wenigstens eine Anweisung eine Mehrzahl von verschiedenen Maschinenoperationen umfaßt;
Zuweisen eines vorgegebenen Datensatzes für jedes der Prozessorelemente; und
Maskieren einzelner Maschinenoperationen innerhalb einer einzelnen Anweisung, die nicht die Erfordernisse eines be stimmten bedingten Statements innerhalb des Satzes der An weisungen erfüllt, wobei der Schritt zum Maskieren die Schritte zum Auswählen eines speziellen Maskenbits aus einem Satz von Maskenbitregistern, die logische UND-Verbindung der Maskenbits mit einem Maskenkontextbit, wobei das Maskenkon textbit entsprechend dem bestimmten bedingten Statement ge setzt wird, und Freigeben oder Sperren des Prozessorelements entsprechend dem Ergebnis des Schrittes der logischen UND- Verbindung umfaßt.
Zuweisen eines Satzes von Anweisungen für jedes der Pro zessorelemente, von denen wenigstens eine Anweisung eine Mehrzahl von verschiedenen Maschinenoperationen umfaßt;
Zuweisen eines vorgegebenen Datensatzes für jedes der Prozessorelemente; und
Maskieren einzelner Maschinenoperationen innerhalb einer einzelnen Anweisung, die nicht die Erfordernisse eines be stimmten bedingten Statements innerhalb des Satzes der An weisungen erfüllt, wobei der Schritt zum Maskieren die Schritte zum Auswählen eines speziellen Maskenbits aus einem Satz von Maskenbitregistern, die logische UND-Verbindung der Maskenbits mit einem Maskenkontextbit, wobei das Maskenkon textbit entsprechend dem bestimmten bedingten Statement ge setzt wird, und Freigeben oder Sperren des Prozessorelements entsprechend dem Ergebnis des Schrittes der logischen UND- Verbindung umfaßt.
12. Verfahren nach Anspruch 11, dadurch gekennzeichnet,
daß der Schritt zur Auswahl eines Maskenbits aus einem Mas
kenbitregister die Schritte zur Auswahl eines Maskenbits aus
einem Maskenbitregister einschließlich eines hardwaremäßig
verdrahteten, wahren Bits umfaßt.
13. Verfahren nach Anspruch 11, dadurch gekennzeichnet,
daß der Schritt zur Auswahl eines Maskenbits aus einem Mas
kenbitregister die Schritte zur Auswahl eines Maskenbits aus
einem Maskenbitregister einschließlich eines hardwaremäßig
verdrahteten, unbedingten Bits, das das Maskenkontextbit
überlagert, umfaßt.
14. Verfahren nach Anspruch 1, dadurch gekennzeichnet,
daß es den Schritt zur logischen ODER-Verknüpfung eines Bits
in einem globalen Responseflagregister (68) mit einem Bit in
einem globalen Responseflagregister von jedem anderen Pro
zessorelement umfaßt, um zu bestimmen, ob jedes der Prozes
sorelemente die bedingten Anforderungen der bedingten Anwei
sung erfüllt.
15. Verfahren nach Anspruch 11, dadurch gekennzeichnet,
daß der Schritt zur Auswahl eines Maskenbits aus einem Mas
kenregister die Auswahl eines Maskenbits aus einer Acht-Bit-
Funktions-Bitbank umfaßt.
16. Verfahren nach Anspruch 11, dadurch gekennzeichnet,
daß es außerdem den Schritt der logischen UND-Verknüpfung
eines speziellen Maskenkontextbits mit einem skalaren Mas
kenkontextbit umfaßt, wobei das skalare Maskenkontextbit nur
für ein Prozessorelement wahr sein kann, um die skalare Ver
arbeitung zu vereinfachen.
17. Architektur für eine einzelne Anweisung mit mehrfa
chen Daten (SIMD) (10) mit mehrfachen, untereinander verbun
denen Prozessorelementen (14), dadurch gekennzeichnet, daß
jedes der Prozessorelemente umfaßt:
eine Speichervorrichtung (12) zum Speichern von Daten;
eine Funktionsvorrichtung (16, 18, 20, 22) zum Durchfüh ren von Rechen- und/oder Eingabe/Ausgabe-Operationen;
eine Mehrfach-Operations-Anweisungs-Registervorrichtung (26) zum Speichern einer Anweisung, um normalerweise zu be wirken, daß die Funktionsvorrichtung gleichzeitig mehrfache Operationen durchführt;
eine Maskenregistervorrichtung (28, 60) zum Speichern einer Mehrzahl von Maskenbits, wobei wenigstens ein Masken bit mit der Funktionsvorrichtung verbunden ist, wobei die Maskenregistervorrichtung ein Maskenkontextbit (66) umfaßt, wobei das Maskenkontextbit selektiv, bitweise mit wenigstens einem mit der Funktionsvorrichtung verbundenen Bit logisch über ein UND-Gatter (24) verbunden wird; und
eine Vorrichtung zum Einstellen der Maskenbits als eine Funktion des Zustands der Daten in der Speichervorrichtung, wobei die Inhalte der Maskenregistervorrichtung selektiv die Durchführung bestimmter Operationen verhindern.
eine Speichervorrichtung (12) zum Speichern von Daten;
eine Funktionsvorrichtung (16, 18, 20, 22) zum Durchfüh ren von Rechen- und/oder Eingabe/Ausgabe-Operationen;
eine Mehrfach-Operations-Anweisungs-Registervorrichtung (26) zum Speichern einer Anweisung, um normalerweise zu be wirken, daß die Funktionsvorrichtung gleichzeitig mehrfache Operationen durchführt;
eine Maskenregistervorrichtung (28, 60) zum Speichern einer Mehrzahl von Maskenbits, wobei wenigstens ein Masken bit mit der Funktionsvorrichtung verbunden ist, wobei die Maskenregistervorrichtung ein Maskenkontextbit (66) umfaßt, wobei das Maskenkontextbit selektiv, bitweise mit wenigstens einem mit der Funktionsvorrichtung verbundenen Bit logisch über ein UND-Gatter (24) verbunden wird; und
eine Vorrichtung zum Einstellen der Maskenbits als eine Funktion des Zustands der Daten in der Speichervorrichtung, wobei die Inhalte der Maskenregistervorrichtung selektiv die Durchführung bestimmter Operationen verhindern.
18. Architektur nach Anspruch 17, dadurch gekennzeich
net, daß ein Bit der beiden mit der Funktionsvorrichtung
verbundenen Maskenbits ein hardwaremäßig verdrahtetes, wah
res Bit ist.
19. Architektur nach Anspruch 17, dadurch gekennzeich
net, daß ein Bit der Maskenregistervorrichtung ein hardware
mäßig verdrahtetes, unbedingtes Bit ist, das das Maskenkon
textbit überlagert.
20. Architektur nach Anspruch 17, dadurch gekennzeich
net, daß die Maskenregistervorrichtung ein globales Respon
seflagregister (68) zum Speichern eines globalen Response
flagbits umfaßt, wobei das globale Responseflagbit mit jedem
globalen Responseflagbit jedes anderen Prozessorelements lo
gisch über ein ODER-Gatter verbunden wird, um zu bestimmen,
ob jedes der Prozessorelemente die bedingten Anforderungen
einer bestimmten Anweisungssequenz erfüllt.
21. Architektur nach Anspruch 17, dadurch gekennzeich
net, daß die Maskenregistervorrichtung eine Vorrichtung zur
Ausgabe der Werte der individuellen Maskenbits an einen Sta
pelmechanismus bei Beginn einer bestimmten Anweisungssequenz
und zum Wiederladen der Maskenbits am Ende der Anweisungsse
quenz aus dem Stapelmechanismus umfaßt.
22. Architektur nach Anspruch 17, dadurch gekennzeich
net, daß die Maskenregistervorrichtung ein skalares Masken
kontextbit umfaßt, wobei das skalare Maskenkontextbit bei
jedem Prozessorelement außer beim am weitesten nach Nord-We
sten liegenden Prozessorelement Null ist, um die skalare
Verarbeitung durch das am weitesten nach Nord-Westen lie
gende Prozessorelement zu vereinfachen.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US98930292A | 1992-12-11 | 1992-12-11 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE4342250A1 true DE4342250A1 (de) | 1994-06-30 |
Family
ID=25534986
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE4342250A Ceased DE4342250A1 (de) | 1992-12-11 | 1993-12-10 | Rechnerarchitektur und Verfahren zum Betreiben eines Parallelrechners |
Country Status (4)
Country | Link |
---|---|
US (1) | US5555428A (de) |
JP (1) | JPH06236448A (de) |
DE (1) | DE4342250A1 (de) |
GB (1) | GB2273377A (de) |
Families Citing this family (105)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19533961A1 (de) * | 1995-09-13 | 1997-03-20 | Siemens Ag | Verfahren zum Laden von Software in Kommunikationssystemen mit nichtredundanten, dezentralen Einrichtungen |
US5907842A (en) * | 1995-12-20 | 1999-05-25 | Intel Corporation | Method of sorting numbers to obtain maxima/minima values with ordering |
US6088783A (en) * | 1996-02-16 | 2000-07-11 | Morton; Steven G | DPS having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word |
US6317819B1 (en) * | 1996-01-11 | 2001-11-13 | Steven G. Morton | Digital signal processor containing scalar processor and a plurality of vector processors operating from a single instruction |
US5727229A (en) * | 1996-02-05 | 1998-03-10 | Motorola, Inc. | Method and apparatus for moving data in a parallel processor |
US5754458A (en) * | 1996-05-30 | 1998-05-19 | Hewlett-Packard Company | Trailing bit anticipator |
JP3442225B2 (ja) * | 1996-07-11 | 2003-09-02 | 株式会社日立製作所 | 演算処理装置 |
WO1998006042A1 (en) * | 1996-08-07 | 1998-02-12 | Sun Microsystems, Inc. | Wide instruction unpack method and apparatus |
US5887003A (en) * | 1996-09-10 | 1999-03-23 | Hewlett-Packard Company | Apparatus and method for comparing a group of binary fields with an expected pattern to generate match results |
US5867644A (en) * | 1996-09-10 | 1999-02-02 | Hewlett Packard Company | System and method for on-chip debug support and performance monitoring in a microprocessor |
US6003107A (en) * | 1996-09-10 | 1999-12-14 | Hewlett-Packard Company | Circuitry for providing external access to signals that are internal to an integrated circuit chip package |
US5881224A (en) * | 1996-09-10 | 1999-03-09 | Hewlett-Packard Company | Apparatus and method for tracking events in a microprocessor that can retire more than one instruction during a clock cycle |
US5956476A (en) * | 1996-10-31 | 1999-09-21 | Hewlett Packard Company | Circuitry and method for detecting signal patterns on a bus using dynamically changing expected patterns |
US5880671A (en) * | 1996-10-31 | 1999-03-09 | Hewlett-Packard Company | Flexible circuitry and method for detecting signal patterns on a bus |
US5956477A (en) * | 1996-11-25 | 1999-09-21 | Hewlett-Packard Company | Method for processing information in a microprocessor to facilitate debug and performance monitoring |
US6009539A (en) * | 1996-11-27 | 1999-12-28 | Hewlett-Packard Company | Cross-triggering CPUs for enhanced test operations in a multi-CPU computer system |
US5881217A (en) * | 1996-11-27 | 1999-03-09 | Hewlett-Packard Company | Input comparison circuitry and method for a programmable state machine |
US6047366A (en) * | 1996-12-31 | 2000-04-04 | Texas Instruments Incorporated | Single-instruction multiple-data processor with input and output registers having a sequential location skip function |
US6786420B1 (en) | 1997-07-15 | 2004-09-07 | Silverbrook Research Pty. Ltd. | Data distribution mechanism in the form of ink dots on cards |
US6618117B2 (en) | 1997-07-12 | 2003-09-09 | Silverbrook Research Pty Ltd | Image sensing apparatus including a microcontroller |
AUPO802797A0 (en) | 1997-07-15 | 1997-08-07 | Silverbrook Research Pty Ltd | Image processing method and apparatus (ART54) |
US6690419B1 (en) | 1997-07-15 | 2004-02-10 | Silverbrook Research Pty Ltd | Utilising eye detection methods for image processing in a digital image camera |
US6879341B1 (en) | 1997-07-15 | 2005-04-12 | Silverbrook Research Pty Ltd | Digital camera system containing a VLIW vector processor |
US6985207B2 (en) | 1997-07-15 | 2006-01-10 | Silverbrook Research Pty Ltd | Photographic prints having magnetically recordable media |
US7110024B1 (en) | 1997-07-15 | 2006-09-19 | Silverbrook Research Pty Ltd | Digital camera system having motion deblurring means |
US20040119829A1 (en) | 1997-07-15 | 2004-06-24 | Silverbrook Research Pty Ltd | Printhead assembly for a print on demand digital camera system |
AUPO850597A0 (en) | 1997-08-11 | 1997-09-04 | Silverbrook Research Pty Ltd | Image processing method and apparatus (art01a) |
US6624848B1 (en) | 1997-07-15 | 2003-09-23 | Silverbrook Research Pty Ltd | Cascading image modification using multiple digital cameras incorporating image processing |
US6075935A (en) * | 1997-12-01 | 2000-06-13 | Improv Systems, Inc. | Method of generating application specific integrated circuits using a programmable hardware architecture |
US6101592A (en) * | 1998-12-18 | 2000-08-08 | Billions Of Operations Per Second, Inc. | Methods and apparatus for scalable instruction set architecture with dynamic compact instructions |
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 |
US6052769A (en) * | 1998-03-31 | 2000-04-18 | Intel Corporation | Method and apparatus for moving select non-contiguous bytes of packed data in a single instruction |
US6079008A (en) * | 1998-04-03 | 2000-06-20 | Patton Electronics Co. | Multiple thread multiple data predictive coded parallel processing system and method |
US6308250B1 (en) * | 1998-06-23 | 2001-10-23 | Silicon Graphics, Inc. | Method and apparatus for processing a set of data values with plural processing units mask bits generated by other processing units |
AUPP702098A0 (en) | 1998-11-09 | 1998-12-03 | Silverbrook Research Pty Ltd | Image creation method and apparatus (ART73) |
US6374370B1 (en) | 1998-10-30 | 2002-04-16 | Hewlett-Packard Company | Method and system for flexible control of BIST registers based upon on-chip events |
US6523106B1 (en) * | 1998-12-21 | 2003-02-18 | Intel Corporation | Method and apparatus for efficient pipelining |
EP1181648A1 (de) | 1999-04-09 | 2002-02-27 | Clearspeed Technology Limited | Paralleldatenverarbeitungsvorrichtung |
US7526630B2 (en) | 1999-04-09 | 2009-04-28 | Clearspeed Technology, Plc | Parallel data processing apparatus |
US8171263B2 (en) | 1999-04-09 | 2012-05-01 | Rambus Inc. | Data processing apparatus comprising an array controller for separating an instruction stream processing instructions and data transfer instructions |
US8169440B2 (en) | 1999-04-09 | 2012-05-01 | Rambus Inc. | Parallel data processing apparatus |
US8762691B2 (en) | 1999-04-09 | 2014-06-24 | Rambus Inc. | Memory access consolidation for SIMD processing elements using transaction identifiers |
US7506136B2 (en) | 1999-04-09 | 2009-03-17 | Clearspeed Technology Plc | Parallel data processing apparatus |
US7802079B2 (en) | 1999-04-09 | 2010-09-21 | Clearspeed Technology Limited | Parallel data processing apparatus |
US7627736B2 (en) | 1999-04-09 | 2009-12-01 | Clearspeed Technology Plc | Thread manager to control an array of processing elements |
GB2348981A (en) * | 1999-04-09 | 2000-10-18 | Pixelfusion Ltd | Parallel data processing system with SIMD array |
US8174530B2 (en) | 1999-04-09 | 2012-05-08 | Rambus Inc. | Parallel date processing apparatus |
US7966475B2 (en) | 1999-04-09 | 2011-06-21 | Rambus Inc. | Parallel data processing apparatus |
AUPQ056099A0 (en) | 1999-05-25 | 1999-06-17 | Silverbrook Research Pty Ltd | A method and apparatus (pprint01) |
GB2352536A (en) * | 1999-07-21 | 2001-01-31 | Element 14 Ltd | Conditional instruction execution |
GB2352308B (en) * | 1999-07-21 | 2004-06-30 | Element 14 Ltd | Accessing a test condition |
US7191310B2 (en) * | 2000-01-19 | 2007-03-13 | Ricoh Company, Ltd. | Parallel processor and image processing apparatus adapted for nonlinear processing through selection via processor element numbers |
US6728862B1 (en) | 2000-05-22 | 2004-04-27 | Gazelle Technology Corporation | Processor array and parallel data processing methods |
US6732253B1 (en) * | 2000-11-13 | 2004-05-04 | Chipwrights Design, Inc. | Loop handling for single instruction multiple datapath processor architectures |
US7861071B2 (en) * | 2001-06-11 | 2010-12-28 | Broadcom Corporation | Conditional branch instruction capable of testing a plurality of indicators in a predicate register |
US7017032B2 (en) * | 2001-06-11 | 2006-03-21 | Broadcom Corporation | Setting execution conditions |
US6986025B2 (en) * | 2001-06-11 | 2006-01-10 | Broadcom Corporation | Conditional execution per lane |
US7127593B2 (en) * | 2001-06-11 | 2006-10-24 | Broadcom Corporation | Conditional execution with multiple destination stores |
US20100274988A1 (en) * | 2002-02-04 | 2010-10-28 | Mimar Tibet | Flexible vector modes of operation for SIMD processor |
US6970985B2 (en) | 2002-07-09 | 2005-11-29 | Bluerisc Inc. | Statically speculative memory accessing |
US7793084B1 (en) | 2002-07-22 | 2010-09-07 | Mimar Tibet | Efficient handling of vector high-level language conditional constructs in a SIMD processor |
EP1387254B1 (de) * | 2002-07-31 | 2012-12-12 | Texas Instruments Incorporated | Übersprungbefehl, der einen Test mit direkten Daten durchführt |
US20040252547A1 (en) * | 2003-06-06 | 2004-12-16 | Chengpu Wang | Concurrent Processing Memory |
US7698539B1 (en) * | 2003-07-16 | 2010-04-13 | Banning John P | System and method of instruction modification |
US7606997B1 (en) | 2003-07-18 | 2009-10-20 | Guillermo Rozas | Method and system for using one or more address bits and an instruction to increase an instruction set |
US7043518B2 (en) * | 2003-07-31 | 2006-05-09 | Cradle Technologies, Inc. | Method and system for performing parallel integer multiply accumulate operations on packed data |
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 |
US7594069B2 (en) * | 2004-02-26 | 2009-09-22 | Ati Technologies, Inc. | Method and apparatus for single instruction multiple data caching |
US7302627B1 (en) * | 2004-04-05 | 2007-11-27 | Mimar Tibet | Apparatus for efficient LFSR calculation in a SIMD processor |
US7873812B1 (en) | 2004-04-05 | 2011-01-18 | Tibet MIMAR | Method and system for efficient matrix multiplication in a SIMD processor architecture |
US7383427B2 (en) * | 2004-04-22 | 2008-06-03 | Sony Computer Entertainment Inc. | Multi-scalar extension for SIMD instruction set processors |
US20050289329A1 (en) | 2004-06-29 | 2005-12-29 | Dwyer Michael K | Conditional instruction for a single instruction, multiple data execution engine |
US7644255B2 (en) * | 2005-01-13 | 2010-01-05 | Sony Computer Entertainment Inc. | Method and apparatus for enable/disable control of SIMD processor slices |
JP2007004542A (ja) * | 2005-06-24 | 2007-01-11 | Renesas Technology Corp | 半導体信号処理装置 |
US7543136B1 (en) * | 2005-07-13 | 2009-06-02 | Nvidia Corporation | System and method for managing divergent threads using synchronization tokens and program instructions that include set-synchronization bits |
US7353369B1 (en) * | 2005-07-13 | 2008-04-01 | Nvidia Corporation | System and method for managing divergent threads in a SIMD architecture |
US7921148B2 (en) * | 2006-08-09 | 2011-04-05 | Infineon Technologies Ag | Standard cell for arithmetic logic unit and chip card controller |
US9069547B2 (en) | 2006-09-22 | 2015-06-30 | Intel Corporation | Instruction and logic for processing text strings |
US20080126766A1 (en) | 2006-11-03 | 2008-05-29 | Saurabh Chheda | Securing microprocessors against information leakage and physical tampering |
US7617384B1 (en) * | 2006-11-06 | 2009-11-10 | Nvidia Corporation | Structured programming control flow using a disable mask in a SIMD architecture |
JP4913685B2 (ja) * | 2007-07-04 | 2012-04-11 | 株式会社リコー | Simd型マイクロプロセッサおよびsimd型マイクロプロセッサの制御方法 |
US8312254B2 (en) * | 2008-03-24 | 2012-11-13 | Nvidia Corporation | Indirect function call instructions in a synchronous parallel thread processor |
US8332620B2 (en) * | 2008-07-25 | 2012-12-11 | Freescale Semiconductor, Inc. | System, method and computer program product for executing a high level programming language conditional statement |
US8755515B1 (en) | 2008-09-29 | 2014-06-17 | Wai Wu | Parallel signal processing system and method |
JP5452066B2 (ja) * | 2009-04-24 | 2014-03-26 | 本田技研工業株式会社 | 並列計算装置 |
JP5358287B2 (ja) * | 2009-05-19 | 2013-12-04 | 本田技研工業株式会社 | 並列計算装置 |
US8572355B2 (en) * | 2009-09-28 | 2013-10-29 | Nvidia Corporation | Support for non-local returns in parallel thread SIMD engine |
US9164770B2 (en) * | 2009-10-23 | 2015-10-20 | Mindspeed Technologies, Inc. | Automatic control of multiple arithmetic/logic SIMD units |
US20170365237A1 (en) * | 2010-06-17 | 2017-12-21 | Thincl, Inc. | Processing a Plurality of Threads of a Single Instruction Multiple Data Group |
US8726252B2 (en) * | 2011-01-28 | 2014-05-13 | International Business Machines Corporation | Management of conditional branches within a data parallel system |
US9176737B2 (en) * | 2011-02-07 | 2015-11-03 | Arm Limited | Controlling the execution of adjacent instructions that are dependent upon a same data condition |
US10534608B2 (en) | 2011-08-17 | 2020-01-14 | International Business Machines Corporation | Local computation logic embedded in a register file to accelerate programs |
US8832417B2 (en) | 2011-09-07 | 2014-09-09 | Qualcomm Incorporated | Program flow control for multiple divergent SIMD threads using a minimum resume counter |
SE1151231A1 (sv) * | 2011-12-20 | 2013-05-07 | Mediatek Sweden Ab | Digital signalprocessor och basbandskommunikationsanordning |
US9256429B2 (en) | 2012-08-08 | 2016-02-09 | Qualcomm Incorporated | Selectively activating a resume check operation in a multi-threaded processing system |
US9229721B2 (en) * | 2012-09-10 | 2016-01-05 | Qualcomm Incorporated | Executing subroutines in a multi-threaded processing system |
US9557993B2 (en) | 2012-10-23 | 2017-01-31 | Analog Devices Global | Processor architecture and method for simplifying programming single instruction, multiple data within a register |
US9424039B2 (en) | 2014-07-09 | 2016-08-23 | Intel Corporation | Instruction for implementing vector loops of iterations having an iteration dependent condition |
US9952876B2 (en) | 2014-08-26 | 2018-04-24 | International Business Machines Corporation | Optimize control-flow convergence on SIMD engine using divergence depth |
US10175964B2 (en) | 2014-09-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Compiler caching for runtime routine redundancy tracking |
US20170220520A1 (en) * | 2016-01-29 | 2017-08-03 | Knuedge Incorporated | Determining an operation state within a computing system with multi-core processing devices |
US11429555B2 (en) * | 2019-02-26 | 2022-08-30 | Apple Inc. | Coprocessors with bypass optimization, variable grid architecture, and fused vector operations |
US11113061B2 (en) * | 2019-09-26 | 2021-09-07 | Advanced Micro Devices, Inc. | Register saving for function calling |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2201015A (en) * | 1987-02-10 | 1988-08-17 | Univ Southampton | Parallel processor array and array element |
US4907148A (en) * | 1985-11-13 | 1990-03-06 | Alcatel U.S.A. Corp. | Cellular array processor with individual cell-level data-dependent cell control and multiport input memory |
US5045995A (en) * | 1985-06-24 | 1991-09-03 | Vicom Systems, Inc. | Selective operation of processing elements in a single instruction multiple data stream (SIMD) computer system |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4435758A (en) * | 1980-03-10 | 1984-03-06 | International Business Machines Corporation | Method for conditional branch execution in SIMD vector processors |
US5307506A (en) * | 1987-04-20 | 1994-04-26 | Digital Equipment Corporation | High bandwidth multiple computer bus apparatus |
-
1993
- 1993-12-08 GB GB9325170A patent/GB2273377A/en not_active Withdrawn
- 1993-12-10 DE DE4342250A patent/DE4342250A1/de not_active Ceased
- 1993-12-13 JP JP5312308A patent/JPH06236448A/ja active Pending
-
1995
- 1995-03-10 US US08/402,406 patent/US5555428A/en not_active Expired - Lifetime
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5045995A (en) * | 1985-06-24 | 1991-09-03 | Vicom Systems, Inc. | Selective operation of processing elements in a single instruction multiple data stream (SIMD) computer system |
US4907148A (en) * | 1985-11-13 | 1990-03-06 | Alcatel U.S.A. Corp. | Cellular array processor with individual cell-level data-dependent cell control and multiport input memory |
GB2201015A (en) * | 1987-02-10 | 1988-08-17 | Univ Southampton | Parallel processor array and array element |
Also Published As
Publication number | Publication date |
---|---|
US5555428A (en) | 1996-09-10 |
GB9325170D0 (en) | 1994-02-09 |
GB2273377A (en) | 1994-06-15 |
JPH06236448A (ja) | 1994-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4342250A1 (de) | Rechnerarchitektur und Verfahren zum Betreiben eines Parallelrechners | |
DE69115344T2 (de) | Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher | |
DE69131956T2 (de) | Verarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher | |
DE69130723T2 (de) | Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten | |
EP0689694B1 (de) | Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren | |
DE69933088T2 (de) | Vliw-verarbeiter verarbeitet befehle von verschiedenen breiten | |
DE3854568T2 (de) | SIMD-Feldrechner. | |
DE60018078T2 (de) | Einstellung von bedingungswerten in einem rechner | |
DE68925646T2 (de) | Pipeline-multiprozessorsystem | |
DE69621493T2 (de) | Hardwareunterstützung zur schnellen Emulation von nicht-implementierten Befehlen | |
DE10085152B4 (de) | Verfahren zum Erfassen von IEEE-Unterlauf-Ausnahmen bei spekulativen Gleitkommaoperationen | |
DE3685913T2 (de) | Vektorenverarbeitung. | |
DE68928340T2 (de) | Fliessband-Datenprozessor | |
DE69129569T2 (de) | Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen | |
DE2524229A1 (de) | Datenverarbeitungssystem mit pyramidenfoermiger hierarchie des steuerflusses | |
DE69415126T2 (de) | Gegenflusspipelineprozessor | |
DE2357003C2 (de) | Prozessor für eine Mehrprogramm-Datenverarbeitungsanlage | |
DE69228360T2 (de) | Registerlesekontrolle | |
DE19534752A1 (de) | Verfahren und System zum Liefern einer Unterstützung für eine spekulative Ausführung | |
DE3689389T2 (de) | Datenverarbeitungsprozessor. | |
DE2714805A1 (de) | Datenverarbeitungssystem | |
DE69826404T2 (de) | Datenverarbeitungssystem mit mehreren Prozessoren, die eine Registerbank gemeinsam benutzen | |
DE2847934A1 (de) | Datenverarbeitungseinrichtung mit einem mikrobefehlsspeicher | |
DE2230102A1 (de) | Rechenwerk fuer variable wortlaengen | |
DE69835425T2 (de) | Verbesserter befehlszuteilungsmechanismus für eine geschützte vliw-architektur |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8131 | Rejection |