DE3784082T2 - Adaptive befehlsverarbeitung durch feldrechner mit prozessoridentifikation und datenabhaengigen statusregistern in jedem prozessorelement. - Google Patents

Adaptive befehlsverarbeitung durch feldrechner mit prozessoridentifikation und datenabhaengigen statusregistern in jedem prozessorelement.

Info

Publication number
DE3784082T2
DE3784082T2 DE8787103374T DE3784082T DE3784082T2 DE 3784082 T2 DE3784082 T2 DE 3784082T2 DE 8787103374 T DE8787103374 T DE 8787103374T DE 3784082 T DE3784082 T DE 3784082T DE 3784082 T2 DE3784082 T2 DE 3784082T2
Authority
DE
Germany
Prior art keywords
instruction
data
register
processor
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE8787103374T
Other languages
English (en)
Other versions
DE3784082D1 (de
Inventor
Hungwen Li
Ching-Chy Wang
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of DE3784082D1 publication Critical patent/DE3784082D1/de
Publication of DE3784082T2 publication Critical patent/DE3784082T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8023Two dimensional arrays, e.g. mesh, torus
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F02COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
    • F02BINTERNAL-COMBUSTION PISTON ENGINES; COMBUSTION ENGINES IN GENERAL
    • F02B75/00Other engines
    • F02B75/02Engines characterised by their cycles, e.g. six-stroke
    • F02B2075/022Engines characterised by their cycles, e.g. six-stroke having less than six strokes per cycle
    • F02B2075/027Engines characterised by their cycles, e.g. six-stroke having less than six strokes per cycle four

Landscapes

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

Description

  • Die vorliegende Erfindung bezieht sich generell auf Feldrechner (Vektorrechner), z. B. Abbildrechner, die Datenströme verarbeiten, die über Felder von Prozessor- bzw. Verarbeitungselementen geleitet werden, wobei jedes Verarbeitungselement einen bestimmten Befehl ausführt.
  • Typische Feldrechner werden in folgenden Referenzdokumenten beschrieben:
  • NCR GEOMETRIC ARITHMETIC PARALLEL PROCESSOR, Produktspezifikation NCR45CG72, NCR Corp., Dayton, OH, 84, Seiten 1-12, beschreibt physische Merkmale eines repräsentativen Feldrechners.
  • Cloud et al., HIGHER EFFICIENCY FOR PARALLEL PROCESSORS, IEEEE Southcon, Neuauflage veröffentlicht von NCR Corporation Micro- Electronics Div., For Collins, Collins, CO, Seiten 1-7, enthält eine detaillierte Beschreibung der Funktionsweise des Geometric Arithmetic Parallel Processor (GAPP) von NCR.
  • Die derzeitigen Rechnersysteme werden nach Befehlsstrom und Datenstrom in viert Kategorien eingeteilt:
  • SISD (Single Instruction stream Single Data stream) (Ein Befehlsstrom, ein Datenstrom)
  • SIMD (Single Instruction stream Multiple Data stream) (Ein Befehlsstrom, mehrere Datenströme)
  • MISD (Multiple Instruction stream Single Data stream) (Mehrere Befehlsströme, ein Datenstrom)
  • MIMD (Mehrere Befehlsströme, mehrere Datenströme).
  • Als Beispiele für auf dem Markt angebotene Superrechner seien hier die Cyber-Baureihe von CDC, die CRAY-Baureihe von CRAY Research und die AP-Baureihe von NEC genannt. Alle diese Maschinen basieren auf der MISD-Architektur und benötigen einen erheblichen Zeitaufwand für das Einrichten der Befehls-Pipe für die Verarbeitung eines Vektors. Der Aufwand ist besonders hoch, wenn die Pipe-Einrichtung häufig erfolgt oder der Vektor sehr kurz ist; entsprechend niedrig ist die Leistung des Rechners in diesen Fällen.
  • Durch Datenabhängigkeit in einer Schleife verringert sich die Leistung dieser Superrechner. Die Maschinen müssen entweder mit der Vorabeinrichtung der Pipe solange warten, bis die Datenabhängigkeit aufgelöst ist (d. h. der Status genau bekannt ist) oder sie richten die Pipe für einen Pfad ein (d. h. der Status ist "wahr"), wenn die Wahrscheinlichkeit entsprechend hoch ist In ersterem Fall wird die Ausführung verzögert, in letzterem Fall muß die Pipe zurückgesetzt werden (d. h. die Einrichthäufigkeit für die Pipe erhöht sich), wenn "falsch geraten" wurde. In beiden Fällen verringert sich die Leistung.
  • Das Fehlen von räumlicher und/oder Datenadaption führt zu folgenden Nachteilen:
  • 1. Datenabhängige Operationen werden sequentiell verarbeitet, dadurch wird die parallele Hardware nicht optimal genutzt, was zu einer Leistungsminderung führt.
  • 2. Daten mit räumlicher Wertigkeit werden als Ausnahme behandelt, dadurch keine parallele Verarbeitung.
  • 3. Verbindungen bei Parallelrechnern sind fix, dadurch wird die Vielseitigkeit der Algorithmen eingeschränkt.
  • 4. Komplementäre Operationen (z. B. SEND/RECEIVE-Paar), die durch Daten- oder räumliche Abhängigkeit verursacht werden, werden sequentiell ausgeführt, wodurch sich die Ausführungszeit verlängert.
  • 5. Entsprechend wird die Übertragungsbandbreite nicht optimal genutzt.
  • 6. Für Verarbeitungselemente mit unterschiedlichen räumlichen Zuständen müssen unterschiedliche Programmkopien generiert werden, wodurch sich der Software-Aufwand erhöht.
  • (1) Datenabhängige Parallelverarbeitung
  • Die derzeitigen Parallelrechner können effizient zur Verarbeitung von Schleifen mit langlaufendem Index eingesetzt werden, Schleifen mit Datenabhängigkeit werden jedoch nicht effizient unterstützt. Als Beispiel hier eine typische datenunabhängige Schleife:
  • for (i=O; i< 300; i++)
  • for (j=0; j< 500; j++)
  • c [i,j]=a[i,j]+b[i,j];
  • Die Verarbeitung ist auf den meisten gängigen SIMD-, MISD- und MIMD-Rechnern problemlos möglich.
  • Wird das Programm ,jedoch um Datenabhängigkeit erweitert, wie im folgenden Beispiel gezeigt, sind bisherige Parallelrechner nicht in der Lage, dieses Programm effizient zu bearbeiten.
  • for (i=0; i< 300; i++)
  • for (j=0; j< 500; j++)
  • if (status)
  • c [i,j]=a[i,j]+b[i,j];
  • else
  • c [i,j]=a[i,j]-b[i,j].
  • (2) Räumlich abhängige Parallelverarbeitung
  • Bei der Abbildverarbeitung oder anderen Anwendungen, bei denen den Daten räumliche Zustände zugeordnet sind, werden die Daten nicht homogen bearbeitet, sondern vielmehr entsprechend ihrer räumlichen Abhängigkeit. So werden z. B. Daten am Rand eines Abbilds anders bearbeitet als Daten aus randfernen Bereichen; dies ist eine Art der räumlichen Abhängigkeit bei Daten. Bei dieser Situation treten bei der Parallelverarbeitung zwei wesentliche Nachteile auf:
  • 1. Der Grad der Parallelität kann nur auf den homogenen Teil der Daten ausgedehnt werden; nicht-homogene Daten (z. B. Ränder) werden daher zwangsweise sequentiell verarbeitet. Dadurch verschlechtert sich die Leistung des Parallelsystems.
  • 2. Das Programm (bzw. die Codierung) für die nicht-homogenen Daten unterscheidet sich vom Programm für den homogenen Teil, daher muß die Codierung in mehreren Exemplaren erstellt werden. Dadurch erhöht sich der Aufwand für die Software.
  • In der Europäischen Patentanmeldung EP-A-0121763 wird ein Feldrechner beschrieben, bei dem einzelne Prozessoren des Feldes ein programmierbares logisches Feld enthalten, das als voreinstellbarer Befehlsdecodierer dient, dessen Ausgabedaten als Reaktion auf anstehende Daten modifiziert werden können, so daß eine einfache Wahlmöglichkeit für den Rechnerbetrieb besteht.
  • Zwar besteht hier ein gewisses Maß an Adaptionsfähigkeit, doch ist die Palette der alternativen Funktionen stark eingeschränkt, wie in Tabelle 2 dieser Anmeldung dargestellt. Insbesondere ist die für die vorstehenden Beispiele erforderliche Adaption nicht vorgesehen.
  • US-Patentschrift 3,287,702 beschreibt ein weiteres Konzept. Hierbei können einzelne Prozessoren von einer zentralen Steuereinheit so voreingestellt werden, daß sie in einem von mehreren Modi arbeiten, um das Feld auf die Anforderungen der jeweiligen Anwendungen abzustimmen. Es ist jedoch keine Einrichtung vorgesehen, die die Funktionsweise der einzelnen Prozessoren dynamisch einstellt, nachdem die verschiedenen Modusregister neu geladen wurden; dadurch ist eine effiziente Lösung des vorstehend beschriebenen Problems wiederum ausgeschlossen.
  • Gemäß der Erfindung ist ein Feldrechner (Vektorrechner) vorgesehen, der eine Steuereinheit mit Befehlsausgabefähigkeit und einer Reihe individueller Verarbeitungselemente zum Verarbeiten von Daten entsprechend Befehlen besitzt, die von der Steuereinheit gleichzeitig an die Verarbeitungselemente ausgegeben werden, wobei jedes Verarbeitungselement Verarbeitungsmittel und Ein-/Ausgabemittel besitzt, die mit anderen Verarbeitungselementen verbunden sind, dadurch gekennzeichnet, daß jedes gewählte Verarbeitungselement einen Befehlsadapter enthält, der ein Register zur Prozessoridentifizierung, einen Bitgruppenselektor, eine Übereinstimmungsüberprüfung und einen Befehlsmodifizierer enthält, wobei das Register zur Prozessoridentifizierung, der Bitgruppenselektor und die Übereinstimmungsüberprüfung dazu dienen, ein bewegbares Fenster festzulegen, um Modifizierungsbits zur Anwendung im Befehlsmodifizierer zu wählen.
  • Zum besseren Verständnis der Erfindung wird im folgenden anhand der beigefügten Zeichnungen ein Ausführungsbeispiel der Erfindung beschrieben.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Fig. 1 ist ein Blockdiagramm eines Feldrechners mit einem repräsentativen adaptiven Verarbeitungselement gemäß der Erfindung.
  • Fig. 2 zeigt ein detailliertes Blockdiagramm des Befehlsadapters von Fig. 1.
  • Fig. 3 zeigt ein detailliertes Blockdiagramm eines Befehlsadapters in einer vereinfachten Ausführung.
  • Fig. 4 zeigt ein detailliertes Blockdiagramm eines Befehlsadapters für einen Feldrechner mit multidimensionalem Netzwerk.
  • Fig. 5 zeigt ein detailliertes Blockdiagramm einer weiteren Ausführung des Befehlsadapters.
  • BESCHREIBUNG EINES AUSFÜHRUNGSBEISPIELS DER ERFINDUNG
  • Der adaptive Befehlsprozessor ordnet jedem adaptiven Verarbeitungselement in dem Parallelrechner eine Prozessoridentifikation (PID) zu. Er erfaßt eine Reihe von Bits mit dem datenabhängigen Status (data-dependent-status bits = DDS-Bits) aus dem Rechenwerk (ALU = arithmetic and logic unit) des adaptiven Verarbeitungselements. Anschließend leitet er mit Hilfe eines Befehlsadapters (IA = instruction adapter) den Befehl entsprechend der räumlichen Abhängigkeit und Datenabhängigkeit ab, die durch PID, DDS und den ursprünglichen Befehl reflektiert wird.
  • Fig. 1 zeigt den Feldrechner, der hinsichtlich Aufbau und Funktionsweise Feldrechnern nach dem Stand der Technik entspricht, ausgenommen die Bearbeitung von Datenabhängigkeit und räumlicher Abhängigkeit. Der Abbildprozessor enthält ein Feld mit adaptiven Verarbeitungselementen (APEA = adaptive processing element array) 1 und eine Feld-Steuereinheit (AC = array controller) 2, beide schematisch dargestellt. Die Feldsteuereinheit 2 übermittelt auf Befehlsleitung 3 eine Reihe von Befehlen und stellt einen Übertragungspfad 4 für Eingabe- und Ausgabedaten bereit. Das Verarbeitungselementefeld 1 enthält eine große Anzahl von einzelnen adaptiven Verarbeitungselementen 5, die jeweils für Adaption gemäß dieser Erfindung ausgelegt sind. Das Verarbeitungselementefeld 1 kann herkömmliche Verarbeitungselemente 6 enthalten, solange bekannt ist, welche Art von Verarbeitungselementen sich an den einzelnen Positionen befindet und sich die Organisation danach richtet; diese Art der Ausführung ist jedoch nicht unbedingt erwünscht. Bevorzugt wird der Einsatz identischer adaptiver Verarbeitungselemente; wird herkömmliche Rechnerleistung gewünscht, können diese Elemente, z. B. die mit 6 bezeichneten Elemente, entsprechend für herkömmliche Verarbeitung angepaßt werden.
  • Die Abbildverarbeitung läuft hinsichtlich des Datenflusses nach dem herkömmlichen Verfahren zur Abbildverarbeitung ab; die Daten gelangen in das Verarbeitungselementfeld und fließen entsprechend der anfänglichen Datenwerte, die durch die Verarbeitungselemente modifiziert wurden, die sie passieren, von Verarbeitungselement zu Verarbeitungselement, ohne zwischengeschalteten Zugriff auf den Systemspeicher. Die einzelnen Verarbeitungselemente werden vor Beginn des Datenflusses eingerichtet. Bei einem herkömmlichen Abbildprozessor besteht kaum eine Möglichkeit während der Ausführung Änderungen vorzunehmen, da die genaue Position der Daten während der Ausführung nicht bekannt ist. Kurz: Ein Abbildprozessor ist nach der Einrichtung für die Dauer der Ausführung ein spezialisierter Rechner für feste Operationen. Diese Erfindung ermöglicht dynamische Änderungen der Einrichtung während der Ausführung, da jedes der adaptierbaren adaptiven Verarbeitungselemente ein eigenes Register zur Prozessoridentifizierung und einen eigenen Befehlsadaptionsmechanismus erhält, der auf die Gesamtheit von Prozessoridentifikationsdaten, Statusdaten und angewendetem Befehl reagiert, um die interne Auswahl der Operation für das adaptive Verarbeitungselement zu ermöglichen. Auf Systembasis ermöglicht dies die bequeme Adaption von räumlichen und Datenabhängigkeiten, wodurch das System für die Art der verarbeiteten Daten optimiert werden kann.
  • Das adaptive Verarbeitungselement 7 wird repräsentativ für die zahlreichen adaptiven Verarbeitungselemente 5 detaillierter dargestellt. Übertragungspfad 70, lokaler Speicher (LMR = local memory) 71 und Rechenwerk (ALU) 72 sind konventionell angelegt, entsprechen also hinsichtlich Funktionsweise und Wirkung den analogen Teilen in einem herkömmlichen Verarbeitungselement. Generell können diese Teile eine Zuordnung (Befehl) akzeptieren und diese Zuordnung für jedes anstehende Datenelement ausführen.
  • Der in Zeitlinie 8 vereinfacht dargestellte Berechnungszyklus leitet aus einem ursprünglichen Befehl (als Ansicht eines ursprünglichen Befehls 9 vereinfacht dargestellt) einen Befehl zur Ausführung ab. Im Betriebsablauf stehen der ursprüngliche Befehl, räumlich abhängige und datenabhängige Statuswerte in einem frühen Stadium des Zyklus zur Verfügung, wie aus den Werten X, Y, Z in Zeitlinie 8 ersichtlich. Der abgeleitete Befehl ist anschließend für die Steuerung der Rechenoperation C verfügbar.
  • Die Adaptionsfähigkeit wird durch den Befehlsadapter (IA) 73 erreicht, der von der Leitung für den ursprünglichen Befehl 74 einen Befehl empfängt, der die Adaptionsfähigkeit veranlaßt; er führt bei den anstehenden Daten Prüfungen aus, bestimmt anhand der Prüfungsergebnisse, ob die Adaption durch Ableitung eines Ersatzbefehls erfolgen soll, und legt den abgeleiteten Ersatzbefehl über die Leitung für den abgeleiteten Befehl 75 an das Rechenwerk 72 an. Das Rechenwerk umfaßt ein bzw. dient als Register für den datenabhängigen Status (DDS) und übermittelt gerade verarbeitete Bits zum datenabhängigen Status auf der DDS- Prüfungsdatenleitung 76 an den IA 73. Der Befehl, der die Adaptionsfähigkeit veranlaßt und der über die Steuerleitung für die Adaptionsfähigkeit 74 angelegt wird, wird für den Block für den räumlich abhängigen Status (SDS = spatial dependent status) 77, den Block für die Abhängigkeitswahl und -überprüfung (DSV = dependence select and verify) 78 und den Block für die Befehlsmodifikation und -erweiterung (IME = instruction modify and extend) 79 verfügbar gemacht. Der Block für den Befehlsadapter (IA) 73 akzeptiert einen ursprünglichen Befehl (der Art, die unter bestimmten Bedingungen die eigene Modifikation veranlaßt) und generiert als Ausgabe einen abgeleiteten Befehl, der auf Leitung 75 an den ALU-Block 72 angelegt wird. Auf diese Weise wird der Funktionsablauf des adaptiven Verarbeitungselements gesteuert.
  • Ein typischer Befehlssatz, wie in NCR45CG72, 1984, auf Seite 7 dargestellt, umfaßt einen Mikro-NOP-Befehl, mehrere Lade-/Speicher-Befehle für die Kommunikation zwischen den Verarbeitungselementen sowie arithmetische/logische Operationen. Fig. 1 zeigt in der eingefügten Darstellung 80 das Befehlsformat für den abgeleiteten Befehl. Bei dem abgeleiteten Befehl ist an einer oder mehreren vorgegebenen Bitpositionen ein "Übereinstimmungsbit" in den Eingabebefehl integriert. Das "Übereinstimmungsbit" ist eine Funktion von PID, DDS und Eingabebefehl, während die "vorgegebene Bitposition" anhand des Formats des Eingabebefehls und des abgeleiteten Befehls vorbestimmt werden kann. Das "Übereinstimmungsbit" kann auch die Bits des Eingabebefehls überschreiben, die sich an den vorgegebenen Positionen befinden.
  • Das einzelne adaptive Verarbeitungselement ist nach wie vor ganz einfach aufgebaut. Zu den drei großen Systembausteinen gehören Register, Schieberegister und Multiplexer, alles handelsübliche Teile, die von verschiedenen Lieferanten angeboten werden und Fachleuten durchaus vertraut sind. Diese Teile werden in THE TTL DATA BOOK FOR DESIGN ENGINEERS, Zweite Auflage, Texas Instruments Corporation, LCC4112 74062-116-AI, Seiten 7-471, 7- 316 und 7-181, beschrieben. Nachfolgend einige Beispiele für geeignete Systembausteine:
  • Teile-Nr. Systembaustein
  • 74374 8-Bit-Register
  • 74194 bidirektionales 4-Bit-Schieberegister
  • 74157 Multiplexer
  • Fig. 2 zeigt den Aufbau des Befehlsadapters (IA) 73, der die drei folgenden Funktionsblöcke enthält:
  • 1. Block für den räumlich abhängigen Status (SDS) 77
  • 2. Block für Abhängigkeitswahl und -überprüfung (DSV) 78
  • 3. Block für Befehlsmodifikation und -erweiterung (IME) 79
  • Der SDS-Block 77 akzeptiert einen Teil des Eingabebefehls als Steuerung und erzeugt als Ausgabe SDS-Bits, die die räumliche Abhängigkeit angeben. Dieser Block enthält ein PID-Register 81, dessen Inhalt aus der PID des Verarbeitungselements besteht. Das PID-Register kann vom Eingabebefehl vorab geladen werden. Der Inhalt des PID-Registers 81 muß zur räumlichen Lage, z. B. X-Y- Koordinaten, in Beziehung gesetzt werden. Außerdem enthält der Block ein Schieberegister 82 mit der gleichen Größe wie PID- Register 81. Das Schieberegister 82 kann logische Verschiebungen von jeweils einem Bit in beliebiger Richtung durchführen. Damit kann jede beliebige Bitgruppe des PID-Registers auf Leitung 88 als Eingabe für den DSV-Block 78 zur Verfügung gestellt werden.
  • Bei dem zweiten Funktionsblock handelt es sich um den DSV-Block 78 zur Wahl und Überprüfung der Abhängigkeit. Der DSV-Block 78 enthält einen Multiplexer 83 zur Auswahl bestimmter SDS-Bits oder DDS-Bits. Weiter enthält der DSV-Block ein Schablonenregister 84 für Abgleich, Maskierung und Vergleich. Die ausgewählten abhängigen Bits und die Schablone werden zur "Übereinstimmungsüberprüfung" 85 weitergeleitet, wo ein "Übereinstimmungsbit" generiert wird. Schieberegister 84 enthält Entscheidungs-Schwellenwertinformationen, die bei der Initialisierung gesetzt werden. Bei einem typischen Funktionsablauf werden alle Schablonenregister auf den gleichen Wert gesetzt, um eine bestimmte Untergruppe von Bits zu maskieren. In einem bestimmten Zyklus funktionieren sämtliche Schieberegister entsprechend dem Befehl ähnlich, um die Erfassung einer Gruppe von Bits in dem zugehörigen PID-Register zu erreichen und diese Bits entsprechend auszurichten.
  • Schablonenregister und Schieberegister zusammen dienen zur Auswahl der relevanten Bits aus der PID.
  • Normalerweise wird mit einem bewegbaren Fenster gearbeitet, das zwei aufeinanderfolgende Bits enthält, um die Hardware für unterschiedliche relevante Objekte oder unterschiedliche Abbild- Untergruppen unterschiedlich zuzuordnen.
  • Die Übereinstimmungsüberprüfung kann die Operationen VERGLEICH, UND, ODER und Exklusiv-ODER ausführen. Zusammengefaßt: Der DSV- Block akzeptiert SDS-Bits und DDS-Bits als Eingabe und generiert als Ausgabe das "Übereinstimmungsbit". Der DSV-Block akzeptiert einen Teil des Eingabebefehls als Steuerung.
  • Die DDS-Bits bezeichnen die Art der Daten und dienen zur Datenadaption. Zu den üblichen DDS-Bits zählen positiv/negativ, null/nicht-null, positiv/nicht-positiv, wahr/falsch, größer/gleich/kleiner, gerade/ungerade. Jeder andere Status, der vom Rechenwerk (ALU) 72 des adaptierbaren Verarbeitungselements 7 abgeleitet werden kann, kann durch Statusbits identifiziert werden.
  • Beim dritten Block handelt es sich um den IME-Block 79 zur Modifikation und Erweiterung von Befehlen. Der IME-Block 79 akzeptiert das Übereinstimmungsbit und den Eingabebefehl als Eingaben und generiert als Ausgabe den abgeleiteten Befehl. Der IME-Block 79 verfügt über einen "Bitüberschreiber", der bestimmte Bits des Eingabebefehls an den vorgegebenen Positionen durch das Übereinstimmungsbit ersetzt. Der Block weist außerdem einen "Biteinfüger" auf, der das Übereinstimmungsbit an den vorgegebenen Positionen in den Eingabebefehl einfügt. Die Entscheidung, ob überschrieben oder eingefügt werden soll oder beides sowie die Bestimmung der Positionen werden von einem Teil des Eingabebefehls gesteuert.
  • Mit diesen drei Funktionsblöcken kann der IA die folgenden "abhängigen Operationen" ausführen, um die räumliche und/oder Datenadaption zu erreichen:
  • (1) Ermittlung von auf "1" gesetzten DDS-Bits;
  • (2) Ermittlung des i-ten auf "1" gesetzten Bits im PID- Register und
  • (3) Ermittlung von M zusammenhängenden Bits im PID- Register, die der Schablone entsprechen, wobei M kleiner oder gleich der Gesamtzahl der Bits der PID ist.
  • Das vorstehend beschriebene allgemeine Ausführungsbeispiel umfaßt die gesamte Erfindung. Spezifische Implementierungen können aus den einzelnen Funktionsblöcken zusammengesetzt sein.
  • Implementierung eines vereinfachten adaptiven Verarbeitungselements
  • Fig. 3 zeigt eine stark vereinfachte Implementierung des Befehlsadapters (IA) 73. Der Inhalt des PID-Registers 81 wird in ein logisches Schieberegister (LSR) 91 kopiert, das logische Verschiebungen in beide Richtungen ausführen kann. Bei den nach außen geschobenen Bits und dem Bit an der Position rechts außen im logischen Schieberegister 91 handelt es sich um die SDS-Bits. Ein Multiplexer wählt anschließend eines der SDS- oder DDS-Bits als Übereinstimmungsbit aus. Mit einer derartigen Implementierung können eindimensionale und zweidimensionale Operationen ausgeführt werden. Diese Implementierung eignet sich für adaptive Verarbeitungselemente mit geringerer Komplexität, da das Schieberegister 84 (Fig. 2) und die Übereinstimmungsüberprüfung 85 entfallen.
  • Implementierung für ein multidimensionales Netzwerk
  • Fig. 4 zeigt den SDS-Block in genereller Konfiguration zur Ermittlung der räumlichen Abhängigkeit bei einem Netzwerk eines Parallelrechners mit multidimensionaler Verbindung, wie z. B. ein zweidimensionales Feld oder eine dreidimensionale Pyramide. Das PID-Register kann K Abschnitte 1-K umfassen. Das Schieberegister 92 im SDS-Block 77, das analog zu den Schieberegistern 82 und 91 in Fig. 1 und 2 aufgebaut ist, ist in K Abschnitte untergliedert, wobei K die Dimension des Netzwerks angibt. Jeder Abschnitt bearbeitet die räumliche Abhängigkeit für eine Dimension des Netzwerks. Die Bits rechts und links außen in jedem Abschnitt sind SDS-Bits, die zur Ermittlung der räumlichen Abhängigkeit an den Multiplexer 83 im DSV-Block 78 übergeben werden.
  • ANWENDUNGSBEREICH UND VORTEILE (1) Datenabhängige und räumlich abhängige Parallelverarbeitung
  • Bei der adaptiven Befehlsverarbeitung gemäß dieser Erfindung ist folgende Umstrukturierung möglich:
  • for (i=O; i< 300; i++)
  • for (j=0; j< 500; j++)
  • if (Zustand)
  • action 1
  • else
  • action 2; (wenn action 1 und action 2 komplementär sind)
  • in
  • for (i=0; i< 300; i++)
  • for (j=0; j< 500; j++)
  • action 3.
  • Komplementäre Operationen sind möglich. Als Beispiel für eine komplementäre Operation sei das Paar +/- (addieren oder subtrahieren) genannt. Das "Übereinstimmungsbit" wird von dem "Zustand" abgeleitet, der datenabhängig oder räumlich abhängig sein kann. Als Ergebnis der Umstrukturierung kann die sequentielle Ausführung von action 1/action 2 in eine absolut parallele vereinheitlichte action 3 umgewandelt werden.
  • Das Problem kann auch wie folgt umstrukturiert werden:
  • Ein "Übereinstimmungsbit" wird von dem "Zustand" abgeleitet und dazu verwendet, einen "Adreßversatz" zu generieren, und zwar entweder durch Überschreiben oder durch Einfügen des entsprechenden Feldes des Eingabebefehls. Der Code für action 1 und action 2 wird dann mit einem Abstand D strukturiert, wobei D dem "Adreßversatz" entspricht. Bei der Ausführung "springen" die einzelnen Verarbeitungselemente entsprechend dem räumlichen Zustand der Daten zum richtigen Eintrag des Codes. Zu beachten ist dabei, daß lediglich eine Version der Codierung erforderlich ist. Eine nicht-homogene Problemstellung aufgrund der räumlichen Abhängigkeit kann durch diese Erfindung in eine homogene Problemstellung umgewandelt werden, so daß ein höheres Maß an Parallelität möglich ist und sich der Aufwand für die Software verringert.
  • (2) Universal-Netzwerkemulation
  • Diese Erfindung löst die räumliche Abhängigkeit aufgrund der relativen oder absoluten Lage (oder Koordinate) von Verarbeitungselementen in einem Parallelrechner, der über ein einziges "Fixed Baseline Network" zur Verbindung der Verarbeitungselemente in dem System verfügt.
  • Unter dem Gesichtspunkt der Algorithmusentwicklung ist es von Vorteil, wenn mehrere Netzwerke (oder Verbindungen) in ein Parallelverarbeitungssystem integriert sind, da ein einziges Netzwerk nicht optimal auf verschiedene Algorithmen abgestimmt ist. Bei einem Parallelsystem mit derartiger Netzwerkemulationsfähigkeit kann ein Netzwerk über den adaptiven Befehlsprozessor von der Baseline-Verbindung aus emuliert werden.
  • Beispiel: Das Pyramidennetzwerk kann durch den adaptiven Befehlsprozessor aus der Baseline-Feldverbindung der Größe N·N emuliert werden. Die PID-Register der einzelnen adaptiven Verarbeitungselemente in dem Feld werden mit dem entsprechenden kartesischen Koordinatenwert (x, Y) geladen. Zum Zeitpunkt t=1 sind alle Verarbeitungselemente aktiv. Bei t=2 sind nur diejenigen adaptiven Verarbeitungselemente aktiv, bei denen x oder y einem Vielfachen von 2 entspricht. Bei t=3 sind nur diejenigen adaptiven Verarbeitungselemente aktiv, bei denen x oder y einem Vielfachen von 4 entspricht. Zusammengefaßt bedeutet dies: Zum Zeitpunkt t=i sind nur diejenigen adaptiven Verarbeitungselemente aktiv, bei denen x oder y einem Vielfachen von 2·(i-1) entspricht. Mit dem vorstehend beschriebenen Verfahren wird aus dem Baseline-Feldnetzwerk ein Pyramidennetzwerk mit Schrumpfungsfaktor 2 emuliert (d. h. bei jedem weiteren Zeitschritt wird nur 1/4 aller Verarbeitungselemente mit Abstand eins verbunden). Die Steuerung der Emulation kann durch Untersuchung des Inhalts des zweidimensionalen PID-Registers erfolgen; das Verarbeitungselement wird dann ,aktiviert, wenn das "Übereinstimmungsbit" "wahr" ist.
  • Derselbe adaptive Befehlsprozessor kann auch für die Emulation von Netzwerken wie Baum, Ring, "perfect shuffle" usw. aus einer Baseline-Verbindung eingesetzt werden.
  • Die Netzwerkemulation ist ein sehr leistungsfähiger Mechanismus zur Erstellung mehrerer paralleler Architekturen aus einem einzigen Typus von Verarbeitungselementen. Abgesehen von den Vorteilen bezüglich Kosten und Logistik kann der Algorithmus besser an die Architektur angepaßt werden, so daß sich eine Leistungssteigerung ergibt. Da nur Elemente eines Typs benötigt werden, eignet sich ein derartiges Emulationskonzept insbesondere für die VLSI-Implementierung.
  • (3) Komplementäre Operationen
  • Eine komplementäre Operation besteht aus einem Paar von Operationen, die auf zwei adaptive Verarbeitungselemente aufgeteilt und gleichzeitig ausgeführt werden können. Beispiele für komplementäre Operationen: das SEND/RECEIVE-Paar bei der Kommunikation zwischen Prozessoren sowie die "Butterfly"-Berechnung von FFT (Fast Fourier Transform). Ein weiteres Beispiel ist der unter Anwendung (1) beschriebene "+/-"-Befehl. Bei Anwendung auf komplementäre Operationen kann das adaptive Befehlskonzept die Ausführung beschleunigen und zu Einsparungen bei der Übertragungsbandbreite beitragen.
  • Als Beispiel sei das SEND/RECEIVE-Paar für die SIMD-Feldarchitektur angeführt. Ein adaptives Verarbeitungselement sendet (aufgrund der Kenntnis seiner Position im Feld, d. h. der "räumlichen Kenntnis") über eine Verbindung Daten an das benachbarte Verarbeitungselement, während das benachbarte Verarbeitungselement (aufgrund dieser "räumlichen Kenntnis") diese Daten über dieselbe Verbindung empfängt. Die Operation kann innerhalb eines Zyklus ausgeführt werden, wobei für ein Datelement eine Einheit der Übertragungsbandbreite verwendet wird. Bei der SIMD- Architektur ohne topologieabhängige Adaption sind für diese Operation zwei Ausführungszyklen und/oder zwei Einheiten der Übertragungsbandbreite erforderlich.
  • Bei der "Butterfly"-Rechenoperation kann die sequentielle Ausführung in einem herkömmlichen Abbildprozessor bis zu 4 Zyklen beanspruchen. Mit dem adaptiven Befehlsprozessor läßt sich dieser Zeitaufwand auf 2 Zyklen (bei 2 adaptiven Verarbeitungselementen) oder sogar nur 1 Zyklus (bei 4 adaptiven Verarbeitungselementen) reduzieren. Dazu wird zunächst an alle adaptiven Verarbeitungselemente der Befehl ADD/SUB gesendet. Die einzelnen adaptiven Verarbeitungselemente adressiert dann den Befehl entsprechend dem jeweiligen räumlichen Zustand entweder an ADD oder an SUB.
  • Der Anwendungsbereich für komplementäre Operationen ist nicht auf die genannten Beispiele beschränkt. In den Bereichen Abbildverarbeitung, Computer Vision (maschinelles Sehen), digitale Signalverarbeitung, mathematische Transformation und allgemeine wissenschaftliche Berechnungsverfahren lassen sich zahlreiche weitere Anwendungsmöglichkeiten finden.
  • (4) Adaptive Superrechner
  • Mit der adaptiven Befehlsverarbeitung läßt sich das Problem der Datenabhängigkeit lösen und die Leistung von Superrechnern steigern. Dazu kann ein Befehl mit der Bezeichnung OPA/OPB (Operation A oder Operation B) definiert und ein Übereinstimmungsbit ausgewählt werden, um den Befehl zu adaptieren. Wenn das Übereinstimmungsbit auf "1" gesetzt ist, führt der abgeleitete Befehl OPA aus, wenn das Übereinstimmungsbit auf "0" gesetzt ist, wird OPB ausgeführt. Die Pipes in den Superrechnern können vorab für den Befehl OPA/OPB eingerichtet werden, und die Vektorausführung kann gestartet werden, sobald das Übereinstimmungsbit zur Verfügung steht. Die Wahrscheinlichkeit, daß "richtig geraten" wird, ist aufgrund der Datenadaption immer "1".
  • BEISPIEL ZUR VERANSCHAULICHUNG DER ERFINDUNG
  • Dieses Beispiel veranschaulicht die Funktionsweise des adaptiven Befehlsprozessors im Falle einer räumlichen Adaption. Anhand von Fig. 5 wird gezeigt, wie ein ursprünglicher Befehl als Funktion der Prozessoridentifizierung (PID) modifiziert wird. Als Ergebnis kann die folgende Berechnung
  • for (i=0; i< 300; i++)
  • for (j=0; j< 500; j++)
  • if (PID< 0> ==1))
  • c [i,j]=a[i,j]+b[i,j];
  • else
  • c [i,j]=a[i,j]-b[i,j];
  • effizient ausgeführt werden.
  • Zunächst werden ein vereinfachter ursprünglicher Befehl und abgeleitete Befehle als Hintergrundinformation beschrieben, anschließend wird anhand von Fig. 5 ein Aufbau beschrieben, mit dem die Erfindung realisiert wird.
  • Befehlsformat
  • Das K-te Bit der M Bits des ursprünglichen Befehls steuert die Ausführung von SEND/REC oder +/- wie folgt:
  • Wenn Bit< K> =1, dann führt das Verarbeitungselement SEND aus, wenn der lokale status S für das Verarbeitungselement "wahr" ist;
  • ist der lokale Status S für das Verarbeitungselement "falsch", führt das Verarbeitungselement REC aus;
  • Wenn Bit< K> =0, dann führt das Verarbeitungselement "+" aus, wenn der lokale Status S für das Verarbeitungselement "wahr" ist;
  • ist der lokale Status S für das Verarbeitungselement "falsch", führt das Verarbeitungselement "-" aus.
  • Im Gegensatz zu dem ursprünglichen Befehl weist der abgeleitete Befehl in diesem Beispiel zwei Bits, nämlich das Bit r und das Bit r+1 auf. Das adaptive Verarbeitungselement verhält sich dann wie folgt: Aktion
  • Beispiel: Wenn das r-te Bit des modifizierten Befehls "0" ist und das r+1ste Bit "1" ist, führt das Verarbeitungselement "+" aus.
  • Ausführungsbeispiel der Erfindung
  • Fig. 5 zeigt ein weiteres Ausführungsbeispiel mit mehreren Multiplexern. Ein Teil des ursprünglichen Befehls veranlaßt das Schieberegister 91, das die Prozessoridentifizierung PID enthält, eine Verschiebung um eine Bitposition nach rechts (SHIFT RIGHT) vorzunehmen. Dadurch wird das niedrigstwertige Bit im Register zur Prozessoridentifizierung (LSBPID) in eine der Eingaben für den DSV-Block (Abhängigkeitswahl und -überprüfung) 78 gestellt.
  • Fig. 5 zeigt ein Ausführungsbeispiel für die Übersetzung des K-ten Bits (I< K> ) des ursprünglichen Befehls in das r-te und r+1ste Bit (IM< r> und IM< r+1> ) des modifizierten Befehls entsprechend dem niedrigstwertigen Bit im PID-Register (LSBPID, d. h. PID< 0> ).
  • Ein anderer Teil des ursprünglichen Befehls veranlaßt dann über die Steuerleitungen für die Adaptionsfähigkeit 74' den DSV-Block 78 das LSBPID als Ausgabe des Multiplexers im DSV-Block aus zuwählen (SELECT). Daraufhin wird das LSBPID in die Leitung für das "Übereinstimmungsbit" gestellt.
  • Als Eingaben für den IME-Block (Befehlsmodifikation und -erweiterung) 79 werden das "Übereinstimmungsbit" (das jetzt das LSBPID enthält) und der ursprüngliche Befehl (der I< K> und weitere Bits enthält) in eine Gruppe von Multiplexern 84-86 weitergeleitet, um den abgeleiteten Befehl zu erzeugen. Für einen abgeleiteten Befehl mit J Bits werden J Multiplexer benötigt - jeweils ein Multiplexer erzeugt ein Bit des abgeleiteten Befehls. Zur Erzeugung von IM< r> veranlaßt der ursprüngliche Befehl den "Multiplexer r" dazu, I< K> als Ausgabe auszuwählen (SELECT). Entsprechend veranlaßt der ursprüngliche Befehl den "Multiplexer r+1" dazu, das "Übereinstimmungsbit" als IM< r+1> auszuwählen (SELECT).
  • Die nachstehende Tabelle zeigt die Beziehung zwischen dem ursprünglichen Befehl (I< K> ), dem LSBPID und dem modifizierten Befehl (IM< r> und IM< r+1> ), die die Realisierung der Erfindung mit dem in Fig. 5 dargestellten Aufbau belegt.

Claims (4)

1. Vektorrechner, der eine Steuereinheit (2) mit Befehlsausgabefähigkeit und einer Reihe individueller Verarbeitungselemente (7) zum Verarbeiten von Daten entsprechend Befehlen besitzt, die von der Steuereinheit gleichzeitig an die Verarbeitungselemente ausgegeben werden, wobei jedes Verarbeitungselement Verarbeitungsmittel (72) und Ein-/Ausgabemittel (70) besitzt, die mit anderen Verarbeitungselementen verbunden sind, dadurch gekennzeichnet, daß jedes gewählte Verarbeitungselement einen Befehlsadapter (73) enthält, der ein Register zur Prozessoridentifizierung (81), einen Bitgruppenselektor (82), eine Übereinstimmungsüberprüfung (85) und einen Befehlsmodifizierer (70) enthält, wobei das Register zur Prozessoridentifizierung, der Bitgruppenselektor und die Übereinstimmungsüberprüfung dazu dienen, ein bewegbares Fenster festzulegen, um Modifizierungsbits zur Anwendung in dem Befehlsmodifizierer zu wählen.
2. Prozessor nach Anspruch 1, bei welchem der Bitgruppenselektor ein Schieberegister ist, das angeschlossen ist, um am Inhalt des Registers zur Prozessoridentifizierung logische Verschiebungen auszuführen, und der Prozessor weiters ein Schablonenregister (84) enthält, das dazu eingerichtet ist, Daten zur Verwendung in der Übereinstimmungsüberprüfung auszuwählen.
3. Prozessor nach Anspruch 2, bei welchem das Register zur Prozessoridentifizierung in Abschnitte 1, . . ., K-1, K unterteilt ist und das Schieberegister in gleicher Weise in Abschnitte 1, . . ., K-1, K unterteilt ist und Abschnitt für Abschnitt mit dem Register zur Prozessoridentifizierung (81) wechselseitig verbunden ist.
4. Prozessor nach einem der Ansprüche 1 bis 3, bei welchem die Übereinstimmungsüberprüfung einen Baum mit Multiplexern aufweist, die angeordnet sind, um. Übereinstimmungsbitwerte als zusammengesetzte Funktion ursprünglicher Befehls- und Datenwerte an den Befehlsmodifizierer zu liefern.
DE8787103374T 1986-03-13 1987-03-10 Adaptive befehlsverarbeitung durch feldrechner mit prozessoridentifikation und datenabhaengigen statusregistern in jedem prozessorelement. Expired - Fee Related DE3784082T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/839,311 US4783738A (en) 1986-03-13 1986-03-13 Adaptive instruction processing by array processor having processor identification and data dependent status registers in each processing element

Publications (2)

Publication Number Publication Date
DE3784082D1 DE3784082D1 (de) 1993-03-25
DE3784082T2 true DE3784082T2 (de) 1993-08-12

Family

ID=25279392

Family Applications (1)

Application Number Title Priority Date Filing Date
DE8787103374T Expired - Fee Related DE3784082T2 (de) 1986-03-13 1987-03-10 Adaptive befehlsverarbeitung durch feldrechner mit prozessoridentifikation und datenabhaengigen statusregistern in jedem prozessorelement.

Country Status (5)

Country Link
US (1) US4783738A (de)
EP (1) EP0237013B1 (de)
JP (1) JPH0719244B2 (de)
CA (1) CA1268554A (de)
DE (1) DE3784082T2 (de)

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL192637C (nl) * 1984-02-27 1997-11-04 Nippon Telegraph & Telephone Stelselprocessor.
GB2211638A (en) * 1987-10-27 1989-07-05 Ibm Simd array processor
US4839851A (en) * 1987-07-13 1989-06-13 Idaho Research Foundation, Inc. Programmable data path device
US4943912A (en) * 1987-10-13 1990-07-24 Hitachi, Ltd. Parallel processor system having control processor and array control apparatus for selectively activating different processors
US4901360A (en) * 1987-10-23 1990-02-13 Hughes Aircraft Company Gated architecture for computer vision machine
NL8800071A (nl) * 1988-01-13 1989-08-01 Philips Nv Dataprocessorsysteem en videoprocessorsysteem, voorzien van een dergelijk dataprocessorsysteem.
US5257395A (en) * 1988-05-13 1993-10-26 International Business Machines Corporation Methods and circuit for implementing and arbitrary graph on a polymorphic mesh
US5136717A (en) * 1988-11-23 1992-08-04 Flavors Technology Inc. Realtime systolic, multiple-instruction, single-data parallel computer system
US5280620A (en) * 1988-12-16 1994-01-18 U.S. Philips Corporation Coupling network for a data processor, including a series connection of a cross-bar switch and an array of silos
US5067069A (en) * 1989-02-03 1991-11-19 Digital Equipment Corporation Control of multiple functional units with parallel operation in a microcoded execution unit
CA2012938A1 (en) * 1989-04-19 1990-10-19 Patrick F. Castelaz Clustering and association processor
EP0424618A3 (en) * 1989-10-24 1992-11-19 International Business Machines Corporation Input/output system
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
JPH05506113A (ja) * 1990-01-05 1993-09-02 マスパー・コンピューター・コーポレイション 並列プロセッサメモリシステム
US5828894A (en) * 1990-11-13 1998-10-27 International Business Machines Corporation Array processor having grouping of SIMD pickets
US5809292A (en) * 1990-11-13 1998-09-15 International Business Machines Corporation Floating point for simid array machine
US5617577A (en) * 1990-11-13 1997-04-01 International Business Machines Corporation Advanced parallel array processor I/O connection
US5963745A (en) * 1990-11-13 1999-10-05 International Business Machines Corporation APAP I/O programmable router
US5794059A (en) * 1990-11-13 1998-08-11 International Business Machines Corporation N-dimensional modified hypercube
US5588152A (en) * 1990-11-13 1996-12-24 International Business Machines Corporation Advanced parallel processor including advanced support hardware
US5963746A (en) * 1990-11-13 1999-10-05 International Business Machines Corporation Fully distributed processing memory element
US5966528A (en) * 1990-11-13 1999-10-12 International Business Machines Corporation SIMD/MIMD array processor with vector processing
US5590345A (en) * 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
US5734921A (en) * 1990-11-13 1998-03-31 International Business Machines Corporation Advanced parallel array processor computer package
US5765015A (en) * 1990-11-13 1998-06-09 International Business Machines Corporation Slide network for an array processor
US5708836A (en) * 1990-11-13 1998-01-13 International Business Machines Corporation SIMD/MIMD inter-processor communication
US5625836A (en) * 1990-11-13 1997-04-29 International Business Machines Corporation SIMD/MIMD processing memory element (PME)
US5765011A (en) * 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
US5630162A (en) * 1990-11-13 1997-05-13 International Business Machines Corporation Array processor dotted communication network based on H-DOTs
EP0485690B1 (de) * 1990-11-13 1999-05-26 International Business Machines Corporation Paralleles Assoziativprozessor-System
US5765012A (en) * 1990-11-13 1998-06-09 International Business Machines Corporation Controller for a SIMD/MIMD array having an instruction sequencer utilizing a canned routine library
US5815723A (en) * 1990-11-13 1998-09-29 International Business Machines Corporation Picket autonomy on a SIMD machine
US5594918A (en) * 1991-05-13 1997-01-14 International Business Machines Corporation Parallel computer system providing multi-ported intelligent memory
US5237626A (en) * 1991-09-12 1993-08-17 International Business Machines Corporation Universal image processing module
JP2571655B2 (ja) * 1991-11-27 1997-01-16 インターナショナル・ビジネス・マシーンズ・コーポレイション プロトコル変換機構、交換ネットワーク及びコンピュータ・システム
JPH06131312A (ja) * 1992-01-23 1994-05-13 Hitachi Ltd 並行処理方法およびシステム
JP2642039B2 (ja) * 1992-05-22 1997-08-20 インターナショナル・ビジネス・マシーンズ・コーポレイション アレイ・プロセッサ
US5579527A (en) * 1992-08-05 1996-11-26 David Sarnoff Research Center Apparatus for alternately activating a multiplier and a match unit
US5581778A (en) * 1992-08-05 1996-12-03 David Sarnoff Researach Center Advanced massively parallel computer using a field of the instruction to selectively enable the profiling counter to increase its value in response to the system clock
US6298162B1 (en) 1992-12-23 2001-10-02 Lockheed Martin Corporation Image compression/expansion using parallel decomposition/recomposition
US5493651A (en) * 1993-02-16 1996-02-20 International Business Machines Corporation Method and system for dequeuing connection requests in a simplex switch
JP3287901B2 (ja) * 1993-03-12 2002-06-04 シャープ株式会社 データ駆動型情報処理システムにおける識別データ確認方法
US5765014A (en) * 1993-10-12 1998-06-09 Seki; Hajime Electronic computer system and processor element for processing in a data driven manner using reverse polish notation
US5535291A (en) * 1994-02-18 1996-07-09 Martin Marietta Corporation Superresolution image enhancement for a SIMD array processor
US5659780A (en) * 1994-02-24 1997-08-19 Wu; Chen-Mie Pipelined SIMD-systolic array processor and methods thereof
US5748950A (en) * 1994-09-20 1998-05-05 Intel Corporation Method and apparatus for providing an optimized compare-and-branch instruction
US5758176A (en) * 1994-09-28 1998-05-26 International Business Machines Corporation Method and system for providing a single-instruction, multiple-data execution unit for performing single-instruction, multiple-data operations within a superscalar data processing system
US5682491A (en) * 1994-12-29 1997-10-28 International Business Machines Corporation Selective processing and routing of results among processors controlled by decoding instructions using mask value derived from instruction tag and processor identifier
US6128720A (en) * 1994-12-29 2000-10-03 International Business Machines Corporation Distributed processing array with component processors performing customized interpretation of instructions
US5680597A (en) * 1995-01-26 1997-10-21 International Business Machines Corporation System with flexible local control for modifying same instruction partially in different processor of a SIMD computer system to execute dissimilar sequences of instructions
US5898850A (en) * 1997-03-31 1999-04-27 International Business Machines Corporation Method and system for executing a non-native mode-sensitive instruction within a computer system
US6076156A (en) * 1997-07-17 2000-06-13 Advanced Micro Devices, Inc. Instruction redefinition using model specific registers
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
US6219776B1 (en) * 1998-03-10 2001-04-17 Billions Of Operations Per Second Merged array controller and processing element
US20050149694A1 (en) * 1998-12-08 2005-07-07 Mukesh Patel Java hardware accelerator using microcode engine
US6332215B1 (en) 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
US7225436B1 (en) 1998-12-08 2007-05-29 Nazomi Communications Inc. Java hardware accelerator using microcode engine
US6826749B2 (en) 1998-12-08 2004-11-30 Nazomi Communications, Inc. Java hardware accelerator using thread manager
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
KR20020028814A (ko) * 2000-10-10 2002-04-17 나조미 커뮤니케이션즈, 인코포레이티드 마이크로코드 엔진을 이용한 자바 하드웨어 가속기
US7346217B1 (en) * 2001-04-25 2008-03-18 Lockheed Martin Corporation Digital image enhancement using successive zoom images
US7127593B2 (en) * 2001-06-11 2006-10-24 Broadcom Corporation Conditional execution with multiple destination stores
US7383421B2 (en) * 2002-12-05 2008-06-03 Brightscale, Inc. Cellular engine for a data processing system
US8769508B2 (en) 2001-08-24 2014-07-01 Nazomi Communications Inc. Virtual machine hardware for RISC and CISC processors
US7251594B2 (en) * 2001-12-21 2007-07-31 Hitachi, Ltd. Execution time modification of instruction emulation parameters
US7613900B2 (en) * 2003-03-31 2009-11-03 Stretch, Inc. Systems and methods for selecting input/output configuration in an integrated circuit
US8001266B1 (en) 2003-03-31 2011-08-16 Stretch, Inc. Configuring a multi-processor system
US7590829B2 (en) * 2003-03-31 2009-09-15 Stretch, Inc. Extension adapter
US7581081B2 (en) 2003-03-31 2009-08-25 Stretch, Inc. Systems and methods for software extensible multi-processing
US7609297B2 (en) * 2003-06-25 2009-10-27 Qst Holdings, Inc. Configurable hardware based digital imaging apparatus
US7418575B2 (en) * 2003-07-29 2008-08-26 Stretch, Inc. Long instruction word processing with instruction extensions
US7373642B2 (en) * 2003-07-29 2008-05-13 Stretch, Inc. Defining instruction extensions in a standard programming language
FR2865290A1 (fr) * 2004-01-21 2005-07-22 Thomson Licensing Sa Procede de gestion de donnees dans un processeur matriciel et processeur matriciel mettant en oeuvre ce procede
US7725691B2 (en) * 2005-01-28 2010-05-25 Analog Devices, Inc. Method and apparatus for accelerating processing of a non-sequential instruction stream on a processor with multiple compute units
US7516301B1 (en) * 2005-12-16 2009-04-07 Nvidia Corporation Multiprocessor computing systems with heterogeneous processors
US7451293B2 (en) * 2005-10-21 2008-11-11 Brightscale Inc. Array of Boolean logic controlled processing elements with concurrent I/O processing and instruction sequencing
CN101371262A (zh) * 2006-01-10 2009-02-18 光明测量公司 用于在并行处理系统中调度多媒体数据处理的方法和装置
US20080244238A1 (en) * 2006-09-01 2008-10-02 Bogdan Mitu Stream processing accelerator
WO2008027567A2 (en) * 2006-09-01 2008-03-06 Brightscale, Inc. Integral parallel machine
US20080059467A1 (en) * 2006-09-05 2008-03-06 Lazar Bivolarski Near full motion search algorithm
US20080212895A1 (en) * 2007-01-09 2008-09-04 Lockheed Martin Corporation Image data processing techniques for highly undersampled images
US7920935B2 (en) * 2008-08-19 2011-04-05 International Business Machines Corporation Activity based real-time production instruction adaptation
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
US11940945B2 (en) * 2021-12-31 2024-03-26 Ceremorphic, Inc. Reconfigurable SIMD engine

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3287702A (en) * 1962-12-04 1966-11-22 Westinghouse Electric Corp Computer control
US3287703A (en) * 1962-12-04 1966-11-22 Westinghouse Electric Corp Computer
US3544973A (en) * 1968-03-13 1970-12-01 Westinghouse Electric Corp Variable structure computer
US4558411A (en) * 1969-05-19 1985-12-10 Burroughs Corp. Polymorphic programmable units employing plural levels of sub-instruction sets
US3970993A (en) * 1974-01-02 1976-07-20 Hughes Aircraft Company Cooperative-word linear array parallel processor
GB1527289A (en) * 1976-08-17 1978-10-04 Int Computers Ltd Data processing systems
US4380046A (en) * 1979-05-21 1983-04-12 Nasa Massively parallel processor computer
US4301443A (en) * 1979-09-10 1981-11-17 Environmental Research Institute Of Michigan Bit enable circuitry for an image analyzer system
US4287566A (en) * 1979-09-28 1981-09-01 Culler-Harrison Inc. Array processor with parallel operations per instruction
JPS6042516B2 (ja) * 1980-03-04 1985-09-24 日本電信電話株式会社 デ−タ処理装置
US4435758A (en) * 1980-03-10 1984-03-06 International Business Machines Corporation Method for conditional branch execution in SIMD vector processors
US4344134A (en) * 1980-06-30 1982-08-10 Burroughs Corporation Partitionable parallel processor
US4467409A (en) * 1980-08-05 1984-08-21 Burroughs Corporation Flexible computer architecture using arrays of standardized microprocessors customized for pipeline and parallel operations
US4484346A (en) * 1980-08-15 1984-11-20 Sternberg Stanley R Neighborhood transformation logic circuitry for an image analyzer system
US4398176A (en) * 1980-08-15 1983-08-09 Environmental Research Institute Of Michigan Image analyzer with common data/instruction bus
US4574394A (en) * 1981-06-01 1986-03-04 Environmental Research Institute Of Mi Pipeline processor
US4464689A (en) * 1981-06-04 1984-08-07 Education & Informations Systems, Inc. Random access read/write unit
NZ207326A (en) * 1983-03-08 1988-03-30 Stc Plc Associative data processing array
US4739474A (en) * 1983-03-10 1988-04-19 Martin Marietta Corporation Geometric-arithmetic parallel processor
US4541116A (en) * 1984-02-27 1985-09-10 Environmental Research Institute Of Mi Neighborhood image processing stage for implementing filtering operations
EP0200569A3 (de) * 1985-05-03 1988-10-05 Advanced Micro Devices, Inc. Monolitisch integriertes Schaltungsbauelement
WO1986007174A1 (en) * 1985-05-20 1986-12-04 Shekels Howard D Super-computer system architectures

Also Published As

Publication number Publication date
US4783738A (en) 1988-11-08
JPH0719244B2 (ja) 1995-03-06
EP0237013A2 (de) 1987-09-16
DE3784082D1 (de) 1993-03-25
CA1268554A (en) 1990-05-01
EP0237013A3 (en) 1989-02-08
EP0237013B1 (de) 1993-02-10
JPS62221063A (ja) 1987-09-29

Similar Documents

Publication Publication Date Title
DE3784082T2 (de) Adaptive befehlsverarbeitung durch feldrechner mit prozessoridentifikation und datenabhaengigen statusregistern in jedem prozessorelement.
DE69428396T2 (de) Bildverarbeitungssystem mit Fliessbandarbeitsprinzip für Einzelanwendungsumgebung
DE69029956T2 (de) Vorrichtung zur Parallelisierung von Programmen
DE2521289C2 (de) Datenverarbeitungsanordnung mit Datenfeld-Hilfsprozessor
DE69115344T2 (de) Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher
DE68925523T2 (de) Erzeugung eines wirksamen Kodes für einen unähnliche Registrierräume enthaltenden Computer
DE69033444T2 (de) Signalprozessor mit einer arithmetischen und logischen Einheit und einer Multiplizier-Akkumulatoreinheit, die gleichzeitig betrieben werden können
DE69231497T2 (de) Massivparalleles rechnersystem mit eingangs-ausgangsanordnung
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE2819571C2 (de)
DE2714805C2 (de)
DE3854568T2 (de) SIMD-Feldrechner.
DE69021659T2 (de) Verfahren und Vorrichtung zur reihenweisen Parallelprogrammfehlersuche.
DE2457612C3 (de) Mikroprogrammier-Steuereinrichtung
DE3210816A1 (de) Datenverarbeitungssystem mit getrennten einrichtungen zur verarbeitung von skalar- und vektordaten
DE29521338U1 (de) Rechner mit einem neutralen Netz
DE4342250A1 (de) Rechnerarchitektur und Verfahren zum Betreiben eines Parallelrechners
DE3306084A1 (de) Rechnerarchitektur zur gleitkomma -addition
DE3126878A1 (de) Adressen-steuerschaltung fuer mikroprozessoren
DE3503119A1 (de) Verfahren zum automatischen erzeugen eines quellenprogramms
DE69900796T2 (de) Digitale verarbeitungsvorrichtung
DE2758830A1 (de) Rechenvorrichtung
DE3689356T2 (de) Verfahren und Schaltung zum Generieren von binären Signalen und modifizierter Bitfolge.
DE3853511T2 (de) Mehrbildelementgenerator.
EP0657044B1 (de) Verfahren zum betrieb eines rechnersystems mit mindestens einem mikroprozessor und mindestens einem coprozessor

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee