DE69228586T2 - Dynamischer, in einer Array-Architektur im Mehrfachmodus arbeitender Parallelprozessor - Google Patents
Dynamischer, in einer Array-Architektur im Mehrfachmodus arbeitender ParallelprozessorInfo
- 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
Links
- 238000012545 processing Methods 0.000 claims abstract description 63
- 230000015654 memory Effects 0.000 claims abstract description 44
- 230000006870 function Effects 0.000 claims description 20
- 230000005540 biological transmission Effects 0.000 claims description 9
- 230000008859 change Effects 0.000 claims description 7
- 238000000034 method Methods 0.000 claims description 7
- 230000008569 process Effects 0.000 claims description 6
- 230000008901 benefit Effects 0.000 claims description 5
- 230000000903 blocking effect Effects 0.000 claims description 5
- 230000004913 activation Effects 0.000 claims description 2
- 230000002452 interceptive effect Effects 0.000 claims description 2
- 230000007704 transition Effects 0.000 claims 1
- 230000008878 coupling Effects 0.000 abstract description 4
- 238000010168 coupling process Methods 0.000 abstract description 4
- 238000005859 coupling reaction Methods 0.000 abstract description 4
- 230000000694 effects Effects 0.000 description 6
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- RLLPVAHGXHCWKJ-IEBWSBKVSA-N (3-phenoxyphenyl)methyl (1s,3s)-3-(2,2-dichloroethenyl)-2,2-dimethylcyclopropane-1-carboxylate Chemical compound CC1(C)[C@H](C=C(Cl)Cl)[C@@H]1C(=O)OCC1=CC=CC(OC=2C=CC=CC=2)=C1 RLLPVAHGXHCWKJ-IEBWSBKVSA-N 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 101000767534 Arabidopsis thaliana Chorismate mutase 2 Proteins 0.000 description 1
- 101000986989 Naja kaouthia Acidic phospholipase A2 CM-II Proteins 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000003446 memory effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17337—Direct connection machines, e.g. completely connected computers, point to point communication networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17337—Direct connection machines, e.g. completely connected computers, point to point communication networks
- G06F15/17343—Direct 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
- G06F15/17368—Indirect interconnection networks non hierarchical topologies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
- G06F15/17368—Indirect interconnection networks non hierarchical topologies
- G06F15/17381—Two dimensional, e.g. mesh, torus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
- G06F15/8015—One dimensional arrays, e.g. rings, linear arrays, buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
- G06F15/803—Three-dimensional arrays or hypercubes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F02—COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
- F02B—INTERNAL-COMBUSTION PISTON ENGINES; COMBUSTION ENGINES IN GENERAL
- F02B75/00—Other engines
- F02B75/02—Engines characterised by their cycles, e.g. six-stroke
- F02B2075/022—Engines characterised by their cycles, e.g. six-stroke having less than six strokes per cycle
- F02B2075/027—Engines 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
- 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.
- 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.
- 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.
- 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.
- 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.
- 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 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.
- 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.
- 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.
- 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.
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)
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)
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 |
-
1992
- 1992-07-09 CA CA002073516A patent/CA2073516A1/en not_active Abandoned
- 1992-10-12 JP JP4272758A patent/JP2647315B2/ja not_active Expired - Lifetime
- 1992-10-20 CN CN92111552A patent/CN1044646C/zh not_active Expired - Lifetime
- 1992-11-04 DE DE69228586T patent/DE69228586T2/de not_active Expired - Fee Related
- 1992-11-04 AT AT92118887T patent/ATE177547T1/de not_active IP Right Cessation
- 1992-11-04 EP EP92118887A patent/EP0544127B1/de not_active Expired - Lifetime
- 1992-11-09 KR KR92020971A patent/KR970008529B1/ko not_active IP Right Cessation
- 1992-11-27 MX MX9206864A patent/MX9206864A/es unknown
-
1994
- 1994-10-17 US US08/324,295 patent/US5475856A/en not_active Expired - Lifetime
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 |