DE69804444T2 - Prozessor -steuergerät zur beschleunigung der befehlsausgaberate - Google Patents
Prozessor -steuergerät zur beschleunigung der befehlsausgaberateInfo
- Publication number
- DE69804444T2 DE69804444T2 DE69804444T DE69804444T DE69804444T2 DE 69804444 T2 DE69804444 T2 DE 69804444T2 DE 69804444 T DE69804444 T DE 69804444T DE 69804444 T DE69804444 T DE 69804444T DE 69804444 T2 DE69804444 T2 DE 69804444T2
- Authority
- DE
- Germany
- Prior art keywords
- data processor
- instructions
- instruction
- bandwidth
- data
- 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 - Lifetime
Links
- 230000015654 memory Effects 0.000 claims description 37
- 238000000034 method Methods 0.000 claims description 15
- 150000001875 compounds Chemical class 0.000 claims description 14
- 230000001133 acceleration Effects 0.000 claims description 8
- 230000008859 change Effects 0.000 claims description 5
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 claims description 4
- 230000006837 decompression Effects 0.000 claims description 4
- 229910052710 silicon Inorganic materials 0.000 claims description 4
- 239000010703 silicon Substances 0.000 claims description 4
- 230000001419 dependent effect Effects 0.000 claims 3
- 239000004606 Fillers/Extenders Substances 0.000 claims 1
- 238000012545 processing Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 238000013519 translation Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000014616 translation Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000000717 retained effect Effects 0.000 description 5
- 239000003550 marker Substances 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000003190 augmentative effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241001272567 Hominoidea Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 239000003814 drug Substances 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000002459 sustained effect Effects 0.000 description 1
- 230000009466 transformation Effects 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/3017—Runtime instruction translation, e.g. macros
- G06F9/30178—Runtime instruction translation, e.g. macros of compressed or encrypted instructions
-
- 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
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
-
- 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/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]
- G06F9/38873—Iterative single instructions for multiple data lanes [SIMD]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Multi Processors (AREA)
Description
- [001] Die Erfindung bezieht sich im breitesten Sinne auf Parallelverarbeitung (parallel processing) im Gebiet der Computertechnologie und betrifft speziell Systeme, Einrichtungen und Verfahren zur Erzeugung von Instruktionen (Befehlen) für einen Parallelcomputer, wie einen Single Instruction Multiple Data (SIMD) Datenprozessor.
- [002] Parallelverarbeitung wird zunehmend verwendet, um die Rechenanforderungen in den herausforderndensten wissenschaftlichen und technischen Problemstellungen erfüllen zu können, da die Rechen-Leistungsfähigkeit (computing performance), welche von solchen Problemstellungen verlangt wird, im allgemeinen mehrere Größenordnungen höher sind, als diejenigen, welche von allgemein-verfügbaren Seriencomputern (general-purpose serial computers) zur Verfügung gestellt werden. Das Anwachsen oder das Wachstum von Parallelprozessoren hat ein breites Spektrum von Anwendungsgebieten eröffnet, einschließlich Bildverarbeitung, künstliche neuronale Netzwerke (artificial neural networks), Wettervorhersage und Atomkraftreaktor-Berechnungen.
- [003] Während verschiedene Parallelcomputer-Architekturen verschiedene bzw. voneinander abweichende Betriebsarten unterstützen, kann in sehr allgemeiner Sprachweise gesagt werden, daß die Kernelemente eines Parallelprozessors ein Netzwerk von Prozessorelementen (PE) beinhalten, von denen jedes einen oder mehrere Datenspeicher und Operandenregister besitzt, und wobei jedes der PE miteinander verbunden ist durch ein Zwischenverbindungs-Netzwerk (IN).
- [004] Eine der am meisten erforschten Lösungsvorschläge für Parallelverarbeitung betrifft die Array-Prozessoren, welche allgemein realisiert sind in einem Strom von Einfachbefehlen (single instruction stream), arbeitend auf Mehrfach-Datenstrom- Prozessoren (bekannt unter "Single Instruction Multiple Data" oder SIMD-Prozessoren). Die grundlegenden Verarbeitungseinheiten eines SIMD-Prozessors sind ein Array von Verarbeitungselementen (PE), Speicherelementen (M), eine Kontrolleinheit (CU) und ein Zwischenverbindungs-Netzwerk (IN). Im Betrieb holt die CU eine Folge oder Sequenz von Befehlen (instructions) aus einem oder von einem Programm, decodiert diese und synchronisiert alle PEs durch Abgeben oder Senden von Kontrollsignalen an diese. Daraufhin arbeiten die PEs unter der Steuerung eines gemeinsamen Befehlsstroms (instruction stream), führen gleichzeitig dieselben Instruktionen oder Befehle aus, aber mit den oder auf unterschiedlichen Daten, die jede aus ihrem eigenen Speicher holt. Das Zwischenverbindungs-Netzwerk (interconnection network) vereinfacht die Datenkommunikation zwischen den Prozessoreinheiten und dem Speicher. So liegt der Schlüssel in der Parallelität bei SIMD-Prozessoren darin, daß ein Befehl auf mehreren Operanden gleichzeitig arbeitet, statt auf einem einzigen.
- [005] in einem Standard-Aufbau wird ein SIMD-Prozessor einem Host-Computer zugeordnet, welcher aus dem Blickwinkel des Benutzers ein Front-End-System ist. Die Aufgabe oder Rolle des Host-Computers ist es, das Compilieren auszuführen, Programme zu laden, Eingangs/Ausgangs-Operationen durchzuführen (I/O) und andere Betriebssystem-Funktionen zu erledigen bzw. auszuführen.
- [006] Ein Beispiel eines SIMD-Prozessors, der von der Anmelderin (Patentinhaberin) hergestellt und vertrieben wird, ist der AspexTM ASPTM (Associative String Processor) Datenprozessor, welcher in typischen Konfigurationen mit 1.000 bis 100.000 Datenobjekten (data items) parallel arbeitet. Die Hauptvorteile oder Eigenschaften der aktuellen Implementierung des ASP sind:
- - 256 Verarbeitungs-Elemente auf einem einzigen "Device" mit 8,1 mm · 9,3 mm an Größe bis zu 1 : 152 Verarbeitungselementen (processing elements) auf einem einzelnen Device mit 14,5 mm · 13,5 mm an Größe.
- - DPC-Schnittstelle bzw. Interface mit 80-82 bit Breite bei einer Arbeits- Geschwindigkeit von 20M bis 50M Instruktionen pro Sekunde (20 bis 50 MIPS).
- - 40 bis 100 MHz Taktgeschwindigkeit bzw. Taktrate.
- [007] Ein ASP, der implementiert wurde, wird von einem 76 bit breiten Befehl (instruction) gesteuert, der 32 bit Steuerdaten, 32 bit-Daten und 12 bit-Aktivitäts-Felder (activity fields) umfaßt. Der ASP führt zwei (sequentiell ausgeführte) Operationen für jeden Befehl aus, den er erhält. Um dieses zu unterstützen, kann das Steuerfeld (control field) weiter unterteilt werden in Unterfelder A und B (sub-instruction fields). Der Daten-IIO zu dem bzw. von dem ASP verwendet Hochgeschwindigkeits-Kanäle, kann jedoch auch ein 32 bit breiten Wert an eine Steuereinheit abgeben oder zurückgeben, und hat vier Status-Anschlüsse (status lines), welche von einer Kontrolleinheit überwacht werden.
- [008] Der ASP kann Operationen mit Daten im APE bit-seriell (ein Bit zu einer Zeit) oder bit-parallel (mehrere Bits zu einer Zeit) ausführen. Operationen werden klassifiziert als Skalar-Vektor, wenn ein Operand denselben Wert bei allen APEs besitzt oder als Vektor-Vektor für alle anderen Fälle. Vektor-Vektor-Operationen erfordern, daß die Steuereinheit die Operandenadressen in den Befehl zuführt und werden normalerweise bis-seriell ausgeführt. Skalar-Vektor-Operationen erfordern es, daß die Steuereinheit den gemeinsamen, d. h. den Skalar-Operandenwert und die Adresse des zweiten Operanden in der Instruktion zur Verfügung stellt und werden bit-seriell oder parallel ausgeführt. Beide Fälle erfordern, daß die Adresse des Ergebnisses auch in der Instruktion enthalten ist.
- [009] Für den Zweck der Steuerung eines SIMD-Prozessors kann der Bereich von Architekturen so berücksichtigt werden, daß er von zwei grundlegenden Fällen begrenzt wird: Ein Stand-Alone und ein Co-Prozessor. Andere Architekturen sind entweder Variationen, eine Mischung oder verschiedene Beispiele oder Ausführungen der beiden grundlegenden Fälle. Eine Steuereinheit, die einem Stand-Alone, einem Co- Prozessor und Zwischenarchitekturen gemeinsam ist, ist ein Datenprozessor- Steuergerät (DPC, Data Processor Controller). Wie es ersichtlich werden wird, führt ein DPC die Control-Statements eines Programms aus und gibt Befehle oder Instruktionen an den SIMD-Prozessor.
- [0010] Die Standalone-Anordnung, welche in den beiliegenden Zeichnungen von Fig. 1 gezeigt wird, besteht aus zwei Blöcken: dem SIMD-Prozessor, welcher die Daten manipuliert, und dem DPC, welcher die Instruktionen an den SIMD-Prozessor abgibt oder weitergibt, wodurch der Betrieb oder die Arbeit des SIMD-Prozessors gesteuert wird. Eine Charakteristik der Standalone-Fälle ist es, daß der Daten-I/O direkt zum SIMD-Prozessor geht. Optionale externe Kommandos und Status-Prüfungen gehen zu und von dem DPC.
- [0011] Die Co-Prozessor-Anordnung, welche von Fig. 2 veranschaulicht wird, weist einen SIMD-Prozessor auf, der über einen DPC an einen eher konventionellen Prozessor gekoppelt ist, realisiert in einer Betriebsweise mit einem Strom von Einfachbefehlen (single instruction stream) auf einem oder mit einem Einfach- Datenstrom-Prozessor (auch als Single Instruction Single Data oder SISD-Prozessor bekannt). Die Kombination des DPC- und des SIMD-Prozessors kann als ein Co- Prozessor des SISD-Prozessors angesehen werden.
- [0012] SISD-Prozessoren können in ihrer Komplexität reichen von einem Prozessorkern, wie dem ARM, über Mikroprozessoren, wie dem Intel Pentium oder dem Sun SPARC, und bis hin zu vollständigen Maschinen, wie einem IBM/Apple PC oder einer Sun/DEC Workstation (alle als Marken gekennzeichnet und bekannt).
- [0013] Während der Ausführung eines gegebenen Programms durch einen SISD ist die Organisation des Systems so, daß der SISD bestimmte Aufgaben zusammen mit ihren Parametern an den Co-Prozessor delegiert. Die Teilung dieser Aufgaben zwischen dem DPC und dem SIMD-Prozessor ist ebenso wie für den Stand-Alone-Fall. Während der Co-Prozessor seine ihm zugewiesene Aufgabe ausführt, führt der SISD- Prozessor weiterhin das Programm aus; das Gesamtergebnis liegt so, daß die Programmschritte schneller vervollständigt werden, als wenn der SISD-Prozessor alleine zur Ausführung des Programms herangezogen worden wäre. Zum Beispiel kann in einer Bildverarbeitungs-Anwendung ein Programm ein Statement beinhalten, welches alle Pixel in einem Bild um den Wert X teilt, wobei der SISD-Prozessor dieses Statement und den Wert X an den Co-Prozessor zur Ausführung übergibt. Ähnlich wird es sein, wenn z. B. ein anderer Teil des Programms eine zweidimensionale Umwandlung oder Convolution des Bildes ausführt, dann würde diese Aufgabe auch an den Co-Prozessor zur Ausführung übergeben.
- [0014] Die Haupteigenschaften eines DPC sind:
- - Das Bereitstellen oder zur Verfügung stellen von Instruktionen für den SIMD- Prozessor mit einer sehr hohen Rate, typisch 20 bis 100M Instuktionen pro Sekunde.
- - Erzeugen von breiten Instruktionen, typisch mehrere 100 Bits.
- - Prozessor-Statusinformation von dem Datenprozessor.
- [0015] Derzeit fallen bekannte DPCs in eine von zwei allgemeinen Kategorien: (i) direkte Mikroprozessor-Ansteuerungen (drive) und (ii) kundenspezifische (custom) Mikro-Code-Sequencer.
- [0016] Eine direkte Mikroprozessorsteuerung stellt eine vielseitige und einfache DPC- Lösung bereit, unter Einsatz von Software, welche auf einem Mikroprozessor mit gespeichertem Programm läuft oder auf einem Signalprozessor (DSP), um die Datenprozessor-Befehle zu erzeugen und zusammenzusetzen. Fig. 3 zeigt eine solche Lösung. Des SIMD-Prozessors M bit breiten Befehls- und N bit breiten Ergebnis/Status-Interface werden über Register an ein P bit breites Interface über Register gekoppelt, zu dem Adressen/Daten-Bus oder dem I/O-Kanal des Mikroprozessor/DSP und im allgemeinen wird M und/oder N größer als P sein. Bei der Verwendung bildet das Software-Programm jeden Datenprozessor-Befehl durch Schreiben von P bits zu einem Zeitpunkt und dann, wenn alle M bits geschrieben wurden, wird der Befehl ausgegeben oder weitergegeben. Ähnlich werden die N bit Status/Ergebnis-Daten in Segmenten gelesen.
- [0017] Die Vielseitigkeit der direkten Mikroprozessor-Ansteuerung (direct microprocessor drive) kommt von der direkten Erzeugung der Datenprozessor-Befehle durch den Mikroprozessor/DSP. Sein großer Nachteil ist jedoch die geringe Befehls- Erzeugungsgeschwindigkeit, welche durch die Notwendigkeit verursacht ist, eine Anzahl von P bit Worten zu schreiben, um jede M bit Instruktion zu erzeugen, und die relativ geringe Schreibgeschwindigkeit von sogar den aktuellsten Mikroprozessoren/DSP. Folglich ist die Rate, mit welcher der DPC arbeitet, stark verzögert gegenüber der Rate, mit welcher ein SIMD-Prozessor arbeiten kann; die Verarbeitungskapazität eines SIMD-Prozessors wird dabei nicht ausgenutzt oder vollständig erschlossen.
- [0018] Die US-A 5,524,223 beschreibt ein Steuergerät für einen Datenprozessor und ein Verfahren zur Steuerung des Datenprozessors, welches versucht, das Gleichgewicht wiederherzustellen zwischen den Geschwindigkeiten der Instruktionserzeugung und der Datenverarbeitung. Hier weist das Steuergerät für den Datenprozessor eine Instruktions-Erzeugungseinrichtung auf sowie eine Instruktions- Beschleunigungseinrichtung, welche so angeordnet sind, die Instruktionen zu vermehren und die vermehrten bzw. vervielfachten Instruktionen dem Datenprozessor zukommen zu lassen. Instruktionen, welche als Teil einer Schleife bestimmt oder erkannt werden, werden zu einem oder mehreren Schleifenprozessoren kopiert. Die Schleifenprozessoren werden verwendet, um Gruppen von Befehlen zu wiederholen, welche zusammen eine Schleife bilden; sie werden implementiert unter Verwendung von FIFO-Einrichtungen für jede verschachtelte Schleife von Befehlen, welche von der Befehls-Vervielfachung gehandhabt werden soll. Um jedoch mit Instruktionen arbeiten zu können, welche viele verschachtelte Schleifen haben, wird die Architektur der Steuereinrichtung komplex werden und erfordert eine große Anzahl von FIFOs, wodurch sie teuer wird.
- [0019] Kehrt man zurück zu dem kundenspezifischen (custom) Mikrocode-Sequencer als DPC, verwenden sie ein kundenorientierten Mikrocode-Sequencer oder ein Bit- Slice-Sequencer als Architektur, welche für eine komplette Applikation mikrocodiert ist oder mit einer Bibliothek von Mikro-Routinen, welche einfache Aufgaben ausführen und welche für eine Applikation zusammengefügt werden können. Der Mikro-Code ist normalerweise fest verdrahtet oder heruntergeladen, bevor die Applikation gestartet wird, allerdings haben einige DPCs-Strukturen, den Mikro-Code während des Laufens der Applikation zu ändern.
- [0020] Fig. 4 veranschaulicht einen vereinfachten Mikrocode-Sequencer als DPC- Lösung. Sie weist vier Blöcke auf: 1) Mikrocode-Sequencer; 2) Arithmetik- Prozessoreinheit (APU); 3) Datenprozessor-Instruktionsmultiplizierer (DPMX) und 4) Kommandopuffer. Wenn jede der Einheiten der Reihe nach behandelt wird, ergibt sich:
- 1) Der Mikrocode-Sequencer steuert den DPC in dem Sinne, daß er die Instruktionen für den Basis-Datenprozessor erzeugt. Der Sequencer enthält einen sehr breiten Speicher mit hoher Geschwindigkeit, der den Mikrocode speichert, welcher von der Adressenerzeugungs-Einheit adressiert wird, und sein Ausgang wird in einem Register gespeichert oder "registriert", dann aufgeteilt in Mikro-Auftrags-Bereiche ("order" fields), welche die Sequencer-Adressenerzeugungs-Einheit und die anderen DPC-Blocks steuern, oder die Datenprozessor-Instruktion enthalten. Die Adressenerzeugungs-Einheit hat eine dedizierte Logik zur Ausführung von Aufrufen (calls), Verzweigungen (branches) und deterministischen und nicht-deterministischen Schleifen (loops). Sie hat Testeingänge, welche es erlauben, Entscheidungen basierend auf dem Status des DPC oder des SIMD-Prozessors zu machen, und sie besitzt einen Dateneingang zum Laden oder Aufnehmen oder Speichern einer Verzweigungsadresse oder eines Schleifenzählers (loop count).
- 2) Die APU führt allgemeine Arithmetik durch. Sie kann mit Parametern geladen werden, die stammen können aus: Dem Kommandopuffer, Ergebnissen von dem SIMD-Prozessor oder wortgetreu von dem Mikrocode-Sequencer. Das Ergebnis wird zur Steuerung des Sequencers verwendet oder zur Parametrisierung der Datenprozessor-Befehle. Oft unterstützt die APU die Erzeugung von Operanden/Ergebnis-Adreßfeldern einer Datenprozessor-Instruktion und die Manipulation eines Skalar- Wertes, wenn der Datenprozessor eine Skalar-Vektor-Operation ausführt. In der Praxis hat ein DPC eine Anzahl von APUs mit privaten Datenpfaden, von denen jede auf eine bestimmte Funktion oder Gruppe von Funktionen zugerichtet oder für sie dediziert ist. Zum Beispiel kann ein typischer Mikrocode-Sequencer DPC vier bis sechs APUs haben, welche auf spezifische Funktionen dediziert sind und einen 200 bit breiten Mikrocode speichern, der aus sehr schnellen statischen RAM- Speicherbausteinen aufgebaut wird.
- 3) Der DPMX parametrisiert die Basisdaten-Prozessorbefehle, welche von dem Mikrocode-Sequencer erzeugt werden, indem er Teile der Instruktion mit Werten ersetzt, die von den APU-Registern stammen oder von dort genommen werden.
- 4) Der Kommandopuffer stellt ein Mittel zur externen Steuerung des DPC dar: Task-Anfragen zusammen mit ihren Parametern werden aus dem Puffer genommen und Ergebnisse sowie Status-Information wird in dem Puffer abgelegt. Der Puffer kann als ein einfaches Register implementiert sein, als ein einfacher Speicher oder als ein FIFO-Speicher (first in first out). In dem Stand-Alone-Fall ist ein Kommandopuffer optionell
- [0021] Ein Beispiel eines DPC mit einer kundenspezifischen Mikrocode-Sequencer- Architektur ist die AspexTM Mikrosystem LAC-1001TM Karte. Diese Karte erzeugt einen 80 bit Datenprozessor-Befehl alle 50 nS. Sie hatte eine Größe von 340 mm · 367 mm und einen Leistungsverbrauch von 12 Ampere bei 5 Volt.
- [0022] Der prinzipielle Vorteil der kundenspezifischen (custom) Mikrocode-Sequencer liegt bei ihrer Betriebs- oder Arbeitsgeschwindigkeit. Dieses wird jedoch oft dadurch relativiert, daß eine fehlende Flexibilität und eine fehlende Schaltungskomplexität hinzutreten. So kann eine DPC-Lösung nur solche Aufgaben oder Tasks durchführen, für die sie mikrocodiert worden ist; auch ist die Flexibilität des Mikrocodes eingeschränkt durch die Funktionen und die Datenpfade, welche die Hardware bereitstellt, wobei sie applikationsspezifisch wird und in ihrer Verwendungsbreite oder Brauchbarkeit eingeschränkt ist. Zusätzlich ist die Komplexität der Schaltungen dafür verantwortlich, daß der DPC nachteilig groß und teuer ist sowie einen hohen Energieverbrauch verursacht.
- [0023] Die Nachteile, welche speziell von der Komplexität der Schaltung herrühren, haben eine Vielzahl von unerwünschten Folgeeffekten oder sich niederschlagenden Effekten. Anfangs muß das Schaltungsdesign ausgeklügelt sein, dann müssen die große Anzahl von Komponenten hergestellt, zusammengefügt, codiert und getestet werden. Unvermeidbar ist die Schaltung relativ groß (typisch um 1.250 cm²), und daher wird "big box" Kundenequipment benötigt, welches nicht geeignet ist für PC-basierte oder OEM-Anwendungen. Die Zuverlässigkeit ist ein weiterer wichtiger Aspekt; mit komplexen Multi-Komponenten-Schaltkreisen ist dieses ein dauerndes Problem.
- [0024] Alle diese Faktoren erhöhen eindeutig die Kosten, welche drastisch die Zugänglichkeit dieser Technologie begrenzt. Zum Beispiel sind die aktuellen Kosten eines 3D-Bildsystems für die Medizin im Bereich zwischen £1M und £10M, und dennoch werden keine idealen Realzeit-Leistungsstandards erbracht.
- [0025] Vor diesem Hintergrund sieht die Erfindung ihre Aufgabe darin, einen DPC bereitzustellen, welcher die Leistungsfähigkeit des kundenspezifischen (custom) Mikrocode-Sequencer-Prinzips erreicht und die Flexibilität des Prinzips eines direkten Mikroprozessorbetriebs (direct microprocessor drive), bei einer Größe und einem Kostenfaktor nahe denjenigen des Direct-Drive-Prinzips.
- [0026] Zu diesem Zweck speist die Erfindung Datenprozessor-Befehle (Instruktionen oder Kommandos), welche mit einer niedrigen Rate oder Geschwindigkeit erzeugt werden, in eine Schaltung, welche die Datenprozessor-Instruktionen mit einer hohen Rate oder Geschwindigkeit erzeugt, d. h. sie erhöht die Befehlserzeugungs-Bandbreite (instruction generation bandwidth). Der Begriff "Rate" bedeutet die Anzahl von Instruktion, welche in einer gegebenen Zeitspanne erzeugt werden, und der Begriff "instruction generation bandwidth" bedeutet die Anzahl von Instruktons-Bits, welche in einer gegebenen Zeitspanne erzeugt werden.
- [0027] Die Erfindung kann angewendet werden auf sowohl Stand-Alone-Fälle, wie auch auf Co-Prozessor-Fälle. Bei Stand-Alone-Fällen führt ein DPC Kontroll- Statements eines Programms aus, welches Datenprozessor-Instruktionen enthält, multipliziert die Datenprozessor-Instruktionen und gibt die vervielfachten (vermehrten oder "multiplizierten") Datenprozessor-Instruktionen an den Datenprozessor, welcher die Daten manipuliert. Die Rate bzw. Frequenz der Erzeugung der multiplizierten oder vermehrten Datenprozessor-Instruktionen ist größer, als die Rate der Ausführung der Programm-Statements.
- [0028] In den Co-Prozessor-Fällen führt ein SISD-Prozessor ein Programm aus und gibt einige Aufgaben an einen Co-Prozessor heraus oder weiter, welcher einen DPC und einen Datenprozessor aufweist. Der DPC multipliziert Datenprozessor-Befehle und gibt sie an den Datenprozessor mit einer höheren Geschwindigkeit als diejenige, mit welcher der DPC die Datenprozessor-Instruktionen von dem SISD-Prozessor erhält.
- [0029] Die Erfindung kann zwei Eigenschaften von einem Strom von Datenprozessor- Instruktionen oder einem Block von Instruktionen, welche von einer typischen Applikation erzeugt werden, ausnutzen. Erstens können individuelle Instruktionen und Blöcke von Instruktionen wiederholt werden. Zweitens kann der Instruktionsstrom komprimiert werden und dann dekomprimiert werden, wenn er die Datenprozessor- Steuerung erreicht - eine Technik, welche gut bekannt ist und in GB-A-2,284,492 beschrieben wird. Die Leistungsfähigkeit kann weiter dadurch gesteigert werden, daß erkannt wird, daß die meisten Schleifen in dem Datenprozessor-Befehlsstrom entweder die Adresse des Operanden/Ergebnisses ändert oder (für Skalar-Vektor-Operationen) den Skalarwert oder beides, während jeder Iteration.
- [0030] Die Datenprozessor-Instruktionen können spezifische Instruktionen beinhalten, zum Steuern der Betriebsweise oder der Operation des Multiplikations-Schaltkreises. Auf diese Weise ist es nicht notwendig, die Schaltung mit einem Satz von spezifischen Aufgaben oder Tasks vorzuladen, welche von dem Schaltkreis ausgeführt werden könnten. Vielmehr ermöglicht das Vorsehen von spezifischen Instruktionen innerhalb der Datenprozessor-Instruktionen dem Befehlsstrom, welcher von dem DPC erzeugt wird, sich während der Betriebszeit (run time) auszumultiplizieren oder zu vervielfachen, in ein für den Datenprozessor geeignetes Format, ohne jede vorhergehende Kenntnis der benötigten spezifischen Vervielfachungs- oder Multiplikationsprozesse. Der Datenprozessor gemäß dieser Erfindung ist folglich sehr flexibel und benötigt keine komplizierten zusätzlichen Schaltungen, welche auch sehr teuer sein können.
- [0031] Ein anderer Weg der Betrachtung des Vervielfachungs-Aspekts gemäß vorliegender Erfindung liegt darin, daß die Datenprozessor-Befehle, welche von der Vervielfachungs-Schaltung erhalten wurden, oder aufgenommen werden, in ihrer Zahl durch Heraus-Expandieren erhöht werden (expanded out). Diese Eigenschaft ermöglicht es, daß die Bandbreite von physischen Datenpfaden zwischen einem Befehlsgenerator für einen Datenprozessor, der Vervielfacherschaltung und dem Datenprozessor selbst vollständig mit maximaler Effizienz genutzt werden kann; jeder Datenpfad arbeitet bei seiner optimalen Kapazität. Zusätzlich können die Instruktionen für den Datenprozessor in einem Compound-Format erzeugt werden und können von der Vervielfacher-Schaltung getrennt werden, bevor sie den Datenprozessor in einem Non-Compound-Format erreichen. Der Instruktionsgenerator (Befehlsgenerator) für den Datenprozessor kann daher vorteilhaft Befehle/Instruktionen zu der Vervielfacher-Schaltung entlang einem Pfad mit relativ kleiner Bandbreite ausgeben und kann von der Vervielfacherschaltung zu dem Datenprozessor selbiges längs einem Pfad mit relativ großer Bandbreite ausführen, ohne daß die Leistungsfähigkeit insgesamt von dem langsamsten der Pfade (Datenwege) begrenzt ist.
- [0032] Ausgedrückt mit anderen Worten, liegt die Erfindung in einem Datenprozessor- Steuergerät zum Steuern eines Datenprozessors, welches aufweist: Einen ersten Prozessor zum Ausgeben von Instruktionen/Befehlen für den Datenprozessor mit einer ersten Rate (oder Frequenz); eine Vervielfachereinrichtung zum Erhalt der Datenprozessor-Instruktionen, die von dem ersten Prozessor ausgegeben werden, wobei die Vervielfacherschaltung die Datenprozessor-Instruktionen vervielfacht oder vermehrt und die vervielfachten Datenprozessor-Instruktionen für den oder an den Datenprozessor mit einer zweiten Rate (Geschwindigkeit) erzeugt, wobei die zweite Rate größer als die erste Rate ist.
- [0033] In einem Aspekt liegt die Erfindung in einem Steuergerät für einen Datenprozessor (Datenprozessor-Controller), welche Befehls-Erzeugungsmittel zur Erzeugung der Befehle für den Datenprozessor mit einer ersten Rate und ein Befehls- Beschleunigungsmittel umfaßt, zum Erhalt der Datenprozessor-Befehle bei der ersten Rate, und welches so angeordnet ist, die Befehle zu vervielfachen (zu multiplizieren bzw. vermehren) und die vervielfachten Befehle dem Datenprozessor mit einer zweiten Rate weiterzugeben oder zuzuleiten, welche zweite Rate größer als die erste Rate ist.
- [0034] Innerhalb desselben erfinderischen Konzeptes umfaßt die Erfindung auch einen Bandbreiten-Vervielfacher (Bandbreiten-Multiplizierer) zum Vervielfachen bzw. Vermehren (auch Multiplizieren) von Datenprozessor-Befehlen zur Steuerung eines Datenprozessors, wobei der Bandbreiten-Vervielfacher umfaßt: Ein Eingangsmittel zum Erhalt oder zur Aufnahme von Instruktionen/Befehlen; ein Bandbreiten- Vervielfachungsmittel zum Vervielfachen von Datenprozessor-Instruktionen, welche in den Instruktionen/Befehlen enthalten sind, welche von dem Eingangsmittel aufgenommen werden.
- [0035] Die Erfindung erstreckt sich (auch) auf ein Verfahren zum Steuern eines Datenprozessors, welche die folgenden Schritte umfaßt: Das Aufgeben oder Herausgeben von Datenprozessor-Befehlen mit einer ersten Rate (Geschwindigkeit); Lesen der Datenprozessor-Instruktionen; Multiplizieren oder Vervielfachen der Datenprozessor-Instruktionen; Schreiben der vervielfachten Datenprozessor- Instruktionen/Befehle an den Datenprozessor mit einer zweiten Rate, wobei die zweite Rate größer als die erste Rate ist.
- [0036] Die vorhergehende Zusammenfassung der Erfindung, ebenso wie die folgende detaillierte Erläuterung der bevorzugten Ausführungsbeispiele, wird besser verstanden, wenn sie in Verbindung mit den beigefügten Zeichnungen gelesen wird. Für den Zweck der Veranschaulichung der Erfindung sind in den Zeichnungen Ausführungsbeispiele dargestellt, die derzeit bevorzugt sind, es versteht sich aber, daß die Erfindung nicht auf diese spezifischen Ausführungsbeispiele beschränkt ist.
- [0037] In den Zeichnungen ist folgendes dargestellt:
- Fig. 1 ist ein Blockschaltbild eines Stand-Alone-Falls des Standes der Technik.
- Fig. 2 ist ein Blockschaltbild zur Darstellung des Co-Prozessor-Falls gemäß dem Stand der Technik.
- Fig. 3 ist ein Blockschaltbild zur Darstellung einer direkten Mikroprozessor- Ansteuerung (direct microprocessor drive) mit einem Datenprozessor-Steuergerät (DPC, data processor controller) gemäß dem Stand der Technik.
- Fig. 4 ist ein Blockschaltbild zur Darstellung eines kundenspezifischen (custom) Mikrocode-Sequencer DPC des Standes der Technik.
- Fig. 5 ist ein Blockschaltbild mit einer DPC-Architektur entsprechend einem Ausführungsbeispiel der vorliegenden Erfindung.
- Fig. 6 ist ein Blockschaltbild zur Darstellung des Bandbreiten-Vervielfachers, wie er in dem DPC nach Fig. 5 verwendet wird.
- Fig. 7 ist ein Blockschaltbild zur Darstellung der Blockwiederhol-Einrichtung (block repetition engine), wie sie in dem Bandbreiten-Vervielfacher nach Fig. 6 verwendet wird.
- Fig. 8 ist ein Blockschaltbild zur Darstellung eines Bandbreiten-Vervielfachers nach einem anderen Ausführungsbeispiel der vorliegenden Erfindung.
- Fig. 9 ist ein Blockschaltbild zur Darstellung einer DPC-Architektur entsprechend einem weiteren Ausführungsbeispiel der vorliegenden Erfindung.
- Fig. 10 ist ein Blockschaltbild einer Bandbreiten-Vervielfachung, wie sie in dem DPC von Fig. 9 verwendet wird.
- Fig. 11 ist ein Blockschaltbild zur Darstellung der Block-Vervielfachungs- Einrichtung, wie sie in dem Bandbreiten-Vervielfacher nach Fig. 10 verwendet wird.
- [0038] Fig. 1 bis 4 wurden in der Einleitung zur Erläuterung des Standes der Technik beschrieben. Mit Bezug auf Fig. 5 ist ein Datenprozessor-Steuergerät (DPC) in seiner Architektur entsprechend einem bevorzugten Ausführungsbeispiel der Erfindung für einen Stand-Alone-Fall gezeigt. Die DPC-Architektur umfaßt einen Datenprozessor 505 und einen DPC, welcher in Folge einen Mikroprozessor 501 und einen Bandbreiten-Vervielfacher 503 aufweist. Der Datenprozessor 505 ist ein SIMD- Prozessor, als "Single Instruction stream operating on Multiple Data"-Prozessor. Der Mikroprozessor 501 kann ein digitaler Signalprozessor (DSP, digital signal processor) sein.
- [0039] Bei Co-Prozessor-Fällen umfaßt die DPC-Architektur weiterhin einen SISD- Prozessor als "Single Instruction stream operating on Single Data"-Prozessor, welcher mit dem DPC gekoppelt ist zur Steuerung des Datenprozessors. In der Praxis können Systeme aufgebaut werden, die einen einzelnen SISD-Prozessor aufweisen und die Aufgaben des SISD-Prozessors und des DPC übernehmen, aber wenn der SISD- Prozessor eine Anzahl von Aufgaben auszuführen hat und nicht genug Zeit für das Speisen des Bandbreiten-Mulitplizierer aufwenden kann, würden zwei SISD- Prozessoren verwendet werden, d. h. einer als SISD-Prozessor und ein anderer als DPC-Mikroprozessor.
- [0040] Wie Fig. 5 veranschaulicht, sind die Interfaces für die M bit breite Instruktion 507 und das N bit breite Status/Ergebnis 509 des Prozessors über den Bandbreiten- Vervielfacher 503 zu einem P bit breiten Interface zum Adress/Datenbus oder I/O- Kanal 511 des Mikroprozessors 501 gekoppelt. Im allgemeinen wird M und/oder N größer als P sein.
- [0041] Das Software-Programm des Mikroprozessors 501 bildet eine kombinierte M*bit breite Instruktion/Befehl, welche Datenprozessor-Befehle und Steuerinformation für den Bandbreiten-Vervielfacher 503 enthält. Sie schreibt den kombinierten M*bit breiten Befehl in einer komprimierten Form mit P bits gleichzeitig, d. h. in P bit breiten Worten zu dem Bandbreiten-Vervielfacher 503. Wenn ein vollständiger, komprimierter Befehl in dieser Weise geschrieben worden ist, verwendet der Bandbreiten-Vervielfacher 503 diesen zur Erzeugung einer Sequenz von M bit breiten Instruktionen 507 für den Datenprozessor 505. Das N bit breite Status/Ergebnis 509 des Datenprozessors 505 wird von dem Mikroprozessor 501 mit P bits gleichzeitig ausgelesen.
- [0042] Wenn der kombinierte M* bit Befehl eine Schleife (loop) im Datenprozessor- Befehlsstrom repräsentiert, welche eine unterschiedliche Skalargröße für jede Iteration der Schleife benötigt, muß das Software-Programm des Mikroprozessors 501 zusätzlich die Sequenz von Skalardaten-Werten zu dem Bandbreiten-Vervielfacher 503 senden. Diese Sequenz wird auch mit P bits gleichzeitig geschrieben.
- [0043] Fig. 6 ist ein Blockschaltbild eines bevorzugten Ausführungsbeispiels des Bandbreiten-Mulitiplizierers 503 nach Fig. 5. Der Bandbreiten-Multiplizierer 503 umfaßt die folgenden fünf Elemente:
- 1. Input-FIFO 601 (Eingangs-FIFO), welches es dem Mikroprozessor 501 erlaubt, asynchron mit den Schaltungen der Bandbreiten-Vervielfachung 503 und des Datenprozessors 505 zu arbeiten.
- 2. Befehls-Einholeinrichtung (IFE, Instruction Fetch Engine) 603, welche die komprimierten Instruktionen von dem Eingangs-FLFO 601 liest und sie dekomprimiert.
- 3. Blockwiederhol-Einrichtung (BRE, Block Repetition Engine) 605, welche einen Lauf von Befehlen wiederholt.
- 4. Befehls-Wiederholeinrichtung (IRE, Instruction Repetition Engine) 607, welche individuelle Instruktionen/Befehle wiederholt.
- 5. Ausgangspuffer 609 (Output Buffer), welcher mit dem Mikroprozessor 501 und dem Datenprozessor 505 gekoppelt ist.
- [0044] Das Eingangs-FIFO 601 wird mit einem Block von Informationen geladen, welche eine Sequenz von P bit breiten Worten enthält, welche den komprimierten und kombinierten M* bit breiten Befehl ausmachen, der von dem Mikroprozessor 501 und jedem beteiligten Skalardaten-Wert erzeugt werden. Jedes Wort wird in dem Input- FIFO 601 gespeichert, zusammen mit einer "Markierung" (tag), welche kennzeichnet, welcher Teil der Instruktion es repräsentiert. Der Wert der Markierung kann auf zwei Weisen erhalten werden. Es kann Teil des von dem Mikroprozessor 501 geschriebenen Wortes sein oder es kann zusätzlich zu dem Wort bestehen, beispielsweise abgeleitet von der Adresse, auf die der Mikroprozessor 501 schreibt.
- [0045] Die Verwendung eines Input-FIFO 601 anstelle eines einfachen Puffers erlaubt es dem Bandbreiten-Vervielfacher 503 asynchron mit dem Mikroprozessor 501 zu arbeiten bzw. zu kommunizieren. Der spezielle Vorteil liegt darin, daß der Mikroprozessor 501 die Zeit zur Erzeugung und zum Laden der nächsten Instruktionen verwenden kann, in welcher Zeit der Bandbreiten-Vervielfacher 503 eine lange Sequenz aus bereits geladenen Instruktionen erzeugt. Mit anderen Worten erlaubt das FIFO ein Pipelining, namentlich das Überlappen zwischen der Erzeugung von Datenprozessor-Instruktionen des Bandbreiten-Vervielfachers 503 und der Erzeugung und des Ladens von Instruktionen durch den Mikroprozessor 501.
- [0046] Das IFE 603 liest eine komprimierte Instruktion als eine Sequenz von P* bit breiten Worten, namentlich mit einer Markierung (tag) versehene P bit breite Worte von dem Input-FIFO 601. Dann dekomprimiert oder expandiert der IFE 603 die komprimierten Instruktionen durch Verwendung der Markierung zur Identifizierung, welches Feld des Befehls das Wort repräsentiert. Die Felder des Befehls, welche am Ende der Dekomprimierung nicht spezifiziert sind, werden auf ihre Default-Werte oder die vorher geladenen Werte gesetzt oder geladen. Jeder Skalar zur Verwendung während einer Datenprozessor-Schleife wird aus dem Befehlsstrom herausgetrennt, und zwar durch das IFE 603, und in dem Skalar-Schreib-FIFO 611 gespeichert.
- [0047] Das BRE 605 empfängt die dekomprimierten Instruktionen von dem IFE 603; Fig. 7 zeigt Details des BRE 605. Das BRE 605 nimmt die dekomprimierten Instruktionen von dem IFE 603 und speichert sie in einem Pufferspeicher 701. Es sendet Instruktionen von diesem Pufferspeicher 701 an das IRE 607, optional ersetzt es einige Felder in der Instruktion mit Werten, die aus den BRE-Registern 703 stammen. Normalerweise wird eine Instruktion, die an den IRE 607 gesendet wurde, aus dem Pufferspeicher 701 gelöscht oder bleibt unberücksichtigt, jedoch kann die Wiederhol-Steuerlogik 705 es ermöglichen oder erlauben, einen Block oder verschachtelte Blöcke von Instruktionen in dem Pufferspeicher 701 zu halten oder zurückzuhalten und wiederholt an den IRE 607 für eine bestimmte Anzahl von Iterationen (d. h. eine FOR-Schleife) oder eine nicht-bestimmte Anzahl von Iterationen (d. h. eine REPEAT-Schleife) zu senden. Die Statusverbindungen (status lines) 707 von dem Datenprozessor 505 und dem Mikroprozessor 501 werden zur Beendigung der REPEAT-Schleife verwendet.
- [0048] Um es dem Operanden/Ergebnis-Adressenfeld in der Instruktion bzw. dem Befehl zu erlauben, sich bei jeder Iteration eines Blocks zu ändern, enthält der BRE 605 ein oder mehrere Register 703, deren Werte in die IRE 607 Instruktion von einem Multiplexer 709 gemultiplext werden können. Die Felder in dem BRE-Befehl steuern das Vorladen, das Nach-Inkrementieren und das Nach-Dekrementieren dieser Register 703. Ein Register kann geladen, verwendet und modifiziert werden in derselben Instruktion. Die Steuerlogik 705 unterdrückt die Vorladung der Register 703 bei der zweiten und folgenden Iteration eines Blocks.
- [0049] Um es dem Skalar-Datenwert zu erlauben, sich bei jeder Iteration eines Blocks zu ändern, kann das BRE 605 auch Werte multiplexen, die von dem Skalar-Schreib- FIFO 611 (scalar write FIFO) genommen werden, und zwar für den oder in den IRE 607 Befehl, unter Verwendung des Multiplexer 709.
- [0050] Zurückkommend zu Fig. 6 nimmt das IRE 607 einen Befehl von dem BRE 605 und erzeugt aus ihm eine Sequenz von Null oder mehr derselben Datenprozessor- Befehle. Die Steuerlogik erlaubt es, daß die Länge dieser Sequenz bestimmt oder deterministisch ist, oder sich fortsetzt, bis zu oder während der Gültigkeit einer externen Bedingung, typisch dem Datenprozessor-Status. Das IRE 607 gibt eine Instruktion für den Datenprozessor 505 in Gestalt einer " no-operation", wenn eine Instruktion von dem BRE 605 nicht verfügbar ist.
- [0051] Während des Steuerns eines Datenprozessors, wie den ASP, bei dem jede Instruktion in eine Anzahl von sequentiell ausgeführten Unter-Instuktionen (subinstructions) aufgeteilt wird, kann das IRE 607 erweitert werden, um es jeder Unter- Instruktion zu erlauben, individuell innerhalb jeder Wiederholung der Gesamt- Instruktion wiederholt zu werden.
- [0052] Der Ausgangs-Puffer (Output-Buffer) 609 stellt ein Mittel für den Mikroprozessor 501 bereit, den Status des Bandbreiten-Vervielfachers 503 zu lesen oder ein Ergebnis oder einen Status des Datenprozessors 505 zu lesen. Die Steuerlogik erlaubt dem Mikroprozessor 501 sich mit dem Datenprozessor 505 und dem Bandbreiten- Vervielfacher 503 zu synchronisieren. Der Ausgangs-Puffer 609 kann als ein einfaches Register, ein kleiner Speicher oder als ein FIFO ausgebildet sein.
- [0053] Eine Variation der oben beschriebenen Bandbreiten-Vervielfachung ist in Fig. 8 dargestellt. In dieser Ausführung ist das IFE 603 durch Hinzufügen eines Direct Memory Access Controllers (DMAC, Steuereinrichtung für einen direkten Speicherzugriff erweitert, wodurch es die Fähigkeit oder Eigenschaft des Holens von komprimierten Instruktionen oder Skalar-Datenwerten direkt aus dem Speicher 801 erhält. Diese enthebt den Mikroprozessor 501 von der Last des Ladens von Code in den Bandbreiten-Vervielfacher 503, soweit nicht Details des Blocks betroffen sind, und erlaubt eine höhere aufrechterhaltene Eingangsbefehls-Rate, als sie von dem Mikroprozessor 901 erzielt werden kann.
- [0054] Die Erfindung realisiert deshalb folgendes:
- - Die Erzeugung von Instruktionen für den Datenprozessor während der Laufzeit oder beim Betrieb durch einen Mikroprozessor oder eine DSP-Einrichtung, anstelle des Aufrufens von mikro-codierten Unterprogrammen (micro-coded routines).
- - Die Verwendung einer Schaltung zur Vervielfachung der Rate, mit welcher Instruktionen für den Datenprozessor erzeugt werden können, und zwar von einem Mikroprozessor oder einer DSP-Einrichtung.
- - Techniken zur Vervielfachung der Instruktions-Erzeugungsbandbreite (instruction generation bandwidth).
- [0055] Die Hauptvorteile dieser Erfindung liegen wie folgt:
- - DPC-Programmier-Flexibilität. Die DPC-Fähigkeiten sind nicht beschränkt auf die Möglichkeiten, welche von einem kundenspezifischen (custom) Micro-Code- Sequencer zur Verfügung gestellt werden.
- - Größe und Leistungsverbrauch. Der neue DPC kann leicht in eine Silizium- Einrichtung implementiert sein, mit einem aktiven Bereich von weniger als 65 mm² bei einem Leistungsverbrauch von 200 mW, verglichen mit 1.248 cm² und 60 W bei der vorhergehenden Generation.
- - Kosten und Zuverlässigkeit. Der neue DPC kann in einer einzigen Silizium- Einrichtung implementiert sein, die einige 10 Pfund kosten würde. Solche Einfach- Device-Lösungen werden sehr viel zuverlässiger sein als die zuvor verwendete Lösung, welche Hunderte von Devices (Einrichtungen) enthielt.
- [0056] Diese Vorteile öffnen eine Anzahl von neuen Anwendungsfeldern. Die Erfindung wird es erlauben, die starke Parallelbearbeitung aus einer "big box" Custom-Einrichtung auf den kartenbasierten OEM-Markt zu verlagern (z. B. VME und PC Karten basierte System-Lieferanten oder Hersteller). Die kleine Größe und der Leistungsverbrauch der neuen DPC wird das Integrieren von Datenprozessoren in die Kernprozessoren von PC und Workstation Computer ermöglichen. Dies wird es in Folge auch nach sich ziehen, daß Desktop-Computer neue Applikationsfelder erschließen. Ein Beispiel wäre in einer 3D-Medizinanwendung mit Grafikverarbeitung und Rückgabemärkten (rendering markets). Aktuelle Systeme zur Unterstützung dieser Anwendungsfelder kosten £1M bis £10M, besitzen jedoch keine Realzeit-Leistungsfähigkeit (real-time performance). Desktop-Computer mit integrierten Datenprozessoren werden in der Lage sein, Realzeit-Leistungsfähigkeit für £10K bis £100K zur Verfügung zu stellen. Schließlich wird die Programmflexibilität und die kleine Größe sowie der geringe Verbrauch des neuen DPC dafür sorgen, daß dieser DPC und die Datenprozessoren integriert werden. Diese Integration würde es ermöglichen, einen neuen Pegel oder eine neue Ebene bzw. einen neuen Standard von Datenprozessor-Leistung zu erreichen, durch Vermeiden der Notwendigkeit des Sendens der Datenprozessor-Instruktionen von dem Chip (dem Device) mit hoher Brandbreite.
- [0057] Die DPC-Programm-Flexibilität wird erreicht, weil der Mikroprozessor indirekt die Datenprozessor-Befehle während der Laufzeit oder "runtime" oder in Laufzeitgeschwindigkeit erzeugt und nicht beschränkt ist auf einfaches Aufrufen von vorgeladenen Mikrocode-Programmen oder -Routinen, welche nur Aufgaben ausführen können, für die die Hardware ausgebildet worden ist.
- [0058] Die Reduktion in Größe und Leistung wird aus folgenden Gründen erhalten:
- - Die Einfachheit der Brandbreiten-Vervielfachung mit ihrer klaren Partitionierung in eine Anzahl von Stufen, jede mit einfacher Steuerung. Sogar das BRE kann realisiert werden mit einem modifizierten RAM-basierten FIFO sowie einem Multiplexer und einigen ladbaren Zählern. Dieses ist weit weniger komplex als der vollständige Mikrocode-Sequencer im Herz der meisten DPC-Gestaltungen.
- - Die Flexibilität und Fähigkeit des Mikroprozessors, die komplexeren DPC- Funktionen auszuführen, wodurch eine spezialisierte Hardware-Lösung für spezielle Funktionen nicht mehr erforderlich ist.
- - Das lineare Hereinholen (linear fetching) von Instruktionen durch den IFE. Dies erlaubt Block/Burst-Modus Speicher-Transfer, welcher die Verwendung einer kleineren Speichertechnologie ermöglicht.
- [0059] Die Kosten des Gesamtsystems werden nicht nur durch die geringe Größe des DPC herabgesetzt, sondern auch durch die Fähigkeit des DPC, mit preiswerteren Speicherbausteinen zu kommunizieren bzw. ein Interface zu schaffen, welche Transfers im Block/Burst-Modus erlauben und deshalb statische Speicherbausteine für hohe Geschwindigkeit nicht mehr erforderlich machen.
- [0060] Das folgende ist ein Beispiel der Verwendung der DPC-Systeme nach den Fig. 5 bis 7. Die Instruktions-Sequenz, welche zu dem Datenprozessor 505 zu leiten ist, ist für eine bestimmte Applikation wie folgt:
- {A, {B}32, C, D}16
- wobei A, B, C und D Datenprozessor-Befehle sind. {..}N bedeutet eine N-fache Wiederholung des Befehls innerhalb der Klammer. A ist parametrisiert mit der Adresse des Operanden 1, C ist parametrisiert mit der Adresse des Operanden 2 und D ist parametrisiert mit der Adresse des Ergebnisses.
- [0061] Jeder unkomprimierte Befehl, der von dem Mikroprozessor 501 erzeugt werden muß, hat das folgende Format:
- < data processor instruction> < IRE ctrl > < BRE ctrl> < BRE parameters> bzw.
- < Datenprozessor-Instruktion> < IRE ctrl > < BRE ctrl> < BRE Parameter> [Diese Zeile ist eine wortgetreue deutsche Übersetzung des Befehlswortes bzw. der Befehlszeile, wie sie in englischer Sprache ohnehin völlig eigenverständlich ist, nachdem Begriffe aus der Datentechnik und Prozessorsignale in der englischen Sprache vom (deutschen) Fachmann in der Regel so verwendet werden, wie sie auch in der englischen Sprache bestehen. Diese Darstellungen sind wesentlich kürzer und eingängiger als ihre entsprechenden umständlichen deutschen Übersetzungen, so daß im folgenden weitgehend darauf aufgebaut wird, daß die jeweiligen englischen Begriffe zur Bezeichnung von Signalen oder Befehlen beibehalten werden und insoweit als "deutsche Übersetzung" für den Fachmann anzusehen sind, der ihnen wesentlich mehr Aussagekraft entnehmen kann, als künstlich erzeugten deutschen Pseudoübersetzungen, deren Gebräuchlichkeit und Verständnis zu wünschen übrig lassen würde.],
- wobei die Datenprozessor-Instruktion bzw. der -Befehl mit 32 bit Feldern angenommen wird (a, b & c), und die Felder b und c durch BRE-Parameter ersetzt werden können oder Default-Werte annehmen können. Das IRE ctrl, BRE ctrl und die BRE-Parameter werden mit zusätzlich benötigten 64 bit angenommen. Daher benötigt jeder nicht komprimierte Befehl 160 bit.
- [0062] Die unkomprimierten Befehle, welche der Mikroprozessor 501 erzeugen muß, lauten wie folgt:
- A(a, b, c) & Start of block & BRE ctrl & BRE parameters for operand 1
- B(a, b, c) & Repeat instruction 32 times
- C(a, b, c) & BRE ctrl & BRE parameters for operand 2
- D(a, b, c) & Repeat block 16 times & BRE ctrl & BRE parameters for result.
- [0063] Wenn vom Mikroprozessor 501 komprimiert, könnten diese Befehle wie folgt lauten:
- A(a) & Start of block & BRE ctrl & BRE parameters for operand 1 (96 bit)
- B(a) & Repeat instruction 32 times (64 bit)
- C(a, c) & BRE ctrl & BRE parameters for operand 2 (128 bit)
- D(a) & Repeat block 16 times & BRE ctrl & BRE parameters for result (96 bit)
- [0064] Um demzufolge 560 (=(1+1·32+1+1)·16) 96 bit breite Datenprozessor-Befehle zu erzeugen, muß der Mikroprozessor 501 einen Block von Instruktionen schreiben, der 12 (= 3+2+4+3) 32 bit breite Worte für oder an den Bandbreiten-Multiplizierer 503 umfaßt.
- [0065] Die 12 Worte mit 32 bit Breite werden von dem IFE 603 über den Input-FIFO 601 angenommen, zusammen mit Markierungen (tags), die von dem Input-FIFO 601 hinzugefügt wurden. Der IFE 603 dekomprimiert die Worte unter Verwendung der Markierungen und erzeugt 4 Instruktionen mit 160 bit Breite. Daher wird diese Stufe um 1,67-fach beschleunigt, was sich errechnet aus 4·160/12·32 = 1,67, in dem Verständnis der Befehlserzeugungs-Bandbreite.
- [0066] Die dekomprimierten 4 Befehle mit 160 bit Breite werden dann von dem BRE 605 akzeptiert, welches den Block von 4 Instruktionen mit 128 bit 16x wiederholt, unter Verwendung der BRE-Steuerinformation und der BRE-Parameter, welche in den dekomprimierten Instruktionen enthalten sind. Daher beschleunigt diese Stufe um 12,8- fach, berechnet aus (16·4·128/(4·160) = 12,8.
- [0067] Die 4 Instruktionen mit 128 bit Breite, welche von dem BRE 605 ausgegeben werden, werden von dem BRE 607 angenommen, welches 35 (= 1+1·32+1+1) Instruktionen mit 96 bit Breite an den Datenprozessor 505 ausgibt, unter Verwendung der IRE-Steuerinformation, welche in den 4 Instruktionen mit einer Breite von 128 bit enthalten ist. Diese Stufe beschleunigt um 6,56-fach, berechnet aus (35·96/(4·128) = 6,56.
- [0068] Folglich hat - für dieses Beispiel - der Bandbreiten-Multiplizierer 503 eine Beschleunigung erreicht, die über 140-fach ist, berechnet aus (= 1.67·12,8·6.56).
- [0069] Dieses Beispiel beleuchtet auch den Zweck des Eingangs-FIFO 601. Wenn die obigen Instruktionen isoliert erzeugt werden, wird vom ersten Mal durch die Schleife nur die Beschleunigung aufgrund des IFE 603 und des IRE 607 erhalten, wenn jedoch eine ähnliche Sequenz von Instruktionen dieser vorhergeht, dann hätte das BRE 605 vorgeladen sein sollen und die volle Beschleunigung wird erhalten.
- [0070] Der uLACTM (micro low-level associative string processor controller, näherungsweise übersetzt mit "kleinem Niedrigebenen Assoziativ-Zeichenfolgen Prozessor-Steuergerät") ist eine Implementierung der Erfindung, entworfen und hergestellt von der Inhaberin zur Verwendung mit ihrem ASP-Datenprozessor, wie zuvor beschrieben (associative string processor, näherungsweise in der Übersetzung eines "assoziativen Zeichenketten-Prozessors"). Der uLAC erzeugt eine Datenprozessor-Instruktion alle 33 ns. Mit Ausnahme des Input-FIFO 1001 und des Ausgangspuffers 1013, ist der uLAC auf einem einzelnen oder einzigen 1 um Silizium- Chip oder -Device implementiert, mit einem aktiven Bereich oder Feld von 65 mm², die 200 mW verbrauchen.
- [0071] Wie in Fig. 9 dargestellt, ist der uLAC 903 zwischen einen Mikroprozessor 901 und den ASP 905 geschaltet. Fig. 10 veranschaulicht ein Blockschaltbild des uLAC 903. In der folgenden vereinfachten Beschreibung des uLAC 903 ist der zuvor mit IRE benannte Abschnitt jetzt "Slot Repetition Engine" (SRE) 1007 genannt, um die Tatsache wiederzugeben, daß Sub-Instruktionen zu dem ASP 905 in Paaren gegeben werden, und der Ausgangspuffer 1013 um ein Skalar-Lese-FIFO 1015 ergänzt worden ist. Zusätzlich ist das Skalar-Schreib-FIFO 1011 (scalar write FIFO) direkt verbunden dem Mikroprozessor 901, statt von dem IFE 1003 gespeist oder beliefert zu werden, und Werte von diesen FIFO 1011 werden in die SRE-Instruktion durch das SRE 1007 eingefügt oder eingemischt, statt durch den BRE 1005.
- [0072] Durch den Input-FIFO 1001 wird der uLAC-Befehl durch Aufteilen oder Splitten in eine Sequenz von Worten mit einer bit-Breite von 32 bit geladen, und jedes Wort auf eine von 16 Adressen geschrieben. Der geschriebene Datenwert und die verwendeten Adressen werden in einen 36 bit Wert kombiniert, der in dem FIFO 1001 gespeichert wird. Die Adresse wird zur Erzeugung einer Markierung (tag) oder Indexstelle verwendet, welche Markierung definiert, welcher Teil der Instruktion bzw. des Befehls den bzw. der Datenwert repräsentiert.
- [0073] Das IFE 1003 liest und dekomprimiert eine Instruktion bzw. einen Befehl von dem Input-FIFO 1001 oder dem Bibliotheksspeicher 1009. Das Dekomprimieren wird ausgeführt durch Verwenden der 4 bit Markierung, um anzugeben, welches Feld oder welcher Bereich der Instruktion die anderen 32 bit repräsentieren. Die Felder oder Bereiche der Instruktion, welche nach dem Ende der Dekompression nicht spezifiziert sind, werden auf ihre Defaults gesetzt oder auf die zuvor geladenen Werte. Das IFE 1003 handhabt zwei Haupttypen von Befehlen: BRE und Bibliotheksspeicher (library memory). BRE-Befehle werden an den BRE 1005 gesendet. Bibliotheksspeicher- Befehle geben dem IFE 1003 an, einen Block von Instruktionen aus dem Bibliotheksspeicher 1009 zu holen, statt sie aus dem FIFO 1001 zu holen (zu "fetchen"). Der BRE 1005 erhält die dekomprimierten Instruktionen.
- [0074] Fig. 11 veranschaulicht Details des BRE 1005. Die Instruktionen von dem IFE 1003 werden in dem Pufferspeicher 1101 gespeichert. Der Pufferspeicher 1101 ist ein modifiziertes FIFO, das normalerweise jede Instruktion löscht, wenn sie ausgegeben war oder wird, die aber auch das Zurückbehalten und wiederholte Ausgeben eines Blocks von Instruktionen ermöglicht. Das hierfür angewendete Verfahren ist das Block- Marker-Register 1103. Dieses Register folgt dem Lese-Pointer 1105 in einer normalen FIFO-Betriebsweise. Um den Anfang des Blocks zu markieren, wird der Block-Marker 1103 festgehalten oder eingefroren, so daß er auf die Adresse zeigt, an welcher der Block beginnt. Um einen Block zu wiederholen, wird der Lese-Pointer 1105 aus dem Block-Marker 1103 geladen. Ein Vergleichen des Schreib-Pointers 1107 und des Block- Markers 1103 erlaubt es, die "FIFO-Gefüllt"-Bedingung (FIFO full) zu erfassen. Ein Vergleich des Schreib- und des Lese-Zeigers erlaubt es, die FIFO-Geleert-Bedingung (FIFO empty) zu erfassen.
- [0075] Der Ausgang des Pufferspeichers 1101 ist in die folgenden Felder unterteilt: <
- ASP und SRE-Befehl> < BRE-Steuerung (Control)> < BRE-Parameter>
- [0076] Das BRE-Steuerfeld treibt oder steuert die Steuerlogik 1109. Die Steuerlogik 1109 erlaubt es einem Block von Befehlen/Instruktionen, in dem Pufferspeicher 1101 zu verbleiben und wiederholt ausgegeben zu werden, für eine bestimmte Anzahl von Iterationen (d. h. einer FOR-Schleife oder -Loop) oder eine nicht-deterministische Anzahl von Iterationen (d. h. eine REPEAT-Schleife oder -Loop). Der externe Status der Leistungen 1111 von dem ASP 905 und der Mikroprozessor 901 werden verwendet, um die REPEAT-Schleife zu beenden. Die Felder aus den BRE-Parametern bestimmen die Anzahl der FOR-Schleifen. Die Steuerlogik 1109 steuert auch das Vor-Laden, das Nach-Inkrementieren und das Nach-Dekrementieren der Register 1113 sfa1, sfa2, sfa3 und sra, wobei das Vor-Laden bei der zweiten und jeder folgenden Iteration eines Blocks unterdrückt wird.
- [0077] Alle vier Register 1113 werden mit Werten geladen, die aus dem Feld der BRE- Parameter stammen. Die Ausgänge der Register sfa1, sfa2 und sfa3 werden in das Operanden/Ergebnis-Adressenfeld der ASP-Instruktion von einem Multiplexer gemultiplext. Der Ausgang oder das Ausgangssignal des sra-Registers wird zum Multiplexen eines Bits von einem BRE-Parameterfeld in die ASP-Instruktion verwendet.
- [0078] Zurück zu Fig. 10, wo das SRE 1007 einen Befehl von dem BRE 1005 erhält und aus ihm eine Sequenz von ASP-Instruktionen generiert. Die Steuerlogik erlaubt es der Länge dieser Sequenz deterministisch zu sein oder fortzufahren, bis oder während eine (beliebige) Bedingung gültig ist. Diese Bedingung könnte der Status eines ASP- Statussignals sein, oder es könnte die Leer-Markierung (Flag) des Skalar-Schreib-FIFO 1011 oder die Voll-Marke des Skalar-Lese-FIFO 1015 sein. Der SRE 1007 gibt dem ASP 905 einen NOP (no-operation) Befehl, wenn ein Befehl von dem BRE 1005 nicht verfügbar ist.
- [0079] Die Daten- und Aktivitätsfelder der erzeugten ASP-Instruktion werden nicht geändert, aber das Steuerfeld kann eine der folgenden Sequenzen sein:
- {a}, {b}
- oder
- {{a}, b},
- wobei "{}" eine Wiederholung von Null oder mehreren Malen bedeutet und "a, b" das ASP-Steuerungspaar ist, aus dem die Sequenz generiert wurde. Faktisch wird eine Null-Längen-Sequenz nicht generiert: Statt dessen wird ein No-Operation-ASP- Steuerungspaar produziert. Die gegenwärtige Realisierung des uLAC unterstützt weder die Sequenz
- {a, {b}}
- noch den allgemeineren Fall von
- {{a}, {b}}.
- [0080] Die SRE 1007 kann auch einen Wert, der dem Skalar-Schreib-FIFO 1011 entnommen wurde, in das Datenfeld des ASP-Befehls multiplexen.
- [0081] Der skalare Lese-FIFO 1015 stellt ein Mittel für den Mikroprozessor 901 zur Verfügung, um auf asynchrone Weise Ergebnisse von dem ASP 905 zu lesen.
- [0082] Der Output-Buffer 1013 stellt ein Mittel für den Mikroprozessor 901 zur Verfügung, um den Status des uLAC 903 oder den Status des ASP 905 zu lesen.
- [0083] Die Steuerungslogik des Output-Buffer 1013 synchronisiert den Mikroprozessor 901 und die ASP 905, bevor sie ein Abschließen des Lesens des ASP-Status zuläßt, indem sie sicherstellt, daß die uLAC 903 alle Befehle abgeschlossen hat, die vor dem Lesen geladen wurden.
- [0084] Das folgende ist eine vollständige Beschreibung der uLAC-Mikroprozessor- Schnittstelle.
- [0085] Die Mikroprozessor-uLAC-Schnittstelle besteht aus den folgenden Registern: [Auch diese Zeilen sind wortgetreue deutsche Übersetzungen des Befehlswortes bzw. der Befehlszeile, wie sie in englischer Sprache ohnehin völlig eigenverständlich sind, nachdem Datentechnik-Begriffe, Register, Operationen, Felder, Befehle, Flags, Counter, Datenmasken und Prozessorsignale in der englischen Sprache vom Fachmann in der Regel so verwendet werden, wie sie auch in der englischen Sprache bestehen. Diese Darstellungen sind wesentlich kürzer und eingängiger als ihre entsprechenden umständlichen deutschen Übersetzungen, so daß im folgenden weitgehend darauf aufgebaut wird, daß die jeweiligen englischen Begriffe zur Bezeichnung von Signalen oder Befehlen beibehalten werden und insoweit als "deutsche Übersetzung" für den Fachmann anzusehen sind, der ihnen wesentlich mehr Aussagekraft beimißt, als künstlich erzeugten deutschen Pseudoübersetzungen, deren Gebräuchlichkeit und Verständnis in der Datentechnik/Prozessortechnik zu wünschen übrig lassen würde.]
- [0086] Auf alle Register wird mit 32 bit breiten Wörtern zugegriffen, egal welche Bit- Felder verwendet werden.
- [0087] Wenn beim Schreiben von BRE-Befehlswörtern zu brelW1 geschrieben wird, verursacht dies, daß der Befehl zur BRE 1005 übermittelt wird. Wenn seit der letzten Befehlsübermittlung eines der anderen Befehlswörter nicht geschrieben wurde, werden für diese Wörter Ausgangswerte (default values) verwendet. Die BRE-Parameter- Wörter behalten ihren letzten geschriebenen Wert.
- [0088] Wenn man das Aufrufen (call), das Laden (load) oder Ausspeichern (dump) eines Bibliotheksspeichers initiiert, werden Bits 3 bis 18 der Daten als Startadresse verwendet, und Bits 19 bis 31 werden als Blocklänge verwendet. Die Blocklänge muß im Bereich 1..8191 liegen. Die Bibliotheksspeicher-Operationen werden wie folgt definiert:
- Call LM => BRE
- Load ISM => LM
- Dump LM => ISM
- [0089] Wenn das Laden (load) im Bibliotheksspeicher initiiert wurde, werden die nächsten N Wörter (wobei N die Blocklänge ist), die auf eines der Register der Adressen 0 bis 8 geschrieben wurden, im Bibliotheksspeicher 1009 gespeichert, zusammen mit der Adresse, an die geschrieben wurde. Wenn N Wörter geschrieben worden sind, wird die normale Operation wieder aufgenommen.
- [0090] Wenn eine Ausspeicherung (dump) im Bibliotheksspeicher initiiert wurde, sollten die N Wörter vom Register bei Adresse 0 gelesen werden, die mit den im Bibliotheksspeicher 1009 gespeicherten Daten korrespondieren. Nachdem jedes Wort gelesen worden ist, kann das Register bei Adresse 1 gelesen werden, welches die diesem Wort zugehörige Adresse enthält.
- [0091] Wenn ein Aufrufen (call) im Bibliotheksspeicher initiiert wurde, werden N Wörter aus dem Bibliotheksspeicher genommen und an die assoziierten Adressen geschrieben. Bibliotheksspeicheraufrufe können bis zu einer Ebene tief verschachtelt werden. Es muß beachtet werden, daß das Initiieren eines Bibliotheksspeicheraufrufs zwei Taktzyklen braucht, einen, um die Startadresse und den Blockzähler zu schreiben, und den anderen, um die Pipeline-Verzögerung in dem Bibliotheksspeicher 1009 zuzulassen.
- [0092] Wenn Daten an den skalaren Schreib-FIFO 1011 geschrieben werden, können mit jedem Wort vier Markierstellen-Bits (tag bits) verbunden werden. Diese werden gesetzt entsprechend der Adresse, zu der die Daten geschrieben werden. Die Verwendung dieser Markierstellen-Bits ist noch nicht definiert worden.
- [0093] Wenn Daten vom skalaren Lese = FIFO 1015 gelesen werden, können vier verbundene Markierstellen-Bits von Register 17 gelesen werden, nachdem jedes Datenwort vom Register 16 gelesen wurde.
- [0094] Das BRE-Register-Steuerungswort wird wie folgt hergestellt. Wenn das AGbus- Steuerwort A das Bit-Muster 10xxxxxxxxxx01xx enthält (entsprechend einem InitSearchOrAddSerial, ClearSerial, InitWriteSerial oder InitRead), werden die oberen 16 Bits der AGbus-Daten wörtlich (literal) verwendet, um BRE-Register-Operationen zu steuern, und sie sind in folgende Felder unterteilt:
- [0095] Das aSel-Feld selektiert, welches BRE-Register durch die alnc-, aDec- und aLoad-Felder angesprochen bzw. behandelt wird, und steuert das Multiplexen der Registerinhalte in den Befehlsstrom wie folgt:
- [0096] Das bSel-Feld selektiert, welches BRE-Register durch die blnc-, bDec- und bLoad-Felder angesprochen bzw. behandelt wird, und steuert das Multiplexen der Registerinhalte in den Befehlsstrom wie folgt:
- [0097] Wenn ein aLoad oder bLoad TRUE ist, wird das selektierte BRE-Register von den BRE-Parameter-Wörtern wie folgt geladen:
- sfa1 brePW1 : Serial field offset 1
- sfa2 brePW1 : Serial field offset 2
- sfa3 brePW1 : Serial field offset 3
- sra brePW1 : Serial field offset 3
- [0098] Das Laden tritt auf, bevor die Registerinhalte in die Datenwörter gemultiplext werden, wobei die Zunahme und Abnahme nachher auftritt.
- [0099] Das srlnv-Feld läßt zu, daß der Ausgang (Output) des skalaren Registers invertiert wird, bevor er in die Daten- oder Befehlswörter gemultiplext wird.
- [0100] Das BRE-Steuerungswort wird in die folgenden Bit-Felder unterteilt:
- [0101] Das Schleifeneingangskennzeichen (loop entry flag) zeigt den Beginn einer Schleife (loop) an und das Schleifenausgangskennzeichen (loop exit flag) zeigt das Ende einer Schleife an. Diese können beide im selben Befehl auftauchen.
- [0102] Die Ladequellen des Schleifenzählers (loop counter) sind wie folgt:
- [0103] Die Schleifenausgangs-Testbedingungen sind wie folgt:
- [0104] Der Schleifenzähler wird mit dem selektierten Anfangswert beim Beginn der Schleife vorgeladen und wird mit jeder Runde der Schleife herabgesetzt. Der Loop Count (Schleifenzähler) wird vor dem Dekrementieren getestet.
- [0105] Der BRE 1005 wartet auf das Ende des letzten Befehls in einer Schleife, bevor er jede der "Match Reply Lines" testet. Er führt ein Schleifen-Rendezvous mit dem ISM durch, bevor er den Zustand des Schleifen-Rendezvous-Kennzeichens (flag) testet.
- [0106] Das SRE-Steuerungswort wird in die folgenden Bit-Felder unterteilt:
- [0107] Die Wiederholungsmodi sind wie folgt:
- [0108] Die Werte von m und n werden vom Wiederholungstyp wie folgt ausgewählt:
- [0109] Man beachte, daß wenn die tr1- oder tr2-Shift-Steuerungen treiben, beide AGbus-Steuerungswörter betroffen sind.
- [0110] Die Wartequellen sind wie folgt:
- [0111] Wenn ein Warten selektiert wird, werden no-ops (keine Operationen) in den Befehlsstrom eingegeben, bis der selektierte Wartezustand befriedigt ist. Dies tritt auf, bevor der damit verbundene Befehl ausgeführt ist.
- [0112] Das Selektieren der Wartequelle verursacht automatisch, daß Daten vom entsprechenden FIFO gelesen oder zum geeigneten FIFO geschrieben werden. Zum Datenlesen ist dies der skalare Lese-FIFO 1015. Zum Datenschreiben wird dies von der Datenquelle selektiert, und zwar wie folgt:
- [0113] Die Masken-Bits für ternäre Schreibedaten können entweder vom geeigneten FIFO genommen werden oder von den wortgetreuen Daten. Dies wird von der Datenmaske selektiert, und zwar wie folgt:
- [0114] Die LAC-Befehle lauten wie folgt:
- [0115] Das SRE & Agbus-Statusregister besteht aus folgenden Bits:
- [0116] Obwohl die vorliegende Erfindung vollständig durch Beispiele unter Bezugnahme auf die beiliegenden Zeichnungen beschrieben wurde, soll angemerkt werden, daß verschiedene Änderungen und Modifikationen für den (Englisch verstehenden) Fachmann dieses technischen Fachgebietes möglich sind, ohne von dem Schutzbereich der vorliegenden Erfindung, wie er in den beiliegenden Ansprüchen niedergelegt ist, abzuweichen.
Claims (48)
1. Ein Bandbreiten-Vergrößerer oder -Vervielfacher (503) zum Vervielfachen oder
Vermehren von Datenprozessor-Befehlen zum Steuern eines
Datenprozessors (505), welcher Bandbreiten-Vergrößerer (503) aufweist:
- ein Eingangsmittel (601) zum Erhalt von Befehlen oder Instruktionen; und
- ein Bandbreiten-Vervielfachungsmittel (603, 605, 607, 611) zum Vervielfachen
von geschachtelten oder ineinander gepackten Blöcken von
Datenprozessor-Befehlen, die in den Instruktionen oder Befehlen enthalten
sind, welche von dem Eingangsmittel (601) empfangen werden, wobei das
Bandbreiten-Vergrößerungsmittel (603, 605, 607, 611) so ausgebildet ist,
geschachtelte (nested) Blocks von Instruktionen zu wiederholen, um die
vervielfachten Instruktionen zu erzeugen, und mit einem
Datenspeicher (701) zum Speichern der geschachtelten Blocks von
Instruktionen, wobei die Struktur des Datenspeichers (701) unabhängig von
der maximalen Zahl von zu vervielfachenden geschachtelten Blöcken ist,
und mit einer Wiederhol-Steuerlogikeinrichtung (705) zum Zurückhalten oder
Beibehalten der geschachtelten Blöcke von Instruktionen in dem
Datenspeicher (701) und zu ihrem wiederholten Senden an den
Datenprozessor (505).
2. Bandbreiten-Vergrößerer (503) nach Anspruch 1, wobei die Datenprozessor-
Befehle oder -Instruktionen solche Befehle/Instruktionen beinhalten, zum Steuern
der Betriebsweise der Bandbreiten-Multipliziereinrichtung (603, 605, 607, 611).
3. Bandbreiten-Vergrößerer (503) nach Anspruch 1 oder 2, wobei der Bandbreiten-
Vervielfacher (603, 605, 607, 611) ein Befehls-Wiederholmittel (607) aufweist, zum
Wiederholen von individuellen Datenprozessor-Befehlen, die in den Befehlen
enthalten sind, welche von dem Eingangsmittel (601) erhalten werden.
4. Bandbreiten-Vergrößerer (503) nach Anspruch 3, soweit abhängig von
Anspruch 2, wobei die von dem Eingangsmittel (601) erhaltenen Instruktionen
Befehls-Wiederholsteuerungs-Information beinhalten, und das Befehls-
Wiederholmittel (607) eingerichtet ist, die Befehls-Wiederhol-Steuerinformation
zum Wiederholen der individuellen Datenprozessor-Befehle/Instruktionen zu
verwenden.
5. Bandbreiten-Multiplizierer (503) nach einem der Ansprüche 1 bis 4, wobei das
Bandbreiten-Multipliziermittel (603, 605, 607, 611) Block-Wiederholmittel (605)
umfaßt, zum Wiederholen eines Blocks oder der verschachtelten Blöcke von
Datenprozessor-Befehlen.
6. Bandbreiten-Multiplizierer (503) nach Anspruch 5, soweit abhängig von
Anspruch 2, wobei die Instruktionen/Befehle, welche von dem
Eingangsmittel (601) erhalten werden, Block-Wiederhol-Steuerinformationen
enthalten, und das Block-Wiederholmittel (605) angepaßt ist, die Block-Wiederhol-
Steuerinformation zum Wiederholen des Blocks oder verschachtelten Blocks von
Datenprozessor-Befehlen/Instruktionen zu verwenden.
7. Bandbreiten-Multiplizierer (503) nach Anspruch 5 oder 6, wobei die
Instruktionen/Befehle, welche von dem Eingangsmittel (601) erhalten werden,
Adressenfelder beinhalten und die Block-Wiederhol-Einrichtung (605) angepaßt
ist, die Adressenfelder entsprechend der Wiederholung des Blockbefehls zu
ändern.
8. Bandbreiten-Multiplizierer (503) nach einem der Ansprüche 1 bis 7, wobei das
Eingangsmittel (601) angepaßt ist, Datenprozessor-Befehle in einem Compound-
Format zu erhalten und das Bandbreiten-Multipliziermittel (603, 605, 607, 611)
angepaßt ist, die Compound-Befehle in ein Nicht-Compound-Format
herauszunehmen oder zu trennen.
9. Bandbreiten-Multiplizierer (503) nach einem der Ansprüche 1 bis 8, weiter
umfassend ein Befehls-Abholmittel (603), zum Dekomprimieren von
komprimierten Instruktionen, die von dem Eingangsmittel (601) erhalten werden.
10. Bandbreiten-Multiplizierer (503) nach Anspruch 9, wobei das Eingangsmittel (601)
angepaßt ist, eine Marke (tag) zu den erhaltenen Instruktionen hinzuzufügen und
das Befehls-Abholmittel (603) angepaßt ist, die Kennzeichnung zum
Dekomprimieren der Instruktionen zu verwenden.
11. Bandbreiten-Multiplizierer (503) nach einem der Ansprüche 1 bis 10, wobei das
Eingangsmittel (601) ein FIFO beinhaltet, um einem Control-Prozessor (501) eine
Steuerung oder Überwachung des Bandbreiten-Vervielfachers (503) zu erlauben,
für einen gegenüber dem Bandbreiten-Vervielfacher (503) und dem
Datenprozessor (505) asynchronen Betrieb.
12. Bandbreiten-Multiplizierer (503) nach einem der Ansprüche 1 bis 11, weiter mit
einem Ausgangspuffer (609) zum Lesen eines Ergebnisses oder eines Status des
Datenprozessors und Schreiben desselben in einen oder zu einem
Steuerprozessor (501).
13. Bandbreiten-Multiplizierer (503) nach einem der Ansprüche 1 bis 12, wobei das
Eingangsmittel (601) angepaßt ist, einen Strom von Daten und
Befehlen/Instruktionen zu erhalten, welche die Datenprozessor-Befehle
beinhalten, und wobei der Bandbreiten-Vervielfacher (603, 605, 607, 611) angepaßt
ist, einen Strom von vervielfachten (multiplizierten) Ausgangsdaten und Befehlen
zu erzeugen, welche die multiplizierten Datenprozessor-Instruktionen für den
Datenprozessor (505) beinhalten.
14. Ein Datenprozessor-Controller zum Steuern eines Datenprozessors (505),
wobei der Controller ein Befehls-Erzeugungsmittel (501) zum Erzeugen von
Datenprozessor-Befehlen mit einer ersten Frequenz oder Rate (P) und ein
Befehls-Beschleunigungsmittel (503) umfaßt, zum Erhalt der Datenprozessor-
Befehle mit der ersten Frequenz oder Rate (P), um die Instruktionen zu
vervielfachen (multiplizieren) und die multiplizierten Instruktionen zu dem
Datenprozessor (505) mit einer zweiten Frequenz oder Rate (M) weiterzuleiten,
welche zweite Rate wesentlich größer als die erste Rate (P) ist, dadurch
gekennzeichnet, daß das Befehls-Beschleunigungsmittel (503) angepaßt ist,
ineinandergepackte oder geschachtelte Blöcke von Instruktionen zu wiederholen,
um die vervielfachten Instruktionen zu erzeugen, und einen Datenspeicher (701)
umfaßt, zum Speichern der ineinandergepackten oder geschachtelten Blöcke von
Instruktionen, wobei die Struktur des Datenspeichers (701) unabhängig von der
maximalen Zahl oder Anzahl von geschachtelten zu vervielfachenden Blöcken ist,
und mit einer Wiederhol-Steuereinrichtung (705) zum Speichern oder
Zurückhalten oder Beibehalten der geschachtelten Blöcke von Instruktionen im
Datenspeicher (701) und zu deren wiederholtem Senden zu dem
Datenprozessor (505) und wobei die Befehls-Beschleunigungseinrichtung (503)
ein Bandbreiten-Vergrößerer (503) nach Anspruch 1 ist.
15. Datenprozessor-Controller nach Anspruch 14, wobei das Befehls-
Erzeugungsmittel (501) angepaßt ist, Blockbefehle in das Befehls-
Beschleunigungsmittel (503) zu schreiben.
16. Datenprozessor-Controller nach einem der vorigen Ansprüche, wobei das
Befehls-Beschleunigungsmittel (503) angepaßt ist, individuelle Befehle zu
wiederholen.
17. Datenprozessor-Controller nach einem der vorigen Ansprüche, wobei die
Datenprozessor-Befehle solche Befehle zum Steuern des Betriebs oder der
Betriebsweise des Befehls-Beschleunigungsmittels (503) beinhalten.
18. Datenprozessor-Controller nach Anspruch 17, wobei die von dem Befehls-
Erzeugungsmittel (501) erzeugten Befehle Wiederhol-Steuerinformation und
Parameter beinhalten.
19. Datenprozessor-Controller nach einem der vorigen Ansprüche, wobei die
Wiederhol-Operation der Befehls-Beschleunigungseinrichtung (503) angepaßt ist,
Blöcke von Instruktionen zu wiederholen, und zwar in einer Anzahl, die einer
deterministischen Anzahl und einer nicht-deterministischen Anzahl entspricht.
20. Datenprozessor-Controller nach einem der vorigen Ansprüche, wobei die
Wiederhol-Operation des Befehls-Beschleunigungsmittels (503) so angepaßt ist,
abhängig von dem Status des Befehls-Erzeugungsmittels (501) und dem Status
des Datenprozessors (505) zu sein.
21. Datenprozessor-Controller nach einem der vorigen Ansprüche, wobei die Befehls-
Beschleunigungseinrichtung (503) zum Erhalt und zum Eingeben eines
unterschiedlichen Skalarwertes in jede oder bei jeder Wiederholung eines Blocks
von Instruktionen angepaßt ist.
22. Datenprozessor-Controller nach einem der vorigen Ansprüche, wobei die Befehls-
Erzeugungseinrichtung (501) angepaßt ist, Datenprozessor-Befehle in einem
Compound-Format zu erzeugen, und die Befehls-Beschleunigungseinrichtung
(503) angepaßt ist, die Compound-Befehle in ein Nicht-Compound-Format
herauszulösen oder abzutrennen.
23. Datenprozessor-Controller nach einem der vorigen Ansprüche, wobei die Befehls-
Erzeugungseinrichtung (501) angepaßt ist, einen komprimierten Strom von
Datenprozessor-Befehlen zu erzeugen und die Befehls-
Beschleunigungseinrichtung (503) angepaßt ist, den Befehlsstrom zu
dekomprimieren.
24. Datenprozessor-Controller nach Anspruch 23, wobei die Befehls-
Beschleunigungseinrichtung (503) angepaßt ist, adress-erzeugte Marken oder
Kennzeichnungen (Tags) zu speichern, zum Zwecke der Dekompression.
25. Datenprozessor-Controller nach einem der vorigen Ansprüche, wobei die Befehls-
Erzeugungseinrichtung (501) ein Mikroprozessor oder ein digitaler
Signalprozessor (DSP) ist.
26. Datenprozessor-Controller nach einem der vorigen Ansprüche, wobei das
Befehls-Erzeugungsmittel (501), das Befehls-Beschleunigungsmittel (503) und der
Datenprozessor (505) einen Co-Prozessor bilden, zum Handhaben von Aufgaben,
die von einem Steuerprozessor delegiert wurden.
27. Datenprozessor-Controller nach Anspruch 26, wobei der Datenprozessor (505)
und der Steuerprozessor in einen gemeinsamen oder als ein einzelner Prozessor
(single processor) integriert sind.
28. Datenprozessor-Controller nach einem der vorigen Ansprüche, wobei das
Befehls-Erzeugungsmittel (501) und das Befehls-Beschleunigungsmittel (503)
eingerichtet oder angeordnet sind, asynchron zu arbeiten.
29. Datenprozessor-Controller nach Anspruch 28, wobei die Befehle von der Befehls-
Erzeugungseinheit (501) die Befehls-Beschleunigungseinheit (503) über ein
Eingangs-FIFO (601) erreichen.
30. Datenprozessor-Controller nach einem der vorigen Ansprüche, wobei die Befehls-
Beschleunigungseinrichtung (503) eine Befehls-Abholeinrichtung (603) aufweist,
angepaßt zu einem linearen Abholen (fetching) von Befehlen.
31. Datenprozessor-Controller zum Steuern eines Datenprozessors (505) nach
Anspruch 14, wobei die Befehls-Erzeugungseinrichtung einen ersten
Prozessor (501) aufweist, zum Bereitstellen oder Ausgeben von Datenprozessor-
Befehlen mit einer ersten Häufigkeit, Rate oder Frequenz (P); und die Befehls-
Beschleunigungseinrichtung eine Vervielfachungs- oder
Multipliziereinrichtung (503) aufweist, zum Erzeugen der multiplizierten
Datenprozessor-Instruktionen für den Datenprozessor (505), und zwar mit einer
zweiten Häufigkeit, Rate oder Frequenz (M), welche größer als die erste (P) ist.
32. Datenprozessor-Controller nach Anspruch 31, wobei die Multipliziereinrichtung
(503) einen Bandbreiten-Multiplizierer (503) aufweist, durch welchen die
Bandbreite der Datenprozessor-Befehle, welche von dem Bandbreiten-
Multiplizierer (503) erzeugt werden, aus oder gegenüber der Bandbreite von vom
ersten Prozessors (501) ausgegebenen Datenprozessor-Befehlen erhöht ist.
33. Datenprozessor-Controller nach Anspruch 32, wobei der erste Prozessor (501)
angepaßt ist, die Datenprozessor-Befehle zu komprimieren und der Bandbreiten-
Multiplizierer (503) angepaßt ist, die komprimierten Datenprozessor-Befehle zu
dekomprimieren.
34. Datenprozessor-Controller nach Anspruch 32 oder 33, wobei der erste
Prozessor (501) angepaßt ist, Steuerinformationen für den Bandbreiten-
Multiplizierer (503) zu den Datenprozessor-Befehlen hinzuzufügen, und der
Bandbreiten-Multiplizierer (503) angepaßt ist, die Datenprozessor-Instruktionen
entsprechend den Steuerinformationen für den Bandbreiten-Multiplizierer (503) zu
vervielfachen (multiplizieren).
35. Datenprozessor-Controller nach Anspruch 32 oder 33, wobei der Bandbreiten-
Multiplizierer (503) angepaßt ist, Status/Ergebnis-Informationen von dem
Datenprozessor (505) und dem ersten Prozessor (501) zu erhalten.
36. Datenprozessor-Controller nach Anspruch 35, wobei der Bandbreiten-
Multiplizierer (503) angepaßt ist, die Datenprozessor-Befehle zu multiplizieren
oder vervielfachen, entsprechend der Status-Information, welche vom
Datenprozessor (505) und dem ersten Prozessor (501) erhalten wird.
37. Datenprozessor-Controller nach einem der Ansprüche 32 bis 36, wobei der erste
Prozessor (501) angepaßt ist, einen Strom von Daten und Instruktionen zu
erzeugen, welche die Datenprozessor-Befehle umfassen, und das
Multipliziermittel (503) angepaßt ist, einen Strom von vervielfachten
Ausgangsdaten und Befehlen zu erzeugen, welche die "multiplizierten"
Datenprozessor-Instruktionen für den Datenprozessor (505) enthalten.
38. Datenprozessor-Controller nach einem der Ansprüche 31 bis 37, wobei der erste
Prozessor (501) angepaßt ist, Datenprozessor-Instruktionen in einem Compound-
Format zu erzeugen und das Multipliziermittel (503) angepaßt ist, die Compound-
Instruktionen herauszutrennen oder abzutrennen in ein Nicht-Compound-Format.
39. Datenprozessor-Controller nach einem der Ansprüche 31 bis 38, wobei der
Datenprozessor (505) ein solcher Datenprozessor ist, der mit einem einzelnen
oder einfachen Befehlsstrom auf mehrfachen Daten arbeitet (SIMD).
40. Datenprozessor-Controller nach einem der Ansprüche 31 bis 39, wobei der erste
Prozessor (501) ein Mikroprozessor oder ein Digital-Signalprozessor (DSP) ist.
41. Datenprozessor-Controller nach einem der Ansprüche 31 bis 40, wobei der
Datenprozessor-Controller und der Datenprozessor (505) in einer einzigen
Siliziumeinrichtung ausgebildet sind.
42. Verfahren zum Steuern eines Datenprozessors (505), welches Verfahren die
folgenden Schritte umfaßt:
- Ausgeben oder Bereitstellen von Datenprozessor-Befehlen mit einer ersten
Häufigkeit, Rate oder Frequenz (P);
- Lesen der Datenprozessor-Befehle;
- Speichern von ineinander gepackten oder geschachtelten (nested) Blöcken
von Datenprozessor-Befehlen in einem Datenspeicher (701);
- Vervielfachen von geschachtelten Blöcken von Datenprozessor-Befehlen;
- Schreiben der vervielfachten Datenprozessor-Befehle in den oder zu dem
Datenprozessor (505) mit einer zweiten Häufigkeit, Frequenz oder Rate (M),
welche größer als die erste (P) ist;
- wobei beim Vervielfachen (dem Multiplikations-Schritt) Datenprozessor-
Befehle wiederholt werden durch wiederholtes Senden der geschachtelten
Blöcke von Befehlen zu dem Datenprozessor, und das Speichern der
geschachtelten Blöcke von Befehlen unabhängig von der maximalen Zahl
von geschachtelten Blöcken ist, die zu Vervielfachen (zu Multiplizieren) sind.
43. Verfahren nach Anspruch 42, wobei die Multiplikation das Erhöhen der Bandbreite
der Datenprozessor-Befehle umfaßt, die mit der zweiten Rate (M) erzeugt werden,
gegenüber oder aus der Bandbreite von Datenprozessor-Befehlen, die mit der
ersten Rate (P) ausgegeben oder vorgegeben werden.
44. Verfahren nach Anspruch 42 oder 43, wobei der Ausgabe-, Aufgabe- oder
Vorgabeschritt (issue step) das Komprimieren von Datenprozessor-Befehlen
umfaßt.
45. Verfahren nach einem der Ansprüche 42 bis 44, wobei das Multiplizieren ein
Dekomprimieren von Datenprozessor-Befehlen enthält.
46. Verfahren nach einem der Ansprüche 42 bis 45, wobei beim Vorgeben oder
Ausgeben (dem Ausgabeschritt) Datenprozessor-Befehle in einem Compound-
Format erzeugt werden, und beim Lesen (dem Leseschritt) die Compound-
Instruktionen in ein Nicht-Compound-Format getrennt oder herausgetrennt
werden.
47. Verfahren nach einem der Ansprüche 42 bis 46, wobei beim Auf- oder Ausgeben
Befehle ausgegeben werden, die Instruktionen beinhalten zum Steuern des
Betriebs oder der Betriebsweise eines Bandbreiten-Vergrößerungsmittels
(603, 605, 607, 611).
48. Prozessor-gesteuertes Gerät oder eine Einrichtung, mit einem Datenprozessor-
Controller nach einem der Ansprüche 14 bis 41 oder einem Bandbreiten-
Multiplizierer (503) als Bandbreitenvergrößerer nach einem der Ansprüche 1 bis
13, oder so konfiguriert, um entsprechend dem Verfahren nach einem der
Ansprüche 42 bis 47 zu arbeiten.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB9710749A GB2325535A (en) | 1997-05-23 | 1997-05-23 | Data processor controller with accelerated instruction generation |
PCT/GB1998/001461 WO1998053408A1 (en) | 1997-05-23 | 1998-05-21 | Processor controller for accelerating instruction issuing rate |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69804444D1 DE69804444D1 (de) | 2002-05-02 |
DE69804444T2 true DE69804444T2 (de) | 2002-11-07 |
Family
ID=10813005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69804444T Expired - Lifetime DE69804444T2 (de) | 1997-05-23 | 1998-05-21 | Prozessor -steuergerät zur beschleunigung der befehlsausgaberate |
Country Status (7)
Country | Link |
---|---|
US (1) | US6625722B1 (de) |
EP (1) | EP0983556B1 (de) |
JP (1) | JP3851989B2 (de) |
AU (1) | AU7538898A (de) |
DE (1) | DE69804444T2 (de) |
GB (1) | GB2325535A (de) |
WO (1) | WO1998053408A1 (de) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4913955B2 (ja) * | 2000-05-29 | 2012-04-11 | 株式会社ガイア・システム・ソリューション | データ処理装置 |
US8458754B2 (en) | 2001-01-22 | 2013-06-04 | Sony Computer Entertainment Inc. | Method and system for providing instant start multimedia content |
FR2825810A1 (fr) * | 2001-06-06 | 2002-12-13 | Koninkl Philips Electronics Nv | Dispositif electronique a processeur pipeline utilisant un compactage de code et procede de gestion d'un tel processeur |
DE10206830B4 (de) * | 2002-02-18 | 2004-10-14 | Systemonic Ag | Verfahren und Anordnung zur Zusammenführung von Daten aus parallelen Datenpfaden |
US8837528B2 (en) | 2005-02-25 | 2014-09-16 | Sony Computer Entertainment America Llc | Data distribution by proxy |
JP2006338538A (ja) * | 2005-06-03 | 2006-12-14 | Nec Electronics Corp | ストリームプロセッサ |
JP5154119B2 (ja) * | 2007-03-26 | 2013-02-27 | テレフオンアクチーボラゲット エル エム エリクソン(パブル) | プロセッサ |
US9483405B2 (en) | 2007-09-20 | 2016-11-01 | Sony Interactive Entertainment Inc. | Simplified run-time program translation for emulating complex processor pipelines |
JP5511299B2 (ja) * | 2009-10-16 | 2014-06-04 | 三菱電機株式会社 | データ演算装置の制御回路及びデータ演算装置 |
US8433759B2 (en) | 2010-05-24 | 2013-04-30 | Sony Computer Entertainment America Llc | Direction-conscious information sharing |
CN105431819A (zh) * | 2013-09-06 | 2016-03-23 | 华为技术有限公司 | 异步处理器消除亚稳态的方法和装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4807115A (en) * | 1983-10-07 | 1989-02-21 | Cornell Research Foundation, Inc. | Instruction issuing mechanism for processors with multiple functional units |
US5303356A (en) * | 1990-05-04 | 1994-04-12 | International Business Machines Corporation | System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag |
GB2263565B (en) * | 1992-01-23 | 1995-08-30 | Intel Corp | Microprocessor with apparatus for parallel execution of instructions |
US5511212A (en) * | 1993-06-10 | 1996-04-23 | Rockoff; Todd E. | Multi-clock SIMD computer and instruction-cache-enhancement thereof |
US5682520A (en) * | 1993-09-20 | 1997-10-28 | California Institute Of Technology | Array processor for morphological image processing |
GB2284492B (en) * | 1993-12-06 | 1998-05-13 | Graeme Roy Smith | Improvements to computer control units |
US5524223A (en) | 1994-01-31 | 1996-06-04 | Motorola, Inc. | Instruction accelerator for processing loop instructions with address generator using multiple stored increment values |
US5649135A (en) * | 1995-01-17 | 1997-07-15 | International Business Machines Corporation | Parallel processing system and method using surrogate instructions |
US5709209A (en) * | 1996-03-29 | 1998-01-20 | Siemens Medical Systems, Inc. | Ultrasound signal processing system |
US5819058A (en) * | 1997-02-28 | 1998-10-06 | Vm Labs, Inc. | Instruction compression and decompression system and method for a processor |
-
1997
- 1997-05-23 GB GB9710749A patent/GB2325535A/en not_active Withdrawn
-
1998
- 1998-05-21 US US09/423,917 patent/US6625722B1/en not_active Expired - Lifetime
- 1998-05-21 JP JP55012598A patent/JP3851989B2/ja not_active Expired - Lifetime
- 1998-05-21 WO PCT/GB1998/001461 patent/WO1998053408A1/en active IP Right Grant
- 1998-05-21 AU AU75388/98A patent/AU7538898A/en not_active Abandoned
- 1998-05-21 EP EP98922924A patent/EP0983556B1/de not_active Expired - Lifetime
- 1998-05-21 DE DE69804444T patent/DE69804444T2/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US6625722B1 (en) | 2003-09-23 |
EP0983556B1 (de) | 2002-03-27 |
EP0983556A1 (de) | 2000-03-08 |
JP2001525966A (ja) | 2001-12-11 |
WO1998053408A1 (en) | 1998-11-26 |
JP3851989B2 (ja) | 2006-11-29 |
DE69804444D1 (de) | 2002-05-02 |
GB2325535A (en) | 1998-11-25 |
AU7538898A (en) | 1998-12-11 |
GB9710749D0 (en) | 1997-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69033444T2 (de) | Signalprozessor mit einer arithmetischen und logischen Einheit und einer Multiplizier-Akkumulatoreinheit, die gleichzeitig betrieben werden können | |
DE69424115T2 (de) | Rechnersystem und Verfahren zur Verarbeitung von Vektordaten | |
DE69709078T2 (de) | Verwaltungssystem zur datenverarbeitung | |
DE19914210B4 (de) | Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung | |
DE69017178T2 (de) | Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung. | |
DE69132675T2 (de) | Parallelfliessband-Befehlsverarbeitungssystem für sehr lange Befehlswörter | |
DE3587591T2 (de) | Mikroprozessor für Forth-ähnliche Sprache. | |
DE3586899T2 (de) | Instruktionsvorgriffsystem fuer bedingte sprungbefehle in einer zentralen verarbeitungseinrichtung. | |
DE69534113T2 (de) | Kompression der Befehlswörter eines Rechners | |
DE69033398T2 (de) | Rechnerarchitektur mit Mehrfachbefehlsausgabe | |
DE68927492T2 (de) | Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten | |
DE19782200B4 (de) | Maschine zur Videovollbildaufbereitung | |
DE102009039231B4 (de) | Einzeldurchgang-Kachelung | |
DE68927911T2 (de) | Datenverarbeitungssystem | |
DE69418146T2 (de) | Temporärer Registersatz für einen superpipeline-superskalaren Prozessor | |
DE69804444T2 (de) | Prozessor -steuergerät zur beschleunigung der befehlsausgaberate | |
DE19735348A1 (de) | Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern | |
DE102008005515A1 (de) | Virtuelle Architektur und virtueller Befehlssatz für die Berechnung paralleler Befehlsfolgen | |
DE60006021T2 (de) | VLIW-Prozessor und Programmkomprimierungsgerät and -verfahren | |
DE19545179A1 (de) | Vektorspeicheroperationen | |
DE102008059371A1 (de) | Funktionseinheit für verschmolzenes Multiplizieren und Addieren | |
DE69230626T2 (de) | Informationsverarbeitungssystem mit der Fähigkeit zum Betreiben von mehreren Vektorpipelines in zwei unterscheidlichen Wirkungsweisen | |
DE19506990A1 (de) | Einrichtung zur Datenumleitung in einem Prozessor mit mehreren Ausführungseinheiten | |
DE19926538A1 (de) | Hardware und Betriebsverfahren | |
DE2758830A1 (de) | Rechenvorrichtung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |