DE69801617T2 - Reduzierung der Verzweigungsfehler durch einen Pipeline-Prozessor mit einer Schaltung mit geringer Schaltungsgrösse - Google Patents
Reduzierung der Verzweigungsfehler durch einen Pipeline-Prozessor mit einer Schaltung mit geringer SchaltungsgrösseInfo
- Publication number
- DE69801617T2 DE69801617T2 DE69801617T DE69801617T DE69801617T2 DE 69801617 T2 DE69801617 T2 DE 69801617T2 DE 69801617 T DE69801617 T DE 69801617T DE 69801617 T DE69801617 T DE 69801617T DE 69801617 T2 DE69801617 T2 DE 69801617T2
- Authority
- DE
- Germany
- Prior art keywords
- instruction
- address
- decoded
- buffer
- code
- 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
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/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
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 betrifft einen Prozessor zur Ausführung von Maschinensprache-Instruktionsfolgen unter Verwendung einer Pipelineverarbeitung, und insbesondere einen Prozessor zur Ausführung einer Verzweigungsverarbeitung mit hoher Geschwindigkeit.
- Die Pipelineverarbeitung ist als eine der fundamentalen Techniken zur Erzielung einer hohen Geschwindigkeit bei der Verarbeitung durch eine zentrale Verarbeitungseinheit (CPU: hierin nachstehend als Prozessor bezeichnet) bekannt. In der Pipelineverarbeitung wird ein eine Instruktion behandelnder Prozeß in kleinere Stufen bzw. Stadien (Pipelinestadien) unterteilt, wobei jedes Pipelinestadium parallel verarbeitet wird, um die Verarbeitung zu beschleunigen. Diese Technik ist jedoch bei der Ausführung von Verzweigungsinstruktionen, welche in Schleifen verwendet werden, nicht effektiv, da eine Blockierung entstehen kann. Dieses Phänomen wird als Verzweigungsfehler bezeichnet. Aufgrund der Verzweigungsfehler erreicht das Betriebsverhalten der Pipelineverarbeitungen keinen optimalen Wert.
- Ein spezifisches Beispiel eines Programms, in welchem ein Verzweigungsfehler auftritt, wird hierin nachstehend gegeben. Die beigefügten Kommentare, die hinter den Strichpunkten geschrieben sind, stellen die Inhalte der getrennten Instruktionen dar.
- Bei der Ausführung des vorstehenden Programms wird die Prozedur in den Instruktionen 3 bis 5 dreimal durchlaufen. In dem Programm folgen der Ausführung der Instruktion 6 drei Stadien der Hol-, Dekodier-, und Ausführungsinstruktion 2 in den nächsten drei Zyklen. Dieses führt zu einem Verzweigungsfehler über zwei Zyklen zwischen der Ausführung der Instruktion 6 und der Ausführung der Instruktion 2.
- Als eine Technik zur Vermeidung von Verzweigungsfehlern ist ein Prozessor in EP-A-0 742 518 (Japanische Patentanmeldungsoffenlegung Nr. 8-314719) offenbart.
- In dieser Technik wird Kode, welcher die erste Instruktion einer Schleife enthält, unmittelbar vor dem Start der Schleife in einen Puffer gespeichert. Wenn das Programm von der letzten Instruktion der Schleife zu der ersten Instruktion verzweigt, wird der Kode aus dem Puffer geholt und die erste Instruktion dekodiert und ausgeführt. Bei einer derartigen Anordnung muß die erste Instruktion nicht jedesmal dann aus einem externen Speicher geholt werden, wenn die Schleife ausgeführt wird, so daß die Verzweigungsfehler vermieden werden können.
- Der vorstehend beschriebene herkömmliche Prozessor hat jedoch einen Nachteil dahingehend, daß seine Schaltung groß ist, da der Prozessor eine spezifische Schaltung für die Vermeidung der Verzweigungsfehler benötigt.
- Erstens muß der Prozessor mit einem Addierer ausgerüstet sein, der speziell für die Berechnung einer Holadresse des Kodes verwendet wird, die dem Kode folgt, welcher die erste Instruktion der Schleife enthält, während der die erste Instruktion enthaltende Kode in dem Puffer unmittelbar vor dem Start der Schleife gespeichert wird. Die berechnete Holadresse wird dann in einem Adressenpuffer gespeichert.
- Der Prozessor muß auch mit einem Subtrahierer ausgerüstet sein, welcher speziell für die Berechnung einer Adresse der ersten Instruktion verwendet wird, die unter Verwendung der Holadresse dekodiert werden muß, die aus dem Adressenpuffer geholt wird, wenn die Verarbeitung von der letzten Instruktion zu der ersten Instruktion verzweigt.
- Dieser Einschluß des Addierers und des Subtrahierers führt zu einer Vergrößerung des Hardwareumfangs des vorstehend beschriebenen herkömmlichen Prozessors.
- Es ist eine Aufgabe der vorliegenden Erfindung, einen Pipeline-Prozessor bereitzustellen, welcher die Verzweigungsfehler mit einer kleinen Schaltung verringern kann.
- Die vorstehende Aufgabe kann durch einen Prozessor zur Ausführung eines Programms gelöst werden, das eine Registerinstruktion, welche unmittelbar vor einer Programmschleife gesetzt wird, und eine Schleifeninstruktion, welche an einem Ende der Programmschleife gesetzt wird, enthält, wobei der Prozessor umfaßt:
- eine Holeinheit zum Holen eines Kodes aus einem Speicher; eine Dekodierungseinheit zum Dekodieren von in dem geholten Kode enthaltenen Instruktionen; und eine Ausführungseinheit zum Ausführen der dekodierten Instruktion,
- wobei die Ausführungseinheit enthält:
- eine Speichereinrichtung um, wenn die Dekodierungseinheit die Registerinstruktion dekodiert, Kode bei einem Start der Programmschleife, der von der Holeinheit geholt wurde, in einen ersten Puffer zu speichern; und
- eine Verzweigungseinrichtung, um die Dekodierungseinheit) den in dem ersten Puffer gespeicherten Kode dekodieren zu lassen, wenn die Schleifeninstruktion von der Dekodierungseinheit dekodiert wird und eine Verzweigungsbedingung erfüllt ist;
- dadurch gekennzeichnet, daß
- die Dekodierungseinheit enthält:
- einen Zähler dekodierter Instruktionen zum Speichern und Aktualisieren eines Zeigers, der eine Summe eines festen Verschiebungswertes und einer Adresse der Instruktion ist, welche gerade dekodiert wird, in der Weise, daß der Zeiger einer Adresse eines Kodes entspricht, der dem in dem ersten Puffer gespeicherten Kode folgt, und
- wobei die Speichereinrichtung auch dazu dient, um, wenn die Dekodierungseinheit die Registerinstruktion dekodiert, den in dem Zähler dekodierter Instruktionen gespeicherten Zeiger in einen zweiten Puffer zu speichern; und
- und die Verzweigungseinrichtung auch dazu dient, die Holeinheit einen Kode holen zu lassen, der von einer Adresse aus beginnt, die dem in dem zweiten Puffer gespeicherten Zeiger entspricht, wenn die Dekodierungseinheit die Schleifeninstruktion dekodiert und die Verzweigungsbedingung erfüllt ist.
- Hier kann der feste Verschiebungswert gleich einer Speichergröße des ersten Puffers sein.
- Hier kann der Zähler dekodierter Instruktionen, wenn er initialisiert ist, eine Summe einer Startadresse und des festen Verschiebungswertes speichern.
- Mit dem geschilderten Aufbau ist es nicht mehr notwendig, weder die Additionsoperation bei der Ausführung der Registerinstruktion, noch die Subtraktionsoperation bei der Ausführung einer Schleifeninstruktion auszuführen, da der Zeiger, der die Summe der derzeitig dekodierten Instruktionsadresse und des festen Wertes ist, in dem Zähler dekodierten Instruktionen gespeichert ist. Ohne die Notwendigkeit, den speziellen Addierer noch einen speziellen Subtrahierers einzubeziehen, kann die Hardware des Prozessor reduziert werden. Ferner kann die Verarbeitung bei der Ausführung der Registerinstruktion und der Schleifeninstruktion beschleunigt werden, da die vorstehenden Adressenberechnungen nicht mehr erforderlich sind.
- Hier kann die Ausführungseinheit ferner eine Verzweigungseinheit enthalten, um dann, wenn eine Verzweigungsinstruktion mit einer absoluten Adresse von der Dekodierungseinheit dekodiert wird, die absolute Adresse an einen Zähler geholter Instruktionen in der Holeinheit zu senden und einen Wert, der durch Addieren des festen Verschiebungswertes auf die absolute Adresse erhalten wird, an den Zähler dekodierter Instruktionen zu senden.
- Hier kann, wenn eine Verzweigungsinstruktion mit einer relativen Adresse von der Dekodierungseinheit dekodiert wird, die Verzweigungseinheit einen Wert, der durch Addieren der relativen Adresse auf den in dem Zähler dekodierter Instruktionen gespeicherten Zeiger erhalten wird, an den Zähler dekodierter Instruktionen senden und einen Wert, der durch Subtrahieren des festen Verschiebungswertes von dem Wert, welcher an dem Zähler dekodierter Instruktionen gesendet wird, an den Zähler geholter Instruktionen senden.
- Bei dem geschilderten Aufbau werden Verzweigungsinstruktionen mit einer absoluten Adresse und einer relativen Adresse unter Verwendung des in dem Zähler dekodierter Instruktionen gespeicherten Zeigers ausgeführt.
- Hier kann der Zähler geholter Instruktionen ein Register zum Speichern einer Holadresse und einen Addierer zum Inkrementieren der in dem Register gespeicherten Holadresse enthalten, wobei, wenn die Verzweigungsinstruktion mit der absoluten Adresse von der Dekodierungseinheit dekodiert wird, die Verzweigungseinheit den Addierer in dem Zähler geholter Instruktionen den festen Verschiebungswert auf die absolute Adresse addieren läßt und ein Additionsergebnis an den Zähler dekodierter Instruktionen sendet.
- Bei dem geschilderten Aufbau kann, wenn eine Verzweigungsinstruktion mit einer absoluten Adresse aufgeführt wird, die Berechnung des in dem Zähler dekodierter Instruktionen zu speichernden Zeiger nicht durch die Ausführungseinheit durchgeführt werden, sondern durch den Addierer in dem Zähler geholter Instruktionen.
- Diese und weitere Aufgaben, Vorteile und Merkmale der Erfindung werden aus der nachstehenden Beschreibung mit Verbindung mit den beigefügten Zeichnungen, welche eine spezifische Ausführungsform der Erfindung veranschaulichen, deutlich. In den Zeichnungen zeigen:
- Fig. 1 ein Blockschaltbild, welches den Aufbau des Prozessors der ersten Ausführungsform der vorliegenden Erfindung darstellt;
- Fig. 2 den detaillierten Aufbau des Zählers 151 dekodierter Instruktionen;
- Fig. 3 ein Flußdiagramm, welches die Verarbeitung in dem Instruktionsausführungsstadium darstellt;
- Fig. 4 ein Blockschaltbild, welches die detaillierten Aufbauten der Selektionseinheit 143 und des Verzweigungszielinstruktionsregisters 171 darstellt;
- Fig. 5 die Selektionslogik der Selektionseinheit 143;
- Fig. 6 die Operationsinhalte von Verzweigungsinstruktionen;
- Fig. 7 einen Ablauf einer Pipeline, welche ausgebildet wird, wenn der Prozessor die Schleife ausführt;
- Fig. 8 ein Blockschaltbild, welches den Aufbau des Prozessors der zweiten Ausführungsform der vorliegenden Erfindung darstellt;
- Fig. 9 ein Blockschaltbild, welches die detaillierten Konstruktionen des Zähler 241 geholter Instruktionen und des Zählers 251 dekodierter Instruktionen darstellt;
- Fig. 10 die Operationsinhalte von Verzweigungsinstruktionen;
- Fig. 11 ein Zeitdiagramm, welches die Verarbeitung der einfachen Verzweigungsinstruktion "branch rel_adrs" darstellt;
- Fig. 12 ein Beispiel einer Modifikation der in Fig. 4 dargestellten Warteschlange 171a; und
- Fig. 13 die Selektionslogik der in Fig. 12 dargestellten Selektoren 121a-121d.
- Das Nachstehende ist eine detaillierte Erläuterung eines Prozessors von Ausführungsformen der vorliegenden Erfindung unter Bezugnahme auf die Figuren.
- Fig. 1 ist ein Blockschaltbild, welches den Aufbau des Prozessors der ersten Ausführungsform der vorliegenden Erfindung darstellt. Diese Figur zeigt auch einen externen Speicher 11, welcher eine Instruktionsfolge (Programm) speichert, welche von dem Prozessor 13 zu verarbeiten ist.
- Der Prozessor holt mindestens eine Instruktion aus dem externen Speicher 11, und dekodiert und führt die Instruktionen nacheinander aus. Der Prozessor 13 ist in einer solchen Weise aufgebaut, daß er eine Schleife mit hoher Geschwindigkeit mit kleinem Hardwareaufwand ausführt. Die Schleife ist durch eine Kombination einer Verzweigungszielinformation-Registerinstruktion (hierin nachstehend als Registerinstruktion bezeichnet) und einer Hochgeschwindigkeits-Schleifeninstruktion spezifiziert.
- Hier wird die Registerinstruktion unmittelbar vor einer ersten Instruktion der Schleife gesetzt und weist den Prozessor an, Kode der mindestens eine Instruktion enthält, die am Anfang der Schleife angeordnet ist, in den Prozessor zu speichern. Hier bezieht sich der Begriff "Kode" auf Kode, der die Instruktionen ausdrückt. Die Hochgeschwindigkeits- Schleifeninstruktion ist am Ende der Schleife gesetzt und weist den Prozessor an, auf die erste Instruktion der Schleife zu verzweigen, wenn eine in der Hochgeschwindigkeits-Schleifeninstruktion enthaltene Bedingung erfüllt ist, wobei die erste Instruktion in dem Prozessor gemäß der Speicherinstruktion gespeichert wurde. Die Registerinstruktion und die Hochgeschwindigkeits-Schleifeninstruktion werden jeweils als "setlb" und "Icc" in mnemonischer Form gespeichert.
- Der Prozessor 13 enthält eine Instruktionsholeinheit 14, eine Instruktionsdekodierungseinheit 15, eine Instruktionsausführungseinheit 16 und eine Verzweigungszielinformation-Speichereinheit 17. Jede Komponente des Prozessors 13 arbeitet synchron zu einen Taktsignal aus einem (nicht dargestellten) Taktgenerator. Die Instruktionsholeinheit 14, die Instruktionsdekodierungseinheit 15 und die Instruktionsausführungseinheit 16 bilden eine Instruktionspipeline, wobei jede Einheit parallel synchron zu dem Taktsignal arbeitet.
- Die Instruktionsholeinheit 14 holt Kode aus dem externen Speicher 11, speichert ihn in einem Puffer 142 geholter Instruktionen und sendet den gespeicherten Kode an die Instruktionsdekodierungseinheit 15. Die Instruktionsdekodierungseinheit enthält einen Zähler (FIC) 141 geholter Instruktionen, den Puffer 142 geholter Instruktionen (FIB) und eine Selektionseinheit 143.
- Der FIC 141 speichert eine Holadresse, aus welcher Kode zu holen ist, und sendet die Holadresse an den externen Speicher 11. Nach dem Holen des Kodes wird der FIC 141 inkrementiert, um die Holadresse zu aktualisieren. Wenn die Hochgeschwindigkeits- Schleifeninstruktion ausgeführt wird, wird die Holadresse in dem FIC 141 auf eine Adresse aktualisiert, die von der Verzweigungszielinformation-Speichereinheit 17 gemäß Steuersignalen aus der Instruktionsdekodierungseinheit 15 gesendet wird.
- Der FIB 142 ist ein FIFO-(First In First Out)-Speicher zum Speichern des aus dem externen Speicher 11 geholten Kodes.
- Die Selektionseinheit 143 selektiert in der Verzweigungszielinformation-Speichereinheit 17 gespeicherten Kode nur, wenn die Hochgeschwindigkeits-Schleifeninstruktion ausgeführt wird. Wenn andere Instruktionen ausgeführt werden, selektiert die Selektionseinheit 143 Kode in dem FIB 142. Die Selektionseinheit 143 gibt dann den selektierten Kode an die Instruktionsdekodierungseinheit 15 aus.
- Die Instruktionsdekodierungseinheit 15 dekodiert eine Instruktion, die in dem von der Instruktionsholeinheit 14 gesendeten Kode enthalten ist und gibt das Dekodierungsergebnis, welches aus Steuersignalen zum Steuern der Operationen der Instruktionsholeinheit 14, der Instruktionsdekodierungseinheit 15, der Instruktionsausführungseinheit 16 und der Verzweigungszielinformation-Speichereinheit 17 besteht, aus. Die Instruktionsdekodierungseinheit 15 enthält einen Zähler (DIC) 151 dekodierter Instruktionen, einen Puffer (DIB) 152 dekodierter Instruktionen und einen Instruktionsdekoder 153.
- Der DIC 151 speichert und aktualisiert einen Zeiger, der die Summe einer Adresse einer Instruktionen, welche dekodiert wird und eines vorbestimmten Verschiebungswertes ist. Bei einer Zurücksetzung, wie z. B. beim Einschalten, wird der DIC 151 auf einen Wert initialisiert, der die Summe einer Startadresse und des Verschiebungswertes 4 ist. Wenn eine Nicht-Verzweigungsinstruktion dekodiert wurde, wird der DIC 151 mit der Wortlänge der dekodierten Instruktion inkrementiert und demzufolge auf einen Zeiger aktualisiert, der die Summe einer Adresse einer anschließend zu dekodierenden Instruktion und des Verschiebungswertes 4 ist. Wenn die Hochgeschwindigkeits- Schleifeninstruktion dekodiert wurde, wird der Zeiger in dem DIC 151 auf eine Adresse aktualisiert, die von der Verzweigungszielinformation-Speichereinheit 17 gemäß Steuersignalen aus der Instruktionsdekodierungseinheit 15 gesendet wird. Es sei angemerkt, daß der Verschiebungswert nicht gleich einer Speichergröße (der Anzahl von Bytes) eines Verzweigungszielinstruktionsregisters 171 in der Verzweigungszielinformation- Speichereinheit 17 sein muß. Beispielsweise ist, wenn die Speichergröße des Verzweigungszielinstruktionsregisters 171 8 Bits beträgt, der Zeiger in dem DIC 151 die Summe einer momentan dekodierten Instruktionsadresse und des Verschiebungswertes 8.
- Der DIB 152 ist ein Register zum Speichern einer Instruktion, die von dem FIB 142 gesendet wurde und die gerade dekodiert wird.
- Der Instruktionsdekoder 153 dekodiert die in dem DIB 152 gespeicherte Instruktion und gibt Steuersignale zum Steuern der Instruktionsholeinheit 14, der Instruktionsdekodierungseinheit 15, der Instruktionsausführungseinheit 16 und der Verzweigungszielinformation-Speichereinheit 17 gemäß dem Dekodierungsergebnis aus. Wenn die Dekodierungsinstruktion einen Zeiger in dem DIC 151 betrifft, steuert der Instruktionsdekoder 153 die Instruktionsausführungseinheit 16 so, daß sie den Zeiger in dem DIC 151 anpaßt, indem sie den Verschiebungswert 4 gemäß einem Inhalt der Instruktion entsprechend addiert/subtrahiert. Die vorstehende Anpassung ist jedoch nicht notwendig, wenn die Hochgeschwindigkeits-Schleifeninstruktion dekodiert wird.
- Die Instruktionsausführungseinheit besteht aus einer ALU (Arithmetic Logic Unit), einer Verschiebeeinrichtung und weiteren Komponenten, und führt Operationen durch und steuert die Komponenten des Prozessors 13 gemäß den Steuersignalen die von der Instruktionsdekodierungseinheit 15 gesendet werden. Die Instruktionsausführungseinheit 16 gibt auch Steuersignale auf (nicht dargestellten) Signalleitungen, die mit dem Prozessor 13 verbunden sind, ein bzw. aus.
- Die Verzweigungszielinformation-Speichereinheit 17 speichert Verzweigungszielinformation, wenn die Instruktionsdekodierungseinheit 15 die Registerinstruktion dekodiert hat. Hier bedeutet die Verzweigungszielinformation Kode (4 Bytes in der vorliegenden Erfindung), welcher bei der in dem FIB 142 gespeicherten ersten Instruktion der Schleife beginnt, auf welche die letzte Instruktion der Schleife zu verzweigen ist. Die Verzweigungszielinformation-Speichereinheit 17 enthält das Verzweigungszielinstruktionsregister (BIR) 171 und ein Verzweigungszielholadressenregister (BAR) 172.
- Das BIR 171 ist ein Register zum Speichern der ersten 4 Bytes des Kodes aus dem FIB 142, wenn die Instruktionsdekodierungseinheit 15 die Registerinstruktion dekodiert. Dadurch werden die ersten 4 Bytes der Schleife in dem BIR 171 gespeichert. Das BIR 171 wird auch als Schleifeninstruktionspuffer bezeichnet.
- Das BAR 172 ist ein Register zum Speichern eines Zeigers aus dem DIC 151 in dem nächsten Zyklus, wenn die Instruktionsdekodierungseinheit 15 die Registerinstruktion dekodiert hat. Dieser Zeiger ist die Summe einer aktuell dekodierten Instruktionsadresse und der Speichergröße des BIR 71 (4 Bytes) und entspricht somit einer Adresse von Kode, der dem in dem BIR 171 gespeichertem Kode folgt. Das heißt, der in dem BAR 172 gespeicherte Zeiger ist eine Holadresse, von welcher Kode von der Instruktionsholeinheit 14 zu holen ist, nachdem eine Verzweigung aus der Hochgeschwindigkeits- Schleifeninstruktion ausgeführt ist. Das BAR 142 wird auch als der Schleifenadressenpuffer bezeichnet.
- Fig. 2 stellt ein Beispiel des Aufbaus des DIC 151 dar. Gemäß Darstellung in der Figur enthält der DIC 151 einen Addierer 31, ein Register 32 und Selektoren 33 und 34.
- Wenn der DIC 151 initialisiert wird, wie z. B. beim Zurücksetzen, addiert der Addierer 31 den festen Wert 4 auf die Startadresse des Registers 32.
- Der Addierer 31 addiert normalerweise die Wortlänge (die Anzahl der Bytes) einer dekodierten Instruktion auf einen Zeiger in dem Register 32. Dadurch wird das Register auf einen Zeiger aktualisiert, der "(eine Adresse einer zu dekodierenden Instruktion) plus 4" ist. Wenn eine Verzweigungsinstruktion auszuführen ist, wird der Zeiger in dem Register 32 auf eine Verzweigungszieladresse aktualisiert, die über den Selektor 33 eingegeben wird.
- Fig. 3 ist ein Flußdiagramm, welches die Verarbeitung der Registerinstruktion darstellt, welche unmittelbar vor der Schleife, der Hochgeschwindigkeits-Schleifeninstruktion, welche am Ende der Schleife gesetzt wird, und weitere Instruktionen gesetzt wird.
- Wenn ein Dekodierungsergebnis durch den Instruktionsdekoder 153 die Registerinstruktion (setlb) (Schritt S31) ist, werden die ersten 4 Bytes des Kodes von dem FIB 152 an das BIR 171 (Schritt S32) gesendet, und dann wird der Zeiger in dem DIC 151 an das BAR 172 (Schritt S33) gesendet. Demzufolge speichert das BIR 171 die ersten 4 Bytes des Kodes der Schleife, während das BAR 172 die Adresse des Kodes speichert, welcher den ersten 4 Bytes des Kodes folgt. Nach dem Abschluß der Ausführung der Registerinstruktionen geht der Prozessor 13 zu dem nächsten Instruktionsausführungsstadium (Schritt S34) über.
- Wenn das Dekodierungsergebnis durch den Instruktionsdekoder 153 die Hochgeschwindigkeits-Schleifeninstruktion (Icc) (Schritt S31) ist, wird festgestellt, ob eine Verzweigungsbedingung erfüllt ist (Schritt S35). Bei der Verzweigungsverarbeitung werden die ersten 4 Bytes des Kodes der Schleife aus dem BIR 171 an den DIB 152 (Schritt S36) gesendet, und die Adresse wird aus dem BAR 172 an den DIC 151 (Schritt S37) und an den FIC 141 (Schritt S38) gesendet. Demzufolge speichert der FIC 141 die Holadresse des Kodes, welcher den ersten 4 Bytes des Kodes folgt, während der DIC 151 einen Zeiger speichert, welche die Summe der Adresse der aktuell dekodierten Instruktion (ersten Instruktion) und von 4 ist. Da die Instruktionsholeinheit 14 nicht die erste Instruktion, welche das Verzweigungsziel ist, holen muß, tritt kein Verzweigungsfehler auf. Ferner kann der FIC 141 leicht die Adresse des Kodes erhalten, welcher den ersten 4 Bytes des Kodes aus dem BAR 172 folgt, ohne spezifische Adressenberechnungen auszuführen.
- Fig. 4 ist ein Blockschaltbild, welches den detaillierten Aufbau der Selektionseinheit 143 und des BIR 171 darstellt. Die Figur zeigt auch den FIB 142. Man beachte, daß jede Instruktion des Programms eine variable Wortlänge (eine geradzahliges Vielfaches von 8 Bits aufweist).
- Der FIB 142 ist als eine Warteschlange aufgebaut, welche geholten Kode in Einheiten von 8 Bits weiterschiebt, wobei die Warteschlange bevorzugt etwa 16 Ebenen aufweist. Der FIB gibt die ersten 4 Bytes der Warteschlange an den DIB 152 über die Selektionseinheit 143 in jedem Zyklus des Instruktionsdekodierungsstadiums aus. Die Instruktionsdekodierungseinheit 15 dekodiert die 4 Bytes des Kodes und teilt dem FIB 142 die Instruktionswortlänge (ausgedrückt als eine Zahl der Bytes für eine Instruktion beginnend mit dem Anfang der 4 Bytes des Kodes an) mit. Der FIB 142 verschiebt den Kode um die mitgeteilte Wortlänge an den Anfang der Warteschlange und löscht somit die dekodierte Instruktion. Dadurch befindet sich ein erstes Byte einer Instruktion üblicherweise am Anfang der Warteschlange (dieses ist nicht notwendigerweise der Fall, nachdem eine Verzweigung aus der Hochgeschwindigkeits-Schleifeninstruktion ausgeführt wird).
- Das BIR 171 enthält eine Warteschlange 171a und eine Selektionssteuereinheit 171b.
- Die Warteschlange 171a ist als Warteschlange mit 4 Ebenen aufgebaut, welche im Kreise Kode in Einheiten von 8 Bits verschiebt. Wenn die Registerinstruktion dekodiert und ausgeführt wird, speichert die Warteschlange 171a die ersten 4 Bytes des Kodes des FIB 142, welche dann an den DIB 152 über die Selektionseinheit 143 nach der Dekodierung der Hochgeschwindigkeits-Schleifeninstruktion ausgegeben werden. Die Instruktionsdekodierungseinheit 15 dekodiert die 4 Bytes des Kodes und teilt der Warteschlange 171a die Instruktionswortlänge über die Selektionssteuereinheit 171b mit. Die Warteschlange 171a verschiebt den Kode um die mitgeteilte Wortlänge im Kreise zum Anfang der Warteschlange. Die Warteschlange 171a wiederholt die Verschiebung bis sie 4 Bytes eine Runde durchgeführt haben, um so denn ursprünglichen Speicherzustand wiederherzustellen, in welchem die 4 Bytes in der Warteschlange 171a gemäß der Registerinstruktion gespeichert sind. Diese Operation wird beim nächsten Mal wieder durchgeführt, wenn eine Verzweigung aus der Hochgeschwindigkeits- Schleifeninstruktion ausgeführt wird.
- Wenn eine Verzweigung aus der Hochgeschwindkeits-Schleifeninstruktion ausgeführt wird, steuert die Selektionssteuereinheit 171b die Selektionseinheit 143 so, daß sie 4 Bytes von in der Warteschlange 171a gespeichertem Kode anstelle von 4 Bytes von in dem FIB 142 gespeichertem Kode selektiert. In dieser Steuerungsverarbeitung läßt die Selektionssteuereinheit 171b die Warteschlange 171a alle 4 Bytes des Kodes an die Instruktionsdekodierungseinheit 15 über die Selektionseinheit 143 unmittelbar nach der Verzweigung ausgeben. Die Instruktionsdekodierungseinheit 15 dekodiert den Kode und teilt der Warteschlange 171a die Instruktionswortlänge mit. Die Selektionssteuereinheit 171b läßt die Warteschlange 171a den Kode um die mitgeteilte Wortlänge im Kreis verschieben und zählt die Anzahl gültiger Bytes des Kodes in der Warteschlange 171a. Dann steuert die Selektionssteuereinheit 171b die Selektionseinheit 143 gemäß der Anzahl gültiger Bytes in dem nächsten Instruktionsdekodierungsstadium.
- Die Selektionseinheit 143 enthält Selektoren 143a-143d. Wenn die Hochgeschwindigkeits-Schleifeninstruktion ausgeführt wurde und die 4 Bytes, die von dem BIR 171 gesendet wurden, von der Instruktionsdekodierungseinheit 15 dekodiert wurden, selektiert die Selektionseinheit 143 die folgenden 4 Bytes des Kodes, indem sie gültigen Kode in der Warteschlange 171a und anschließenden Kode in dem FIB 142 kombiniert.
- Fig. 5 stellt die Selektionslogik der Selektoren 143a-143d vor. Gemäß der Anzahl der von der Selektionssteuereinheit 171b festgestellten gültigen Bytes geben die Selektoren 143a-143d 4 Bytes an Kode aus, indem sie den gültigen Kode in der Warteschlange 171a und den anschließenden Kode in dem FIB 142 kombinieren. Man beachte, daß, obwohl Fig. 5 den Fall zeigt, wenn 5 Eingänge - 1 Ausgang ("5 zu 1 ")-8 Bit Selektoren verwendet werden, eine Kombination von "2 zu 1 "-, eine von "3 zu 1 "-, eine von "4 zu 1 "- und eine "5 zu 1"-Selektoren alternativ verwendet werden kann. <
- Wie vorstehend beschrieben, speichert der DIC 151 einen Zeiger, welcher die Summe einer aktuell dekodierten Instruktionsadresse und des festen Wertes 4 ist. Demzufolge ist es bei der Ausführung von Instruktionen zum Lesen oder Schreiben in den DIC 151 erforderlich, den Zeiger durch Addieren oder Subtrahieren des Wertes 4 anzupassen. Diese Anpassung ist erforderlich, wenn andere Adresseninstruktionen ausgeführt werden, als die Hochgeschwindigkeits-Schleifeninstruktion.
- Fig. 6 stellt die Operationsinhalte der Verzweigungsinstruktionen dar. In der Figur sind die einfache Verzweigungsinstruktion "branch abs_adrs", die Subroutinenaufrufinstruktion "call abs_adrs" und die Subroutinenrücksprunginstruktion "ret" repräsentative Instruktionen für eine absolute Adressierung, während die einfache Verzweigungsinstruktion "branch rel_adrs" eine repräsentative Instruktion für eine relative Adressierung ist. Der Kode "abs_adrs" bezeichnet eine 32 Bit absolut Adresse, während der Kode "rel- adrs" eine 8 Bit oder 16 Bit relative Adresse bezeichnet.
- Wenn die einfache Verzweigungsinstruktion in "branch abs_adrs" verarbeitet wird, speichert die Instruktionsausführungseinheit 16 die absolute Adresse in "abs_adrs" in dem FIC 141 (Operation 601), addiert den festen Wert 4 zu der absoluten Adresse "abs_adrs" und speichert die Summe in dem DIC 151 (Operation 602). Dadurch wird der Hof-, Dekodierungs- und Ausführungsvorgang von einer Instruktion gestartet, welche von der absoluten Adresse "abs_adrs" spezifiziert ist. Somit wird zur Ausführung einer Verzweigungsinstruktion, welche ein Verzweigungsziel durch absolute Adressierung spezifiziert, der Wert, welcher durch Addition von 4 zu der absoluten Adresse erhalten wird, in dem DIC 151 gesetzt.
- Wenn die Subroutinenaufrufinstruktion "call abs_adrs", verarbeitet wird, speichert die Instruktionsausführungseinheit 16 die absolute Adresse "abs_adrs" in dem FIC 141 (Operation 603), addiert eine dekodierte Instruktionswortlänge zu dem Zeiger in dem DIC 151 (Operation 604) hinzu, subtrahiert 4 von der Summe, schiebt das Subtraktionsergebnis in einen (nicht dargestellten) Stapel (Operation 605) und speichert die Summe der absoluten Adresse "abs_adrs" und 4 in dem DIC 151 (Operation 606). Hier entspricht das Subtraktionsergebnis einer Adresse einer Instruktion, welche während der Ausführung der Subroutinenaufrufinstruktion "call abs_adrs" dekodiert wurde. Mit anderen Worten, daß Subtraktionsergebnis entspricht einer Adresse einer Instruktion anschließend an die Subroutinenaufrufinstruktion "call abs_adrs". Somit wird zur Ausführung einer Subroutinenaufrufinstruktion der durch Subtraktion von 4 von dem Zeiger in dem DIC 151 erhaltene Wert in den Stapel geschoben.
- Wenn die Subroutinenrücksprunginstruktion "ret" verarbeitet wird, stößt die Instruktionsausführungseinheit 16 die Instruktionsadresse, welche der Subroutinenaufrufinstruktion "call abs_adrs" folgt, aus dem Stapel, speichert die Adresse in dem FIC 141 (Operation 607), addiert 4 zu der Adresse und speichert die Summe in dem DIC 151 (Operation 608). Somit wird zur Ausführung einer Rücksprunginstruktion aus einer Subroutine, die Summe des in den Stapel geschobenen Wertes und 4 in den DIC 151 zurückgespeichert.
- Wenn die einfache Verzweigungsinstruktion "branch rel_adrs" verarbeitet wird, addiert die Instruktionsausführungseinheit 16 die relative Adresse "rel-adrs" auf den Zeiger des DIC 151, speichert die Summe in dem DIC 151 (Operation 609), subtrahiert 4 von der Summe, und speichert das Subtraktionsergebnis in dem FIC 141 (Operation 610). Somit wird zur Ausführung einer Verzweigungsinstruktion, welche ein Verzweigungsziel durch eine relative Adressierung spezifiziert, der durch Subtraktion von 4 von dem neuen Zeiger in dem DIC 151 erhaltene Wert in dem FIC 141 gespeichert. Man beachte, daß diese Subtraktion von 4 von dem Zeiger in dem DIC 151 zum Setzen der Adresse in dem FIC 141 nicht notwendig ist, wenn die Hochgeschwindigkeits-Schleifeninstruktion ausgeführt wird.
- Wie vorstehend beschrieben, kann bei der Ausführung einer Verzweigungsinstruktion mit einer absoluten Adresse, der DIC 151 einfach auf die Summe der absoluten Adresse und 4 aktualisiert werden, während der FIC 141 auf die absolute Adresse aktualisiert werden kann.
- Ferner kann bei der Ausführung einer Verzweigungsinstruktion mit einer relativen Adresse, der DIC 151 einfach auf die Summe der relativen Adresse und des Zeigers in dem DIC 151 aktualisiert werden, während der FIC 141 auf den Wert aktualisiert werden kann, der durch Subtraktion von 4 von dieser Summe erhalten wird.
- Die vorstehende Addition und Subtraktion unter Verwendung des festen Wertes 4 werden von der ALU in der Instruktionsausführungseinheit 16 durchgeführt. Somit führt die Instruktionsausführungseinheit 16 Adressenberechnungen für alle anderen Verzweigungsinstruktionen außer der Hochgeschwindigkeits-Schleifeninstruktion durch.
- Das Nachstehende ist eine Erläuterung des Betriebs des Prozessors der vorliegenden Ausführungsform unter Anwendung eines Beispielprogramms.
- Fig. 7 stellt einen Fluß einer Pipeline dar, welche ausgebildet wird, wenn das nachstehende Programm ausgeführt wird. (Beispielprogramm)
- In diesem Beispiel zeigt "Instruktionsadresse" die untersten 16 Bit einer 32 Bit-Adresse in hexadezimaler Form, "Instruktion" ist in mnemonischer Form geschrieben und "Kommentar" stellt die Instruktionsinhalte dar.
- In dem Programm ist die Verarbeitung ab der Instruktion (add a, b, c), die der Registerinstruktion (setlb) bis zu der Hochgeschwindigkeits-Schleifeninstruktion (Icc) folgt, eine Schleife, welche dreimal wiederholt wird.
- In Fig. 7 stellt die horizontale Achse die Zeit in Zykluseinheiten dar, während die vertikale Achse drei Pipelinestadien darstellt, welche IF, DEC und EX sind. Das "IF-Stadium" stellt eine Instruktion am Anfang des FIB 142 dar, obwohl es eine Instruktion am Anfang des BIR 171 in den Zyklen 8, 9, 13 und 14 darstellt. Das "DEC-Stadium" stellt eine aktuell dekodierte Instruktion dar, welche in dem DIB 152 gespeichert ist. Das "EX-Stadium" stellt eine Instruktion dar, welche momentan von der Instruktionsausführungseinheit 16 ausgeführt wird.
- Wenn die Registerinstruktion "setlb" im Zyklus 3 dekodiert wird, werden 4 Bytes des Kodes ("add a, b, c" und "mul a, b, c") von dem FIB 142 an das BIR 171 gesendet. Im Zyklus 4 wird die Registerinstruktion "setlb" ausgeführt, und ein Zeiger, welcher die Summe einer Adresse der aktuell dekodierten Instruktion "add a, b, c" und von 4 ist, wird von dem DIC 151 an das BAR 172 geliefert. Demzufolge wird der Wert 1007 (1003 + 4), der die Adresse der Instruktion "add i, 1, i" ist, in dem BAR 172 gespeichert.
- Anschließend werden, wenn die Hochgeschwindigkeits-Schleifeninstruktion "Icc L" im Zyklus 9 anschließend an das Dekodierungsstadium in Zyklus 8 ausgeführt wird, die 4 Bytes des Kodes von dem BIR 171 an den DIB 152 gesendet und die Adresse der Instruktion "add i, 1, i" wird von dem BAR 172 zu dem FIC 141 gesendet. Demzufolge wird die Adresse der Instruktion "add i, 1, i", welche den 4 Bytes des in dem BIR 171 gespeicherten Kodes folgt, in dem FIC 141 als eine Holadresse gesetzt.
- Dieselbe Operation wird durchgeführt, wenn die Hochgeschwindigkeits- Schleifeninstruktion "Icc L" in dem Zyklus 13 dekodiert und im Zyklus 14 ausgeführt wird.
- In dem Prozessor der vorliegenden Ausführungsform speichert der DIC 151 einen Zeiger, der die Summe einer aktuell dekodierten Instruktionsadresse und des Verschiebungswertes 4 ist. Demzufolge ist es nicht notwendig, den Prozessor mit einem Addierer auszustatten, welcher speziell für die Berechnung einer Holadresse eines Kodes verwendet wird, welche der Verzweigungszielinformation folgt, indem zu der Verzweigungszielinstruktionsadresse 4 addiert wird, wenn die Registerinstruktion "setlb" ausgeführt wird.
- Ferner empfangen, wenn eine Verzweigung von der Hochgeschwindigkeits- Schleifeninstruktion "Icc L" ausgeführt wird, der FIC 141 und der DIC 151 dieselbe Adresse aus dem BAR 172. Es ist nicht erforderlich, Adressenberechnungen getrennt von dem FIC 141 und dem DIC 151 auszuführen, so daß der Prozessor nicht mit einer spezifischen Subtraktionseinrichtung ausgestattet sein muß.
- Fig. 8 ist ein Blockschaltbild, welches den Aufbau des Prozessors der zweiten Ausführungsform der vorliegenden Erfindung darstellt.
- Der Unterschied zu dem Prozessor 13 der in Fig. 1 dargestellten Ausführungsform liegt darin, daß der FIC 141 durch einen FIC 241 und der DIC 151 durch einen DIC 251 ersetzt ist. Der Prozessor 13 der zweiten Ausführungsform ist so aufgebaut, daß ein in dem DIC 251 zu speichernder Zeiger von einer Instruktionsholeinheit 24 berechnet wird, wenn eine Verzweigungsinstruktion ausgeführt wird, während der Zeiger in der ersten Ausführungsform durch die Instruktionsausführungseinheit 16 berechnet wird. Die nachstehende Erläuterung konzentriert sich auf diesen Unterschied.
- Fig. 9 ist ein Blockschaltbild, welches den detaillierten Aufbau des FIC 241 und des DIC 251 darstellt.
- Der FIC 241 enthält einen Addierer 91, eine Zwischenspeicher 92 und einen Selektor 93.
- Eine Schleifenschaltung die aus dem Addierer 91, dem Zwischenspeicher 92 und dem Selektor 93 besteht, bildet einen Zähler, der um 4 inkrementiert wird. Wenn der FIB 142 einen nicht belegten Bereich von 4 Bytes oder mehr aufweist, holt die Instruktionsholeinheit 24 4 Bytes an Kode und inkrementiert den FIC 241.
- Wenn eine Nicht-Verzweigungsinstruktion ausgeführt wird, selektiert der Selektor 93 den Ausgang des Addierers 91. Wenn eine andere Verzweigungsinstruktion als die Hochgeschwindigkeits-Schleifeninstruktion ausgeführt wird, selektiert der Selektor 93 eine Verzweigungszieladresse, welche von der Instruktionsausführungseinheit 16 gesendet wird. Wenn andererseits die Hochgeschwindigkeits-Schleifeninstruktion ausgeführt wird, selektiert der Selektor 93 eine von dem BAR 172 gesendete Adresse. Der Selektor 23 gibt dann die selektierte Adresse an den Addierer 91 aus. Das Ausgangssignal des Zwischenspeichers 92 wird an den externen Speicher 11 als eine Holadresse gesendet.
- In Fig. 9 enthält der DIC 251 einen Addierer 101, einen Zwischenspeicher 102 und Selektoren 103 und 104.
- Eine Schleifenschaltung, die aus dem Addierer 101, dem Zwischenspeicher 102 und dem Selektor 103 besteht, bildet einen Zähler, der um die Wortlänge einer dekodierten Instruktion in jedem Instruktionsdekodierungsstadium inkrementiert wird.
- Wenn eine Nicht-Verzweigungsinstruktion dekodiert wird, addiert der Addierer 101 die Wortlänge der dekodierten Instruktion zu dem Zeiger in dem Zwischenspeicher 102 in der zweiten Hälfte des Instruktionsdekodierungsstadiums. Wenn eine Verzweigungsinstruktion (ausgenommen die Hochgeschwindigkeits-Schleifeninstruktion), die den Zeiger in dem DIC 251 betrifft, ausgeführt wird, addiert der Addierer 101 "-4" zu dem Zeiger in dem Zwischenspeicher 102.
- Der Zwischenspeicher 102 speichert einen Zeiger, der die Summe einer aktuell dekodierten Instruktionsadresse und des Verschiebungswertes 4 ist. Bei einer Initialisierung speichert der Zwischenspeicher 102 "(die Startadresse) +4", welche von dem FIC 241 gesendet wird.
- Der Selektor 103 selektiert üblicherweise die Wortlänge der dekodierten Instruktion, welche von der Instruktionsdekodierungseinheit 25 geliefert wird. Wenn eine Instruktion, wie z. B. eine Verzweigungsinstruktion mit einer relativen Adresse oder einer Subroutinenaufrufinstruktion ausgeführt wird, selektiert der Selektor 103 "-4", um den Zeiger anzupassen.
- Wenn eine Nicht-Verzweigungsinstruktion ausgeführt wird, selektiert der Selektor 104 das Ausgangssignal des Addierers 101. Wenn die Hochgeschwindigkeits- Schleifeninstruktion ausgeführt wird, selektiert der Selektor 104 das Ausgangssignal des BAR 172. Wenn eine andere Verzweigungsinstruktion als die Hochgeschwindigkeits- Schleifeninstruktion ausgeführt wird, selektiert der Selektor 104 das Ausgangssignal "(Verzweigungszieladresse) +4") des Addierers 91 in dem FIC 241.
- Fig. 10 stellt die Operationsinhalte derselben Adressierungsinstruktionen wie in Fig. 6 dar, d. h. der einfachen Verzweigungsinstruktion "branch abs_adrs", der Subroutinenaufrufinstruktion "call abs_adrs", der Subroutinenrücksprunginstruktion "ret" und der einfachen Verzweigungsinstruktion "branch rel_adrs"". Man beachte, daß die oberhalb der Strichlinie geschriebenen Operationen in dem Instruktionsdekodierungsstadium ausgeführt werden, während die unterhalb der gestrichelten Linie geschriebenen Operationen in dem Instruktionsausführungsstadium ausgeführt werden.
- Bei der Verarbeitung der einfachen Verzweigungsinstruktion "branch abs_adrs" speichert die Instruktionsverarbeitungseinheit 16 die absolute Adresse "abs_adrs" in dem FIC 241 (Operation 1001), und der Addierer 91 in der Instruktionsholeinheit 24 addiert 4 zu der in dem FIC 241 gespeicherten Adresse, wobei die Summe dann in dem DIC 251 gespeichert wird (Operation 1002). Somit wird, bei der Verarbeitung einer Verzweigungsinstruktion, die eine Zieladresse durch absolute Adressierung spezifiziert, der Addierer 91 in dem FIC 241 verwendet, um den Verschiebungswert von 4 zu addieren, um so den Zeiger in dem DIC 251 zu berechnen.
- Bei der Verarbeitung der Subroutinenaufrufinstruktion "call abs_adrs" speichert die Instruktionsausführungseinheit 16 die absolute Adresse "abs_adrs" in dem FIC 241 (Operation 1003). Der Addierer 101 in dem DIC 251 addiert die Instruktionswortlänge zu dem Zeiger (Operation 1004) und subtrahiert 4 von dem Additionsergebnis in dem DIC 251. Die Instruktionsausführungseinheit 16 schiebt das Subtraktionsergebnis auf einen Stapel (Operation 1005). Der Addierer 91 in dem FIC 241 addiert 4 zu der absoluten Adresse "abs_adrs", die in dem FIC 241 gespeichert ist, wobei die Summe dann in dem DIC 251 gespeichert wird (Operation 1006). Somit wird der Addierer 101 in dem DIC 251 dazu verwendet, um den Verschiebungswert 4 zu subtrahieren, um so eine Rücksprungadresse zu berechnen, die auf den Stapel geschoben wird, während der Addierer in dem FIC 241 dazu verwendet wird, den Verschiebungswert zu addieren, um so den Zeiger in dem DIC 251 zu berechnen.
- Bei der Verarbeitung der Subroutinenrücksprunginstruktion "ret" stößt die Instruktionsausführungseinheit 16 die Rücksprungadresse aus, d. h. eine Adresse einer Instruktion, welche der Subroutinenaufrufinstruktion "call abs_adrs" folgt, aus dem Stapel und speichert die Rücksprungadresse in dem FIC 241 (Operation 1007). Der Addierer 91 in dem FIC 241 addiert 4 auf die Rücksprungadresse, wobei die Summe dann in dem DIC 251 gespeichert wird (Operation 1008). Somit wird bei der Verarbeitung einer Rücksprunginstruktion der Addierer 91 in dem FIC 241 dazu verwendet, um den Verschiebungswert 4 zu addieren, um so den Zeiger in dem DIC 251 zu berechnen.
- Bei der Verarbeitung der einfachen Verzweigungsinstruktion "branch rel_adrs" addiert die Instruktionsausführungseinheit 16 die relative Adresse "rel-adrs" auf einen Wert, der durch den Addierer 101 durch Subtraktion von 4 von dem Zeiger in dem DIC 251 erhalten wird und speichert die Summe in dem FIC 241 (Operation 1009). Dann addiert der Addierer 91 4 zu der in dem FIC 241 gespeicherten Adresse und speichert diese Summe in dem DIC 251 (Operation 1010). Somit wird bei der Verarbeitung einer Verzweigungsinstruktion, die ein Verzweigungsziel durch eine relative Adressierung spezifiziert, der Addierer 101 in dem DIC 251 dazu verwendet, um den Verschiebungswert 4 zu subtrahieren, während der Addierer 91 in dem FIC 241 dazu verwendet wird, den Verschiebungswert 4 zu addieren.
- Wie vorstehend beschrieben, wird in dem Prozessor 13 der zweiten Ausführungsform die Addition des Verschiebungswertes 4 in den Operation 1002, 1006, 1008 und 1010 durch den Addierer 91 in dem FIC 241 ausgeführt, während die Subtraktion des Verschiebungswertes 4 in den Operation 1005 und 1009 durch den Addierer 101 in dem DIC 251 ausgeführt wird.
- Fig. 11 ist ein Zeitdiagramm, welches die Verarbeitung der einfachen Verzweigungsinstruktion "branch rel_adrs" darstellt.
- In der Figur wird die einfache Verzweigungsinstruktion "branch rel_adrs" in den Zyklen T1 und T2 dekodiert und ausgeführt, während eine Verzweigungszielinstruktion in den Zyklen T3 und T4 geholt und dekodiert wird.
- In den Zyklus T1 subtrahiert der Addierer 101 4 von dem Zeiger in dem DIC 251. In dem Zyklus T2 addiert die Instruktionsausführungseinheit 16 die relative Adresse "rel-adrs" zu dem Subtraktionsergebnis, so daß eine Verzweigungszieladresse BA berechnet und in dem FIC 241 gespeichert wird.
- Im Zyklus T3 wird die Verzweigungszieladresse BA von dem FIC 241 an den externen Speicher 11 ausgegeben, um Kode (4 Bytes) einer Verzweigungszielinformation zu holen. Der Addierer 91 addiert 4 zu der Verzweigungszieladresse BA in dem FIC 241 in der zweiten Hälfte des Zyklusses T3.
- Im Zyklus T4 wird die durch den Addierer 91 erhaltene Summe in dem FIC 241 und dem DIC 251 gespeichert.
- Obwohl die Verarbeitungseinheit des Prozessors auf 32 Bit in den vorstehenden Ausführungsformen eingestellt ist, ist die vorliegende Erfindung nicht auf diesen Wert beschränkt. Demzufolge kann der Prozessor auch Daten in 16- oder 64 Bit-Einheiten verarbeiten. Ferner sind, obwohl die Speichergröße in dem BIR 171 4 Bytes (32 Bits) in den vorstehenden Ausführungsformen beträgt, auch andere Speichergrößen anwendbar, so lange mindestens eine Instruktion zu dem Zeitpunkt geholt werden kann, an dem der Instruktionsdekoder die Dekodierung eines Verzweigungszielinstruktionskodes dieser Größe innerhalb des Zyklusses abschließt, welcher der Dekodierung der Hochgeschwindigkeits-Schleifeninstruktion folgt.
- Obwohl das in den vorstehenden Ausführungsformen verwendete Programm aus Instruktionen variabler Wortlänge besteht, kann die vorliegende Erfindung auch auf Instruktionen mit fester Wortlänge angewendet werden. In einem derartigen Fall können die Aufbauten des DIC 151 und der Selektionseinheit 143 weiter vereinfacht werden.
- Ferner kann, obwohl die Warteschlange 171a (Ringpuffer) in dem Fig. 4 dargestellten BIR 171 verwendet wird, das BIR 171 auch so aufgebaut sein, daß jedes Byte in den 4 Bytes des in dem BIR 171 gespeicherten Kodes als der Start des Kodes gesetzt werden kann.
- Fig. 12 stellt ein Beispiel einer derartigen Modifikation der Warteschlange 171a dar. In der Figur ist die in Fig. 4 dargestellte Warteschlange 171a durch ein 4-Byte-Register 120 und Selektoren 121a-121d in dem BIR 171 ersetzt. Die Selektionslogik der Selektoren 121a-121d ist in Fig. 13 dargestellt. Beispielsweise speichert das Register 120 4 Bytes des Kodes A, B, C und D. Wenn die Anzahl gültiger Bytes 4 ist, geben die Selektoren 121a-121d die 4 Bytes in der Reihenfolge von "ABCD" an den DIB 152 über die in Fig. 4 dargestellten Selektoren 143a-143d aus.
- Wenn andererseits die Anzahl gültiger Bytes 3 ist, geben die Selektoren 121a-121d die 4 Bytes in der Reihenfolge von "BCDA" aus. Mit dem Empfang der 4 Bytes selektieren die Selektoren 143a-143d in der Instruktionsholeinheit die gültigen 3 Bytes "BCD" und kombinieren die gültigen 3 Bytes "BCD" als Bytes höherer Ordnung und 1 Byte, das aus dem FIB 152 als ein Byte niedriger Ordnung empfangen wird, um 4 Bytes an Kode an den DIB 152 aufzugeben. Die Selektion wird in der gleichen Weise ausgeführt, wenn die Anzahl gültiger Bytes 2 oder 1 ist.
- Der in Fig. 12 dargestellte Aufbau ermöglicht dem Verzweigungszielinstruktionsregister seine Verarbeitungsgeschwindigkeit im Vergleich zu vergrößern, wenn eine Verschiebung gemäß Darstellung Fig. 4 ausgeführt wird.
- Obwohl die vorliegende Erfindung vollständig im Rahmen von Beispielen unter Bezugnahme auf die beigefügten Zeichnungen beschrieben wurde, sei angemerkt, daß verschiedene Veränderungen und Modifikationen für den Fachmann auf diesem Gebiet ersichtlich sind.
Claims (15)
1. Prozessor zur Ausführung eines Programms, das eine Registerinstruktion, welche
unmittelbar vor einer Programmschleife gesetzt wird, und eine Schleifeninstruktion,
welche an einem Ende der Programmschleife gesetzt wird, enthält, wobei der
Prozessor umfaßt:
eine Holeinheit (14) zum Holen eines Kodes aus einem Speicher (11); eine
Dekodierungseinheit (15) zum Dekodieren von in dem geholten Kode enthaltenen
Instruktionen; und eine Ausführungseinheit (16, 17) zum Ausführen der dekodierten
Instruktion,
wobei die Ausführungseinheit enthält:
eine Speichereinrichtung (17) um, wenn die Dekodierungseinheit (15) die
Registerinstruktion dekodiert, Kode bei dem Start der Programmschleife zu speichern, die
von der Holeinheit (14) in einen ersten Puffer (171) geholt wurde; und
eine Verzweigungseinrichtung, um die Dekodierungseinheit (15) den in dem ersten
Puffer (171) gespeicherten Kode dekodieren zu lassen, wenn die
Schleifeninstruktion von der Dekodierungseinheit dekodiert wird und eine Verzweigungsbedingung
erfüllt ist;
dadurch gekennzeichnet, daß
die Dekodierungseinheit (15) enthält:
einen Zähler (151) dekodierter Instruktionen zum Speichern und Aktualisieren eines
Zeigers, der eine Summe eines festen Verschiebungswertes und einer Adresse der
Instruktion ist, welche gerade dekodiert wird, in der Weise, daß der Zeiger einer
Adresse eines Kodes entspricht, der dem in dem ersten Puffer gespeicherten Kode
folgt, und
wobei die Speichereinrichtung auch dazu dient, um, wenn die Dekodierungseinheit
(15) die Registerinstruktion dekodiert, den in dem Zähler (151) dekodierter
Instruktionen gespeicherten Zeiger in einen zweiten Puffer (172) zu speichern; und
und die Verzweigungseinrichtung auch dazu dient, die Holeinheit einen Kode holen
zu lassen, der von einer Adresse aus beginnt, die dem in dem zweiten Puffer
gespeicherten Zeiger entspricht, wenn die Dekodierungseinheit (15) die
Schleifeninstruktion dekodiert und die Verzweigungsbedingung erfüllt ist.
2. Prozessor nach Anspruch 1,
wobei der feste Verschiebungswert, gleich einer Speichergröße des ersten Puffers
(171) ist.
3. Prozessor nach Anspruch 2,
wobei der Zähler (151) dekodierter Instruktionen, wenn er initialisiert wird, eine
Summe einer Startadresse und des festen Verschiebungswertes speichert.
4. Prozessor nach Anspruch 3,
wobei die Holeinheit (14) einen Addierer enthält, welcher eine Holadresse
inkrementiert, von welcher Kode durch den festen Verschiebungswert zu holen ist; und
wobei der Zähler (151) dekodierter Instruktionen einen Ausgang des Addierers als
den Zeiger speichert, wenn die Holadresse auf die Startadresse initialisiert wird.
5. Prozessor nach Anspruch 1,
wobei die Ausführungseinheit (16, 17) ferner eine Verzweigungseinheit enthält, um,
wenn eine Verzweigungsinstruktion mit einer absoluten Adresse von der Dekodierungseinheit
dekodiert wird, die absolute Adresse an einen Zähler dekodierter
Instruktionen in der Holeinheit zu senden, und einen Wert, der durch Addition des
festen Verschiebungswertes auf die absolute Adresse erhalten wird, an den Zähler
dekodierter Instruktionen zu senden.
6. Prozessor nach Anspruch 5,
wobei, wenn eine Verzweigungsinstruktion mit einer relativen Adresse von der
Dekodierungseinheit dekodiert wird, die Verzweigungseinrichtung einen Wert, der
durch Addition der relativen Adresse auf den in dem Zähler dekodierter
Instruktionen gespeicherten Zeiger erhalten wird, an den Zähler dekodierter Instruktionen
sendet, und einen Wert, der durch Subtraktion des festen Verschiebungswertes von
dem Wert, welcher an den Zähler dekodierter Instruktionen gesendet wird, erhalten
wird an den Zähler geholter Instruktionen sendet.
7. Prozessor nach Anspruch 5,
wobei der Zähler (141) geholter Instruktionen ein Register zum Speichern einer
Holadresse und einen Addierer zum Inkrementieren der in der Register gespeicherten
Holadresse enthält, und
wobei, wenn die Verzweigungsadresse mit der absoluten Adresse durch die
Dekodierungseinheit dekodiert wird, die Verzweigungseinrichtung den Addierer in dem
Zähler geholter Instruktionen den festen Verschiebungswert auf die absolute
Adresse addieren läßt und ein Additionsergebnis an den Zähler dekodierter Instruktionen
sendet.
8. Prozessor nach Anspruch 1, in welchem die Holeinheit, die Dekodierungseinheit
und eine Ausführungseinheit einer Pipeline-Verarbeitung durchführen, welche
mindestens drei Stadien umfaßt, und zwar ein Holstadium, ein Dekodierungsstadium
und ein Ausführungsstadium;
wobei die Holeinheit (14) einen Zähler (141) geholter Instruktionen enthält, um eine
Holadresse zu speichern und zu aktualisieren, und einen Puffer (142) geholter
Instruktionen zum Speichern des geholten Kodes,
die Dekodierungseinheit (15) einen Puffer (152) dekodierter Instruktionen enthält,
um eine Instruktion zu speichern, die gerade dekodiert wird; und wobei
der Kode, welcher in dem Puffer (142) geholter Instruktionen gespeichert ist, in den
ersten Puffer (171) gespeichert wird, wenn die Registerinstruktion durch die
Dekodierungseinheit dekodiert wird,
der feste Verschiebungswert gleich einer Größe des ersten Puffers (171) ist, und
die Verzweigungseinrichtung, wenn die Schleifeninstruktion dekodiert wird und die
Verzweigungsbedingung erfüllt ist, den Zeiger in dem zweiten Puffer (172) an den
Zähler (141) geholter Instruktionen sendet und den Kode in den ersten Puffer (171)
an den Puffer (152) dekodierter Instruktionen.
9. Prozessor nach Anspruch 8,
wobei der Zähler (151) dekodierter Instruktionen, wenn er initialisiert wird, eine
Summe einer Startadresse und des festen Verschiebungswerts speichert
10. Prozessor nach Anspruch 9,
wobei der Zähler (141) geholter Instruktionen einen Addierer enthält, der die
Holadresse um den festen Verschiebungswert inkrementiert; und
wobei der Zähler (151) dekodierter Instruktionen einen Ausgang des Addierers als
den Zeiger speichert, wenn die Holadresse auf die Startadresse initialisiert wird.
11. Prozessor nach Anspruch 9,
wobei die Programmschleife aus mehreren Instruktionen mit variablen Wortlängen
besteht,
wobei der Prozessor ferner umfaßt:
eine Selektionseinrichtung zum Selektieren von Kode, dessen Gesamtmenge gleich
der einer Speichergröße des dekodierten Instruktionspuffers ist, aus dem ersten
Puffer und aus dem Puffer geholter Instruktionen und zum Ausgeben des
selektierten Kodes an den Puffer dekodierter Instruktionen; und
eine Selektionssteuereinheit zum Steuern der Selektionseinrichtung, daß sie den
Kode zuerst aus dem ersten Puffer und dann aus dem Puffer geholter Instruktionen
selektiert,
wobei die Hochgeschwindigkeits-Verzweigungseinrichtung die
Selektionssteuereinheit aktiviert, wenn die Schleifeninstruktion dekodiert wurde und die
Verzweigungsbedingung erfüllt ist, und
wobei die Selektionseinrichtung den Kode aus dem Puffer geholter Instruktionen
holt, wenn die Selektionssteuereinheit nicht aktiviert ist.
12. Prozessor nach Anspruch 8,
wobei die Ausführungseinheit ferner enthält:
eine Verzweigungseinrichtung, um, wenn eine Verzweigungsinstruktion mit einer
absoluten Adresse durch die Dekodierungseinheit dekodiert wird, die absolute
Adresse an den Zähler geholter Instruktionen zu senden und um einen Wert, der
durch Addieren des festen Verschiebungswertes auf den absoluten Wert erhalten
wird, an den Zähler dekodierter Instruktionen zu senden.
13. Prozessor nach Anspruch 12,
wobei, wenn eine Verzweigungsinstruktion mit einer relativen Adresse von der
Dekodierungseinheit dekodiert wird, die Verzweigungseinrichtung einen Wert, der
durch Addition der relativen Adresse auf den in dem Zähler dekodierter
Instruktionen gespeicherten Zeiger erhalten wird, an den Zähler dekodierter Instruktionen
sendet, und einen Wert, der durch Subtraktion des festen Verschiebungswertes von
dem Wert, welcher an den Zähler dekodierter Instruktionen gesendet wird, an den
Zähler geholter Instruktionen sendet.
14. Prozessor nach Anspruch 12,
wobei der Zähler geholter Instruktionen ein Register zum Speichern der Holadresse
und einen Addierer zum Inkrementieren der in dem Register gespeicherten
Holadresse enthält, und
wobei, wenn die Verzweigungsadresse mit der absoluten Adresse durch die
Dekodierungseinheit dekodiert wird, die Verzweigungseinrichtung den Addierer in dem
Zähler geholter Instruktionen den festen Verschiebungswert auf die absolute
Adresse addieren läßt, und ein Additionsergebnis an den Zähler dekodierter Instruktionen
sendet.
15. Prozessor nach Anspruch 13,
wobei der Zähler geholter Instruktionen enthält:
ein Adressenregister zum Speichern der Holadresse; und
einen ersten Addierer zum Inkrementieren der Holadresse in dem Adressenregister
um einen vorbestimmten Wert,
wobei der Zähler dekodierter Instruktionen enthält:
ein Zeigerregister zum Speichern des Zeigers; und
einen zweiten Addierer zum Inkrementieren des Zeigers in dem Zeigerregister um
eine Wortlänge einer dekodierten Instruktion,
wobei, wenn die Verzweigungseinrichtung mit der relativen Adresse von der
Dekodierungseinheit dekodiert wird, die Verzweigungseinrichtung:
den zweiten Addierer den festen Verschiebungswert von dem Zeiger in dem
Zeigerregister subtrahieren läßt;
eine Summe eines Subtraktionsergebnisses und der relativen Adresse in das
Adressenregister als eine Verzweigungszieladresse speichert;
den ersten Addierer den vorbestimmten Wert auf die in dem Adressenregister
Gespeicherte Verzweigungszieladresse addieren läßt, wobei der vorbestimmte Wert
der feste Verschiebungswert ist; und
ein Additionsergebnis in das Zeigerregister speichert.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP17455197 | 1997-06-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69801617D1 DE69801617D1 (de) | 2001-10-18 |
DE69801617T2 true DE69801617T2 (de) | 2002-02-07 |
Family
ID=15980543
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69801617T Expired - Lifetime DE69801617T2 (de) | 1997-06-30 | 1998-06-22 | Reduzierung der Verzweigungsfehler durch einen Pipeline-Prozessor mit einer Schaltung mit geringer Schaltungsgrösse |
Country Status (6)
Country | Link |
---|---|
US (1) | US6189092B1 (de) |
EP (1) | EP0889395B1 (de) |
KR (1) | KR100510030B1 (de) |
CN (1) | CN1105350C (de) |
DE (1) | DE69801617T2 (de) |
TW (1) | TW377422B (de) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7032100B1 (en) * | 1999-12-17 | 2006-04-18 | Koninklijke Philips Electronics N.V. | Simple algorithmic cryptography engine |
US6728872B1 (en) * | 2000-02-04 | 2004-04-27 | International Business Machines Corporation | Method and apparatus for verifying that instructions are pipelined in correct architectural sequence |
KR100360888B1 (ko) * | 2000-08-01 | 2002-11-13 | 엘지전자 주식회사 | 피디피 티브이 모듈의 단자전압 자동 조정장치 |
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 |
US7185177B2 (en) * | 2002-08-26 | 2007-02-27 | Gerald George Pechanek | Methods and apparatus for meta-architecture defined programmable instruction fetch functions supporting assembled variable length instruction processors |
US7020769B2 (en) * | 2003-09-30 | 2006-03-28 | Starcore, Llc | Method and system for processing a loop of instructions |
US7412587B2 (en) * | 2004-02-16 | 2008-08-12 | Matsushita Electric Industrial Co., Ltd. | Parallel operation processor utilizing SIMD data transfers |
JP4354990B2 (ja) * | 2005-04-08 | 2009-10-28 | パナソニック株式会社 | プロセッサ |
JP2006309337A (ja) * | 2005-04-26 | 2006-11-09 | Toshiba Corp | プロセッサ及びプロセッサの命令バッファ動作方法 |
US9507600B2 (en) * | 2014-01-27 | 2016-11-29 | Texas Instruments Deutschland Gmbh | Processor loop buffer |
CN104699463B (zh) * | 2015-03-20 | 2017-05-17 | 浪潮集团有限公司 | 一种低功耗流水线的实现方法 |
GB2548604B (en) * | 2016-03-23 | 2018-03-21 | Advanced Risc Mach Ltd | Branch instruction |
CN115314161A (zh) * | 2022-08-05 | 2022-11-08 | 北京天融信网络安全技术有限公司 | 报文处理方法、装置、电子设备及存储介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4463422A (en) | 1982-07-12 | 1984-07-31 | Csp, Inc. | Method of processing an iterative program loop |
JPS6051948A (ja) | 1983-08-31 | 1985-03-23 | Hitachi Ltd | 情報処理装置 |
US4714994A (en) | 1985-04-30 | 1987-12-22 | International Business Machines Corp. | Instruction prefetch buffer control |
JP2708405B2 (ja) | 1986-03-03 | 1998-02-04 | 株式会社日立製作所 | コンパイラにおけるループ展開方法 |
US4933837A (en) | 1986-12-01 | 1990-06-12 | Advanced Micro Devices, Inc. | Methods and apparatus for optimizing instruction processing in computer systems employing a combination of instruction cache and high speed consecutive transfer memories |
US5522053A (en) * | 1988-02-23 | 1996-05-28 | Mitsubishi Denki Kabushiki Kaisha | Branch target and next instruction address calculation in a pipeline processor |
JP3102027B2 (ja) | 1990-11-20 | 2000-10-23 | 日本電気株式会社 | ループ制御のネスティング管理機構 |
US5450585A (en) | 1991-05-15 | 1995-09-12 | International Business Machines Corporation | Compiler with delayed conditional branching |
JP2761688B2 (ja) * | 1992-02-07 | 1998-06-04 | 三菱電機株式会社 | データ処理装置 |
GB2285154B (en) | 1993-12-24 | 1998-04-01 | Advanced Risc Mach Ltd | Branch cache |
JP2987311B2 (ja) | 1995-05-12 | 1999-12-06 | 松下電器産業株式会社 | プロセッサ及び翻訳装置 |
-
1998
- 1998-06-18 US US09/099,299 patent/US6189092B1/en not_active Expired - Lifetime
- 1998-06-22 EP EP98304886A patent/EP0889395B1/de not_active Expired - Lifetime
- 1998-06-22 DE DE69801617T patent/DE69801617T2/de not_active Expired - Lifetime
- 1998-06-29 TW TW087110470A patent/TW377422B/zh active
- 1998-06-29 CN CN98103178A patent/CN1105350C/zh not_active Expired - Lifetime
- 1998-06-30 KR KR10-1998-0025495A patent/KR100510030B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
TW377422B (en) | 1999-12-21 |
CN1105350C (zh) | 2003-04-09 |
KR100510030B1 (ko) | 2005-12-21 |
EP0889395A2 (de) | 1999-01-07 |
US6189092B1 (en) | 2001-02-13 |
EP0889395B1 (de) | 2001-09-12 |
KR19990007479A (ko) | 1999-01-25 |
DE69801617D1 (de) | 2001-10-18 |
CN1206144A (zh) | 1999-01-27 |
EP0889395A3 (de) | 1999-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69534113T2 (de) | Kompression der Befehlswörter eines Rechners | |
DE68928677T2 (de) | Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle | |
DE3750935T2 (de) | Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner. | |
DE3650232T2 (de) | Rechnersteuerung mit Verzweigung in einem einzigen Zyklus. | |
DE69033339T2 (de) | Mechanismus und Verfahren zur Vorhersage von Unterprogrammrücksprüngen | |
DE69534148T2 (de) | Rechnersystem zur Ausführung von Verzweigungsbefehlen | |
DE69229198T2 (de) | Verzweigungsbefehlprozessor und Verfahren | |
DE69801617T2 (de) | Reduzierung der Verzweigungsfehler durch einen Pipeline-Prozessor mit einer Schaltung mit geringer Schaltungsgrösse | |
DE69325086T2 (de) | Verfahren und System für spekulative Befehlsausführung | |
DE69433621T2 (de) | Geraet zur verarbeitung von befehlen in einem rechnersystem | |
DE69418146T2 (de) | Temporärer Registersatz für einen superpipeline-superskalaren Prozessor | |
DE69624195T2 (de) | Markierter vorausladungsabstand-und befehlsdekoder von variabler länge, befehlssätze und ihre verwendungsweise | |
DE69228360T2 (de) | Registerlesekontrolle | |
DE69030931T2 (de) | Mehrfachsequenzprozessorsystem | |
DE69622663T2 (de) | Zweistufige vorausholungspufferstruktur und verfahren mit bypass | |
DE69738188T2 (de) | Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor | |
DE3116100C2 (de) | Datenverarbeitungseinheit | |
DE69028138T2 (de) | Mechanismus zur präzisen Behandlung von Ausnahmebedingungen in einem Prozessor mit gepaarten Befehlen | |
DE68927855T2 (de) | Verfahren und Datenverarbeitungseinheit zur Vorverarbeitung von implizierten Spezifizierern in einem Pipeline-Prozessor | |
DE19855806A1 (de) | Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen | |
DE69734403T2 (de) | Verfahren im bezug auf die behandlung von konditionellen sprüngen in einer multietagen-pipeline-struktur | |
DE2715073C3 (de) | Mikroprogrammierte Rechner-Steuervorrichtung | |
DE69027932T2 (de) | Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen | |
DE4207148A1 (de) | Superscalar-prozessor | |
DE19526008C2 (de) | Befehlsvorholeinheit für einen Computer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: PANASONIC CORP., KADOMA, OSAKA, JP |