DE69228586T2 - Dynamischer, in einer Array-Architektur im Mehrfachmodus arbeitender Parallelprozessor - Google Patents

Dynamischer, in einer Array-Architektur im Mehrfachmodus arbeitender Parallelprozessor

Info

Publication number
DE69228586T2
DE69228586T2 DE69228586T DE69228586T DE69228586T2 DE 69228586 T2 DE69228586 T2 DE 69228586T2 DE 69228586 T DE69228586 T DE 69228586T DE 69228586 T DE69228586 T DE 69228586T DE 69228586 T2 DE69228586 T2 DE 69228586T2
Authority
DE
Germany
Prior art keywords
instruction
mode
processors
processor
computer system
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
DE69228586T
Other languages
English (en)
Other versions
DE69228586D1 (de
Inventor
Peter Michael Kogge
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 DE69228586D1 publication Critical patent/DE69228586D1/de
Publication of DE69228586T2 publication Critical patent/DE69228586T2/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
    • 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
    • G06F9/3891Concurrent 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 organised in groups of units sharing resources, e.g. clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks
    • G06F15/17343Direct connection machines, e.g. completely connected computers, point to point communication networks wherein the interconnection is dynamically configurable, e.g. having loosely coupled nearest neighbor architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17381Two dimensional, e.g. mesh, torus
    • 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
    • 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/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • 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/803Three-dimensional arrays or hypercubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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
    • 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/3802Instruction prefetching
    • 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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
    • 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/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
    • 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
    • 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 Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Multimedia (AREA)
  • Nonlinear Science (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)
  • Dram (AREA)
  • Error Detection And Correction (AREA)

Description

    GEBIET DER ERFINDUNG
  • Das beschriebene Gebiet der Erfindung betrifft Rechnersysteme, und die Erfindung bezieht sich insbesondere auf Rechnersysteme, die dynamisch Mehrfachverarbeitungsmodi implementieren können unter Verwendung eines Prozessor-Arrays zum parallelen Abarbeiten von Programmen innerhalb des Verarbeitungselement-Array.
  • QUERVERWEIS AUF DAMIT IN BEZIEHUNG STEHENDE ANMELDUNGEN
  • Die vorliegende Anmeldung bezieht sich auf:
  • "Broadcast/Switching Apparatus For Executing Broadcast/Multi- Cast" von H. T. Olnowich et al., EP 506 136 eingereicht am 30. März 1992 (IBM Docket EN991030A)
  • "Multi-Sender/Switching Apparatus For Status Reporting Over Unbuffered Asynchronous Multi-Stage Networks" von H. W. Olnowich et al., EP 506 135 eingereicht am 30. März 1992 (IBM Docket EN991030B),
  • "Sync-Net - A Barrier Synchronization Apparatus For Multi- Stage Networks" von P. L. Childs et al., US 5,365,228 eingereicht am 21. August 1991 (IBM Docket EN991049),
  • "GVT-Net - A Global Virtual Time Calculation Apparatus For Multi-Stage Networks" von P. L. Childs et al., US 5,250,943 eingereicht 21. August 1991 (IBM Docket EN991050), und
  • ferner die gleichzeitig damit im Zusammenhang stehenden folgenden Anmeldungen:
  • "Priority Broadcast And Multi-Cast For Unbuffered Multi-Stage Networks" von H. T. Olnowich et al., EP 505 780 eingereicht am 5. März 1992 (IBM Docket EN991016B),
  • "Dual Priority Switching Apparatus for Simplex Networks" mit H. T. Olnowich, P. Kogge et al., Ep 505 779 eingereicht am 5. März 1992 (IBM Docket EN991016A),
  • "Multi-Function Network" von H. T. Olnowich et al., EP 505 782 eingereicht am 5. März 1992 (IBM Docket EN991017).
  • "Multi-Media Serial Line Switching Adapter for Parallel Networks and Heterogeneous and Homologous Computer System", H. T. Olnowich, EP 505 781 eingereicht am 5. März 1992 (IBM Docket EN991119).
  • Diese gleichzeitig anhängigen Anmeldungen und die vorliegende Anmeldung sind Eigentum es gleichen Inhabers, und zwar der International Business Machines Corporation, Armonk, New York.
  • HINTERGRUND DER ERFINDUNG
  • Entwickelt wurden Rechnersysteme, die ein Prozessoren-Array benutzen, um Programme parallel abarbeiten zu können.
  • Die VLSI-Technologie ist jetzt in der Lage, mehrfache Prozessoren (jeder mit einem eigenen Speicher) entweder auf einem einzigen oder auch auf Mehrfachchips in nächster Nähe zueinander unterzubringen. Solche Parallelprozessoranordnungen können konfiguriert werden in Single Instruction Stream Multiple Data Stream (SIMD), Multiple Instruction Stream Multiple Data Stream (MIMD) oder Single Instruction Stream Single Data Stream (SISD) Konfiguration, jedoch wurde bis heute kein Mehrfachtyp-Modus verwendet, noch gibt es eine Maschine, die eine Form vorsieht, wonach der Modus während der Programmabarbeitung dynamisch und leistungsfähig geändert werden kann.
  • Ein Teil der Arbeit gründet sich auf mein Buch mit dem Titel "The Architecture of Pipelined Computers", erschienen 1981 bei Hemisphere Publishing Corporation unter ISBN 0-89116-494- 4. Diese Arbeit hat eine historische Perspektive, die sich noch heute, nach einer Dekade des Fortschritts auf diesem Gebiet, nützlich auswirkt, siehe S. 11-20.
  • Auf dem Gebiet der nach unterschiedlichen Modi orientierten Maschinen geht die Entwicklung weiter. Zum Beispiel für den SIMD-Modus, wurde kürzlich das US Patent 4,992,933 unter dem Titel SIMD ARRAY PROCESSOR WITH GLOBAL INSTRUCTION CONTROL AND REPROGRAMMABLE INSTRUCTION DECODER, am 12 Feb. 1991, an James L. Taylor erteilt für ein Prozessor-Array, das eine multidimensionale Anordnung von Verarbeitungselementen vorsieht und das einen Mechanismus benutzt, durch den die Verarbeitungselemente simultan in SIMD aktualisiert werden als Reaktion auf eine globale Ladeanweisung, die einen Interrupt für alle Verarbeitungselemente erzwingt.
  • Die derzeit am weitesten fortgeschrittenen Maschinen sind MIMD. US-Patent 4,916,652, erteilt an Schwarz und Vassiliadis am 10. April 1990, unter dem Titel DYNAMIC MULTIPLE INSTRUCTION STREAM MULTIPLE DATA MULTIPLE PIPELINE APPARATUS FOR FLOATING POINT SINGLE INSTRUCTION STREAM SINGLE DATA ARCHITECTURES betrifft das Implementieren einer MIMD-Maschine über multiple funktionelle Pipelines und Verschachteln der verschiedenen Anweisungsströme in diesen Pipelines. Dieses Patent zieht das Umschalten der Maschine von MIMD auf SISD für eine kurze Zeitspanne zum Behandeln einiger komplexer Anweisungen für die Fließkommaoperation in Betracht.
  • Andere unterbrechen den MIMD-Modus einer Maschine. US-Patent 4,873,626, erteilt am 10. Oktober 1989, und US-Patent 4,891,787, erteilt am 2. Januar 1980, beide an David K. Gifford, beschreiben ein Parallel-MIMD-Verarbeitungssystem mit einem Prozessor-Array mit einem SIMD/MIMD-Befehlsabarbeitungssystem. Diese zwei Patente definieren eine einzige CPU (ZE), die ein Gesamt-Controller für multiple Prozessorgruppen (PEs) und -speicher ist, wobei jede Gruppe einen Querverbindungspfad irgendeiner Art hat. Ein Parallelbus verbindet die Haupt-CPU mit den Gruppen. Diese Maschine hat bewiesen, daß alle PEs einen unabhängigen Programmcode im MIMD-Modus abarbeiten können. Wie im anderen obigen Patent gibt es die Möglichkeit, das Bearbeiten der PEs zu unterbrechen, das von dem einzigen Prozessor in übergeordneter Regelung gesteuert wird.
  • Derzeit sind die meisten SIMD-Prozessoren (z. B. der Connection Machine CM-2) entweder eigenständige Einheiten oder arbeiten als vorderes oder hinteres Ende eines MIMD Hauptrechners. Jeder Prozessor ist ausgelegt, um eine spezifische Funktion auszuführen, und Schemata, wie die, die Interrupts voraussetzen, machen einen beträchtlichen Aufwand erforderlich, um begrenzte spezialisierte Modusoperationen auszuführen. Jedoch zeigen die meisten Rechneralgorithmen oder -programme einige starke Übereinstimmungen für eine effiziente Paralleldurchführung in einem von verschiedenen Modi (SIMD oder MIMD). Ferner würden virtuell alle Algorithmen von einer Maschinenarchitektur profitieren, die unterschiedliche Ausführungsmodi für unterschiedliche Teile eines Problems zuläßt. Die existierenden Vorschläge sprechen dieses Bedürfnis nicht ausreichend an.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die hier beschriebene Erfindung ermöglicht eine Maschinenarchitektur, die unterschiedliche Ausführungsmodi für unterschiedliche Teile eines Problems zuläßt. Zusätzlich benutzen die Maschinen den gleichen Satz Systembetriebsmittel um Mehrfachmodus-Anwendungen zuzulassen. Das Rechnersystem, das ich beschrieben habe, ist ein Mehrfachprozessor- Rechnersystem mit mehrfachen Prozessorgruppen (Verarbeitungselementen) und -speichern, bei dem Prozessoren über einen Zusammenschaltpfad, und Betriebsmittel zum Steuern der Ausführung von Anweisungen durch die Prozessoren des Systems kreuzgekoppelt sind. Gemäß der bevorzugten Ausführungsform der Prozessoren können die Prozessoren so konfiguriert werden, daß sie Anweisungen im SIMD- und/oder im MIMD-Modus dynamisch ausführen. Diese Modusänderung kann erfolgen auf einer Anweisung-um-Anweisung-Basis. Die Prozessoren können physikalisch identisch sein und doch Mehrfachmodus-Funktionen ausführen.
  • In meiner bevorzugten Ausführungsform hat jedes Rechnerverarbeitungselement mindestens ein Befehlsregister, einen Programmzähler und ein Zustandscode-Register. Mit der beschriebenen Architektur habe ich Steuerungen vorgesehen, die diese Betriebsteile gemeinsamer Verarbeitungselemente, die für MIMD-Modus-Operationen erforderlich sind, in die Lage versetzen, daß sie in SIMD benutzt werden und nützlich sind. Der dynamische Umschaltaspekt meiner Erfindung benutzt das Befehlsregister eines Rechnerverarbeitungselements zur direkten Steuerung der Befehlsabarbeitung unter Verwendung anderer gemeinsamer Elemente als Doppelzweck-Systemelemente in der Operation im SIMD- Modus.
  • Dementsprechend habe ich vorgesehen, daß dem Programmzähler eine Basisregisterfunktion zugeordnet wird.
  • Ich habe auch vorgesehen, daß dem Befehlsregister eine lokale Aktivierungsfunktion zugewiesen wird.
  • Ich habe auch vorgesehen, daß das Befehlsregister als Pipeline für SIMD-Anweisungen benützt wird.
  • Jeder der Prozessoren weist einen Wert im Befehlsregister auf, der zum dynamischen Anzeigen des zur Ausführung der derzeitigen Anweisung eingestellten Betriebsmodus benützt wird. Eine Anweisung im eingestellten Befehl kann an ausgewählte Prozessoren des Systems gesendet werden, um den ausgewählten Prozessorsatz des Systems dynamisch in einen gewünschten Operationsmodus umzuschalten.
  • In meiner bevorzugten Ausführungsform ist ein Pfad zwischen den Befehlsregistern eines jeden Verarbeitungselements einer Prozessorgruppe vorgesehen, die einen Anweisungsstrom abarbeiten, um durch Senden über den so vorgesehenen Sendepfad SIMD-Operationen in einer Vielzahl von Prozessoren der Gruppe zu aktivieren.
  • In einer alternativen Ausführungsform kann ein Zusammenschaltnetz die Sendefunktionen zwischen den Prozessoren durchführen. In dieser Ausführungsform, die mit einem direkten Sendepfad zwischen den Prozessoren kombiniert werden kann, liefert ein Mehrstufen-Zusammenschaltnetz alternative Pfade zu den Befehlsregistern. Dieses alternative Zusammenschaltnetz ist ein dynamisches Mehrstufen-Zweiseiten- Schaltnetz, das das Punkt-für-Punkt-Koppeln der Prozessoren ohne Blockieren ermöglicht.
  • Zusätzlich können mehrere interdynamische Verarbeitungsmodusgruppen dynamisch auf dem gleichen Rechnersystem arbeiten. Kein bekanntes System läßt eine solche Konfiguration zu.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Fig. 1(a) zeigt die SIMD-Modus-Organisation des gemeinsamen Betriebsmittelsystems.
  • Fig. 1(b) zeigt die MIMD-Modus-Organisation des gemeinsamen Betriebsmittelsystems.
  • Fig. 2 zeigt illustrativ einen angenommenen Zeitplan der operativen Systembetriebsmittel.
  • Fig. 3 illustriert neue mögliche Merkmale des Systems, die eine direkte Signalankopplung quer über die Verarbeitungselemente zum Senden gemäß der bevorzugten Ausführungsform enthalten.
  • Fig. 4 illustriert eine alternative Ausführungsform des Systems aus Fig. 3, wobei das Senden über das Zusammenschaltnetz besorgt wird, das das bevorzugte Mehrstufen-Zusammenschaltnetz ALLNODE benutzt, das alternative Pfade zu den Befehlsregistern vorsieht.
  • Fig. 5 illustriert den SIMD-Zeitablauf gemäß der bevorzugten Ausführungsform.
  • (Anmerkung: Zwecks leichterer Darstellung können die Figuren in mehrere Teile unterteilt werden, und vereinbarungsgemäß zeigen wir den oberen Teil der Figur im ersten Blatt und ordnen beim Ansehen der Figur die nachfolgenden Blätter nach unten und quer an, für den Fall, daß Mehrfachblätter benutzt werden.)
  • Jetzt folgt beispielhaft unsere detaillierte Beschreibung mit Erklärung der einzelnen Teile der bevorzugten Ausführungsformen unserer Erfindungen.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNGEN
  • Erfindungsgemäß ermöglicht das hier nachstehend beschriebene Rechnersystem und seine Architektur, daß ein Maschinenverarbeitungselement mit den gleichen Betriebsmitteln verschiedene Teile eines Problems in einem geeigneten Modus ausführt, z. B. im SIMD-Modus der Fig. 1(a) oder im MIMD-Modus der Fig. 1(b). Zusätzlich fällt unter den Begriff der Fig. 1(a) auch SISD, wie noch beschrieben wird. In meiner bevorzugten Ausführungsform benutzen die Maschinen den gleichen Satz Systembetriebsmittel, um Mehrstufenanwendungen zu ermöglichen, aber diese Betriebsmittel werden dynamisch umkonfiguriert. Das Rechnersystem, das ich beschrieben habe, ist ein Mehrstufen- Prozessor-Rechnersystem mit Mehrfach-Prozessorgruppen 1...N. Die Verarbeitungselemente haben (in der bevorzugten RISC- Konfiguration) eine Steuereinheit, eine Datenflußeinheit und einen Speicher. Die Prozessoren sind über einen Zusammenschaltpfad verschaltet, der aus beliebigen allgemein bekannten Formen der Zusammenschaltnetze bestehen kann, wie z. B. eine Kreuzschiene oder ein Durchschaltnetz, ein binärer überdimensionaler Würfel oder ein sonstiges Verbindungsnetz. In meiner bevorzugten Ausführungsform sowie auch in meiner alternativen Ausführungsform ist das beste Netz für die Zwecke der beschriebenen Architektur und daher auch das von mir bevorzuge Netz eines auf der Grundlage des ALLNODE- Schaltnetzes gemäß Beschreibung in der US-Patentanmeldung mit dem Titel "Broadcast/Switching Apparatus For Executing Broadcast/Multi-Cast" von H. T. Olnowich et al., EP 506 136 eingereicht am 30. März 1992 (IBM Docket EN991030A), das ein Mehrstufennetz ist und als Parallelverbindungsmedium arbeitet und das zum asynchronen Zusammenschließen des RS/6000 und sonstiger Prozessoren geeignet ist, das es zuläßt, daß Prozessorknoten zusammengeschlossen werden, wobei Befehle gleichzeitig oder auf beliebige Weise überlappend gesendet werden. Das Netz ist in VLSI implementiert und sieht vor ein dynamisches nichtblockierendes Verschalten über einen alternativen Pfad, regulär abstandsgleich innerhalb des Chips, Mehrstufen-Zweiseitenchip, mit Ports zum Anschließen an angekoppelte Prozessoren, entweder innerhalb eines Chips, auf einer Leiterplatte, oder über einen Verbindungspfad. Das System kann in der Beschreibung der oben angezogenen Anwendung ein duales Prioritätsschema für Simplex-Netze verfolgen, deren Erfinder ich bin. Dieses Schaltnetz aktiviert einige der Merkmale meiner Erfindung.
  • Der Rechnerprozessor wird diese Betriebsmittel aufweisen, die für die MIMD-Verarbeitung anwendbar sind, einschließlich eines Programmzählers, dem eine Basisregisterfunktion im SIMD-Modus zugeordnet ist, ein Zustandscoderegister, dem eine lokale Einschaltfunktion zugewiesen werden kann, und ein Befehlsregister, das im SIMD-Modus benutzt wird, um SIMD- Befehle in Pipeline hintereinander herzuschicken.
  • Die von mir beschriebene Architektur sieht vor Betriebsmittel zum Steuern der Ausführung von Befehlen durch die Prozessoren des Systems. Laut bevorzugter Ausführungsform können die Prozessoren so konfiguriert werden, daß sie Anweisungen im SIMD- und/oder im MIMD-Modus dynamisch ausführen. Diese Modusänderung kann auf einer Befehl-nach-Befehl-Basis erfolgen. Die Prozessoren können physikalisch identisch sein und doch Mehrfachmodus-Funktionen ausführen.
  • Da in meiner bevorzugten Ausführungsform die Rechnerverarbeitungselemente ein Befehlsregister, einen Programmzähler und ein Zustandscoderegister aufweisen, hat der Rechner die Steuergeräte, die diese Betriebsmittel gemeinsamer Verarbeitungselemente aktivieren, die beim MIMD-Modus-Betrieb erforderlich sind, der in SIMD nützlich benutzt werden soll.
  • Für die Zwecke der vorliegenden Diskussion nehmen wir an, wie in meiner bevorzugten Ausführungsform, daß ein einzelner Prozessor die in Fig. 2 zusammengefaßten Merkmale aufweist. Diese Merkmale sind charakteristisch für viele mögliche RISC- Architekturen, und sie kommen in RS/6000 RISC-Prozessoren vor, die bei International Business Machines Corporation erhältlich sind und die ich bevorzugt einsetze. Im Bereich der Erfindung haben die individuellen Verarbeitungselemente jedoch:
  • 1. Einen Befehlssatz, in dem alle speicherbezüglichen Maßnahmen für Daten über die Befehle LOAD und STORE ausgeführt werden, wie in RISC-ähnlichen Befehlssatz-Architekturen üblich ist;
  • 2. Das Adressieren für solche Datenzugriffe ist Grundadresse plus Distanzadresse, aber Additions- und Indexregister- Aktualisierungen müssen nach Anlaufen einer Speicheroperation als Nach-Adressenaktualisierung angewandt werden;
  • 3. Alle Anweisungen, die Rechenoperationen ausführen, wie Additionen oder Subtraktionen, laufen von Register zu Register und können in einem oder auch in mehreren Ausführungszyklen ausgeführt werden, ohne auf Speichermaßnahmen bezugnehmen zu müssen (diese Zykluszeit wird zwecks Vereinfachung der Darlegung in der Offenbarung als Einzyklus-Zeit angenommen);
  • 4. Alle Anweisungen passen genau in ein Speicherwort, abgesehen von solchen zur unmittelbaren Ausführung, die zwei benötigen (wobei zweite die Daten enthält);
  • 5. Alle Anweisungen müssen in einen Maschinenzyklus passen, wobei die Adresse des Speicheroperanden beim Anlaufen des Zyklus aus einem Maschinenregister wählbar ist, und das Register die Ergebnisse in einem Lesevorgang aufnehmen und sie am Ende des Zyklus einspeichern kann.
  • Alle diese Merkmale lassen sich heute in einer typischen RISC-Maschine finden und sie können auch in komplexeren Architekturen implementiert werden mit einigen der Fortschritte, die derzeit entwickelt werden. Der Punkt hier ist, daß ich zwar die vereinfachte RISC-Maschine bevorzuge, die in Einzelheiten beschrieben wird, jedoch gibt es in der Beschreibung der Merkmale nichts, das nicht so modifiziert werden könnte, daß es nicht auch mit anderen, mehr herkömmlichen Architekturen arbeiten würde.
  • Die Architekturerweiterungen
  • Die Architekturerweiterungen, die das Rechnersystem in die Lage versetzen, auf der Befehl-um-Befehl-Ebene dynamisch zwischen (beispielhaft) SIMD- und MIMD-Modus umzuschalten, wird jetzt für zwei mögliche Modi beschrieben.
  • Ich nehme eine Prozessoranordnung an, die allgemein gemäß Fig. 3 konfiguriert ist. Das Befehlswort, das in das Befehlsregister (IR) jedes Prozessors eingespeist werden soll, kann entweder aus einer Sendung über einen Globalbus (oder in der alternativen Ausführungsform über das Netz) von dem Prozessor her kommen, der als Steuereinheit (PE#1) gekennzeichnet ist, oder aus dem eigenen Speicher des Prozessors.
  • Erfindungsgemäß erkennt das Befehlsregister jedes Prozessors ein neues Verarbeitungsmodus-Bit (PMB), das angibt, ob dieser Prozessor im SIMD- oder im MIMD-Modus steht. Dieses Bit steuert, wo neue Befehle herkommen.
  • Auch beinhaltet das Format jeder Anweisung ein gesondertes Parallelausführungstyp-Bit (PET), das zwei Werte annehmen kann, einen Wert, der "lokale" Operation bzw. "Array"- Operation anzeigt.
  • Schließlich hat das System eine "Schaltmodus"-Anweisung im Anweisungssatz, die das Verarbeitungsmodus-Bit der Prozessoren umschaltet, die die Umschaltmodus-Anweisungen ausführen, die im Anweisungsstrom auf die "Modusumschalt"- Anweisung folgt.
  • Diese Architekturerweiterungen können ein dynamisches Umschalten Anweisung-auf-Anweisung zwischen den Modi aktivieren und ermöglichen es den Maschinen des Rechnersystems, im SIMD- oder im MIMD-Modus zu arbeiten, je nachdem, wie es für den vom Rechnersystem auszuführenden Algorithmus am besten ist.
  • Beispiel für SIMD-Modus-Operationen
  • Jeder der Prozessoren hat einen Wert im Befehlsregister, der zum dynamischen Anzeigen des zum Ausführen der augenblicklichen Anweisung benutzten Operationsmodus gesetzt ist. Eine Anweisung im Anweisungssatz kann an ausgewählte Prozessoren des Systems gesendet werden, um den gewählten Prozessorsatz des Systems dynamisch auf den gewünschten Operationsmodus umzuschalten. Dieses Beispiel illustriert die SIMD-Operation.
  • Beim Hochfahren des Geräts werden bei allen Prozessoren, außer bei dem mit PE#1 bezeichneten Prozessor, das Verarbeitungsmodus-Bit (PMB) auf SIMD gesetzt. Prozessor #1 wird auf MIMD gesetzt und kann während des Konfigurationslaufs nicht aus diesem MIMD-Modus umschalten.
  • In diesem Modus arbeitet Prozessor #1 als Steuergerät für das System, das gerade konfiguriert wird, und arbeitet als Steuergerät und ruft Anweisungen ab. Alle anderen Prozessoren schieben in ihre Befehlsregister eine Kopie jeder Anweisung ein, sobald sie Prozessor #1 abruft. Somit haben am Ende der Anweisungsabrufaktion alle Prozessoren in ihrem IR die gleiche Anweisung zur Ausführung.
  • Jetzt, zu Beginn des nächsten Maschinenzyklus blickt jeder Prozessor sowohl auf sein PMB als auch auf das Parallelausführungstyp-Bit (PET) der Anweisung (wie es im IR gefunden wird). Für den Prozessor #1 (der im MIMD-Modus steht) bewirkt ein PET "lokal", daß der Prozessor die Anweisung wie eine normale Anweisung dekodiert und ausführt. Der nächste Maschinenzyklus ist daher ausgerichtet auf die Ausführungsanweisung in Prozessor #1, wobei sein Speicher für Laden und Speichern verfügbar ist. Es ist möglich, daß die Maschinenkonstruktion auch das Vorabrufen zuläßt und die Anweisung den Speicherraum nicht braucht, in diesem Fall kann dieser Zyklus die nächste Anweisung abrufen. Im SIMD-Modus sehen alle anderen Prozessoren das "lokale" PET und ignorieren die Anweisung. Sie schalten auf Leerlauf. Dieser Operationsmodus ist nützlich, wenn ein allgemeiner Zustand oder eine Steueroperation vom Steuerprozessor ausgeführt werden muß. Wenn immer der Steuerprozessor #1 eine weitere Anweisung abruft, wiederholt sich der Prozeß und alle Prozessoren im SIMD-Modus erfassen diesen Speicherbezug gleichzeitig in ihren Befehlsregistern.
  • In dieser SIMD-Konfiguration bewirkt ein PET des "Array", daß alle Prozessoren, die im SIMD-Modus stehen (d. i. alle Prozessoren außer dem Steuerprozessor #1) die Array-Anweisung dekodieren und ausführen. Der Prozessor #1 jedoch benutzt den PET des "Array" als Flag, um seinen Ausführungszyklus zu überspringen und direkt zum nächsten Anweisungsabruf überzugehen. Das überlappt das Abrufen der nächsten Anweisung mit der Ausführung durch alle anderen Prozessoren, die im SIMD-Modus angewählt sind (alle der Gruppe des Array). Somit würde eine Kette von "Array"-Anweisungen alle Anweisungsabrufe total überlappen und zulassen, daß die Speicher der Prozessoren bei jedem dieser Zyklen als Datenoperanden benutzt werden.
  • Die Ausführung dieser SIMD-Array-Modus-Anweisungen erfolgt genau so wie bei der herkömmlichen Prozessorausführung, mit dem Unterschied, daß die Programmzähler PC der Prozessoren nicht nach Ausführung einer Anweisung automatisch inkrementiert werden, falls die Anweisung nicht eine unmittelbare Zwei-Wort-Anweisung ist. Das ermöglicht, daß diese SIMD- Maschinen ihre Programmzähler als ein anderes Basisregister benutzen. Das ist ein besonders wertvolles Merkmal in jeder gatterbegrenzten Konstruktion, wo alle Prozessoren auf einem Chip stehen, wo Speicherplatz wertvoll ist und nicht verschwendet werden darf.
  • Anweisungen, die jetzt den Programmzähler modifizieren, wenn er als Basisregister arbeitet, sind:
  • 1. Ein "Sprungbefehl", der vom Steuerprozessor #1 abgerufen wird, aber mit PET auf "Array" gesetzt ist, hat die Auswirkung, daß er den Programmzähler jedes SIMD-Modus- Prozessors auf diesen Wert setzt;
  • 2. Eine "Load Immediate"-Anweisung, die vom Steuerprozessor abgerufen wird, aber mit PET auf "Array" gesetzt ist, hat die Auswirkung, das Register jedes Prozessors mit dem Inhalt dieses Prozessorspeichers an der vom Programmzähler des Prozessors angegebenen Adresse zu laden, mit einer Nach- Abruf-Inkrementierung des PC;
  • 3. Eine "Branch and Link"-Anweisung sichert die Nebenprozessoren in die angegebenen Verbindungsspeicher, und lädt den PC wieder mit einer neuen Adresse, was gleichbedeutend ist mit Sichern einer Basis und Nachladen in der gleichen Anweisung;
  • 4. Eine "Return"-Anweisung lädt die Programmzählerbasis aus einem der anderen Register.
  • Somit erlauben diese Anweisungen zusammen, daß der Prozessor- PC als Zeiger auf die Konstanten-Anordnungen und sonstigen Daten als sehr nützlich in Matrixoperationen benutzt werden.
  • Es kann auch praktisch sein, eine Anweisung "STORE IMMEDIATE" in diese Architektur aufzunehmen, die die Umkehrung von LOAD IMMEDIATE ist. Das ist zwar im Regelfall keine nützliche Anweisung, im Zusammenhang mit der beschriebenen Maschine ermöglicht sie es aber, daß die SIMD-Prozessoren ihre Programmzähler als Basisregister auch zum Speichern benutzen.
  • Fig. 5 zeigt ein Diagramm eines Musters für einen Befehlsstrom. Hier bemerkt man, daß die im SIMD-Modus beschriebenen Erfindungen eine sehr hohe Speichernutzung zulassen, wobei der Array während eines hohen Prozentsatzes, annäherungsweise 1002, der Speicherzyklen etwas nützliches ausführt.
  • Fig. 5 zeigt ein Beispiel für ein Programm, das zwei Sätze von Arrays zusammenschließt, wobei jeweils ein Array in jedem Verarbeitungselement zu finden ist. Die oberste Linie weist eine Unterteilung je Speicher auf, mit einem Hinweis, worauf der Steuerungs-PE(#1) und die SIMD-Modus-PEs während dieses Zyklus zugreifen.
  • Bei jedem Zyklus wird auch der PET jeder Anweisung im IR gezeigt. Auch wird die hier gezeigte vereinfachte Assemblersprache um ein "x:" am Beginn jedes OP-Code erweitert. Das ist das PET-Bit für diese Anweisung. Ein "A" für des "x" bezeichnet den Array-Modus; ein "L" für das "x" bezeichnet den Lokal-Modus. Das hier gezeigte Programm wurde gewählt, um viele der neuen Merkmale der Erfindung zu demonstrieren.
  • Wie in Fig. 5 gezeigt ist, beginnt der Steuerprozessor die Ausführung mit einer Anweisung im Lokal-Modus, die sein eigenes R1-Register (ein Akkumulator oder allgemeines Register, wie es in RISC-ähnlichen Maschinen vorkommt) mit einem Schleifenzähler aufbaut. Das beansprucht zwei Maschinenzyklen, einen für das Abrufen der Anweisung und einen für die Ausführung. Die anderen PEs laufen während dieser Zeit im Leerlauf.
  • Dann, mit einem Array-PET holt und verteilt er eine Anweisung "LOAD BASE,X", was bewirkt, daß in jedem Verarbeitungselement im SIMD-Modus ein Basisregister mit der Adresse des X-Array geladen wird. Das dauert einen Maschinenzyklus für das Abrufen, wobei sich der Maschinenzyklus in den SIMD-PEs in Pipelineweise mir späteren Zyklen überlappt.
  • Im nächsten Zyklus holt der PE#1 wieder eine Array-Modus- Anweisung - in diesem Fall ein "JUMP Y". Das hat die Auswirkung, daß alle PEs im SIMD-Modus ihren PC mit der Startadresse des anderen Array laden.
  • Die nächsten drei Anweisungen für den Kern der Schleife, und alle verbrauchen genau einen Maschinenzyklus vom PE#1, der sie holt und verteilt. Die erste bewirkt, daß alle SIMD- Modus-PEs eines ihrer Arbeitsregister R1 mit einem Wert aus dem X-Array laden. Die zweite bewirkt ein ähnliches Laden vom Y-Array in R2. Hier ist anzumerken, daß der "LOADIMM" Befehl den PC benutzt (der vorher schon mit der Y-Array-Grundadresse geladen wurde), und den Nebeneffekt hat, daß er ihn um 1 inkrementiert (wie es mit Befehlen im Sofortausführungs-Modus in herkömmlichen SISD-Maschinen geschieht). Das bringt den PC zum nächsten Y-Array-Element. Die letzte der drei Anweisungen speichert das Ergebnis wieder an den Ort, der vom BASIS- Register bezeichnet wird (die X-Array-Elementposition, die bei der ersten Anweisung geholt wurde) und speichert dann eine modifizierte Adresse 1+BASE wieder in BASE. Das stellt BASE so ein, daß es auf das nächste X-Array-Element zeigt.
  • Die letzten zwei Anweisungen sind im Lokalmodus, und bestehen aus dem Dekrementieren des Schleifenzählers (der in R1 des PE#1 steht) und einem "Jump not Zero" zurück zum Schleifenanfang. Dieser letztere Sprung, der im Lokalmodus ausgeführt wird, betrifft nur den PE#1-PC und läßt in den SIMD-Modus PEs einen PC, der als Zeiger auf das Y-Array benutzt wird. Alternative Implementierungen einer solchen Funktion, z. B. ein BRANCH ON COUNT, wie in der Maschinenarchitektur des System/370 von IBM, könnten diese beiden Anweisungen zu einer einzigen zusammenfassen.
  • Beispiele für den MIMD-Modus
  • Die oben beschriebene Struktur und Methode der Operationen im SIMD-Modus sind für viele Anwendungen nützlich, auf ähnliche Wiese ist auch der MIMD-Modus sehr wichtig. Unter Berücksichtigung dieses Punkts werde ich ein Beispiel für die MIMD- Operationen geben.
  • Nehmen wir an, der Steuerprozessor #1 ruft eine Anweisung "Switch mode" ab, deren PET "Array" ist. Prozessor 1 wird sie ignorieren. Aber alle SIMD-Modus-Prozessoren werden sie ausführen und ihren Modus auf MIMD umstellen. Entweder kann diese Anweisung einen Programmzähler-PC-Wert liefern, um die Ausführung at anlaufen zu lassen(die zuläßt, daß alle Prozessoren am gleichen Ort im Programm zur gleichen Zeit anlaufen), oder der PC kann an dem Punkt gelassen werden, wo er vor der Anweisung war, und läßt zu, daß jeder SIMD- Prozessor seine eigene Programmstartadresse berechnet hat.
  • Sobald er im MIMD-Modus steht, einer dynamischen Anweisung- um-Anweisung-Ebenenänderung, geht ein Prozessor dazu über, Befehle als individueller Prozessor abzurufen, jeweils allein für sich oder als Teil eines Array. Anweisungen, deren PET "lokal" ist, führen den Programmfluß strikt so aus, als ob sie ein normaler Rechner wären. Anweisungen, deren PET auf "Array" stehen, können auf verschiedene Weisen arbeiten, ein besonders nützlicher Weg ist, wenn die Anweisung ein LOAD oder ein STORE im RISC-Sinn ist. In diesem Fall wird die von der Anweisung generierte Adresse als eine Prozessoradresse im Prozessorzusammenschaltnetz benutzt. Dieser Prozessor wartet ab, bis der von der Adresse angesprochene Prozessor die umgekehrte Anweisung (LOAD anstatt STORE und STORE anstatt LOAD) ausführt, und die Daten vom Prozessor, der STORE ausführt, an den Prozessor zum LOAD übertragen wurden. Ein Vorteil im bevorzugten ALLNODE-Schaltnetz ist es, daß die Reaktionszeit des Netzes minimiert wird.
  • Auf ähnliche Weise könnte ein von einem Prozessor mit einem PMB-Wert "Array" ausgeführter "Switch Mode" auf verschiedene Arten ausgeführt werden. Am einfachsten könnte man einfach in den SIMD-Modus schalten und auf die nächste Anweisung des Steuerprozessors #1 warten, der ein PET "Array" hat. Jedoch könnte dann ein Versuch des Steuerprozessors, ein gleichwertiges Schalten auszuführen, ein Anhalten bewirken, bis alle anderen Prozessoren auf SIMD umschalten. Aber das Anwenden einer Alternative mit einem potentiell wertvollen Merkmal kann implementiert werden. Diese Alternative würde andere Prozessoren als den Steuerprozessor #1 verzögern, wenn sie eine solche Anweisung antreffen, und die von der Anweisung gelieferte Anweisung als Schlüssel zurück zum Prozessor #1 benutzen. Wenn der Prozessor #1 ein Schalten mit einer "Adresse" ausführt, die mit dem Schlüssel übereinstimmt, verläßt der Prozessor den Wartezustand und nimmt das Weiterverfolgen der Anweisungen des Steuerprozessors wieder auf.
  • In dieser Alternative würde ein nützliche Schlüsselwert ein Binärmuster sein, das dann mit einem gemeinsamen Bussignal logisch ODER-verknüpft würde, das zurück zum Prozessor 1 geht. Wenn die Adresse des Prozessors 1 mit dem ODER- verknüpften Wert übereinstimmt, springen die Prozessoren aus dem Wartezustand und gehen zurück in den SIMD-Modus. Dieses gemeinsame Bus-Signal könnte über das Netz laufen. Das ermöglicht, daß eine variable Teilmenge Prozessoren aus dem MIMD-Modus in den SIMD springen, und dann potentiell mit der Gruppe der Origninal-SIMD-Prozessoren wieder zurück zum MIMD. Wenn dann ferner eine Prozessorengruppe im SIMD-Modus arbeitet, können die anderen im unabhängigen MIMD-Modus bleiben.
  • Ebenso ist es möglich, die Schaltmodusanweisung so aufzubauen, daß ihre Adresse an das Zusammenschaltnetz als Adresse des Verarbeitungselements geschickt wird, um als Steuerelement zu dienen, und zuzulassen, daß jeder beliebige PE ein SIMD-Controller für jede beliebige Teilmenge anderer PEs wird, sogar durch dynamische Auswahl.
  • Somit kann das Merkmal der Teilmengen-Gruppierungen mit oder auch ohne die ALLNODE-Netz-Merkmale eingesetzt werden, aber beim ALLNODE-Netz-Merkmal gibt es noch zusätzliche Vorteile, die jetzt erklärt werden.
  • Zusätzlich können in einer alternativen Ausführungsform verschiedene zwischendynamische Verarbeitungs-Modus-Gruppen eingerichtet sein, die auf dem gleichen Rechnersystem dynamisch arbeiten. Mit dem Merkmal des ALLNODE-Netzes können die Sendefunktionen über das Zusammenschaltnetz geschickt werden anstatt über einen globalen Synchronbus. Beide lassen sich innerhalb der selben Merkmale implementieren.
  • Beispiel für das ALLNODE-Zusammenschaltnetz
  • Unter den obigen Gesichtspunkten wird ersichtlich, daß ein erwünschtes System die Merkmale benutzen kann, wie sie in EP 485 690 eingereicht am 15. Juni 1991 unter dem Titel PARALLEL ASSOCIATIVE PROCESSOR SYSTEM gezeigt und beschreiben sind, in dem es eine Vielzahl von PICKETS gibt, die die SIMD-Verarbeitung implementieren können, aber zusätzlich kann dieses System auch mit dem mehr herkömmlichen MIMD-Konzept mit dem gleichen Satz Betriebsmittel eingesetzt werden. Innerhalb des Systems kann man mischen und anpassen, wobei man auf Auswahlbasis sowohl SIMD- als auch MIMD- Operationen durchführen kann, wobei einige Prozessoren in SIMD und die anderen in MIMD laufen. Die PICKETS, die SIMD- Verarbeitung implementieren können, sind in der Anwendung mit dem Titel "Parallel Associative Processor System" EP 485 690 von J. W. Diffenderfer et al., eingereicht am 15. Juni 1991 die her durch Querverweis eingeschlossen ist, geoffenbart.
  • Mit einem ALLNODE-Zusammenschaltnetz, einem dynamischen Vielstufenschaltnetz, in dem ohne Abblocken schnell Alternativpfad-Auswahlprozessoren als Teil eines Zusammenschaltsystems eingerichtet werden können, kann man über ein Netz verschiedene Prozessorgruppen anwählen, die die gewünschten Systemelemente haben, und sie zum Abarbeiten von Programmen benutzen, die mit Vorteil die SIMD- und MIMD- Bedürfnisse der Applikation anwenden können. Damit braucht die Bezeichnung eines Steuerprozessors nicht auf einen Steuerprozessor beschränkt zu werden, was die Gelegenheit bietet, dynamisch rotieren zu lassen, wer der Controller ist. Wenn das gewählte Netz auswählt, welche Gruppen zusammengeschlossen werden sollen, und die gewählten Gruppen Teil eines dynamischen Netzes werden, kann man das Netz benutzen, um Befehle zu senden. Das überläßt es nicht notwendigerweise der Hardware, sondern der dieser zugehörigen Software, zu steuern, wer der Wegeführungsprozessor ist.
  • Das ist vielseitiger und bietet Vielleicht ein paar Ausstattungsmerkmale mehr als andere Zusammenschaltnetze, die eingesetzt werden könnten. Mit einem solchen System hat man jetzt ein System, das einen SIMD-Modus von irgendwoher (irgendeinem Prozessor auf dem angewählten System) fahren kann. Ein Prozessor könnte eine bestimmte Zeitspanne der steuernde Teil sein, dann kann ein anderer Prozessor der steuernde Teil sein, und zwischen dieser dynamischen Betriebsmittelzuteilung können unterschiedliche Betriebsmittel benutzt werden, die dem Netz zugeordnet sind, was durch die Fluidik und die Betriebsmittel des Systems bestimmt wird. Man kann Mehrfachprozessoren an Mehrfach-Teilmengen von Prozessoren senden lassen, und man kann multiple und willkürliche Gruppen von SIMD-Maschinen haben, die auf der gleichen physikalischen Hardware laufen.
  • Im MIMD-Modus, wieder unter Bezugnahme auf Fig. 1, kann jedes beliebige Verarbeitungselement eine Anweisung an jede andere Teilmenge Verarbeitungselemente senden. Man kann diese Sendedaten in ihr Befehlsregister übernehmen und es wie im SIMD-Modus ausführen. In Fig. 4 würde das Zusammenschaltnetz die Anweisungen senden, und der alternative Pfad für die synchrone Kommunikation in das Befehlsregister ist nicht erforderlich, um einen zusätzlichen Pfad zum Befehlsregister zu gewinnen. In dieser alternativen Ausführungsform, die das ALLNODE-Netz (welches ein asynchrones Netz ist) benutzt, könnte man Befehle über das Zusammenschlußnetz schicken und intern zum Befehlsregister gehen, was die Anwendung stärker generalisierter Maschinenelemente zu den Bilanzkosten eines Zyklus zuläßt, die gewöhnlich absorbiert werden, je nach Bedürfnis. Grundlegend ist das Senden durch das Netz wahrscheinlich als Tatsache und vielleicht stärker zuverlässig als andere Alternativen. Die Auswahl eines direkten alternativen Pfads wie in der bevorzugten Ausführungsform beschrieben, kann stärker gewünscht werden, wenn der Array mit multiplen Prozessoren eng an einen einzigen Chip gekoppelt ist. Aber für Anwendungen meines Systems, wo Prozessoren physikalisch weit auseinanderliegen, wo jede der Gruppen mit einer hohen Frequenzrate läuft, ist eine Konfiguration, die ein schnelles asynchrones Sendenetz, wie z. B. das ALLNODE- Schaltnetz, mit Sendemöglichkeit verwendet, erwünscht. Wie in Fig. 4 gezeigt wird, kann das ALLNODE-Schalternetz als alternativer Pfad vom Netz her in das Befehlsregister verwendet werden.
  • Reine und begrenzte SIMD-Maschinen können eine Anweisung abrufen während sie eine frühere Anweisung an andere Verarbeitungselemente in einem Array senden, und einige SIMD- Prozessoren können ihre Speicher unabhängig nutzen. Wie im PICKET Prozessor, beschrieben im EP 485 690 beantragt am 15. Juni 1991 in der Anmeldung mit dem Titel Parallel Associative Processor System, ist die vorliegende Architektur eine Erweiterung der RISC-Möglichkeiten. In einem RISC- Prozessor ist es möglich, einen Befehl abzurufen und dann eine Speicheroperation durchzuführen. Im jetzigen System, wenn eine nächste Anweisung abgerufen wird, wird jeder als an der Operation beteiligt markierter Prozessor auf geeignete Weise Daten abrufen oder für seinen individuellen Speicher speichern. Es kann nämlich jede einzelne Anweisung, die von der bestimmten, als Steuereinheit bezeichneten Einheit ausgeführt oder abgerufen wird, in jedem der anderen Prozessoren eine Speicheraktivität auslösen.
  • Somit gibt es hier ein Potential für 100%ige Speicheranwendung. Wenn Speicherplatz benötigt wird, ist er vorhanden, und nur wenn das Programm keinen braucht, wird er nicht benutzt. Ferner können im vorliegenden System einige der Prozessoren in SIMD arbeiten und andere können ihre eigenen Speicherabrufe in MIMD machen. Das kombiniert die Möglichkeiten des PICKET-Konzepts mit dem mehr üblichen MIMD- Konzept und benutzt bei dem Prozeß die gleichen Systemelementsätze.
  • Der ALLNODE-Schalter ermöglicht die Anwendung mehr herkömmlicher Prozessoren für das System, das beschrieben und in Fig. 4 gezeigt wird. Während einige der Prozessoren den gemeinsamen Speicheranweisungs-Kommunikationspfad vom Steuerprozessor 1 benutzten können, kann ein alternativer Pfad (in Fig. 4 gestrichelt dargestellt) benutzt werden, um die üblichen Prozessoren zusammenzuschalten. Diese gemeinsamen Prozessoren können PS/2 oder RS/6000 Maschinen sein mit nur wenig Veränderung. Die Veränderung benutzt einen Port zum Vorsehen eines Anweisungs- und eines Status-Bits oder -werts mit geeigneter Decodierlogik, die jedem Prozessor sagt, ob er seine eigenen Anweisungen abrufen oder auf eine Sendung vom Steuerprozessor warten soll. Eine andere physikalische Abänderung darüber hinaus würden die Maschinen nicht brauchen. Die Änderung würde einen Durchgang enthalten, der es einem anderen Prozessor erlaubt, eine Anweisung vorzusehen anstatt der Anweisungen, die sie selbst abrufen würden. Das ist vorgesehen über den alternativen Pfad in das Befehlsregister. Auf diese Weise besteht keine Notwendigkeit, mit dem Standardbefehlsregister oder mit der zugrundeliegenden Decodierlogik herumzuspielen. Durch Bezeichnen der Prozessoren durch den harten ALLNODE-Schalter ist die dynamische Rotation der Prozessoren, welcher Prozessor der Steuerprozessor ist, möglich, da dieser Durchlauf per Software gemacht werden kann, was der Software die Möglichkeit läßt, einzustellen, wer der Wegprozessor ist. Mit einem solchen System kann jeder beliebige Prozessor des Systems im SIMD-Modus laufen. Einer kann für einen bestimmten Zeitraum der Controller sein und dann können andere Prozessoren die Controllerfunktion übernehmen. Wie gesagt, das ermöglicht es, daß multiple Prozessoren multiple Teilmengen senden, um multiple willkürliche Gruppen von SIMD- Maschinen vorzusehen, die auf der selben physikalischen Hardware laufen, und mit der gleichen Hardware auch das normale MIMD-Verarbeiten fahren.
  • Im Gegensatz zu den bisherigen Multiple-Mode-Vorschlägen ruft, neben anderen Unterschieden, im SIMD-Modus ein ausgezeichneter PE eine Anweisung ab, die ohne besondere Anweisung oder Interrupt direkt an jeden Prozessor geht. Alle Verarbeitungselemente führen die Anweisung direkt aus, wenn die Anwendung als Parallelanweisung markiert ist, was wir Setzen des PET-Bits auf "Array" nennen. Das ist in sich selbst ähnlich dem Sendemodus, der den SIMD-Prozessoren gemeinsam ist, aber mit der neuen Architektur kann der gleiche Instruktionsstrom auch lokale Berechnungen auf dem Haupt-, d. i. dem Steuerprozessor ausführen. Zusätzlich können die PEs über die dynamischen "Schaltmodus"-Anweisungen, die mit dem PET-Bit auf "ein" ausgeführt werden, wieder in den unabhängigen MIMD-Modus freigegeben werden.
  • In der bevorzugten Ausführungsform bemerkt man, daß kein Interruptmaskenbit angibt, ob ein PE an einer SIMD-Operation beteiligt ist oder nicht, aber statt dessen das PMB signalisiert, woher das verarbeitende Element seine Anweisungen bekommt, ob aus dem lokalen Speicher, oder ob sie vom Steuerprozessor #1 abgerufen werden.
  • Die Einfachheit der derzeitigen Lösung kann den MIT-Patenten 4,873,626 und 4,891,787 entgegengehalten werden, die ihrerseits eine Anleihe bei der klassischen Lösung des Problems einer bedingten parallelen IF_THEN_ELSE Befehlsausführung machen, das im ILLIAC IV Prozessor erkannt wird, der in den 1960ern vorgeschlagen und in den 1970ern realisiert wurde. Dort gibt es in jedem Verarbeitungselement ein Freigabe-Bit, das es jedem Verarbeitungselement gestattet, eine SIMD- Anweisung auszuführen. In dieser Situation führen alle PEs parallel einen IF-Test an ihren eigenen Daten durch und setzen ihr ENABLE-Bit. Dann führen alle PEs, die ihr Bit auf "wahr" gesetzt haben, bedingt den THEN-Code durch. Dann führen alle PEs, die ihr Bit auf "falsch" gesetzt haben, bedingt den FALSE-Code durch. Das Ergebnis wird vom Controller gesehen und sowohl TRUE- als auch FALSE-Codes werden vom Array durchgeführt.
  • Auf der anderen Seite benötigt das vorliegende System kein explizites ENABLED-Bit, um diesen Typ der Ausführung durchzuführen. Der "Zustandscode" oder das gleichwertige Status-Bit, das bereits in jedem PE gesetzt ist (weil er eine unabhängige Operation durchführen kann), zusammen mit der COMPARE- und gleichwertigen Anweisungen, sehen die gleiche Fähigkeit vor, falls gewünscht. Jedoch bietet infolge der Fähigkeit des hier beschriebenen Systems, schnell dynamisch von SIMD auf MIMD umzuschalten, das vorliegende System eine radikale Alternative zur Durchführung und Beschleunigung des Ergebnisses.
  • Dieser Prozeß würde bewirken, daß alle PEs den IF-Test im SIMD-Modus abarbeiten. Dann setzt der Controller alle mit einer Anweisung in den MIMD-Modus frei. Jeder PE würde dann JUST THE ONE PATH durchführen, der für seine Daten relevant ist. Wenn alle PEs ihre Pfade durchlaufen haben, würden sie wieder in den SIMD-Modus zurückschalten.
  • Die Gesamtzeit ist daher Prüfzeit plus Maximalzeit der beiden Pfade, und nicht die Summe, die in der klassischen Lösung erforderlich ist. Für einen komplexen Code kann diese Verbesserung einen Beschleunigungsfaktor von etwa zwei erreichen.
  • Hier ist zu überlegen, daß die bevorzugte Ausführungsform meiner Offenbarung für eng gekoppelte RISC-ähnliche Höchstleistungsprozessor-Architekturen ideal geeignet ist. Sie läßt sich aber auch auf breiter angelegte Architekturen anwenden, in Abhängigkeit von den Fähigkeiten des Zusammenschaltnetzes. In der bevorzugten Ausführungsform würde das System mit dichter VLSI implementiert werden, wo sowohl Speicher als auch Logik auf einem einzigen Chip untergebracht werden können, und somit ermöglichen, daß Mehrfach-PEs und ihre Speicher auf einem einzigen Chip sitzen. Bei so dichter Kopplung können die Systeme in relativ begrenzter Anzahl auf einem einzigen Chip im SIMD-Modus für die Anweisungsabarbeitung implementiert werden, mit der Gelegenheit, jeweils eine Anweisung pro PE für jeden möglichen Speicherzyklus durchzuführen.
  • Die Fähigkeit, schnell in und aus dem MIMD-Modus und sogar in den SISD-Modus auf dem Steuerprozessor zu inhärenter sequentieller Berechnung zu schalten, ermöglicht es einem Programmierer oder Kompilierer, ein Programm für das Rechnersystem aufzubauen, das die optimale Parallelität (SISD, SIMD, MIMD) benutzt, wie immer es für die beabsichtigte Applikation am sinnvollsten ist. Ferner kann diese Ausführung, insbesondere im SIMD-Modus, so eingerichtet werden, daß in einer Berechnung fast jede einzelne Speicherzykluszeit ausgenutzt werden kann, was eine Maschinen konstruktion ergibt, die an der Grenze der Speicherfähigkeit läuft. Mit dem ALLNODE-Schalter und alternativen Pfaden kann mit ein paar Zyklen das Setup eines Systems für sehr viele Prozessoren erreicht werden. Dieses System hat nur einen schwachen Abstrich für Zykluszeit beim ursprünglichen Setup zu machen, aber die Vorteile der üblichen Hardware, extreme Erweiterungsmöglichkeit und Flexibilität in der Konfiguration können ein alternatives System bewirken, das alternativen Wege durch das Zusammenschaltnetz als System der Wahl benutzt.
  • Hier zeigen die ausgearbeiteten Alternativen, daß die einfachen Mechanismen, die zur Identifizierung der Art der gewünschten Ausführung definiert sind, sehr wirtschaftlich implementiert sind, und sie können auf ein breites Spektrum Architekturen und Technologien aufgepflanzt werden. Die Lösung erlaubt es dem Rechnersystem, einen ganz natürlichen Zugriff auf alle Betriebsmittel der Verarbeitungselemente zu nehmen mit nur wenig oder gar keiner Änderung im Verarbeitungselement, wodurch "Parallel-RISC"-Maschinen geschaffen werden, die in Mehrfach-Modi arbeiten und flexibel und dynamisch konfiguriert werden können, so daß sie für eine bestimmte Applikation geeignet sind.
  • Ferner kann das Rechnersystem mit einem oder mehreren der folgenden Merkmale ausgestattet werden:
  • - in dem Befehlsregistern der Prozessoren, die als Betriebsmittel für MIMD-Operationen erforderlich sind, eine lokale Freigabefunktion im SIMD-Modus zum Betrieb zugewiesen wird, wenn das Betriebsmittel bewirkt, daß ausgewählte Prozessoren dynamisch SIMD-Funktionen durchführen und die Befehlsregister benutzt werden, um die SIMD-Anweisungen in Pipeline zuzuführen,
  • - in dem der Verarbeitungsmoduswert ein Bit ist, das angibt, woher die neuen Anweisungen kommen,
  • - in dem beim Hochfahren alle einer Gruppe zusammengeschalteter Prozessoren einen veränderbaren Modus auf SIMD gesetzt haben, mit Ausnahme eines Steuerprozessors, der in einem MIMD-Modus bleibt, und der während einer interaktiven Verarbeitung einer Programmkonfiguration nicht aus diesem MIMD-Modus umschaltet,
  • - in dem ein Steuerprozessor einer zusammengeschalteten Prozessorgruppe die Konfiguration steuert und als Controller arbeitet und Anweisungen abruft, und in dem andere Prozessoren eine Kopie jeder Anweisung in ihre Befehlsregister einspeichern, wenn der Steuerprozessor diese abruft, so daß zum Schluß des Anweisungsabrufs alle anderen Prozessoren in ihrem Befehlsregister die abgerufene Anweisung zur Abarbeitung gespeichert haben,
  • - in dem jeweils zu Beginn eines nächsten Maschinenprogrammzyklus jeder Prozessor eine Variable in seinem Befehlsregister sowohl für den Modus- als auch für den Ausführungstypwert sucht, und in dem eine Variable vom "Lokal"-Typ bewirkt, daß der Prozessor die Anweisung als normale Anweisung decodiert und ausführt,
  • - in dem ein nächster Maschinenzyklus die Anweisungsausführung in einem Steuerprozessor ermöglicht, dessen Speicher für eine LOAD- und STORE-Operation zur Verfügung steht,
  • - in dem beim Vorabrufen eine Anweisung keinen Speicher benötigt, in welchem Fall ihr Zyklus das Abrufen der nächsten Anweisung sein kann, in der alle SIMD-Modus- Prozessoren den "lokalen" Typ sehen und die Anweisung ignorieren,
  • - in dem, wenn immer ein Steuerprozessor eine andere Anweisung abruft, alle Prozessoren im SIMD-Modus den Speicherbezug gleichzeitig in ihre Befehlsregister aufnehmen,
  • - in dem jeweils zu Beginn eines nächsten Maschinenprogrammzyklus jeder Prozessor eine Variable in seinem Befehlsregister sowohl für den Modus- als auch für den Ausführungstypwert sucht, und in dem eine Variable vom "Array"-Typ bewirkt, daß alle Prozessoren, die im SIMD- Modus stehen, die Array-Anweisung decodieren und ausführen, während der Steuerprozessor den Array-Typ als Flag benutzt, um seinen Ausführungszyklus zu überspringen, und direkt zum nächsten Anweisungsabrufschritt übergeht,
  • - in dem die Ausführung der SIMD-Modusanweisung fortgeführt wird, indem der Programmzähler als Basisregister benutzt wird,
  • - in dem das Betriebsmittel Anweisungen beinhaltet, die einen Prozessorprogrammzähler modifizieren, so daß er als Basisregister arbeitet, einschließlich
  • eines "Jump"-Befehls, der vom Steuerprozessor abgerufen wurde, in dem jedoch ein Typwert gleich "Array" die Auswirkung hat, den Programmzähler jedes SIMD-Modus- Prozessors auf diesen Wert zu setzen; und
  • eines "Load Immediate"-Befehls, der vom Steuerprozessor abgerufen wurde, in dem jedoch ein auf "Array" gesetzter Typwert die Auswirkung hat, das Register jedes Prozessors mit dem Inhalt dieses Prozessorspeichers zu laden an der Adresse, die vom Programmzähler des Prozessors angegeben wird, mit einer Inkrementierung des Programmzählers nach dem Abrufen;
  • ein "Branch and Link"-Befehl bestimmte Verbindungsspeicher sichert, die im Programmzähler eines Nebenprozessors spezifiziert sind, und den Zähler mit einer neuen Adresse lädt, was gleichbedeutend ist mit dem Sichern einer Basis und sie in der gleichen Anweisung neu zu laden; und
  • eine "Return"-Anweisung die Programmzählerbasis von einem der anderen Register des Prozessors neu lädt,
  • - in dem das Betriebsmittel Anweisungen enthält, die den Programmzähler eines Prozessors modifizieren, so daß er als Basisregister arbeitet, einschließlich eines Programmsatzes mit einer "STORE IMMEDIATE" Anweisung, die die Umkehrung der "LOAD IMMEDIATE" Anweisung ist, die es den SIMD-Modus-Prozessoren ermöglichen, Programmzähler als Basisregister zum Speichern zu benutzen,
  • - in dem das System mit einer Schaltmodusanweisung in seinem Operationsmittel in einem Anweisungssatz versehen ist, der den Verarbeitungsmodus der Prozessoren umschaltet, die Umschaltmodusanweisungen ausführen, die in einem Anweisungsfluß auf die Schaltmodusanweisung folgen, und in dem ein Steuerprozessor eine Schaltmodus-Anweisung abruft, die einen Verarbeitungstyp als Array kennzeichnet, in welchem Fall der Steuerprozessor ihn ignoriert, während Prozessoren in andern Modi sie jedoch ausführen und ihre Modi in den MIMD-Modus umschalten,
  • - in dem eine Schaltermodusanweisung einen Programmzählerwert vorsieht, der Ausführung angibt,
  • - in dem die Schalteranweisung einen Prozessorprogrammzähler in dem gleichen Zustand beläßt, in dem er war, bevor die Anweisung zuläßt, daß jeder andere Prozessor seine eigene Programmstartadresse berechnet,
  • - in dem in einem MIMD-Modus über eine dynamische Anweisung- um-Anweisung-Ebenenänderung ein Prozessor dann dazu übergeht, als individueller Prozessor Anweisungen abzurufen, jeweils jeder für sich oder als Teil eines Array,
  • - in dem Anweisungen, die einen Modustyp als "lokal" anzeigen, bewirken, daß der Prozessor die Anweisung empfängt, um den Programmfluß abzuarbeiten, so als ob er nicht Teil einer Prozessorgruppe wäre,
  • - in dem Anweisungen, die einen Array-Modus anzeigen, mit anderen Prozessoren einer Prozessorgruppe auf verschiedene Weise arbeiten können,
  • - in dem Anweisungen vom "Array"-Typ, wenn die Anweisung ein LOAD oder STORE ist, eine Adresse generieren, die als Prozessoradresse in ein Prozessorzusammenschaltnetz gegeben wird, und ein solcher Prozessor stehen bleibt, bis der durch diese Adresse angesprochene Prozessor die entgegengesetzte Anweisung ausführt (LOAD anstatt STORE und STORE anstatt LOAD) und die Daten von dem STORE- Prozessor an den LCAD-Prozessor gegeben werden,
  • - in dem eine Schalter-Modus-Anweisung, die von einem Prozessor mit einem Array-Modus ausgeführt wird, bewirkt, daß Prozessoren, die nicht ein Steuerprozessor sind, stehen bleiben, wenn sie eine solche Anweisung antreffen, und die Adresse, die von der Anweisung gegeben wird, als Schlüssel zurück zu einem Steuerprozessor benutzen, der einen Schalter mit einer "Adresse" ausführen kann, die mit dem Schlüssel übereinstimmt und bewirkt, daß der andere Prozessor den Haltezustand beendet und die Verarbeitung der Anweisungen des Steuerprozessors wieder aufnimmt.

Claims (38)

1. Ein Rechnersystem, enthaltend
multiple Prozessor- und Speichergruppen, in denen jeder der Prozessoren mit einem Befehlsregister ausgestattet ist, das ein Verarbeitungs-Modus-Bit (PMB - Processing Mode Bit) erkennt, das den Betriebsmodus der Prozessoren für den Ausführungszyklus angibt,
einen Zusammenschaltpfad zwischen den Prozessoren,
Betriebsmittel zum Steuern der Durchführung der Anweisungen durch die Prozessoren, in denen eine Anweisung im Betriebsmittel-Anweisungssatz an bestimmte angewählte Prozessoren des Systems gesendet werden kann, um die angewählten Prozessoren des Systems durch Schalten des Verarbeitungs-Modus-Bits (PMB) der angewählten Prozessoren in einen gewünschten Betriebsmodus umzuschalten, wobei das Betriebsmittel Prozessorengruppen aktiviert, so daß sie dynamisch konfiguriert werden, um entweder als MIMD-, SIMD- oder SISD-Prozessorgruppen zu arbeiten.
2. Ein Rechnersystem gemäß Anspruch 1, in dem die Modusänderung auf einer Anweisung-um-Anweisung-Basis aktiviert wird.
3. Ein Rechnersystem gemäß Anspruch 1, in dem wenigstens einige der Prozessoren physikalisch identisch sind und doch Mehrfachmodus-Funktionen ausführen.
4. Ein Rechnersystem gemäß Anspruch 1, in dem wenigstens einige der Prozessoren jeweils für ihr Rechnerverarbeitungselement ein Befehlsregister, einen Programmzähler und ein Zustandscoderegister aufweisen, die für individuelle SISD- und Gruppen-MIMD-Funktionen erforderlich sind.
5. Ein Rechnersystem gemäß Anspruch 1, in dem wenigstens einige der Prozessoren jeweils für ihr Rechnerverarbeitungselement diese Systemelemente aufweisen, die in den MIMD-Modus-Operationen erforderlich sind, und in dem die gleichen Systemelemente in SIMD-Modus-Operationen benutzt werden.
6. Ein Rechnersystem gemäß Anspruch 1, in dem Programmzählern der Prozessoren, die als Systemelemente für MIMD- Operationen erforderlich sind, zum Betrieb eine Basisregisterfunktion im SIMD-Modus zugewiesen wird, wenn die Betriebsmittel bewirken, daß angewählte Prozessoren dynamisch SIMD-Funktionen durchführen.
7. Ein Rechnersystem gemäß Anspruch 1 oder 6, in dem den als Systemelement für die MIMD-Operationen erforderlichen Befehlsregistern der Prozessoren im SIMD-Modus eine lokale Aktivierungsfunktion zum Betrieb zugewiesen ist, wenn das Betriebsmittel bewirkt, daß angewählte Prozessoren dynamisch SIMD-Funktionen ausführen.
8. Ein Rechnersystem gemäß Anspruch 1, in dem Gruppen der Prozessoren ein Wert-Einstellregister in dem Befehlsregister haben, das dynamisch den augenblicklichen Modus zur Durchführung einer augenblicklichen Anweisung in einem Programmanweisungsstrom anzeigt.
9. Ein Rechnersystem gemäß Anspruch 1, in dem eine Vielzahl inter-dynamischer Betriebsartgruppen vorgesehen sind, die auf dem gleichen Rechnersystem laufen, indem sie bei der Abarbeitung einer Aufgabe dynamisch zwischen den Betriebsarten umschalten.
10. Ein Rechnersystem gemäß Anspruch 1, in dem Maschinen den gleichen Satz Systemelemente benutzen, um Mehrfachmodus- Applikationen zu aktivieren, aber diese Systemelemente dynamisch neu konfiguriert werden.
11. Ein Rechnersystem gemäß Anspruch 1, in dem das Rechnersystem ein Mehrfachprozessor-Rechnersystem mit einer multiplen Gruppe Prozessoren 1...N ist, deren jeder Verarbeitungselemente mit einer Steuereinheit, eine Datenflußeinheit und einen einem Prozessor zugeordneten Speicher aufweist, wobei jeder Prozessor der multiplen Gruppe über ein Zusammenschaltnetz mit den anderen verschaltet ist.
12. Ein Rechnersystem gemäß Anspruch 1, in dem das Zusammenschaltnetz ein dynamisch schaltendes Verbindungsnetz ist.
13. Ein Rechnersystem gemäß Anspruch 1, in dem im SIMD-Modus das Umschalten zwischen den Betriebsarten das Befehlsregister eines im MIMD-Modus benutzten Rechner-Verarbeitungselements verwendet, um in einen SIMD-Modus zu schalten, und das Befehlsabarbeiten andere in der MIMD- Betriebsart benutzte Elemente als Dualzweck-Systemelemente in der SIMD-Betriebsart verwendet.
14. Ein Rechnersystem gemäß Anspruch 1, in dem das Zusammenschaltnetz ein dynamisches Mehrstufen-Zweiseitenschaltnetz ist, das ein Punkt-zu-Punkt-Verschalten der Prozessoren ohne Blockieren ermöglicht.
15. Ein Rechnersystem gemäß Anspruch 1, in dem ein Sendepfad zwischen den Befehlsregistern jedes Verarbeitungselements einer Prozessorgruppe vorgesehen ist, das einen Befehlsstrom abarbeitet, und dabei SIMD-Operationen in einer Vielzahl von Prozessoren der Gruppe durch Senden über den so vorgesehenen Sendepfad ermöglicht.
16. Ein Rechnersystem gemäß Anspruch 1, in dem ein Zusammenschaltnetz Sendefunktionen zum Senden von Anweisungen an eine Vielzahl von Prozessoren einer Prozessorengruppe vorsieht, die zur Ausführung eines Operationsmodus aktiviert sind.
17. Ein Rechnersystem gemäß Anspruch 1 oder 14, in dem ein Vielstufen-Zusammenschaltnetz alternative Pfade zu den Befehlsregistern einer nach einem gemeinsamen Programm arbeitenden Prozessorgruppe, oder einen Sendepfad zu den Befehlsregistern einer nach einem gemeinsamen Programm arbeitenden Prozessorgruppe vorsieht.
18. Ein Rechnersystem gemäß Anspruch 1, in dem die einzelnen Verarbeitungselemente einer Gruppe interaktiver Prozessoren
einen Befehlssatz aufweisen, in dem alle Speicherhinweise für Daten über LOAD- und STORE-Befehle ausgeführt werden, und in dem
das Adressieren für Datenzugriffe über Basisadresse plus Distanzadresse erfolgt, und in dem Additions- und Indexregister-Aktualisierungen nach Anlaufen einer Speicheroperation als Nachadressenaktualisierung angewendet werden müssen; und in dem
alle Anweisungen, die Rechneroperationen durchführen, von Register zu Register laufen, und die Prozessoren Anweisungen in einem oder mehreren Ausführungszyklen ausführen können ohne die Notwendigkeit, auf Speicherinhalte zurückgreifen zu müssen.
19. Ein Rechnersystem gemäß Anspruch 1, in dem Anweisungen in einem Maschinenzyklus ausführbar sind, wobei die Adresse einer Speicheroperation aus einem Maschinenregister bei Anlaufen des Zyklus wählbar ist, und ein Register vorgesehen ist, um Ergebnisse in einem Lesevorgang aufzunehmen, der in der Lage ist, an Ende des Zyklus einzuspeichern.
20. Ein Rechnersystem gemäß Anspruch 1, in dem ein Befehlswort zum Einspeichern in ein Befehlsregister (IR) eines Prozessors entweder aus einer von einem als steuernd gekennzeichneten Prozessor veranlaßten Sendung, oder vom prozessoreigenen Speicher kommt.
21. Ein Rechnersystem gemäß Anspruch 1, in dem das Format jedes Befehls für einen Prozessor eine gesonderte Variable vom Parallelausführungstyp (PET) beinhaltet, die zwei Werte aufweist, wobei ein Wert "lokale" Operation oder "Array"-Operation kennzeichnet.
22. Ein Rechnersystem gemäß Anspruch 1, in dem das System in seinem Betriebsmittel mit einem Schaltmodusbefehl in einem Befehlssatz versehen ist, der den Verarbeitungsmodus der Prozessoren umschaltet, die Umschaltmodus- Befehle ausführen, die in einem Befehlsstrom auf den Schaltmodusbefehl folgen.
23. Ein Rechnersystem gemäß Anspruch 1, in dem jeder der Prozessoren in seinem Befehlsregister einen Wert aufweist, der zum dynamischen Anzeigen des Betriebsmodus benutzt wird, der zum Ausführen der augenblicklichen Anweisung gesetzt ist, und in dem eine Anweisung an angewählte Prozessoren des Systems gesendet werden kann, um dynamisch den angewählten Prozessorsatz des Systems auf einen gewünschten Betriebsmodus umzuschalten.
24. Ein Rechnersystem gemäß Anspruch 1, in dem das Betriebsmittel so strukturiert ist, daß eine variable Teilmenge von Prozessoren aktiviert wird, um aus dem MIMD-Modus heraus in den SIMD-Modus und dann während einer Programmsequenz innerhalb der Gruppe der ursprünglichen SIMD- Prozessoren potentiell wieder zurück in den MIMD-Modus zu springen, und in dem, während eine Prozessorgruppe im SIMD-Modus arbeitet, die anderen im unabhängigen MIMD- Modus bleiben können.
25. Ein Rechnersystem gemäß Anspruch 1, in dem das Zusammenschaltnetz benutzt wird, um Sendemeldungen weiterzugeben und eine Vielzahl verschiedener Prozessor-Teilmengen innerhalb einer Prozessorgruppe zu Verschalten, so daß die Prozessoren auf Wahlbasis sowohl SIMD- als auch MIMD- Operationen implementieren können, wobei einige Prozessoren in SIMD und andere in MIMD laufen.
26. Ein Rechnersystem gemäß Anspruch 1, wobei zum Verschalten der Prozessoren ein dynamisches Vielstufennetz eingeschlossen ist, in dem, ohne Blockieren, über einen Alternativpfad Anwahlprozessoren als Teil eines Zusammenschaltsystems eingerichtet werden können, die die Anwahl verschiedener Prozessorgruppen auf einem Netz gestatten, die die gewünschten Systemelemente aufweisen, und sie benutzen, um Programme abzuarbeiten, die vorteilhaft die SIMD- und MIMD-Bedürfnisse der Applikation benutzen.
27. Ein Rechnersystem gemäß Anspruch 1, in dem mehr als ein Prozessor sich selbst als Steuerprozessor einer angewählten Prozessorgruppe des Rechnersystems bezeichnen kann bzw. bezeichnet werden kann, und so die dynamische Rotation eines Steuerprozessors ermöglicht.
28. Ein Rechnersystem gemäß Anspruch 1, in dem ein Leitwegprozessor dynamisch von einem Prozessor aus einem Netz ausgewählt werden kann, wobei durch dessen Steuerung durch Software der Leitwegsteuerprozessor auf einer Befehl-nach-Befehl-Basis arbeitet.
29. Ein Rechnersystem gemäß Anspruch 1, in dem Befehlsregister von Prozessoren des Systems über ein Asynchronnetz verschaltet sind, und das es einem Steuerprozessor ermöglicht, Befehle durch das Zusammenschaltnetz an die Befehlsregister anderer Prozessoren zu geben, die über dieses Netz gekoppelt sind.
30. Ein Rechnersystem gemäß Anspruch 1, in dem jeder Prozessor mit einem Port versehen ist, durch das eine Anweisung läuft, die jeden Knotenprozessor des Systems anweist, ob er seine eigenen Anweisungen abrufen oder auf die Sendung eines Steuerprozessors warten soll.
31. Ein Rechnersystem gemäß Anspruch 1, in dem durch Bezeichnung über ein Zusammenschaltnetz die dynamische Rotation des Steuerprozessors ermöglicht wird, um dann über Software unterschiedliche Prozessoren zuzulassen, was es der Software ermöglicht, zu steuern, welche Systemprozessoren als Steuerprozessoren arbeiten, wobei jeder Prozessor zu einem Zeitpunkt aktiviert werden kann, im SIMD-Modus zu laufen, und dann irgend ein anderer Prozessor des Systems als Controller arbeiten kann, wobei mehrfache Prozessoren mehrfache Teilmengen senden können, um mehrfache willkürliche Zusammenstellungen von SIMD- Maschinen zu ermöglichen, die auf der gleichen physikalischen Hardware laufen, und mit der gleichen Hardware auch die MIMD-Verarbeitung zu fahren.
32. Ein Rechnersystem gemäß Anspruch 1, in dem Verarbeitungselemente einen Befehl direkt abarbeiten, wenn dieser Befehl als paralleler "Array"-Befehl markiert ist, und der gleiche Anweisungsstrom auch lokale Berechnungen eines Steuerprozessors ausführen kann, und in dem Prozessoren über dynamische Schaltmodusanweisungen, die mit einem MIMD-Modus-Wert abgearbeitet werden, wieder zurück zum unabhängigen MIMD-Modus freigegeben werden können.
33. Ein Rechnersystem gemäß Anspruch 1, in dem jeder Prozessor zu einer unabhängigen Operation in der Lage ist und dynamisch zwischen den Modi umschalten kann, wobei er im Zyklus auf Befehlsebene ermöglicht, daß Prozessoren in einem SIMD-Modus einen Prozeß abarbeiten, und dann mit einer Anweisung an einen MIMD-Modus freigegeben werden, in welchem Modus jeder der den Prozeß abarbeitenden Prozessoren einen Pfad ausführt, der für seinen Tag relevant ist, und nachdem alle diese Prozessoren ihre relevante Pfadausführung beendet haben, sie in den SIMD- Modus zurückgeschaltet werden.
34. Ein Rechnersystem gemäß Anspruch 1, in dem jeder Prozessor die Fähigkeit hat, schnell in bzw. aus dem MIMD-Modus und zu einer inhärenten sequentiellen Berechnung sogar in den SISD-Modus im Steuerprozessor zu schalten, was es einem Programmierer oder Kompilierer ermöglicht, ein Programm für das Rechnersystem aufzubauen, welches die optimale Parallelität (SISD, SIMD, MIMD) benutzt, was auch immer für die Applikation am meisten Sinn macht.
35. Ein Rechnersystem gemäß Anspruch 1, in dem jeder Prozessor mit den gleichen Systemelementen arbeiten kann, und alle Prozessoren, die im SIMD-Modus arbeiten, auch im MIMD-Modus arbeiten können.
36. Ein Rechnersystem gemäß Anspruch 1, in dem jeder Prozessor eine lokale und eine Array-Anweisungsausführungs-Einstellung aufweist.
37. Ein Rechnersystem gemäß Anspruch 1, in dem, wenn das System eine Prozessorgruppe zum Betrieb im SIMD-Modus eingestellt hat, ein ausgezeichneter Steuerprozessor eine Anweisung abrufen kann, die an jeden anderen Prozessor der Gruppe gerichtet werden kann, und alle solche Prozessoren die Anweisung direkt abarbeiten, wenn die Anweisung als Parallelanweisung markiert ist.
38. Ein Rechnersystem gemäß Anspruch 1, in dem, wenn das System den gleichen Anweisungsstrom eines Programms zur Ausführung lokaler Berechnungen aktiviert, ein Hauptprozessor die Ergebnisse im nächsten Zyklus benutzen kann, der von allen Verarbeitungselementen ausgeführt wird.
DE69228586T 1991-11-27 1992-11-04 Dynamischer, in einer Array-Architektur im Mehrfachmodus arbeitender Parallelprozessor Expired - Fee Related DE69228586T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US79878891A 1991-11-27 1991-11-27

Publications (2)

Publication Number Publication Date
DE69228586D1 DE69228586D1 (de) 1999-04-15
DE69228586T2 true DE69228586T2 (de) 1999-10-14

Family

ID=25174278

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69228586T Expired - Fee Related DE69228586T2 (de) 1991-11-27 1992-11-04 Dynamischer, in einer Array-Architektur im Mehrfachmodus arbeitender Parallelprozessor

Country Status (9)

Country Link
US (1) US5475856A (de)
EP (1) EP0544127B1 (de)
JP (1) JP2647315B2 (de)
KR (1) KR970008529B1 (de)
CN (1) CN1044646C (de)
AT (1) ATE177547T1 (de)
CA (1) CA2073516A1 (de)
DE (1) DE69228586T2 (de)
MX (1) MX9206864A (de)

Families Citing this family (270)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5590345A (en) 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
JPH04336378A (ja) * 1991-05-14 1992-11-24 Nec Corp 情報処理装置
JP3202074B2 (ja) * 1992-10-21 2001-08-27 富士通株式会社 並列ソート方式
JP3199205B2 (ja) * 1993-11-19 2001-08-13 株式会社日立製作所 並列演算装置
JP2550897B2 (ja) * 1993-11-29 1996-11-06 日本電気株式会社 マルチプロセッサシステムのバリア同期装置
JP2590045B2 (ja) * 1994-02-16 1997-03-12 日本アイ・ビー・エム株式会社 分散処理制御方法及び分散処理システム
JPH07234842A (ja) * 1994-02-22 1995-09-05 Fujitsu Ltd 並列データ処理システム
EP0681236B1 (de) * 1994-05-05 2000-11-22 Conexant Systems, Inc. Raumzeigersdatenpfad
JPH07334416A (ja) * 1994-06-06 1995-12-22 Internatl Business Mach Corp <Ibm> コンピュータ・システムにおけるページ・モード・メモリの初期設定の方法および手段
US5621800A (en) * 1994-11-01 1997-04-15 Motorola, Inc. Integrated circuit that performs multiple communication tasks
US6128720A (en) * 1994-12-29 2000-10-03 International Business Machines Corporation Distributed processing array with component processors performing customized interpretation of instructions
US5794062A (en) * 1995-04-17 1998-08-11 Ricoh Company Ltd. System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization
US5737623A (en) * 1995-04-19 1998-04-07 Liebrock; Lorie M. Multi-processor parallel computer architecture using a parallel machine with topology-based mappings of composite grid applications
US6385634B1 (en) * 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
CN103345380B (zh) * 1995-08-31 2016-05-18 英特尔公司 控制移位分组数据的位校正的装置
US5943242A (en) * 1995-11-17 1999-08-24 Pact Gmbh Dynamically reconfigurable data processing system
US5940859A (en) * 1995-12-19 1999-08-17 Intel Corporation Emptying packed data state during execution of packed data instructions
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
WO1997029435A1 (en) * 1996-02-09 1997-08-14 Hitachi, Ltd. Parallel processor
US5764787A (en) * 1996-03-27 1998-06-09 Intel Corporation Multi-byte processing of byte-based image data
US5862052A (en) * 1996-04-12 1999-01-19 Fisher-Rosemount Systems, Inc. Process control system using a control strategy implemented in a layered hierarchy of control modules
US5838563A (en) * 1996-04-12 1998-11-17 Fisher-Rosemont Systems, Inc. System for configuring a process control environment
US5768119A (en) * 1996-04-12 1998-06-16 Fisher-Rosemount Systems, Inc. Process control system including alarm priority adjustment
US5828851A (en) 1996-04-12 1998-10-27 Fisher-Rosemount Systems, Inc. Process control system using standard protocol control of standard devices and nonstandard devices
US6098116A (en) * 1996-04-12 2000-08-01 Fisher-Rosemont Systems, Inc. Process control system including a method and apparatus for automatically sensing the connection of devices to a network
US5995916A (en) * 1996-04-12 1999-11-30 Fisher-Rosemount Systems, Inc. Process control system for monitoring and displaying diagnostic information of multiple distributed devices
US5940294A (en) * 1996-04-12 1999-08-17 Fisher-Rosemont Systems, Inc. System for assisting configuring a process control environment
US6868538B1 (en) * 1996-04-12 2005-03-15 Fisher-Rosemount Systems, Inc. Object-oriented programmable controller
US5909368A (en) * 1996-04-12 1999-06-01 Fisher-Rosemount Systems, Inc. Process control system using a process control strategy distributed among multiple control elements
US6032208A (en) * 1996-04-12 2000-02-29 Fisher-Rosemount Systems, Inc. Process control system for versatile control of multiple process devices of various device types
US5801942A (en) * 1996-04-12 1998-09-01 Fisher-Rosemount Systems, Inc. Process control system user interface including selection of multiple control languages
WO1996035997A1 (fr) * 1996-05-22 1996-11-14 Yalestown Corporation N.V. Processeur parallele
EP0825506B1 (de) 1996-08-20 2013-03-06 Invensys Systems, Inc. Verfahren und Gerät zur Fernprozesssteuerung
US5884046A (en) * 1996-10-23 1999-03-16 Pluris, Inc. Apparatus and method for sharing data and routing messages between a plurality of workstations in a local area network
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654593A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh Umkonfigurierungs-Verfahren für programmierbare Bausteine zur Laufzeit
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
DE19654846A1 (de) 1996-12-27 1998-07-09 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.)
DE59710317D1 (de) 1996-12-27 2003-07-24 Pact Inf Tech Gmbh VERFAHREN ZUM SELBSTÄNDIGEN DYNAMISCHEN UMLADEN VON DATENFLUSSPROZESSOREN (DFPs) SOWIE BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALEN PROGRAMMIERBAREN ZELLSTRUKTUREN (FPGAs, DPGAs, o.dgl.)
DE19704728A1 (de) 1997-02-08 1998-08-13 Pact Inf Tech Gmbh Verfahren zur Selbstsynchronisation von konfigurierbaren Elementen eines programmierbaren Bausteines
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
DE19704742A1 (de) 1997-02-11 1998-09-24 Pact Inf Tech Gmbh Internes Bussystem für DFPs, sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen, zur Bewältigung großer Datenmengen mit hohem Vernetzungsaufwand
US5980078A (en) 1997-02-14 1999-11-09 Fisher-Rosemount Systems, Inc. Process control system including automatic sensing and automatic configuration of devices
US6023753A (en) 1997-06-30 2000-02-08 Billion Of Operations Per Second, Inc. Manifold array processor
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
US6167502A (en) * 1997-10-10 2000-12-26 Billions Of Operations Per Second, Inc. Method and apparatus for manifold array processing
WO1999021080A2 (en) * 1997-10-21 1999-04-29 Koninklijke Philips Electronics N.V. Signal processing device and method of planning connections between processors in a signal processing device
US6151705A (en) * 1997-10-30 2000-11-21 Hewlett-Packard Company Efficient use of the base register auto-increment feature of memory access instructions
US6625756B1 (en) * 1997-12-19 2003-09-23 Intel Corporation Replay mechanism for soft error recovery
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US6088800A (en) * 1998-02-27 2000-07-11 Mosaid Technologies, Incorporated Encryption processor with shared memory interconnect
US6219776B1 (en) * 1998-03-10 2001-04-17 Billions Of Operations Per Second Merged array controller and processing element
US6853638B2 (en) * 1998-04-01 2005-02-08 Cisco Technology, Inc. Route/service processor scalability via flow-based distribution of traffic
JPH11327899A (ja) * 1998-05-14 1999-11-30 Mitsubishi Electric Corp データ処理装置及びデータ処理方法
US6112288A (en) * 1998-05-19 2000-08-29 Paracel, Inc. Dynamic configurable system of parallel modules comprising chain of chips comprising parallel pipeline chain of processors with master controller feeding command and data
US6691183B1 (en) 1998-05-20 2004-02-10 Invensys Systems, Inc. Second transfer logic causing a first transfer logic to check a data ready bit prior to each of multibit transfer of a continous transfer operation
US6513108B1 (en) 1998-06-29 2003-01-28 Cisco Technology, Inc. Programmable processing engine for efficiently processing transient data
US6401189B1 (en) 1998-08-05 2002-06-04 Michael J. Corinthios General base state assignment for optimal massive parallelism
US6219780B1 (en) * 1998-10-27 2001-04-17 International Business Machines Corporation Circuit arrangement and method of dispatching instructions to multiple execution units
US6173386B1 (en) 1998-12-14 2001-01-09 Cisco Technology, Inc. Parallel processor with debug capability
JP3344345B2 (ja) * 1998-12-15 2002-11-11 日本電気株式会社 共有メモリ型ベクトル処理システムとその制御方法及びベクトル処理の制御プログラムを格納する記憶媒体
US6920562B1 (en) 1998-12-18 2005-07-19 Cisco Technology, Inc. Tightly coupled software protocol decode with hardware data encryption
US6253299B1 (en) 1999-01-04 2001-06-26 International Business Machines Corporation Virtual cache registers with selectable width for accommodating different precision data formats
US6490493B1 (en) 1999-01-21 2002-12-03 Rosemount Inc. Industrial process device management software
US7966475B2 (en) 1999-04-09 2011-06-21 Rambus Inc. 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
US8762691B2 (en) * 1999-04-09 2014-06-24 Rambus Inc. Memory access consolidation for SIMD processing elements using transaction identifiers
US20080007562A1 (en) * 1999-04-09 2008-01-10 Dave Stuttard Parallel data processing apparatus
US20070294510A1 (en) * 1999-04-09 2007-12-20 Dave Stuttard Parallel data processing apparatus
US7627736B2 (en) 1999-04-09 2009-12-01 Clearspeed Technology Plc Thread manager to control an array of processing elements
WO2000062182A2 (en) * 1999-04-09 2000-10-19 Clearspeed Technology Limited Parallel data processing apparatus
US20080016318A1 (en) * 1999-04-09 2008-01-17 Dave Stuttard Parallel data processing apparatus
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
US20080008393A1 (en) * 1999-04-09 2008-01-10 Dave Stuttard Parallel data processing apparatus
US8174530B2 (en) 1999-04-09 2012-05-08 Rambus Inc. Parallel date processing apparatus
US20080184017A1 (en) * 1999-04-09 2008-07-31 Dave Stuttard Parallel data processing apparatus
GB2348984B (en) * 1999-04-09 2004-05-12 Pixelfusion Ltd Parallel data processing systems
US7526630B2 (en) 1999-04-09 2009-04-28 Clearspeed Technology, Plc Parallel data processing apparatus
GB2348981A (en) * 1999-04-09 2000-10-18 Pixelfusion Ltd Parallel data processing system with SIMD array
US8169440B2 (en) * 1999-04-09 2012-05-01 Rambus Inc. Parallel data processing apparatus
WO2000070531A2 (en) 1999-05-17 2000-11-23 The Foxboro Company Methods and apparatus for control configuration
US7089530B1 (en) 1999-05-17 2006-08-08 Invensys Systems, Inc. Process control configuration system with connection validation and configuration
US6754885B1 (en) 1999-05-17 2004-06-22 Invensys Systems, Inc. Methods and apparatus for controlling object appearance in a process control configuration system
DE10081643D2 (de) 1999-06-10 2002-05-29 Pact Inf Tech Gmbh Sequenz-Partitionierung auf Zellstrukturen
US6501995B1 (en) 1999-06-30 2002-12-31 The Foxboro Company Process control system and method with improved distribution, installation and validation of components
US6788980B1 (en) 1999-06-11 2004-09-07 Invensys Systems, Inc. Methods and apparatus for control using control devices that provide a virtual machine environment and that communicate via an IP network
GB2355084B (en) * 1999-07-21 2004-04-28 Element 14 Ltd Setting condition values in a computer
US6510352B1 (en) 1999-07-29 2003-01-21 The Foxboro Company Methods and apparatus for object-based process control
US6983350B1 (en) 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
JP3971535B2 (ja) * 1999-09-10 2007-09-05 株式会社リコー Simd型プロセッサ
US6711629B1 (en) 1999-10-18 2004-03-23 Fisher-Rosemount Systems, Inc. Transparent support of remote I/O in a process control system
US6529983B1 (en) 1999-11-03 2003-03-04 Cisco Technology, Inc. Group and virtual locking mechanism for inter processor synchronization
US6473660B1 (en) 1999-12-03 2002-10-29 The Foxboro Company Process control system and method with automatic fault avoidance
US6640313B1 (en) * 1999-12-21 2003-10-28 Intel Corporation Microprocessor with high-reliability operating mode
US6625749B1 (en) * 1999-12-21 2003-09-23 Intel Corporation Firmware mechanism for correcting soft errors
US6615366B1 (en) * 1999-12-21 2003-09-02 Intel Corporation Microprocessor with dual execution core operable in high reliability mode
US6532509B1 (en) 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US7620702B1 (en) 1999-12-28 2009-11-17 Intel Corporation Providing real-time control data for a network processor
US6661794B1 (en) 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6584522B1 (en) 1999-12-30 2003-06-24 Intel Corporation Communication between processors
US7480706B1 (en) 1999-12-30 2009-01-20 Intel Corporation Multi-threaded round-robin receive for fast network port
US6952824B1 (en) 1999-12-30 2005-10-04 Intel Corporation Multi-threaded sequenced receive for fast network port stream of packets
AUPQ542900A0 (en) * 2000-02-04 2000-02-24 Bisinella, Richard Microprocessor
US6779128B1 (en) 2000-02-18 2004-08-17 Invensys Systems, Inc. Fault-tolerant data transfer
US6766437B1 (en) * 2000-02-28 2004-07-20 International Business Machines Corporation Composite uniprocessor
US6643763B1 (en) 2000-02-28 2003-11-04 International Business Machines Corporation Register pipe for multi-processing engine environment
US6859870B1 (en) * 2000-03-07 2005-02-22 University Of Washington Method and apparatus for compressing VLIW instruction and sharing subinstructions
US6892237B1 (en) 2000-03-28 2005-05-10 Cisco Technology, Inc. Method and apparatus for high-speed parsing of network messages
US6792529B1 (en) * 2000-04-11 2004-09-14 Microsoft Corporation Common feature mode for microprocessors in a multiple microprocessor system
US7249247B2 (en) * 2000-04-11 2007-07-24 Microsoft Corporation Common feature mode for microprocessors in a multiple microprocessor system
US6505269B1 (en) 2000-05-16 2003-01-07 Cisco Technology, Inc. Dynamic addressing mapping to eliminate memory resource contention in a symmetric multiprocessor system
US20020016835A1 (en) * 2000-05-25 2002-02-07 Gary Gamerman System and method for cascaded distribution of processing
JP2004506261A (ja) 2000-06-13 2004-02-26 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト パイプラインctプロトコルおよびct通信
US7100028B2 (en) * 2000-08-09 2006-08-29 Advanced Micro Devices, Inc. Multiple entry points for system call instructions
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US6772368B2 (en) * 2000-12-11 2004-08-03 International Business Machines Corporation Multiprocessor with pair-wise high reliability mode, and method therefore
JP2002196924A (ja) * 2000-12-27 2002-07-12 Fujitsu Ltd プロセッサ制御装置及びプロセッサ制御方法
US6990555B2 (en) 2001-01-09 2006-01-24 Pact Xpp Technologies Ag Method of hierarchical caching of configuration data having dataflow processors and modules having two- or multidimensional programmable cell structure (FPGAs, DPGAs, etc.)
JP3935678B2 (ja) * 2001-01-31 2007-06-27 富士通株式会社 Simd積和演算方法、積和演算回路、および、半導体集積回路装置
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US7581076B2 (en) 2001-03-05 2009-08-25 Pact Xpp Technologies Ag Methods and devices for treating and/or processing data
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US7210129B2 (en) 2001-08-16 2007-04-24 Pact Xpp Technologies Ag Method for translating programs for reconfigurable architectures
US7962716B2 (en) 2001-03-22 2011-06-14 Qst Holdings, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US7752419B1 (en) 2001-03-22 2010-07-06 Qst Holdings, Llc Method and system for managing hardware resources to implement system functions using an adaptive computing architecture
US6836839B2 (en) 2001-03-22 2004-12-28 Quicksilver Technology, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
CA2344098A1 (fr) * 2001-04-12 2002-10-12 Serge Glories Systeme de processeur modulaire a elements configurables et intereliables permettant de realiser de multiples calculs paralleles sur du signal ou des donnees brutes
US6577678B2 (en) 2001-05-08 2003-06-10 Quicksilver Technology Method and system for reconfigurable channel coding
US7657877B2 (en) 2001-06-20 2010-02-02 Pact Xpp Technologies Ag Method for processing data
US6968446B1 (en) 2001-08-09 2005-11-22 Advanced Micro Devices, Inc. Flags handling for system call instructions
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
JP3528922B2 (ja) * 2001-08-31 2004-05-24 日本電気株式会社 アレイ型プロセッサ、データ処理システム
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
DE10144904C2 (de) 2001-09-12 2003-08-21 Infineon Technologies Ag SIMD-Prozessor mit Unterprogramm-Steuereinheit
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US8412915B2 (en) 2001-11-30 2013-04-02 Altera Corporation Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements
US6986021B2 (en) * 2001-11-30 2006-01-10 Quick Silver Technology, Inc. Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements
US7215701B2 (en) 2001-12-12 2007-05-08 Sharad Sambhwani Low I/O bandwidth method and system for implementing detection and identification of scrambling codes
US20030108012A1 (en) * 2001-12-12 2003-06-12 Quicksilver Technology, Inc. Method and system for detecting and identifying scrambling codes
AU2002221570A1 (en) * 2001-12-13 2003-06-23 Synergestic Computing Systems Aps Heterogeneous synergetic computing system
US7403981B2 (en) * 2002-01-04 2008-07-22 Quicksilver Technology, Inc. Apparatus and method for adaptive multimedia reception and transmission in communication environments
WO2003060747A2 (de) 2002-01-19 2003-07-24 Pact Xpp Technologies Ag Reconfigurierbarer prozessor
EP2043000B1 (de) 2002-02-18 2011-12-21 Richter, Thomas Bussysteme und Rekonfigurationsverfahren
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
GB2391336B (en) 2002-04-09 2005-10-26 Micron Technology Inc Method and system for local memory addressing in single instruction, multiple data computer system
US20030217054A1 (en) 2002-04-15 2003-11-20 Bachman George E. Methods and apparatus for process, factory-floor, environmental, computer aided manufacturing-based or other control system with real-time data distribution
US7660984B1 (en) 2003-05-13 2010-02-09 Quicksilver Technology Method and system for achieving individualized protected space in an operating system
US7328414B1 (en) 2003-05-13 2008-02-05 Qst Holdings, Llc Method and system for creating and programming an adaptive computing engine
US7447872B2 (en) * 2002-05-30 2008-11-04 Cisco Technology, Inc. Inter-chip processor control plane communication
US7471688B2 (en) 2002-06-18 2008-12-30 Intel Corporation Scheduling system for transmission of cells to ATM virtual circuits and DSL ports
AU2003286131A1 (en) 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
US6944744B2 (en) * 2002-08-27 2005-09-13 Advanced Micro Devices, Inc. Apparatus and method for independently schedulable functional units with issue lock mechanism in a processor
US8108656B2 (en) 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
US7394284B2 (en) 2002-09-06 2008-07-01 Pact Xpp Technologies Ag Reconfigurable sequencer structure
US7352769B2 (en) 2002-09-12 2008-04-01 Intel Corporation Multiple calendar schedule reservation structure and method
US7502915B2 (en) * 2002-09-30 2009-03-10 Nvidia Corporation System and method using embedded microprocessor as a node in an adaptable computing machine
US7395408B2 (en) * 2002-10-16 2008-07-01 Matsushita Electric Industrial Co., Ltd. Parallel execution processor and instruction assigning making use of group number in processing elements
US7937591B1 (en) 2002-10-25 2011-05-03 Qst Holdings, Llc Method and system for providing a device which can be adapted on an ongoing basis
US7433307B2 (en) 2002-11-05 2008-10-07 Intel Corporation Flow control in a network environment
US8276135B2 (en) * 2002-11-07 2012-09-25 Qst Holdings Llc Profiling of software and circuit designs utilizing data operation analyses
US7225301B2 (en) 2002-11-22 2007-05-29 Quicksilver Technologies External memory controller node
US7788465B2 (en) * 2002-12-30 2010-08-31 Silicon Hive B.V. Processing system including a reconfigurable channel infrastructure comprising a control chain with combination elements for each processing element and a programmable switch between each pair of neighboring processing elements for efficient clustering of processing elements
JP3987805B2 (ja) * 2003-01-27 2007-10-10 Necエレクトロニクス株式会社 アレイ型プロセッサ
US7443836B2 (en) 2003-06-16 2008-10-28 Intel Corporation Processing a data packet
US20070169022A1 (en) * 2003-06-18 2007-07-19 Jones Anthony M Processor having multiple instruction sources and execution modes
TW200506733A (en) * 2003-08-15 2005-02-16 Via Tech Inc Apparatus and method for the co-simulation of CPU and DUT modules
EP1676208A2 (de) 2003-08-28 2006-07-05 PACT XPP Technologies AG Datenverarbeitungseinrichtung und verfahren
US20080074428A1 (en) 2003-11-19 2008-03-27 Reuven Bakalash Method of rendering pixel-composited images for a graphics-based application running on a computing system embodying a multi-mode parallel graphics rendering system
US7961194B2 (en) 2003-11-19 2011-06-14 Lucid Information Technology, Ltd. Method of controlling in real time the switching of modes of parallel operation of a multi-mode parallel graphics processing subsystem embodied within a host computing system
US8497865B2 (en) * 2006-12-31 2013-07-30 Lucid Information Technology, Ltd. Parallel graphics system employing multiple graphics processing pipelines with multiple graphics processing units (GPUS) and supporting an object division mode of parallel graphics processing using programmable pixel or vertex processing resources provided with the GPUS
EP1687732A4 (de) * 2003-11-19 2008-11-19 Lucid Information Technology Ltd Verfahren und system für eine mehrfach-3d-graphikpipeline über einen pc-bus
US8085273B2 (en) * 2003-11-19 2011-12-27 Lucid Information Technology, Ltd Multi-mode parallel graphics rendering system employing real-time automatic scene profiling and mode control
US7812844B2 (en) 2004-01-28 2010-10-12 Lucid Information Technology, Ltd. PC-based computing system employing a silicon chip having a routing unit and a control unit for parallelizing multiple GPU-driven pipeline cores according to the object division mode of parallel operation during the running of a graphics application
US20090027383A1 (en) * 2003-11-19 2009-01-29 Lucid Information Technology, Ltd. Computing system parallelizing the operation of multiple graphics processing pipelines (GPPLs) and supporting depth-less based image recomposition
US7761923B2 (en) 2004-03-01 2010-07-20 Invensys Systems, Inc. Process control methods and apparatus for intrusion detection, protection and network hardening
US20050228966A1 (en) * 2004-03-16 2005-10-13 Kabushiki Kaisha Toshiba Processor system and data processing method
US7937557B2 (en) 2004-03-16 2011-05-03 Vns Portfolio Llc System and method for intercommunication between computers in an array
US20050216700A1 (en) * 2004-03-26 2005-09-29 Hooman Honary Reconfigurable parallelism architecture
US20050273559A1 (en) 2004-05-19 2005-12-08 Aris Aristodemou Microprocessor architecture including unified cache debug unit
US20060184027A1 (en) * 2005-01-06 2006-08-17 Kabushiki Kaisha Toshiba Diagnostic imaging system, magnetic resonance imaging apparatus, and method of diagnostic imaging
US7644255B2 (en) * 2005-01-13 2010-01-05 Sony Computer Entertainment Inc. Method and apparatus for enable/disable control of SIMD processor slices
JP4211751B2 (ja) * 2005-03-25 2009-01-21 セイコーエプソン株式会社 集積回路装置
US7904695B2 (en) 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous power saving computer
US8181004B2 (en) 2005-08-29 2012-05-15 The Invention Science Fund I, Llc Selecting a resource management policy for a resource available to a processor
US7877584B2 (en) 2005-08-29 2011-01-25 The Invention Science Fund I, Llc Predictive processor resource management
US7774558B2 (en) 2005-08-29 2010-08-10 The Invention Science Fund I, Inc Multiprocessor resource optimization
US20070050608A1 (en) * 2005-08-29 2007-03-01 Searete Llc, A Limited Liability Corporatin Of The State Of Delaware Hardware-generated and historically-based execution optimization
US7512842B2 (en) * 2005-08-29 2009-03-31 Searete Llc Multi-voltage synchronous systems
US7725693B2 (en) * 2005-08-29 2010-05-25 Searete, Llc Execution optimization using a processor resource management policy saved in an association with an instruction group
US7647487B2 (en) * 2005-08-29 2010-01-12 Searete, Llc Instruction-associated processor resource optimization
US8516300B2 (en) 2005-08-29 2013-08-20 The Invention Science Fund I, Llc Multi-votage synchronous systems
US7627739B2 (en) * 2005-08-29 2009-12-01 Searete, Llc Optimization of a hardware resource shared by a multiprocessor
US7739524B2 (en) * 2005-08-29 2010-06-15 The Invention Science Fund I, Inc Power consumption management
US8423824B2 (en) 2005-08-29 2013-04-16 The Invention Science Fund I, Llc Power sparing synchronous apparatus
US8375247B2 (en) * 2005-08-29 2013-02-12 The Invention Science Fund I, Llc Handling processor computational errors
US8209524B2 (en) * 2005-08-29 2012-06-26 The Invention Science Fund I, Llc Cross-architecture optimization
US7779213B2 (en) * 2005-08-29 2010-08-17 The Invention Science Fund I, Inc Optimization of instruction group execution through hardware resource management policies
US8255745B2 (en) 2005-08-29 2012-08-28 The Invention Science Fund I, Llc Hardware-error tolerant computing
US8214191B2 (en) 2005-08-29 2012-07-03 The Invention Science Fund I, Llc Cross-architecture execution optimization
JP5017971B2 (ja) * 2005-09-07 2012-09-05 ソニー株式会社 集積装置
WO2007049150A2 (en) 2005-09-28 2007-05-03 Arc International (Uk) Limited Architecture for microprocessor-based systems including simd processing unit and associated systems and methods
US8250503B2 (en) 2006-01-18 2012-08-21 Martin Vorbach Hardware definition method including determining whether to implement a function as hardware or software
US7966481B2 (en) 2006-02-16 2011-06-21 Vns Portfolio Llc Computer system and method for executing port communications without interrupting the receiving computer
US7904615B2 (en) * 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous computer communication
WO2007123753A2 (en) 2006-03-30 2007-11-01 Invensys Systems, Inc. Digital data processing apparatus and methods for improving plant performance
US8358695B2 (en) * 2006-04-26 2013-01-22 Altera Corporation Methods and apparatus for providing a scalable motion estimation/compensation assist function within an array processor
US7730280B2 (en) * 2006-06-15 2010-06-01 Vicore Technologies, Inc. Methods and apparatus for independent processor node operations in a SIMD array processor
WO2008024661A1 (en) * 2006-08-20 2008-02-28 Ambric, Inc. Processor having multiple instruction sources and execution modes
EP2056212B1 (de) 2006-08-23 2013-04-10 NEC Corporation Paralleles prozessorsystem mit mischmodus und verfahren für paralleles prozessorsystem mit mischmodus
US9563433B1 (en) * 2006-09-01 2017-02-07 Allsearch Semi Llc System and method for class-based execution of an instruction broadcasted to an array of processing elements
US7809926B2 (en) * 2006-11-03 2010-10-05 Cornell Research Foundation, Inc. Systems and methods for reconfiguring on-chip multiprocessors
KR100896269B1 (ko) * 2006-12-05 2009-05-08 한국전자통신연구원 SIMD/SISD/Row/Column 동작을 할 수있는 SIMD 병렬 프로세서
US20080182021A1 (en) * 2007-01-31 2008-07-31 Simka Harsono S Continuous ultra-thin copper film formed using a low thermal budget
US20080270751A1 (en) * 2007-04-27 2008-10-30 Technology Properties Limited System and method for processing data in a pipeline of computers
US7979674B2 (en) * 2007-05-16 2011-07-12 International Business Machines Corporation Re-executing launcher program upon termination of launched programs in MIMD mode booted SIMD partitions
US7814295B2 (en) * 2007-05-18 2010-10-12 International Business Machines Corporation Moving processing operations from one MIMD booted SIMD partition to another to enlarge a SIMD partition
US7840826B2 (en) * 2007-05-31 2010-11-23 Vns Portfolio Llc Method and apparatus for using port communications to switch processor modes
US7831803B2 (en) * 2007-07-19 2010-11-09 International Business Machines Corporation Executing multiple instructions multiple date (‘MIMD’) programs on a single instruction multiple data (‘SIMD’) machine
US7831802B2 (en) * 2007-07-19 2010-11-09 International Business Machines Corporation Executing Multiple Instructions Multiple Data (‘MIMD’) programs on a Single Instruction Multiple Data (‘SIMD’) machine
US8359462B1 (en) * 2007-11-21 2013-01-22 Marvell International Ltd. Method and apparatus for programmable coupling between CPU and co-processor
CN101216815B (zh) * 2008-01-07 2010-11-03 浪潮电子信息产业股份有限公司 一种双翼可扩展多处理器紧耦合共享存储器体系结构
US8078834B2 (en) * 2008-01-09 2011-12-13 Analog Devices, Inc. Processor architectures for enhanced computational capability
CN104407518B (zh) 2008-06-20 2017-05-31 因文西斯系统公司 对用于过程控制的实际和仿真设施进行交互的系统和方法
US8732716B2 (en) 2008-09-30 2014-05-20 International Business Machines Corporation Virtualization across physical partitions of a multi-core processor (MCP)
US8438404B2 (en) * 2008-09-30 2013-05-07 International Business Machines Corporation Main processing element for delegating virtualized control threads controlling clock speed and power consumption to groups of sub-processing elements in a system such that a group of sub-processing elements can be designated as pseudo main processing element
US8139668B2 (en) * 2009-03-31 2012-03-20 Mitsubishi Electric Research Laboratories, Inc. Unified STTC encoder for WAVE transceivers
US8463964B2 (en) 2009-05-29 2013-06-11 Invensys Systems, Inc. Methods and apparatus for control configuration with enhanced change-tracking
US8127060B2 (en) 2009-05-29 2012-02-28 Invensys Systems, Inc Methods and apparatus for control configuration with control objects that are fieldbus protocol-aware
TWI414994B (zh) * 2009-09-24 2013-11-11 Ind Tech Res Inst 可重組態處理裝置及其系統
JP5495707B2 (ja) * 2009-10-16 2014-05-21 三菱電機株式会社 並列信号処理装置
JP5511400B2 (ja) * 2010-01-12 2014-06-04 三菱電機株式会社 並列信号処理プロセッサ
US9552206B2 (en) * 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
WO2012100316A1 (en) * 2011-01-25 2012-08-02 Cognivue Corporation Apparatus and method of vector unit sharing
US8812785B2 (en) * 2011-05-23 2014-08-19 International Business Machines Corporation Managing track discard requests to include in discard track messages
WO2013095575A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Broadcast operation on mask register
KR101978409B1 (ko) * 2012-02-28 2019-05-14 삼성전자 주식회사 재구성가능 프로세서, 이를 위한 코드 변환 장치 및 방법
JP5979250B2 (ja) * 2013-01-21 2016-08-24 日産自動車株式会社 排他制御検査装置、排他制御検査方法、排他制御検査プログラム
CN103106175B (zh) * 2013-01-23 2015-12-23 杭州士兰微电子股份有限公司 基于共享寄存器和流水处理的处理器阵列
US9606803B2 (en) * 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
KR20160046331A (ko) * 2013-08-19 2016-04-28 상하이 신하오 (브레이브칩스) 마이크로 일렉트로닉스 코. 엘티디. 범용 유닛을 기반으로 하는 고성능 프로세스 시스템 및 방법
US9396032B2 (en) * 2014-03-27 2016-07-19 Intel Corporation Priority based context preemption
US9665372B2 (en) 2014-05-12 2017-05-30 International Business Machines Corporation Parallel slice processor with dynamic instruction stream mapping
US9672043B2 (en) 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
US9760375B2 (en) 2014-09-09 2017-09-12 International Business Machines Corporation Register files for storing data operated on by instructions of multiple widths
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
US10133581B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Linkable issue queue parallel execution slice for a processor
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US11514294B2 (en) 2017-02-24 2022-11-29 Untether Ai Corporation System and method for energy-efficient implementation of neural networks
FR3074931B1 (fr) * 2017-12-13 2020-01-03 Vsora Architectures de processeur
US20230229450A1 (en) * 2018-02-23 2023-07-20 Untether Ai Corporation Computational memory
US11593167B2 (en) * 2019-05-09 2023-02-28 International Business Machines Corporation Thread embedded cache management
KR20210042751A (ko) 2019-10-10 2021-04-20 삼성전자주식회사 충전 집적 회로 및 이의 동작 방법
GB2607348A (en) 2021-06-04 2022-12-07 Advanced Risc Mach Ltd Graphics processing
GB2607350B (en) 2021-06-04 2023-12-13 Advanced Risc Mach Ltd Graphics processing
GB2607349B (en) * 2021-06-04 2023-06-28 Advanced Risc Mach Ltd Graphics processing

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4754394A (en) * 1984-10-24 1988-06-28 International Business Machines Corporation Multiprocessing system having dynamically allocated local/global storage and including interleaving transformation circuit for transforming real addresses to corresponding absolute address of the storage
US5230079A (en) * 1986-09-18 1993-07-20 Digital Equipment Corporation Massively parallel array processing system with processors selectively accessing memory module locations using address in microword or in address register
CN1008018B (zh) * 1986-09-27 1990-05-16 徐肇昌 一种具有合作能力的同构型多计算机系统及其合作方法
US5010477A (en) * 1986-10-17 1991-04-23 Hitachi, Ltd. Method and apparatus for transferring vector data between parallel processing system with registers & logic for inter-processor data communication independents of processing operations
GB2211638A (en) * 1987-10-27 1989-07-05 Ibm Simd array processor
US4873626A (en) * 1986-12-17 1989-10-10 Massachusetts Institute Of Technology Parallel processing system with processor array having memory system included in system memory
US4891787A (en) * 1986-12-17 1990-01-02 Massachusetts Institute Of Technology Parallel processing system with processor array having SIMD/MIMD instruction processing
US5165023A (en) * 1986-12-17 1992-11-17 Massachusetts Institute Of Technology Parallel processing system with processor array and network communications system for transmitting messages of variable length
US4829422A (en) * 1987-04-02 1989-05-09 Stellar Computer, Inc. Control of multiple processors executing in parallel regions
US5008882A (en) * 1987-08-17 1991-04-16 California Institute Of Technology Method and apparatus for eliminating unsuccessful tries in a search tree
US4916652A (en) * 1987-09-30 1990-04-10 International Business Machines Corporation Dynamic multiple instruction stream multiple data multiple pipeline apparatus for floating-point single instruction stream single data architectures
CA2019300C (en) * 1989-06-22 2001-06-12 Kendall Square Research Corporation Multiprocessor system with shared memory
US5212777A (en) * 1989-11-17 1993-05-18 Texas Instruments Incorporated Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation
US5239629A (en) * 1989-12-29 1993-08-24 Supercomputer Systems Limited Partnership Dedicated centralized signaling mechanism for selectively signaling devices in a multiprocessor system

Also Published As

Publication number Publication date
KR970008529B1 (en) 1997-05-24
EP0544127B1 (de) 1999-03-10
US5475856A (en) 1995-12-12
CN1044646C (zh) 1999-08-11
EP0544127A3 (en) 1994-04-20
DE69228586D1 (de) 1999-04-15
CA2073516A1 (en) 1993-05-28
ATE177547T1 (de) 1999-03-15
JP2647315B2 (ja) 1997-08-27
CN1072788A (zh) 1993-06-02
MX9206864A (es) 1993-05-01
JPH05233569A (ja) 1993-09-10
EP0544127A2 (de) 1993-06-02
KR930010758A (ko) 1993-06-23

Similar Documents

Publication Publication Date Title
DE69228586T2 (de) Dynamischer, in einer Array-Architektur im Mehrfachmodus arbeitender Parallelprozessor
DE10110504B4 (de) Verfahren und Computersystem zur Verwaltung von Threads
DE69701802T2 (de) Paralleler prozessor mit redundanz von prozessorpaaren und verfahren
DE2716369C2 (de)
DE3586603T2 (de) Datenprozessor fuer interpretierende und kompilierte sprache.
DE3854568T2 (de) SIMD-Feldrechner.
DE69129569T2 (de) Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen
EP0961980B1 (de) Verfahren zur selbstsynchronisation von konfigurierbaren elementen eines programmierbaren bausteines
EP0943129B1 (de) EINHEIT ZUR VERARBEITUNG VON NUMERISCHEN UND LOGISCHEN OPERATIONEN, ZUM EINSATZ IN PROZESSOREN (CPUs), MEHRRECHNERSYSTEMEN
DE69619366T2 (de) Sperr- und eurekasynchronisierungsarchitektur für multiprozessoren
DE69033272T2 (de) Verbundarchitektur für ein hochgradig paralleles skalar/vektor-multiprozessorsystem
EP0948842B1 (de) VERFAHREN ZUM SELBSTÄNDIGEN DYNAMISCHEN UMLADEN VON DATENFLUSSPROZESSOREN (DFPs) SOWIE BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALEN PROGRAMMIERBAREN ZELLSTRUKTUREN (FPGAs, DPGAs, o.dgl.)
DE69422448T2 (de) Multi-tasking-steuerungsgerät mit geringem energieverbrauch
DE69325785T2 (de) Verbesserte Architektur für Prozessor mit sehr langem Befehlswort
DE69907955T2 (de) Globale und locale registersegmentierung in einem vliw prozessor
DE3750306T2 (de) System zum Gewährleisten der logischen Unversehrtheit von Daten.
DE69033568T2 (de) Preisgünstiger Hochleistungsmikroprozessor
DE69837791T2 (de) VERFAHREN UND GERÄT FÜR EFFIZIENTE, SYNCHRONE MIMD-OPERATIONEN MIT iVLIW PE-ZU-PE KOMMUNIKATIONEN
DE69933088T2 (de) Vliw-verarbeiter verarbeitet befehle von verschiedenen breiten
DE69130723T2 (de) Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten
DE69106384T2 (de) Skalierbares parallel-vektorrechnersystem.
DE69826404T2 (de) Datenverarbeitungssystem mit mehreren Prozessoren, die eine Registerbank gemeinsam benutzen
DE2835095C2 (de) Digitale Rechenanlage mit einem ersten und mindestens einem zweiten miteinander koppelbaren mikroprogrammierten Prozessoren
WO2004038599A1 (de) Rekonfigurierbare sequenzerstruktur
DE3638572A1 (de) Vektorprozessor

Legal Events

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