DE3750625T2 - Datenverarbeitungssystem mit zwei Ausführungseinheiten. - Google Patents
Datenverarbeitungssystem mit zwei Ausführungseinheiten.Info
- Publication number
- DE3750625T2 DE3750625T2 DE3750625T DE3750625T DE3750625T2 DE 3750625 T2 DE3750625 T2 DE 3750625T2 DE 3750625 T DE3750625 T DE 3750625T DE 3750625 T DE3750625 T DE 3750625T DE 3750625 T2 DE3750625 T2 DE 3750625T2
- Authority
- DE
- Germany
- Prior art keywords
- instruction
- registers
- outputs
- unit
- instructions
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims description 21
- 230000015654 memory Effects 0.000 claims description 22
- 230000006870 function Effects 0.000 claims description 15
- 125000004122 cyclic group Chemical group 0.000 claims description 11
- 238000013507 mapping Methods 0.000 claims description 2
- 238000000034 method Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 6
- 241000518994 Conta Species 0.000 description 4
- 238000013459 approach Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000002860 competitive effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 108090000623 proteins and genes Proteins 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001960 triggered effect 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
- Die vorliegende Erfindung bezieht sich im allgemeinen auf Computer mit reduziertem Befehlsvorrat (RISC) und insbesondere darauf, die Leistung von RISC Prozessoren zu steigern, die wenig zusätzliche Hardware benutzen. Zwei Beispiele zur RISC Technologie werden im einzelnen in den Artikeln (1) "The 801 Minicomputer" von George Radin und (2) "RISC I: A reduced Instruction Set VLSI Computer" von Patterson und Sequin dargelegt. Die vollständige bibliographische Information für diese beiden Artikel wird nachstehend ausführlicher dargelegt.
- In der Halbleiterindustrie zeigen aktuelle Entwicklungen an, daß es bei der Übergroßintegration (VLSI) zwei Wege gibt, die Mikroprozessor-Designer einschlagen können. Der erste Weg besteht darin, komplexere Mikroprozessoren zu entwickeln. Die Komplexität wird in die Hardware eingebaut, da mehr Funktion von der Software in die Hardware bewegt wird. Der zweite Weg besteht darin, schnellere Prozessoren zur Durchführung von einfachen Funktionen zu entwickeln. Bei diesem Weg wird zur Durchführung der meisten Funktionen eine Software benötigt. Die beiden genannten Artikel befürworten den zweiten Weg.
- VLSI Schaltkreise von größerer Komplexität lassen Designer weniger kostspielige Alternativen zu teurer Software verwenden. Lösungen über die Hardware sorgen für schnellere Ausführung. Hardware-Implementierungen von Software-Funktionen ermöglichen es Programmierern, höhere Programmiersprachprogramme zu entwickeln, die knapp abgefaßt, effizient und einfacher zu schreiben, zu kompilieren und zu korrigieren sind.
- Die Nachteile bei dem ersten Weg liegen darin, daß eine größere Komplexität mehr Zeit für die Konzeption erfordert, das Risiko für mögliche Fehler bei der Konzeption vergrößert wird und verschiedene Implementierungen erforderlich werden. Diese Kategorie von Computern wird konventioneller Rechner (CISC) genannt.
- Eine einzigartige Annäherung an die Systemarchitektur wurde durchgeführt, indem sich an dem zweiten Weg orientiert wurde; d. h. an einem RISC System. Das Herz dieser Konzeption ist ihre CPU. Die Konzeption des Systems ermöglicht es dem Anwender, die Hauptfunktionen der CPU zu nutzen. Die Organisation unterscheidet sich von der von CISC Systemen.
- Zentralrechner (CPU's) im mittleren Bereich werden im allgemeinen als Mikroprozessoren konzipiert, welche die Architektur der CPU emulieren. Dies macht es erforderlich, jeden Befehl in einzelnen Mikrocomputer-Befehlen darzustellen. Die Anzahl von Befehlen, die zur Ausführung jedes CPU Befehls erforderlich ist, variiert in Abhängigkeit der Leistung des zugrunde liegenden Mikroprozessors, der Komplexität der CPU Architektur und der Anwendung. Ein IBM 51370, Modell 168, benötigt zum Beispiel drei bis sechs Zyklen pro 5/370 Befehl.
- Unterschiedliche Anwendungsarten haben unterschiedliche Befehlsarten. Eine CAD Anwendung benutzt zum Beispiel Fließkommabefehle und eine Prüfverarbeitungsanwendung benutzt Dezimalarithmetik. Bei den meisten Anwendungen gibt es eine Ähnlichkeit in den am meisten verbreiteten Anwendungen. Diese Befehle tendieren zu einfacheren Funktionen, wie zum Laden, Speichern, Verzweigen, Vergleichen, zur Ganzzahlarithmetik und zum logischen Verschieben. Diese Funktionen sind im allgemeinen in dem Mikroprozessor verfügbar.
- Um die verfügbaren Funktionen besser nutzen zu können, kann der für den Computer mit reduziertem Primitivbefehlsvorrat (PRISM) entwickelte Primitivbefehlssatz direkt mit der Hardware ausgeführt werden. Jeder Primitivbefehl benötigt genau einen Operationszyklus. Komplexe Funktionen werden im "Mikrobefehlscode", ähnlich der CISC Implementierungen, ausgeführt. Das heißt, diese werden mittels Software-Unterprogrammen realisiert, welche die Primitivbefehlssätze ausführen.
- In einer CISC Implementierung entscheidet der Architekt im voraus, welche Funktionen am häufigsten genutzt werden. Die dezimale Multiplizierfunktion ist zum Beispiel im Steuerspeicher vorhanden, während sich das Unterbrechungs-Steuerungsprogramm im Hauptspeicher befindet. Bei einem Befehlscache diktiert häufiger Gebrauch, welche Funktionen schneller verfügbar sind.
- Diese Annäherung sieht Fähigkeiten bei Grenzfällen vor, die der einer CPU der mittleren Preisklasse entsprechen, in der die komplexen Befehle mikroprogrammiert wurden. Indem jedoch der Primitivbefehlsvorrat mit dem bereiten Kompilierer gewählt wird, sind weit weniger Zyklen erforderlich.
- Die oben dargestellte Information beabsichtigt, die Architektur des RISC Prozessors aufzuzeigen. Ausführlichere Informationen über andere Anwendungen und veröffentlichte Patente enthalten:
- 1) Die US Patentschrift Nummer 4,589,087, die am 13. Mai 1986 von M.A. Auslander, J. Crocke, H.T. Hao, P.W. Markstein und G. Radin über "Condition Register Architecture For A Primitive Instruction Set Machine" veröffentlicht wurde.
- 2) Die US Patentschrift Nummer 4,589,065, die am 13. Mai 1986 von M.A. Auslander, J. Croke, H. Hao, P.W. Markstein und G. Radin über "Mechanism for Implementing One Machine Cycle Executable Trap Instructions in a Primitive Instruction Set Computing System" veröffentlicht wurde.
- 3) Die europäische Patentanmeldung EP-A-130 381 mit dem Titel "Mechanism for Implementing One Machine Cycle Executable Branch-On-Bit-In-Any-Register Instructions in a Primitive Instruction Set Computing System" von M. A. Auslander, H. Hao, P. W. Markstein, G. Radin und W. S. Woreley.
- 4) Die US Patentschrift Nummer 4,569,016, die am 4. Februar 1986 von H. Hao, P.W. Markstein und G. Radin über "Mechanism for Implementing One Machine Executable Mask und Rotate Instructions in a Primitive Instruction Set Computing System" herausgegeben wurde.
- 5) Die europäische Patentanmeldung EP-A-148975 mit dem Titel "Internal Bus Architecture for a Primitive Instruction Set Machine" von J. Cocke, D. Fiske, L. Pereira und G. Radin.
- Die Technologie der RISC Computer wird in zwei Artikeln beschrieben. Es sind dies:
- 1) "Der 801 Minicomputer" von George Radin in ACM SIGPLAN NOTICES, Vol. 17, No. 4, April 1982, auf den Seiten 39-47 veröffentlicht.
- 2) "RISC 1: a Reduced Instruction Set VLSI Computer" in the IEEE 8 th Annual Symposium on Architecture Conference Proceedings of May 12-14, 1981, auf den Seiten 443-449.
- Der RISC Computer ist ein befehlsgesteuerter Digitalrechner. Diese Art von Computer bearbeitet Daten in einer Benutzerspezifikation. Die Benutzerspezifikationen sind in einem Programm organisiert, das aus Befehlsgruppen besteht.
- Das Programm wird von einem Kompilierer verarbeitet, der einen Objektprogramm-Kartensatz erstellt. Der Objektprogramm-Kartensatz wird mit einem Satz von anderen Objektprogramm-Kartensätzen verknüpft, um ein ausführbares Modul in Maschinensprache zu erstellen. Die Maschinensprache ist die Information, welche die besondere Hardware als von ihr auszuführende Befehle erkennt.
- Die ersten Kompilierer waren hauptsächlich daran interessiert, die Sprache zu übersetzen, weil der Benutzer die Anwendung in Maschinensprache entwickelte. Als die Kompilierer komplexer wurden, begannen sie, Optimierungstechniken zu verwenden, damit Programme effizienter und schneller ausgeführt werden konnten. Als die Optimierungstechniken raffinierter wurden, begannen sie, die Zielarchitektur noch mehr zu berücksichtigen.
- Bis zum RISC Computer gab es gegenüber Kompilierern immer einen Nachteil. Die Maschinenarchitektur wurde entwickelt, um die Befehle in Maschinensprache zu optimieren. Mit dem Aufkommen des RISC Computers wurde der Kompilierer bei der Entwicklung des Computers berücksichtigt. Der RISC Computer läuft optimal mit kompilierten Verfahren. Die von dem Kompilierer erzeugten Befehle sind ausgelegt, um nacheinander einzeln oder zu mehreren zugleich aktiviert zu werden, um den von dem Benutzer definierten Vorgang auszuführen.
- Ein typischer Datenfluß in einem RISC Prozessor besteht aus zwei fundamentalen Ausführungseinheiten, der Recheneinheit (ALU) und der Einheit zur zyklischen Vertauschung (Verschiebeeinheit). Befehle werden nacheinander ausgeführt, indem Ausgabeports gemeinsam benutzt werden und gleichzeitig eine der Einheiten benutzt wird. Die meisten Befehle benutzen nur eine der Ausführungseinheiten.
- Einige RISC Systeme haben die Möglichkeit zur Verzweigungsvoraussage. In einem Verzweigungsvoraussagesystem wird ein Befehl aus dem Speicher abgerufen und vordecodiert, um nach Verzweigungsbefehlen zu suchen. Wenn es sich bei dem Befehl um eine Verzweigung handelt, wird die Verzweigung verarbeitet. Andernfalls wird der Befehl an den Prozessor gesendet. Der Prozessor sieht niemals einen Verzweigungsbefehl.
- Es ist bekannt, daß hohe Leistung durch Verdoppelung der Recheneinheiten erreicht werden kann, wobei jede der Recheneinheiten identische Operationen synchron durchführt. Diese Technik wird in erster Linie in technisch-wissenschaftlichen Vektorprozessoren verwendet und ist sehr kostspielig. Prinzipien und Verfahren dieser Technik werden zum Beispiel in der US Patentschrift Nr. 3,346,851 von James E. Thornton und Seymour R. Cray behandelt.
- Es ist außerdem bekannt, daß einige Funktionsarbeitseinheiten in unabhängige, unterschiedliche Einheiten getrennt werden können, damit gleichzeitig verschiedene Operationen in der gleichen Information durchgeführt werden können. Dies ist wichtig, da viele Operationen sich zur Spezialisierung zur Verfügung stellen, zum Beispiel zur Überprüfung und zum Vergleich von Arbeiten, die gerade durchgeführt werden. Durch Aufteilung dieser Arbeit ist es möglich, diese spezialisierten Operationen zur gleichen Zeit durchzuführen wie andere Operationen aufgetreten sind und die Auswirkung auf die Leistung des Prozessors zu vermeiden, indem diese Operationen zu einem anderen Zeitpunkt ausgeführt werden. Diese Technik wird ausführlicher in der US Patentschrift Nr. 3,969,702 von Giancarlo Tessera behandelt.
- In dem Artikel in IEEE Transactions on computers, vol. C-27, no. 3, March 1978, pages 270-275, IEEE, New York, USA, beschreibt L.C. HIGBIE: "Overlapped Operation with microprogramming" ein Datenverarbeitungssystem mit mehreren, verschiedenen Ausführungseinheiten sowie mit separaten Steuerpfaden, die jeder Einheit entsprechen. Extra Bits werden dem Befehlswort hinzugefügt, um den Konkurrenzbetrieb zum Zugriff auf die Register zu regeln. Es ist auch bekannt, daß eine Befehlspipeline benutzt werden kann, um Befehle in einem Zeit-Offset zwischen Befehlen zu verarbeiten. Der Offset ist ein ganzzahliges Vielfaches der Zykluszeit von den Funktionseinheiten, welche die Befehle ausführen. Der Offset wird an Befehle angepaßt, die zwei Speicherzugriffe pro Ausführung verwenden und jeder Zugriff einen Zyklus erfordert. Diese Technik wird ausführlicher in der US Patentschrift Nr. 3,840,861 von Gene M. Amdahl, Glen D. Grant und Robert M. Maier behandelt.
- Eine Anzahl von Techniken zur Befehlsverarbeitung ist in Systemen in dem Stand der Technik bekannt; es besteht jedoch ein Bedarf zur Verbesserung des Preis-/Leistungsverhältnisses für RISC Prozessorsysteme.
- Deshalb ist es ein Gegenstand der vorliegenden Erfindung, eine rentable Technik zur Erhöhung der Prozessorleistung eines RISC Prozessors zu liefern.
- Ein weiterer Gegenstand der Erfindung ist es, einen verbesserten RISC Computer bereitzustellen, der in der Lage ist, Befehle in der doppelten Geschwindigkeit von bekannten RISC Computern auszuführen.
- Noch ein weiterer Gegenstand dieser Erfindung ist es, eine neue RISC Architektur vorzusehen, die im wesentlichen die Verarbeitungsgeschwindigkeit erhöht, jedoch etwas zusätzlichen Platz auf einem Chip erfordert.
- Gemäß der in Anspruch 1 ausgeführten Erfindung werden diese Gegenstände erfüllt, indem ein verbesserter RISC Prozessor geliefert wird, der durch die Einrichtung zum Trennen von Befehlen in zwei Hauptkategorien von Befehlen und zur gleichzeitigen Durchführung von zwei Befehlen (einer pro Kategorie) gekennzeichnet wird. Der RISC Prozessor wird in zwei Ausführungseinheiten aufgeteilt, die in der Lage sind, einen Teilsatz aus dem gesamten Befehlssatz zu verarbeiten. Der gesamte Befehlsvorrat kann in Befehlskategorien aufgeteilt werden, die in einer der beiden Ausführungseinheiten ausgeführt werden. Ein besonderer Vorteil der RISC Architektur liegt darin, daß die meisten Befehle in einem Zyklus ausgeführt werden. Die Erfindung sieht die erforderliche Hardware vor, die dafür sorgt, daß die Befehle unter den beiden Ausführungseinheiten aufgeteilt werden. Die Durchführung erfolgt gleichzeitig in den Ausführungseinheiten. Die Hardware enthält einen Befehlspuffer, Steuer-Festwertspeicher, Steuerregister und Befehlsausführungseinheit. Die Befehlsausführungseinheit enthält eine Registerdatei mit Ein- und Ausgaben, Zwischenspeicherregister, einer ersten und zweiten Ausführungseinheit und Ausgaberegister. Die erste Ausführungseinheit enthält eine Recheneinheit und die zweite Ausführungseinheit enthält einen Rotator und Maskengenerator.
- Die Prozessorpipeline beginnt mit dem Decodieren des Befehls. Während der Befehlsdecodierung wird auf die Registerdatei zugegriffen und die aufgerufenen Operanden werden in Zwischenspeicherregistern verriegelt, parallel zur Decodierung des Befehls durch die beiden Steuer-Festwertspeicher ROS's und der Verriegelung der Befehlsinformation in den beiden Sätzen der Steuerregister. Als nächstes werden die Zwischenspeicherregister einer der beiden Ausführungseinheiten zugeführt. Die Ergebnisse der Ausführung werden in die Registerdatei geschrieben, wenn diese in dem Ablegebereich der Pipeline sind. Der Steuer-Festwertspeicher ROS und die Register werden in zwei Sätzen aufgeteilt. Jeder Satz versorgt eine der Ausführungseinheiten. Während der Befehlsdecodierung werden der besondere Satz des Steuer-Festwertspeichers ROS und der Register auf der Basis ausgewählt, welche Ausführungseinheit die besondere Befehlskategorie ausführt, welche der Befehl darstellt. Wenn auf die Registerdatei zweimal pro Zyklus zugegriffen werden kann, sind keine zusätzlichen Ausgabeports erforderlich; andernfalls sind zusätzliche Ausgabeports und ein Eingabeport erforderlich, um für die parallele Ausführung von beiden Ausführungseinheiten zu sorgen.
- Zusätzliche arithmetische Funktionen, zum Beispiel Multiplikatoren und Divisoren und eine zusätzliche ALU können zu jeder der Ausführungseinheiten hinzugefügt werden, um die Arbeitslast gleichmäßiger zu verteilen. Adreßberechnungen können aus der ALU ausgeladen werden und außerdem die Verteilung der Arbeitslast ausgleichen, indem ein zusätzlicher Addierer zu einer der Ausführungseinheiten hinzugefügt wird. Ein Kompilierer, der entwickelt wurde, um die Befehlsausführung zwischen beiden Ausführungseinheiten gleichmäßiger aufzuteilen, kann auch zu einer deutlichen Erhöhung der Prozessorgeschwindigkeit beitragen.
- Die Erfindung wird durch niedrige Kosten, einfaches Design und Minimierung der zusätzlichen Hardware gekennzeichnet, die zur Erhöhung der Prozessorgeschwindigkeit erforderlich ist.
- Das Vorhergehende und andere Gegenstände, Aspekte und Vorteile der Erfindung werden besser anhand der ausführlichen Beschreibung eines bevorzugten Ausführungsbeispiels der Erfindung mit Bezug auf die Zeichnungen verstanden, in denen
- Fig. 1 ein Blockdiagramm eines sequentiell arbeitenden RISC Prozessors und den Stand der Technik zeigt;
- Fig. 2 ein Blockdiagramm eines parallel arbeitenden RISC Prozessors und das erste Ausführungsbeispiel der Erfindung zeigt;
- Fig. 3 ein Blockdiagramm eines parallel arbeitenden RISC Prozessors und das erste Ausführungsbeispiel mit einem zusätzlichen Multiplikator und Divisor zeigt;
- Fig. 4 ein Blockdiagramm eines sequentiell arbeitenden RISC Prozessors mit Adreßgenerierung während der Decodierung und den Stand der Technik zeigt;
- Fig. 5 ein Blockdiagramm eines parallel arbeitenden RISC Prozessors und das zweite Ausführungsbeispiel der Erfindung zeigt;
- Fig. 6 ein Blockdiagramm eines parallel arbeitenden RISC Prozessors und das zweite Ausführungsbeispiel der Erfindung mit Registerdatei zeigt, auf die in einem Zyklus zweimal zugegriffen werden kann; und
- Fig. 7 ein Blockdiagramm eines parallel arbeitenden RISC Prozessors und das dritte Ausführungsbeispiel zeigt.
- In den einzelnen Figuren der Zeichnungen geben gleiche Referenznummern identische oder funktionell ähnliche Elemente an. Mit Bezug nun auf die Zeichnungen und insbesondere auf Fig. 1, die ein Diagramm eines sequentiell arbeitenden RISC Prozessors zeigt. Dieser Prozessor entspricht dem Stand der Technik, wie dieser in dem Hintergrund der Erfindung beschrieben wurde. Der Decodierungsfluß eines Befehls ist auf der linken Seite dargestellt, während die Befehlsausführung auf der rechten Seite gezeigt wird. Der Befehl fließt aus dem Befehlspuffer 10 in den Steuer-Festwertspeicher (ROS) 12 zu den Steuerregistern 14. Wie für den Fachmann offensichtlich ist, wird die Adresse des besonderen Mehrzweckregisters, in welchem die unterschiedlichen Operanden zu speichern sind oder aus dem diese abzurufen sind, in den unterschiedlichen Feldern des Befehlspuffers 10 spezifiziert.
- Die Basis CPU enthält einen Eingabeport 15 für Daten, die aus dem Speicher in die Mehrzweckregisterdatei mit fünf Ports fließen, welche in diesem Beispiel zweiunddreißig einzelne Register enthält. Wie ein normaler Fachmann erkennen wird, kann die Registerdatei verschiedene Kombinationen von Registern und Ports enthalten und diese Lösung noch unterbringen. Der zweite Eingabeport 17 enthält die Ergebnisse von dem Befehl aus einer der beiden Ausführungseinheiten. Die beiden Basis-Ausführungseinheiten sind für die Ausführung der Befehle des Prozessors einschließlich Addieren, Multiplizieren, Dividieren, Verschieben, Laden und Speichern verantwortlich. In Fig. 1 sind die Ausführungseinheiten in zwei Funktionseinheiten aufgeteilt. Die Ausführungseinheit I enthält die ALU 24, während die Ausführungseinheit II den Rotator 26 enthält. Die beiden Eingabeports 15 und 17 in der Registerdatei 16 geben den besonderen Befehl an, der die in dem Befehl bezeichneten Operanden darstellt. Die meisten Befehle verwenden nur eine der beiden Ausführungseinheiten. Das heißt, daß eine der beiden Ausführungseinheiten inaktiv ist, während die andere arbeitet.
- Die Prozessorpipeline beginnt mit der Decodierung des Befehls. Während der Befehlsdecodierung wird auf die Registerdatei zugegriffen und die abgerufenen Operanden werden in den Zwischenspeicherregistern 18, 20 und 22 verriegelt, parallel zu der Decodierung des Befehls durch den Steuer-Festwertspeicher ROS 12 und der Verriegelung der Befehlsinformation in den Steuerregistern 14. In der nächsten Stufe des Ausführungszyklus werden die Register 18, 20 und 22 einer der beiden Ausführungseinheiten zugeführt. Das Ergebnis der Ausführung wird in dem Ausgaberegister 36 verriegelt. Im folgenden Zyklus wird die Registerinformation im Ablegebereich der Pipeline in die Registerdatei 16 geschrieben.
- Die Befehlsinformation fließt aus der Registerdatei 16 über die Ausgabeports 19, 21 bzw. 23 in die Zwischenspeicherregister 18, 20 und 22. Die Zwischenspeicherregister 18 und 20 geben die Information an die Formatisierungsprogramme 32 und 33. Die Formatisierungsprogramme sind für das Auffüllen mit Nullen oder Einsen zuständig, um die arithmetischen oder logischen Ausführungen vorzubereiten. Die Formatisierungsprogramme 32 und 33 gelangen in die Recheneinheit (ALU) 24, die zwei Operandenbefehle durchführt und die Ergebnisse an den Multiplexer 25 liefert. Der Rotator 26 führt gemeinsam mit dem Maskengenerator 31 und der Maskenlogik 34 eine in einem Maschinenzyklus ausführbare Maske und zyklische Vertauschungsoperation aus, die ausführlicher in der Patentschrift Nr. 4,569,016 dargestellt ist und liefert deren Ergebnisse an den Multiplexer 25. Der Maskengenerator 31 ist für die Generierung der Masken zur Steuerung der Ausgabe aus dem Rotator in die Mischlogik 34 verantwortlich. Die Mischlogik 34 verwendet die Ausgabe aus dem Zwischenspeicherregister 18 zur Steuerung des Befehls, den die Mischlogik 34 ausführen wird. Wenn zum Beispiel die Ausgabe aus dem Zwischenspeicherregister 18 einen Befehl zum zyklischen Vertauschen und zur anschließenden Maskengenerierung (RMI) spezifiziert, werden die Inhalte des Registers 22 nach links zu der Anzahl von Positionen vertauscht, die durch die Bits 27-31 des Registers 20 spezifiziert werden. Die verschobenen Daten werden von der Maskenlogik 34 mit Hilfe der Steuerung des Maskengenerators 31 an den Multiplexer 25 geliefert. Die Maskenlogik 34 füllt zuerst die Ausgaberegister 36 mit Nullen auf und überprüft anschließend jeden Bit der Maske und bestimmt, ob eine Eins oder Null ist. Wenn ein Maskenbit eine Eins ist, wird das dazugehörige Bit der zyklisch vertauschten Daten (Null oder Eins) in das Ausgaberegister plaziert; wenn das Maskenbit eine Null ist, bleiben die zugehörigen Datenbits aus dem Ausgaberegister unverändert. Der Multiplexer 25 sorgt dafür, daß die Ausgabe aus den beiden Ausführungseinheiten aufgenommen und in dem Ausgaberegister 36 gespeichert wird, welches die Information an den Eingabeport 17 der Registerdatei 16 gibt.
- Der Befehlspuffer 10, der Steuer-Festwertspeicher ROS 12 und die Steuerregister 14 sind allen Figuren gemeinsam. Die Eingänge 15 und 17 und die Ausgänge 19, 21 und 23 der Registerdatei 16 sind ebenfalls allen Figuren gemeinsam. Die Zwischenspeicherregister 18, 20 und 22 werden in allen Figuren verwendet. Die Ausführungseinheit I enthält in allen Figuren die Formatisierungsprogramme 32 und 33 und die ALU 24. Die Ausführungseinheit II enthält in allen Figuren den Maskengenerator 31, die Maskenlogik 34 und den Rotator 26.
- Das erste Ausführungsbeispiel der Erfindung wird in Fig. 2 dargestellt. Das Decodieren eines Befehls ist auf der linken Seite dargestellt. Der Befehl gelangt aus dem Befehlspuffer 10 über die beiden Multiplexer 64 und 65 zu den beiden Steuer- Festwertspeichern ROS's 40 und 42 in die Steuerregister 44 und 46. Das Hinzufügen von zwei Multiplexern 64 und 65 zwischen dem Befehlspuffer 10 und den beiden Steuer-Festwertspeichern ROS's 40 und 42 ermöglicht es, die Befehlsinformation gleichzeitig an die beiden Ausführungseinheiten zu geben. Auf der Basis des Befehls wird die Befehlsinformation von dem einen oder dem anderen Steuer-Festwertspeicher ROS erhalten.
- Die Befehlsverarbeitung hat eine erweiterte Registerdatei mit acht Ports 48, welche die Registerdatei mit fünf Ports aus Figur 1 ersetzt. Die zusätzlichen zwei Ausgabeports 51 und 53 werden ausschließlich von der Ausführungseinheit II benutzt. Jede Ausführungseinheit hat in der Registerdatei 48 ihren eigenen Eingabeport 17 und 56. Die Ausführungseinheit I benutzt den Eingabeport 17, während die Ausführungseinheit II den Eingabeport 56 benutzt. Das Hinzufügen der separaten Ausgaberegister 66 und 68 in jeder der Ausführungseinheiten ermöglicht das Speichern der Ausgabeinformation, bevor diese an die Eingabeports 17 bzw. 56 der Registerdatei gesendet werden. Außerdem sorgt die Verwendung von zwei Ausgaberegistern 66 und 68 dafür, daß die Ergebnisse aus den Ausführungseinheiten gleichzeitig an die Registerdatei 48 geliefert werden.
- Das Hinzufügen von zwei zusätzlichen Ausgabeports und einem weiteren Eingabeport in der Registerdatei 48 ermöglicht dem Prozessor die gleichzeitige Ausführung von ALU-Befehlen und Befehlen zur zyklischen Vertauschung, während diese von Datenintegritätsproblemen oder von komplexen Schnittstellen durch gemeinsame Benutzung der Registerdatei frei bleiben. Durch die Möglichkeit der Codeauflistung in einem Kompilierer kann die Datenabhängigkeit zwischen zwei parallelen Befehlen durch Trennung der Befehle minimiert werden, so daß der zweite der parallelen Befehle nicht das gleiche Quellenregister wie das Bestimmungsregister des ersten Befehls hat. Ein Kompilierer kann auch die beiden Kategorien VOD Befehlen planen, um aufeinanderfolgende Befehle zur zyklischen Vertauschung oder ALU- Befehle zu vermeiden. Mit diesen Hardware- und Kompilierer-Optimierungen wird der Leistungsvergleich zwischen dem Prozessor und dem sequentiell arbeitenden Originalprozessor nachstehend dargestellt.
- PP = OPP - [ % ROT * CPR] + CONTP,
- wobei: CONTP = Konkurrenzbetrieb-Pönale
- = Summierung ( % CONT * CPC)
- = ( % CONTA * CPC) + (% CONTB * CPC)
- PP = Prozessorleistung in Anzahl Zyklen pro Befehl
- OPP = Originalprozessorleistung in Anzahl Zyklen pro Befehl
- %ROT = Prozentsatz der Befehle zum zyklischen Vertauschen
- CPR = Zyklusanzahl pro Befehl zum zyklischen Vertauschen
- %CONT = Prozentsatz der Datenabhängigkeit und der Belegung von Betriebsmitteln
- CPC = Anzahl der Zykluspönalen pro Konkurrenzbetrieb
- %CONTA = Prozentsatz des Konkurrenzbetriebs infolge der Datenabhängigkeit zwischen Einheit I und Einheit II
- %CONTB = Prozentsatz des Konkurrenzbetriebs infolge der aufeinanderfolgenden Befehle in Einheit II
- Einige Systeme haben die Möglichkeit der Verzweigungsvoraussage. Diese Systeme haben einen Befehlscache zum Vorauslesen von Befehlen und zur Vorübersetzung von Verzweigungsbefehlen. In diesen Systemen führt der Prozessor niemals einen Verzweigungsbefehl aus. Diese Einrichtung liefert bei dieser Erfindung zusätzliche Gewinne in der Prozessorleistung, da jetzt der Prozessor nicht warten muß, bis der Verzweigungsbefehl geregelt ist. Der Befehl nach der Verzweigung kann parallel zu dem Befehl vor dem Verzweigungsbefehl ausgeführt werden. In einem System ohne die Möglichkeit der Verzweigungsvoraussage muß die Verzweigung vor dem nächsten Befehl geregelt werden, der durchgeführt werden könnte. Indem die ALU 24 aus jeder Verwicklung in den Verzweigungsbefehl herausgehalten wird, wird das Verhältnis zwischen den beiden Ausführungseinheiten ausgewogener und führt bei einer der Ausführungseinheiten zu geringerem Konkurrenzbetrieb und besserer Leistung. Befehle aus dem Befehlspuffer 10 gelangen in Abhängigkeit der Befehlskategorie sofort in zwei separate Steuer-Festwertspeicher ROS's 40 und 42, um Steuerungssignale für die beiden unabhängigen Ausführungseinheiten zu generieren. Dies teilt den in Fig. 1 abgebildeten ROS 12 durch sehr geringes Duplizieren von den Befehlen, die beide der Ausführungseinheiten benutzen, in die zwei in den Fig. 2, 3, 5 und 6 abgebildeten ROS's 40 und 42. Nur die Operationscode-Eingaben in den Steuer-Festwertspeicher ROS 12 werden dupliziert, nicht jedoch die Steuerregister 14.
- Die Anzahl von Hardware für die Steuerbefehlsdecodierung ist der von dem ersten, in Fig. 2 abgebildeten Ausführungsbeispiel und dem in Fig. 1 abgebildeten Stand der Technik sehr ähnlich. Der Datenfluß bleibt gleich; ausgenommen die Registerdatei 48 erfordert zwei zusätzliche Ausgabeports 51 und 53 und einen weiteren Eingabeport 56. Diese drei Ports führen zu drei weiteren Bussen, die durch den Datenfluß laufen. Da jedoch die Breite des Datenflußes wahrscheinlich durch die Breite der Ausführungseinheiten begrenzt wird, würde durch diese drei Busse der Bereich des Datenflußes nicht vergrößert werden. Wenig zusätzliche Steuerlogik ist erforderlich, um die Datenabhängigkeit, die Belegung der Betriebsmittel und die Ausnahmebedingungen zu handhaben.
- Fig. 3 gleicht dem ersten Ausführungsbeispiel mit Ausnahme der beiden zusätzlichen Funktionseinheiten in der Ausführungseinheit II; dem Multiplizierer 60 und dem Divisor 62. Die Ausgabeports 51 und 53, die in die Zwischenspeicherregister 50 und 52 fließen, werden als Eingaben in den Multiplizierer 60 und den Divisor 62 verwendet, und ein zusätzlicher Multiplexer 63 sorgt für die Unterbringung der Ausgaben aus der Maskenlogik, dem Multiplizierer und dem Divisor und speichert die Ausgabe in dem Ausgaberegister 68. Funktionseinheiten, zum Beispiel ein Multiplizierer 60 oder ein Divisor 62, sind in der Ausführungseinheit mit dem niedrigsten Prozentsatz von Befehlen zusammengefaßt, wie dies in Fig. 3 dargestellt ist. Dies sorgt für den Ausgleich des Verhältnisses zwischen den beiden Einheiten und für die Verbesserung der Prozessorleistung.
- Die für das erste Ausführungsbeispiel der Erfindung speziellen Situationen, die in den Fig. 2 und 3 abgebildet sind, werden nachstehend zusammengefaßt:
- 1) Der zweite von zwei parallelen Befehlen benötigt die Ergebnisse des ersten Befehls.
- 2) Zwei parallele Befehle gehören zur gleichen Befehlskategorie.
- 3) Einer der parallelen Befehle benötigt mehr Zyklen als der andere. In diesem Fall muß die schnellere Einheit auf die langsamere warten, so daß die Befehle nacheinander ausgeführt werden.
- 4) Einer der parallelen Befehle benötigt beide Ausführungseinheiten; d. h. zyklisches Vertauschen und Speichern.
- 5) Logik wird benötigt, um zwei parallele Befehle daran zu hindern, nacheinander ausgeführt zu werden; d. h. zwei parallele Befehle haben das gleiche Bestimmungsregister, also muß einer gelöscht werden, oder wenn einer der parallelen Befehle eine Ausnahmeunterbrechung verursacht, muß der andere vor Beginn der Ausnahmeverarbeitung beendet oder abgebrochen werden.
- Die erste Bedingung kann durch die Codeauflistung des Kompilierers beseitigt werden. Der Kompilierer kann auch Befehle zum zyklischen Vertauschen und ALU-Befehle gegenseitig versetzen, um den Konkurrenzbetrieb zu minimieren. Die dritte und vierte Bedingung tritt nicht oft auf, da ein RISC Prozessor Primitivbefehle hat und sehr wenige Befehle mehr als ein Zyklus benötigen. Diese werden sehr selten benutzt. Die Ausnahmebedingung, die als fünftes Problem erwähnt wurde, ist in dem Stand der Technik ein leichter Zuwachs in der Hardware zur Ausnahmehandhabung.
- Der einzige Zuwachs in dem ersten Ausführungsbeispiel besteht in den drei zusätzlichen Ports in der Registerdatei. Dies erhöht lediglich die Größe der Registerdatei um etwa einhalbmal der Original-Registerdateigröße, was etwa 5 bis 8% der gesamten Chipgröße ist. Die Registerdatei kann für zwei Zugriffe während eines Zyklus entwickelt werden. Diese Entwicklung sorgt dafür, daß die Größe der Registerdatei konstant bleibt. Der einzige, zusätzliche Zuwachs in der Hardware sind die drei zusätzlichen Busse an der Spitze des Datenflußes.
- Fig. 4 zeigt die Darstellung eines sequentiell arbeitenden Prozessors mit Adreßgenerierung im Decodierungszyklus. Die Hardware gleicht der in Fig. 1; ausgenommen, daß die Ausgabe eines Befehlsadressenregisters (IAR) 70 über einen Multiplexer 84 mit dem Ausgabeport 19 der Registerdatei 16 multiplexiert wird, um einen von zwei Operandeneingaben in einem Addierer 78 zu bilden. Der Multiplexer 82 wird verwendet, um die Information von dem Befehlspuffer 10 oder dem Ausgabeport 21 der Registerdatei 16 für die andere Operandeneingabe in den Addierer 78 zu multiplexieren. Der Addierer 78 kalkuliert die neue Adresse ohne ALU Unterbrechung. Die neue Adresse wird in dem Adreßregister 86 gespeichert.
- In Fig. 5 wird das zweite Ausführungsbeispiel der Erfindung gezeigt. Der Unterschied zwischen dem ersten, in Fig. 2 oder 3 abgebildeten Ausführungsbeispiel und dem zweiten Ausführungsbeispiel ist die Aufnahme des in Fig. 4 dargestellten Addierers 78. Der Addierer 78 erhält über die Zwischenspeicherregister 50 und 52 Operandeneingaben aus den Ausgabeports 51 und 53 der Registerdatei 48. Der Addierer 78 gibt seine Ergebnisse an den Multiplexer 70 aus, welcher die Ausgaben der Maskenlogik 34, des Multiplizierers 60 und des Divisors 62 mit der Ausgabe aus dem Addierer 78 zur Speicherung in dem Ausgaberegister 68 multiplexiert. Der zusätzliche Addierer 78 wird zur Durchführung der Adreßberechnung verwendet, um die Lade-, Speicher- und Verzweigungsbefehle zu beschleunigen und mit dem Rotator 26 in der Ausführungseinheit II gruppiert, um die Befehlsmischung der Ausführungseinheiten auszugleichen. Die Ausführungseinheit II ist für die Durchführung aller zyklischen Vertausch-, Verschiebe-, Lade-, Speicher-, Multiplizier-, Dividier- und Adreßberechnungsbefehle verantwortlich. Die Ausführungseinheit I führt alle arithmetischen und logischen Berechnungen durch. Die durchschnittliche RISC Befehlsmischung enthält 54% Befehle zur Übertragung von Register zu Register, 20% Ladebefehle, 10% Speicherbefehle und 16% Verzweigungsbefehle. In den Befehlen zur Übertragung von Register zu Register sind 5 bis 10% zyklische Vertausch-/Verschiebebefehle enthalten. Durch Segmentieren der Arithmetik- und Logikbefehle wird ein besserer Ausgleich der Arbeitslast erreicht. Mit der Codeauflistung des Kompilierers zum gegenseitigen Versetzen dieser beiden Befehlskategorien kann die Datenabhängigkeit und Belegung der Betriebsmittel zwischen beiden Einheiten beseitigt werden. Die einzig wesentliche Verschlechterung der Leistung kommt von den mehrfachen Zyklusbefehlen, die in einem RISC Prozessor so gut wie nicht vorhanden sind. Die unten dargestellten Formeln zeigen den Leistungsvergleich zwischen dem Prozessor aus dem zweiten, in Fig. 5 gezeigten Ausführungsbeispiel und dem sequentiell arbeitenden Originalprozessor aus dem Stand der Technik in Fig. 4.
- PP = 2 * OPP - Summierung (%MCI * CPMCI) i - CONTP
- wobei: CONTP = Konkurrenzbetrieb-Pönale
- = Summierung (%CONTA * CPC) + (%CONTB * CPC) + (%CONTC * CPC)
- %MCI = Prozentsatz des mehrfachen Zyklusbefehls i
- CPMCI = Zyklusanzahl pro mehrfachem Zyklusbefehl i
- %CONTA = Prozentsatz des Konkurrenzbetriebs infolge der Datenabhängigkeit zwischen Einheit I und Einheit II
- %CONTB = Prozentsatz des Konkurrenzbetriebs infolge der aufeinanderfolgenden Befehle in Einheit I
- %CONTC = Prozentsatz des Konkurrenzbetriebs infolge der aufeinanderfolgenden Befehle in Einheit II
- Der Steuerbereich gleicht dem aus dem ersten Ausführungsbeispiel der Erfindung mit Ausnahme der Steuer-Festwertspeicher ROS's 40 und 42, die gemäß der beiden Befehlskategorien aus dem zweiten Ausführungsbeispiel der Erfindung neu partioniert werden müssen. Mit Ausnahme des zusätzlichen Addierers 78 gleicht der Zuwachs der Hardware dem ersten Ausführungsbeispiel.
- Fig. 6 zeigt ein Beispiel eines parallel arbeitenden Prozessors mit einer Registerdatei, die für zwei Zugriffe pro Zyklus konzipiert wurde. Fig. 6 stimmt mit Fig. 5 überein mit Ausnahme der beiden zusätzlichen Verriegelungen 110 und 112, welche den Zugriff auf die erste Registerdatei steuern, des zusätzlichen Multiplexers 25 zur Annahme der Ausgaberegister 66 und 68 von den beiden Ausführungseinheiten und der Benutzung der Original-Registerdatei 16 mit fünf Ports. Die Verriegelungen 110 und 112 befinden sich in den Ausgabeports 19 und 21, genau über den Zwischenspeicherregistern 18 und 20. Die Verriegelungen werden jeweils nach der Hälfte des Taktzyklus getriggert. In der ersten Hälfte des Taktzyklus fließen die Ausgabeports 19 und 21 in die Verriegelungen 110 und 112. In der zweiten Hälfte des Taktzyklus fließen die Ausgabeports 19 und 21 in die Zwischenspeicherregister 50 und 52 und das Ausgaberegister 68 fließt durch den Multiplexer 25 in den Eingabeport 17 der Registerdatei 16. Auch in der zweiten Hälfte des Taktzyklus fließen die Verriegelungen 110 und 112 in die Zwischenspeicherregister 18 und 20 und das Ausgaberegister 66 fließt durch den Multiplexer 25 in den Eingabeport 17 der Registerdatei 16. Dies ermöglicht die parallele Verarbeitung der beiden Ausführungseinheiten, ohne zusätzlich zwei weitere Ausgabeports und einen weiteren Eingabeport vorsehen zu müssen.
- Fig. 7 zeigt das dritte Ausführungsbeispiel der Erfindung. Das dritte Ausführungsbeispiel gleicht dem ersten Ausführungsbeispiel; ausgenommen, daß eine zusätzliche ALU 90 mit den dazugehörigen Formatisierungsprogrammen 100 und 102 in der Ausführungseinheit II eingesetzt wurde. Die Ausgabeports 51 und 53 der Registerdatei 48 führen die Zwischenspeicherregister 50 und 52 zu, die in die Formatisierungsprogramme 100 und 102 fließen, welche die Eingaben in die ALU 90 liefern. Die Ausgabe der zweiten ALU 90 wird auf ähnliche Weise wie die Ausgabe des Addierers 78 der Fig. 5 und 6 multiplexiert. Die Ausgabe der zweiten ALU 90 wird mit der Ausgabe der Maskenlogik 34, des Multiplizierers 60 und des Divisors 62 in den Multiplexer 70 multiplexiert, welcher in das Ausgaberegister 68 fließt.
- Das dritte Ausführungsbeispiel kann gemäß der Darstellung in Fig. 7 benutzt werden, um die Last im Kompilierer bei Durchführung der Codeauflistung zu reduzieren und den Ausgleich der Befehlslast zu erhöhen. Der Steuer-Festwertspeicher ROS 40 gleicht dem Original-Steuer-Festwertspeicher ROS 12. Der Steuer-Festwertspeicher ROS 42 hat nur die Möglichkeit des ALU-Befehls.
- Der Nachteil dieser Annäherung ist der zusätzliche Aufwand an Hardware in Form einer zusätzlichen ALU und eines zusätzlichen Steuer-Festwertspeichers 42 zur Durchführung der ALU-Befehle in beiden Ausführungseinheiten. Der Vorteil liegt darin, daß die Komplexität des Kompilierers reduziert wird.
Claims (7)
1. Datenverarbeitungssystem mit Einrichtungen zur
Befehlsverarbeitung, das einen Befehlspuffer (10),
Steuer-Festwertspeicher (40) und Steuerregister (44) enthält und
Einrichtungen zur Befehlsausführung mit einer Registerdatei (48)
mit Eingängen und Ausgängen, wobei einer der Eingänge (15)
angeschlossen ist, um Daten aus einem Speicher zu
empfangen, mit Zwischenspeicherregistern (18, 20, 22), welche mit
den Registerdateiausgängen verbunden sind und mit ersten
und zweiten Ausführungseinheiten, wobei die erste
Ausführungseinheit eine Recheneinheit (24) mit Eingängen
enthält, die an zwei der Zwischenspeicherregister
angeschlossen sind, wobei die zweite Ausführungseinheit Eingänge
hat, welche an drei der Zwischenspeicherregister
angeschlossen sind und einen Rotator (26) und
Maskengenerierungsmittel (31) enthält, wobei die Recheneinheit und der
Rotator sowie die Maskengenerierungsmittel
Ausgaberegistriermittel (36) zum Empfang der Ausgaben von der
Recheneinheit oder von dem Rotator und den
Maskengenerierungsmitteln und zur Lieferung einer Eingabe an die
besagte Registerdatei haben, wobei jede Ausführungseinheit
sequentielle Datenmanipulationen mittels der
Befehlssteuerung durchführen kann und das Datenverarbeitungssystem
dadurch gekennzeichnet ist, daß der Steuer-Festwertspeicher
erste und zweite Segmente (40, 42) enthält, um jeweils
Befehlssätze für die erste und zweite Ausführungseinheit zu
empfangen, wobei die Einrichtungen zur Befehlsverarbeitung
außerdem separate Mittel (44, 46) für Richtungsbefehle aus
dem ersten Segment in der ersten Ausführungseinheit und
aus dem zweiten Segment in der zweiten Ausführungseinheit
enthalten und das Datenverarbeitungssystem dadurch
gekennzeichnet ist, daß die Ausgaberegistermittel erste und
zweite Ausgaberegister (66, 68) enthalten, wobei die
Ausgaben aus der Recheneinheit und dem Rotator und den
Maskengenerierungsmittel jeweils mit den ersten und zweiten
Ausgaberegistern verbunden sind, deren Ausgänge abwechselnd
separat an den Eingang der Registerdatei angeschlossen
werden (17, 56; 25), und die Registerdatei zwei Ausgänge
(19, 21) mit den entsprechenden Zwischenspeicherregistern
(18, 20) hat, die mit der ersten Ausführungseinheit
verbunden sind, und drei Ausgänge mit den entsprechenden
Zwischenspeicherregistern (50, 52, 22), die mit der zweiten
Ausführungseinheit verbunden sind, wobei die Anordnung es
beiden Ausführungseinheiten ermöglicht, Operationen in dem
gleichen Maschinenzyklus durchzuführen, so daß Befehle,
die keine uneinheitliche Quelle bezeichnen und
Bestimmungsregister parallel mit den Ausführungseinheiten
verarbeitet werden können.
2. Das Datenverarbeitungssystem von Anspruch 1, wobei
vorgesehen sind:
wenigstens eine arithmetische Funktionseinheit (60, 62) in
der zweiten Ausführungseinheit, wobei die arithmetische
Funktionseinheit Eingänge hat, die mit zwei von den drei
Zwischenspeicherregistern verbunden sind und einen Ausgang
bereitstellen; und
ein Multiplexer (63) zum Empfang der Ausgaben von den
zyklischen Vertauschungs- und Maskengenerierungsmitteln
und mit wenigstens einer arithmetischen Funktionseinheit
und zur Lieferung von einer der Ausgaben an das zweite
Ausgaberegister.
3. Das Datenverarbeitungssystem aus Anspruch 2, wobei eine
arithmetische Funktionseinheit wenigstens einen
Multiplizierer (60) und einen Divisor (62) enthält.
4. Das Datenverarbeitungssystem aus Anspruch 2 oder 3, wobei
eine arithmetische Funktionseinheit wenigstens einen
Addierer (78) enthält und der Addierer zur Berechnung der
Befehlsadressen, zur Beschleunigung der Lade-, Speicher-
und Verzweigungsbefehle verwendet wird.
5. Das Datenverarbeitungssystem aus Anspruch 2, wobei eine
arithmetische Funktionseinheit wenigstens eine zweite
Recheneinheit (90) enthält, wobei die Codeauflistung und
der Befehlsausgleich des Befehlsvorrats zwischen der
ersten und zweiten Ausführungseinheit durchgeführt werden
kann.
6. Das Datenverarbeitungssystem aus irgendeinem der Ansprüche
1-5, das außerdem zwei Verriegelungen (110, 112) enthält,
die jeweils an die beiden Ausgänge (19, 21) der
Registerdatei angeschlossen sind, die mit der ersten
Ausführungseinheit und den zugehörigen Zwischenspeicherregistern
verbunden ist, wobei die restlichen drei
Zwischenspeicherregister direkt an die drei Ausgänge von der Registerdatei
angeschlossen werden, welche die beiden, an die zwei
Verriegelungen angeschlossenen Ausgänge enthält, wobei die
Registerdatei bei jedem Taktzyklus des Computers zwei
Zugriffe auf den Speicher vornimmt.
7. Das Datenverarbeitungssystem aus einem der Ansprüche 1-6,
wobei die Registerdatei (48) wenigstens fünf Ausgänge (19,
21, 23, 51, 53) enthält und wo wenigstens fünf
Zwischenspeicherregister (18, 20, 22, 50, 52), ein
Zwischenspeicherregister
für jeden Ausgang, enthalten sind und wo zwei
(18, 20) der Zwischenspeicherregister ausschließlich an
die erste Ausführungseinheit und drei (22, 50, 52) der
Zwischenspeicherregister ausschließlich an die zweite
Ausführungseinheit angeschlossen sind.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06/896,156 US4766566A (en) | 1986-08-18 | 1986-08-18 | Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3750625D1 DE3750625D1 (de) | 1994-11-10 |
DE3750625T2 true DE3750625T2 (de) | 1995-05-04 |
Family
ID=25405719
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3750625T Expired - Fee Related DE3750625T2 (de) | 1986-08-18 | 1987-07-24 | Datenverarbeitungssystem mit zwei Ausführungseinheiten. |
Country Status (4)
Country | Link |
---|---|
US (1) | US4766566A (de) |
EP (1) | EP0260409B1 (de) |
JP (1) | JPS6349843A (de) |
DE (1) | DE3750625T2 (de) |
Families Citing this family (89)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5109524A (en) * | 1985-07-02 | 1992-04-28 | Vlsi Technology, Inc. | Digital processor with a four part data register for storing data before and after data conversion and data calculations |
JP2545789B2 (ja) * | 1986-04-14 | 1996-10-23 | 株式会社日立製作所 | 情報処理装置 |
JPS63131230A (ja) * | 1986-11-21 | 1988-06-03 | Hitachi Ltd | 情報処理装置 |
JPS63253433A (ja) * | 1987-04-10 | 1988-10-20 | Hitachi Ltd | 演算処理装置 |
US4991078A (en) * | 1987-09-29 | 1991-02-05 | Digital Equipment Corporation | Apparatus and method for a pipelined central processing unit in a data processing system |
JPH07120283B2 (ja) * | 1988-04-01 | 1995-12-20 | 株式会社東芝 | マイクロプロセッサ |
US4974146A (en) * | 1988-05-06 | 1990-11-27 | Science Applications International Corporation | Array processor |
JP3034873B2 (ja) * | 1988-07-01 | 2000-04-17 | 株式会社日立製作所 | 情報処理装置 |
EP0354740B1 (de) | 1988-08-09 | 1996-06-19 | Matsushita Electric Industrial Co., Ltd. | Datenverarbeitungsgerät zur parallelen Dekodierung und parallelen Ausführung von Befehlen mit variabler Wortlänge |
US5202967A (en) * | 1988-08-09 | 1993-04-13 | Matsushita Electric Industrial Co., Ltd. | Data processing apparatus for performing parallel decoding and parallel execution of a variable word length instruction |
US5131086A (en) * | 1988-08-25 | 1992-07-14 | Edgcore Technology, Inc. | Method and system for executing pipelined three operand construct |
JP2810068B2 (ja) | 1988-11-11 | 1998-10-15 | 株式会社日立製作所 | プロセッサシステム、コンピュータシステム及び命令処理方法 |
US5125092A (en) * | 1989-01-09 | 1992-06-23 | International Business Machines Corporation | Method and apparatus for providing multiple condition code fields to to allow pipelined instructions contention free access to separate condition codes |
EP0378415A3 (de) * | 1989-01-13 | 1991-09-25 | International Business Machines Corporation | Verteilungsmechanismus für mehrere Befehle |
US5226166A (en) * | 1989-02-10 | 1993-07-06 | Mitsubishi Denki K.K. | Parallel operation processor with second command unit |
US5293500A (en) * | 1989-02-10 | 1994-03-08 | Mitsubishi Denki K.K. | Parallel processing method and apparatus |
US5179691A (en) * | 1989-04-12 | 1993-01-12 | Unisys Corporation | N-byte stack-oriented CPU using a byte-selecting control for enhancing a dual-operation with an M-byte instruction word user program where M<N<2M |
DE69030931T2 (de) * | 1989-04-24 | 1998-01-15 | Ibm | Mehrfachsequenzprozessorsystem |
JP2816248B2 (ja) * | 1989-11-08 | 1998-10-27 | 株式会社日立製作所 | データプロセッサ |
EP0432075B1 (de) * | 1989-11-09 | 1997-02-26 | International Business Machines Corporation | Multiprozessor mit relativ atomaren Befehlen |
JP2560120B2 (ja) * | 1989-11-15 | 1996-12-04 | 松下電器産業株式会社 | 演算装置 |
FR2655169B1 (fr) * | 1989-11-30 | 1994-07-08 | Bull Sa | Processeur a plusieurs unites de traitement microprogrammees. |
US5197138A (en) * | 1989-12-26 | 1993-03-23 | Digital Equipment Corporation | Reporting delayed coprocessor exceptions to code threads having caused the exceptions by saving and restoring exception state during code thread switching |
US5203002A (en) * | 1989-12-27 | 1993-04-13 | Wetzel Glen F | System with a multiport memory and N processing units for concurrently/individually executing 2N-multi-instruction-words at first/second transitions of a single clock cycle |
AU629007B2 (en) * | 1989-12-29 | 1992-09-24 | Sun Microsystems, Inc. | Apparatus for accelerating store operations in a risc computer |
WO1991011765A1 (en) * | 1990-01-29 | 1991-08-08 | Teraplex, Inc. | Architecture for minimal instruction set computing system |
US5201056A (en) * | 1990-05-02 | 1993-04-06 | Motorola, Inc. | RISC microprocessor architecture with multi-bit tag extended instructions for selectively attaching tag from either instruction or input data to arithmetic operation output |
US5214763A (en) * | 1990-05-10 | 1993-05-25 | International Business Machines Corporation | Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism |
DE69130588T2 (de) * | 1990-05-29 | 1999-05-27 | National Semiconductor Corp., Santa Clara, Calif. | Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür |
JPH04111127A (ja) * | 1990-08-31 | 1992-04-13 | Toshiba Corp | 演算処理装置 |
JPH0679276B2 (ja) * | 1990-08-31 | 1994-10-05 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 同一従属型プロセスのスループット増大方法、プロセス生成回路、周期冗長コードジェネレータ、およびコントローラシステム |
JPH04184534A (ja) * | 1990-11-20 | 1992-07-01 | Fujitsu Ltd | プロセッサ |
JP2646855B2 (ja) * | 1991-01-21 | 1997-08-27 | 三菱電機株式会社 | データ処理装置 |
US5367648A (en) * | 1991-02-20 | 1994-11-22 | International Business Machines Corporation | General purpose memory access scheme using register-indirect mode |
US5287467A (en) * | 1991-04-18 | 1994-02-15 | International Business Machines Corporation | Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit |
US5522052A (en) * | 1991-07-04 | 1996-05-28 | Matsushita Electric Industrial Co. Ltd. | Pipeline processor for processing instructions having a data dependence relationship |
US5539911A (en) | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
US5493687A (en) | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
US5961629A (en) * | 1991-07-08 | 1999-10-05 | Seiko Epson Corporation | High performance, superscalar-based computer system with out-of-order instruction execution |
CA2067576C (en) * | 1991-07-10 | 1998-04-14 | Jimmie D. Edrington | Dynamic load balancing for a multiprocessor pipeline |
EP0544083A3 (en) * | 1991-11-26 | 1994-09-14 | Ibm | Interleaved risc-type parallel processor and processing methods |
GB2263565B (en) * | 1992-01-23 | 1995-08-30 | Intel Corp | Microprocessor with apparatus for parallel execution of instructions |
GB2263987B (en) * | 1992-02-06 | 1996-03-06 | Intel Corp | End bit markers for instruction decode |
US5438668A (en) * | 1992-03-31 | 1995-08-01 | Seiko Epson Corporation | System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer |
WO1993020505A2 (en) | 1992-03-31 | 1993-10-14 | Seiko Epson Corporation | Superscalar risc instruction scheduling |
US5452401A (en) * | 1992-03-31 | 1995-09-19 | Seiko Epson Corporation | Selective power-down for high performance CPU/system |
US5371864A (en) * | 1992-04-09 | 1994-12-06 | International Business Machines Corporation | Apparatus for concurrent multiple instruction decode in variable length instruction set computer |
KR950701437A (ko) | 1992-05-01 | 1995-03-23 | 요시오 야마자끼 | 슈퍼스칼라 마이크로프로세서에서의 명령어 회수를 위한 시스템 및 방법 |
US5590348A (en) * | 1992-07-28 | 1996-12-31 | International Business Machines Corporation | Status predictor for combined shifter-rotate/merge unit |
EP0663083B1 (de) * | 1992-09-29 | 2000-12-20 | Seiko Epson Corporation | System und verfahren zur handhabung von laden und/oder speichern in einem superskalar mikroprozessor |
US6735685B1 (en) * | 1992-09-29 | 2004-05-11 | Seiko Epson Corporation | System and method for handling load and/or store operations in a superscalar microprocessor |
US5617549A (en) * | 1992-10-06 | 1997-04-01 | Hewlett-Packard Co | System and method for selecting and buffering even and odd instructions for simultaneous execution in a computer |
DE69327504T2 (de) * | 1992-10-19 | 2000-08-10 | Koninklijke Philips Electronics N.V., Eindhoven | Datenprozessor mit Operationseinheiten, die gemeinsam Gruppen von Registerspeichern benutzen |
US5452456A (en) | 1992-12-18 | 1995-09-19 | Apple Computer, Inc. | Apparatus for executing a plurality of program segments having different object code types in a single program or processor environment |
US5628021A (en) | 1992-12-31 | 1997-05-06 | Seiko Epson Corporation | System and method for assigning tags to control instruction processing in a superscalar processor |
WO1994016384A1 (en) | 1992-12-31 | 1994-07-21 | Seiko Epson Corporation | System and method for register renaming |
JP3182591B2 (ja) * | 1993-01-20 | 2001-07-03 | 株式会社日立製作所 | マイクロプロセッサ |
US5485629A (en) * | 1993-01-22 | 1996-01-16 | Intel Corporation | Method and apparatus for executing control flow instructions in a control flow pipeline in parallel with arithmetic instructions being executed in arithmetic pipelines |
US5717908A (en) * | 1993-02-25 | 1998-02-10 | Intel Corporation | Pattern recognition system using a four address arithmetic logic unit |
US5825921A (en) * | 1993-03-19 | 1998-10-20 | Intel Corporation | Memory transfer apparatus and method useful within a pattern recognition system |
US5440703A (en) * | 1993-09-20 | 1995-08-08 | International Business Machines Corporation | System and method for saving state information in a multi-execution unit processor when interruptable instructions are identified |
CA2123442A1 (en) * | 1993-09-20 | 1995-03-21 | David S. Ray | Multiple execution unit dispatch with instruction dependency |
US5535405A (en) * | 1993-12-23 | 1996-07-09 | Unisys Corporation | Microsequencer bus controller system |
NL9400607A (nl) * | 1994-04-15 | 1995-11-01 | Arcobel Graphics Bv | Dataverwerkingscircuit, vermenigvuldigingseenheid met pijplijn, ALU en schuifregistereenheid ten gebruike bij een dataverwerkingscircuit. |
US5659722A (en) * | 1994-04-28 | 1997-08-19 | International Business Machines Corporation | Multiple condition code branching system in a multi-processor environment |
US5758116A (en) * | 1994-09-30 | 1998-05-26 | Intel Corporation | Instruction length decoder for generating output length indicia to identity boundaries between variable length instructions |
FR2731094B1 (fr) * | 1995-02-23 | 1997-04-30 | Dufal Frederic | Procede et dispositif de commande simultanee des etats de controle des unites d'execution d'un processeur programmable |
US6081880A (en) * | 1995-03-09 | 2000-06-27 | Lsi Logic Corporation | Processor having a scalable, uni/multi-dimensional, and virtually/physically addressed operand register file |
US5966529A (en) * | 1995-05-15 | 1999-10-12 | Zsp Corporation | Processor having auxiliary operand register file and complementary arrangements for non-disruptively performing adjunct execution |
US5900025A (en) * | 1995-09-12 | 1999-05-04 | Zsp Corporation | Processor having a hierarchical control register file and methods for operating the same |
US5729482A (en) * | 1995-10-31 | 1998-03-17 | Lsi Logic Corporation | Microprocessor shifter using rotation and masking operations |
US5761524A (en) * | 1996-03-15 | 1998-06-02 | Renditon, Inc. | Method and apparatus for performing and operation multiple times in response to a single instruction |
US5890009A (en) * | 1996-12-12 | 1999-03-30 | International Business Machines Corporation | VLIW architecture and method for expanding a parcel |
EP0858168A1 (de) | 1997-01-29 | 1998-08-12 | Hewlett-Packard Company | Feldprogrammierbarer Gatterprozessor |
US5805850A (en) * | 1997-01-30 | 1998-09-08 | International Business Machines Corporation | Very long instruction word (VLIW) computer having efficient instruction code format |
US6567834B1 (en) | 1997-12-17 | 2003-05-20 | Elixent Limited | Implementation of multipliers in programmable arrays |
DE69827589T2 (de) | 1997-12-17 | 2005-11-03 | Elixent Ltd. | Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen |
DE69841256D1 (de) | 1997-12-17 | 2009-12-10 | Panasonic Corp | Befehlsmaskierung um Befehlsströme einem Prozessor zuzuleiten |
US6546479B1 (en) | 1998-02-10 | 2003-04-08 | Koninklijke Philips Electronics N.V. | Reduced instruction fetch latency in a system including a pipelined processor |
US7089404B1 (en) * | 1999-06-14 | 2006-08-08 | Transmeta Corporation | Method and apparatus for enhancing scheduling in an advanced microprocessor |
US7401205B1 (en) * | 1999-08-13 | 2008-07-15 | Mips Technologies, Inc. | High performance RISC instruction set digital signal processor having circular buffer and looping controls |
US6748589B1 (en) | 1999-10-20 | 2004-06-08 | Transmeta Corporation | Method for increasing the speed of speculative execution |
US6823355B1 (en) | 2000-05-31 | 2004-11-23 | International Business Machines Corporation | Synchronous replication of transactions in a distributed system |
WO2002103515A1 (en) * | 2001-06-15 | 2002-12-27 | Cadence Design Systems, Inc. | Enhancing mergeability of datapaths and reducing datapath widths responsively to required precision |
US7082517B2 (en) * | 2003-05-12 | 2006-07-25 | International Business Machines Corporation | Superscalar microprocessor having multi-pipe dispatch and execution unit |
US7107435B2 (en) * | 2003-05-27 | 2006-09-12 | International Business Machines Corporation | System and method for using hardware assist functions to process multiple arbitrary sized data elements in a register |
US7882380B2 (en) * | 2006-04-20 | 2011-02-01 | Nvidia Corporation | Work based clock management for display sub-system |
US7937606B1 (en) | 2006-05-18 | 2011-05-03 | Nvidia Corporation | Shadow unit for shadowing circuit status |
US20130086359A1 (en) * | 2011-09-29 | 2013-04-04 | Qualcomm Incorporated | Processor Hardware Pipeline Configured for Single-Instruction Address Extraction and Memory Access Operation |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1426749A (en) * | 1973-06-05 | 1976-03-03 | Burroughs Corp | Micro programme data processor having parallel instruction flow streams for plural level of subinstruction sets |
JPS513743A (de) * | 1974-06-28 | 1976-01-13 | Hitachi Ltd | |
CH598106A5 (de) * | 1976-07-29 | 1978-04-28 | Ferag Ag | |
JPS56135243A (en) * | 1980-03-26 | 1981-10-22 | Hitachi Ltd | Microprogram controller |
JPS6028015B2 (ja) * | 1980-08-28 | 1985-07-02 | 日本電気株式会社 | 情報処理装置 |
US4393468A (en) * | 1981-03-26 | 1983-07-12 | Advanced Micro Devices, Inc. | Bit slice microprogrammable processor for signal processing applications |
US4569016A (en) * | 1983-06-30 | 1986-02-04 | International Business Machines Corporation | Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system |
US4589065A (en) * | 1983-06-30 | 1986-05-13 | International Business Machines Corporation | Mechanism for implementing one machine cycle executable trap instructions in a primitive instruction set computing system |
US4766564A (en) * | 1984-08-13 | 1988-08-23 | International Business Machines Corporation | Dual putaway/bypass busses for multiple arithmetic units |
-
1986
- 1986-08-18 US US06/896,156 patent/US4766566A/en not_active Expired - Fee Related
-
1987
- 1987-05-18 JP JP62119167A patent/JPS6349843A/ja active Pending
- 1987-07-24 EP EP87110751A patent/EP0260409B1/de not_active Expired - Lifetime
- 1987-07-24 DE DE3750625T patent/DE3750625T2/de not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPS6349843A (ja) | 1988-03-02 |
EP0260409A3 (en) | 1990-10-24 |
EP0260409B1 (de) | 1994-10-05 |
DE3750625D1 (de) | 1994-11-10 |
EP0260409A2 (de) | 1988-03-23 |
US4766566A (en) | 1988-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3750625T2 (de) | Datenverarbeitungssystem mit zwei Ausführungseinheiten. | |
DE68929215T2 (de) | Datenprozessor | |
DE69130379T2 (de) | Datenvorausladebefehl in einem Prozessor mit reduziertem Befehlssatz | |
DE69909829T2 (de) | Vielfadenprozessor für faden-softwareanwendungen | |
DE68921775T2 (de) | Prozessorssimulation. | |
DE69727773T2 (de) | Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor | |
DE19735348B4 (de) | Vektorprozessor zur Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern und zugehöriges Verfahren zum Betreiben desselben | |
DE69833008T2 (de) | Prozessor mit instruktionskodierung mittels eines schablonenfeldes | |
DE3789345T2 (de) | Erweiterte Gleitkommaoperationen zur Unterstützung der Emulation von Quellbefehlsausführungen. | |
DE69209888T2 (de) | Befehlablaufsteuerung für einen Rechner | |
DE68928848T2 (de) | Multi-Prozessor-Rechnersystem mit prozessunabhängiger Adressierung von Kommunikationsregistern | |
DE69131637T2 (de) | Registerhaltige Datenbearbeitung in einem Prozessor mit reduziertem Befehlssatz | |
DE69032635T2 (de) | Verfahren und Vorrichtung zur Erkennung von Betriebsmittelkonflikten in einer Pipeline-Verarbeitungseinheit | |
DE19735350B4 (de) | Vektorprozessor zum Ausführen paralleler Operationen und Verfahren hierfür | |
DE3686991T2 (de) | Mechanismus fuer parallele speicherdatenabholung und befehlsausfuehrung in einem prozessor mit reduziertem befehlssatz. | |
DE69622305T2 (de) | Verfahren und Gerät für einen optimierenden Kompiler | |
DE69327637T2 (de) | Superskalar-Computersystem | |
DE69033398T2 (de) | Rechnerarchitektur mit Mehrfachbefehlsausgabe | |
DE69821957T2 (de) | Datenprozessor mit paralleler decodierung und ausführung von daten- und adressbefehlen | |
DE69129569T2 (de) | Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen | |
DE69408769T2 (de) | Fliessbandsteuerung und Registerübersetzung in Mikroprozessor | |
DE102018006889A1 (de) | Prozessoren und Verfahren für bevorzugte Auslegung in einem räumlichen Array | |
DE69623461T2 (de) | Koordination von befehlsausgabe in einem parallelen befehlsverarbeitungssystem | |
DE102018005172A1 (de) | Prozessoren, verfahren und systeme mit einem konfigurierbaren räumlichen beschleuniger | |
DE60131214T2 (de) | Verfahren und Anordnung zur Freilassung von Funktionseinheiten in einem multithreaded VLIW-Prozessor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |