DE4342250A1 - Rechnerarchitektur und Verfahren zum Betreiben eines Parallelrechners - Google Patents

Rechnerarchitektur und Verfahren zum Betreiben eines Parallelrechners

Info

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
Application number
DE4342250A
Other languages
English (en)
Inventor
James J Radigan
David A Schwartz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Raytheon Co
Original Assignee
Hughes Aircraft Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hughes Aircraft Co filed Critical Hughes Aircraft Co
Publication of DE4342250A1 publication Critical patent/DE4342250A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent 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.
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.
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.
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.
DE4342250A 1992-12-11 1993-12-10 Rechnerarchitektur und Verfahren zum Betreiben eines Parallelrechners Ceased DE4342250A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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