DE4206062A1 - Pipelineverarbeitung von instruktionen - Google Patents

Pipelineverarbeitung von instruktionen

Info

Publication number
DE4206062A1
DE4206062A1 DE4206062A DE4206062A DE4206062A1 DE 4206062 A1 DE4206062 A1 DE 4206062A1 DE 4206062 A DE4206062 A DE 4206062A DE 4206062 A DE4206062 A DE 4206062A DE 4206062 A1 DE4206062 A1 DE 4206062A1
Authority
DE
Germany
Prior art keywords
data
instruction
register
memory
load
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.)
Granted
Application number
DE4206062A
Other languages
English (en)
Other versions
DE4206062C2 (de
Inventor
Chikako Ikenaga
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of DE4206062A1 publication Critical patent/DE4206062A1/de
Application granted granted Critical
Publication of DE4206062C2 publication Critical patent/DE4206062C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking

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 auf ein Pipeline-Verar­ beitungsgerät nach dem Oberbegriff des Patentanspruches 1, auf einen Pipelineprozessor nach dem Oberbegriff des Patentanspru­ ches 4 sowie auf ein Verfahren zum Ausführen einer Instruktion nach dem Oberbegriff des Patentanspruches 8. Insbesondere bezieht sich die vorliegende Erfindung auf einen Computer mit einem reduzierten Instruktionssatz (RISC), der das Pipeline- Verfahren anwendet.
Die meiste Zeit zum Ausführen eines Programmes in einem Compu­ ter wird für sehr einfache Instruktionen wie "Load" (Laden), "Store" (Speichern), "Branch on Codition" (Abzweigen unter Be­ dingung) und "Add" (Addieren) verbraucht. Viele komplizierte Steuerschaltungen in einem Computer dienen zum Verarbeiten einer Instruktion, die eine Mehrzahl von Zyklen braucht, und für einen Operant innerhalb eines Speichers, der sich über eine Seitengrenze (Page-Grenze) erstreckt. Die Verarbeitungsge­ schwindigkeit kann erhöht werden, wenn eine selten benutzte komplizierte Operation nicht behandelt wird. Daher ist ein Computer mit einem reduzierten Instruktionssatz (RISC) entwic­ kelt worden zum Verarbeiten von nur häufig benutzten einfachen Instruktionen.
Der RISC wendet eine Laden/Speichern-Architektur an, in der auf einem Speicher nur die "Load"-Instruktion und "Store"-Instruk­ tion zugegriffen wird. Alle Arithmetikoperations-Instruktionen und Logikoperations-Instruktionen werden ausgeführt, indem in den internen Registern gespeicherte Daten benutzt werden. Daher weist der RISC eine Vielzahl von Registern auf und enthält eine Registerdatei als Register für die allgemeine Verwendung. Der RISC hat im wesentlichen die folgenden Eigenschaften:
  • 1) Ausführung einer Instruktion in einem Maschinenzyklus;
  • 2) Die Länge aller Instruktionen ist die gleiche (typi­ scherweise 32 Bit) mit einem einfachen festen Format;
  • 3) Auf den Speicher wird nur durch die "Load"-"Store"-Instruk­ tion zugegriffen, und die verbleibenden Instruktionen wer­ den unter Bezug auf die Register ausgeführt;
  • 4) Pipeline-Verarbeitung: Verarbeiten von mehreren Instruk­ tionen zur gleichen Zeit; und
  • 5) Übergeben einer Funktion zu der Software, die Eigenschaft zum Verbessern der Leistung wird durch die Hardware reali­ siert, während eine komplizierte Funktion der Software zu­ geordnet wird.
Der wichtigste Punkt zur Verbesserung der Leistung einer Be­ triebsverarbeitungseinheit ist die Einzyklusausführung (Ausfüh­ rung einer Instruktion in einem Maschinenzyklus) und das Redu­ zieren eines Maschinenzyklus soweit wie möglich. Die oben auf­ geführte Eigenschaft, daß eine Operation nur auf Daten in den Registern ausgeführt wird und das auf den Speicher nur durch die "load/store"-Instruktion zugegriffen wird, wird für die Einzyklusausführung angenommen. Eine Instruktion eines einfa­ chen, festen Formates reduziert die Dekodierzeit der Instruk­ tion und verkürzt den Maschinenzyklus. Das Übergeben einer Funktion an die Software bedeutet, daß der Compiler für eine komplizierte Funktion verantwortlich ist. Die Optimisierungs­ funktion des Compilers kann auch eine Reihenfolge der Instruk­ tionen neu anordnen, so daß sie für die Pipeline geeignet sind.
Der RISC wendet ein Pipelinesteuerverfahren zum Ausführen einer Instruktion mit hoher Geschwindigkeit an. Es gibt verschiedene Arten von Strukturen der Pipeline, und verschiedene RISCs ent­ halten verschiedene Pipelinestrukturen.
Fig. 1 ist ein Diagramm, das ein Beispiel eines allgemeinen Funktionsablaufes eines RISC zeigt. Der in Fig. 1 gezeigte RISC weist einen Instruktionsspeicher 1 mit einem Cache-Spei­ cher, der z. B. zum Speichern von Instruktionen dient, eine Re­ gisterdatei 2 mit einer Mehrzahl von Registern zum zeitweiligen Speichern von Daten, einen Datenspeicher 3 zum Speichern von Daten und Pipelinestufen von 5 Stufen 4 bis 8 auf.
Die Pipelinestufen weisen eine Instruktionsholstufe 4 zum Holen der Instruktion aus dem Instruktionsspeicher 1, eine Instruk­ tionsdekodierstufe 5 zum Dekodieren der durch die Instruktions­ holstufe 4 geholten Instruktion, eine Ausführungsstufe 6 zum Ausführen der durch die Instruktionsdekodierstufe 5 dekodierten Instruktion, eine Speicherzugriffsstufe zum Zugreifen auf den Datenspeicher 3, wenn die in der Instruktionsdekodierstufe 5 dekodierte Instruktion eine Speicherzugriffsinstruktion ist, und eine Rückschreibstufe 8 zum Zurückschreiben des Ausfüh­ rungsresultates der Betriebsinstruktion und der geladenen Daten von dem Datenspeicher 3 in ein entsprechendes Register in der Registerdatei 2.
Der Instruktionsspeicher 1 und der Datenspeicher 3 weisen je einen Cache-Speicher oder ähnliches auf. Die Instruktionhol­ stufe holt eine entsprechende Instruktion aus dem Instruktions­ speicher 1 gemäß dem Ausgangssignal eines Programmzählers (nicht gezeigt) und legt dieselbe an die Instruktionsdekodier­ stufe 5 an. Die Instruktionsdekodierstufe 5 dekodiert eine an­ gelegte Instruktion und liest die Inhalte eines entsprechenden Registers in der Registerdatei 2 aus. Wenn die geholte Instruk­ tion in der nächsten Ausführungsstufe 6 ausgeführt werden kann, überführt die Dekodierstufe 5 die dekodierte Instruktion an die Ausführungsstufe 6.
Die Instruktionen werden parallel gemäß der Pipeline in dem RISC ausgeführt. In manchen Fällen gibt es eine Datenabhängig­ keit zwischen den Instruktionen. Zum Beispiel wird ein Opera­ tionsergebnis von der nächsten Operationsinstruktion benutzt. In diesem Fall verzögert die Instruktionsdekodierstufe 5 übli­ cherweise das Abgeben der Instruktion an die Ausführungsstufe 6, bis die dekodierte Instruktion ausgeführt werden kann. Die Ausführungsstufe 6 führt die angelegte Instruktion aus, wenn die dekodierte Instruktion eine Operationsinstruktion ist. Wenn die dekodierte Instruktion eine Abzweigungsinstruktion ist, führt die Ausführungsstufe 6 eine Bestimmung über die Abzwei­ gungsbedingung aus. Wenn die dekodierte Instruktion eine Spei­ cherzyklusinstruktion (Lade- oder Speicherinstruktion) ist, be­ rechnet die Ausführungsstufe 6 die effektive Adresse des Daten­ speichers 3 und legt die Adresse an die Speicherzugriffsstufe 7 an.
Die Speicherzugriffsstufe 7 greift auf den Datenspeicher 3 ein­ schließlich eines Cache-Speichers z. B. gemäß der Adresse von der Ausführungsstufe 6 zu und führt das Schreiben/Lesen der Da­ ten aus.
Der RISC ist gemäß eines Zweiphasen-, nicht überlappenden Taktes (T-Takt und L-Takt, wie sie später beschrieben werden) tätig. Der RISC ist in Pipelineweise strukturiert und holt eine neue Instruktion während jeden Taktzyklus. Der in Fig. 1 gezeigte RISC benötigt 5 Zyklen zum Beenden der Ausführung einer Instruktion. Er ist jedoch derartig auf Pipelineweise struktu­ riert, daß er mit jedem Taktzyklus eine neue Instruktion be­ ginnen kann. Die neue Instruktion wird bereits begonnen, bevor die gegenwärtige Instruktion beendet ist.
Fig. 2 zeigt den Pipelinebetrieb. Wie in Fig. 2 gezeigt ist, geht eine Instruktion ¢ 1 an eine Instruktion der # 3 durch die Instruktionsholstufe (IF), die Instruktionsdekodierstufe (ID), die Instruktionsausführungsstufe (EXC), die Speicherzugriffsstufe (MEM) und die Rückschreibstufe (WB). Die Instruktion # 2 wird im Zyklus 2 geholt, indem die Instruktion # 1 in der Stufe der Instruktionsdekodierung ist. Die Instruktion # 3 wird in dem Zyklus 3 geholt, indem die Instruktion # 2 dekodiert wird. Die Instruktion # 5 wird in dem Zyklus 5 geholt, indem die Instruktion # 1 zurückgeschrieben wird. Auf diese Weise werden die Instruktionen parallel ausgeführt, so daß insgesamt gesehen eine Instruktion effektiv in einem Maschinenzyklus ausgeführt werden kann.
Bei einer Instruktionsausführung in dem Pipelineverfahren wird die nächste Instruktion begonnen, bevor die gegenwärtige In­ struktion beendet ist. Folglich kann eine Datenabhängigkeit zwischen Instruktionen verursacht werden. In vielen Fällen wird eine Bestimmung in der Instruktionsdekodierstufe 5 durchge­ führt, ob es eine Datenabhängigkeit zwischen den Instruktionen gibt. Wenn es eine Abhängigkeit zwischen den Instruktionen gibt, kann die nächste Instruktion nicht ausgeführt werden, bis die Abhängigkeit beseitigt wird, wodurch eine Störung in der Pipeline verursacht wird. Die Abhängigkeit zwischen den Instruktionen wird nun beschrieben.
Wie in Fig. 3 gezeigt ist, wird der RISC als Reaktion auf das Zweiphasentaktsignal, d. h. den T-Takt und L-Takt tätig. Die T- Taktphase und die L-Taktphase bilden einen Maschinenzyklus. In der Ausführungsstufe 6, wird die Operation in der T-Taktphase ausgeführt und das Operationsresultat auf einem Bus in der L- Taktphase übertragen. Im Falle einer Verzweigung-Auf-Bedingung- Instruktion wird die Verzweigungszieladresse durch einen in einem Programmzähler eingebauten Addierer in der T-Taktphase der Ausführungsstufe 6 berechnet, wobei der Programmzähler in der Instruktionsholstufe 4 enthalten ist.
Im Falle einer Lade- oder Speicherinstruktion, berechnet die Ausführungsstufe 6 eine effektive Adresse in der T-Taktphase und überträgt die effektive Adresse an einen Adreßstift in der L-Taktphase. In der Speicherzugriffsstufe 7 wird diese Adresse zu dem Datenspeicher 3 in der T-Taktphase übertragen, und Daten werden in den Datenspeicher 3 geschrieben oder aus ihm gelesen in der L-Taktphase. Das Ausführungsresultat (Operationsresultat oder Ladedaten) der Instruktion wird in die Registerdatei in der T-Taktphase durch die Rückschreibphase 8 geschrieben.
Es gibt Fälle, in denen eine Instruktion eine bedingte Abzwei­ gungsinstruktion ist, wo eine Instruktion und das Ausführungs­ resultat der vorherigen Instruktion benutzt und wo eine Instruktion von dem Datenspeicher ausgelesene Daten benutzt, und in diesen Fällen gibt es eine Abhängigkeit einer Instruk­ tion von einer anderen. Es sei jetzt der Fall der Ladeinstruk­ tion betrachtet.
Die aus dem Datenspeicher 3 geladenen Daten sind nicht solange gültig, bis der Speicherzugriffszyklus in der Speicherzugriffs­ stufe beendet ist. Folglich können die aus dem Speicher 3 gela­ denen Daten nicht in der Ausführungsstufe der nächsten Instruk­ tion benutzt werden. Es seien insbesondere die folgenden Instruktionen betrachtet.
  • a) load 1r0, (1r1)
  • b) and 1r3, 1r2, 1r0.
Die Instruktion (a) ist eine Instruktion die befiehlt, daß die Daten der Speicherzellen der Adresse, die in dem Register 1r1 der Registerdatei 2 aus dem Datenspeicher 3 gelesen werden sollen und in das Register 1r0 in der Registerdatei 2 geladen werden sollen.
Die Instruktion (b) ist eine Instruktion, die befiehlt, daß ein logisches Produkt der in den Registern 1r2 und 1r0 der Regi­ sterdatei 2 genommen werden soll und das Resultat daraus indem Register 1r3 der Registerdatei 2 gespeichert werden soll.
Wie in Fig. 4 gezeigt ist, benötigt die Instruktion (a) (Load- Instruktion) 5 Zyklen, um sie zu beenden. Die Inhalte des Re­ gisters 1r0 sind nicht bestimmt, bis die Rückschreibstufe WB dieser Instruktion (a) (Load-Instruktion) beendet ist. Norma­ lerweise werden in die Registerdatei 2 Daten in der T-Takt­ phase geschrieben, und Daten werden in der L-Taktphase gelesen. Die Instruktionsdekodierstufe 5 und die Rückschreibstufe 8 kön­ nen auf die Registerdatei 2 zugreifen. Die Ausführungsstufe 6 kann nicht auf die Registerdatei 2 zugreifen.
Wenn die Rückschreibstufe (Zyklus 5) einfach wartet, bis das Resultat der Instruktion (a) (Load-Instruktion) in das Register 1r0 der Registerdatei 2 geschrieben ist, muß die Instruktion (b) die Inhalte des Registers 1r0 der Registerdatei 2 in dem sechsten Zyklus auslesen und diese zu der Ausführungsstufe 6 in Fig. 4 übertragen. Folglich wird die Ausführung der Instruk­ tionen (b) (AND-Instruktion) um 3 Maschinenzyklen verzögert. Als Resultat treten Flaschenhälse in der Pipeline auf, wodurch die Geschwindigkeit der Verarbeitung der Instruktionen verrin­ gert wird.
Zum Minimieren des Auftretens von Flaschenhälsen in der Pipe­ line aufgrund der Abhängigkeit einer Instruktion von einer anderen, wie oben ausgeführt wurde, ist in manchen Fällen eine Hardware vorgesehen, die eine Bypass - (Umgehungs-)Architek­ tur oder Vorwärts-(Forwarding-)Architektur genannt wird. Bei dieser Architektur werden notwendige Operand-Daten zu einer arithmetischen und logischen Einheit unter Benutzung eines anderen Pfades zum Minimieren des Anhaltens des Ausführens einer Instruktion geführt, wenn die Operand-Daten der Instruk­ tion nicht benutzt werden können, obwohl die Instruktion die Ausführungsstufe erreicht und der Prozessor zum Ausführen der Instruktion fertig ist. Die Bypass-Architektur wird im folgen­ den kurz beschrieben.
Es gibt 2 Arten von Bypass-Architekturen (oder Vorwärts- Archi­ tekturen), d. h. eine Lade-Umgehungs-Architektur für aus dem Datenspeicher 3 geladene Daten und eine Resultat-Umgehungs-Ar­ chitektur für das in der arithmetischen und logischen Einheit erzielte Resultat.
Fig. 5 ist ein Diagramm, daß schematisch eine Struktur der Um­ gehungs-Architektur zeigt. In Fig. 5 ist eine Umgehungslogik 11 in dem Datenbus zum Steuern der Datenübertragung zwischen einer Registerdatei 10 und einer arithmetischen und logischen Einheit 12 vorgesehen. Die Registerdatei 10 enthält nicht nur ein Register für allgemeine Zwecke (Registerdatei 2 in Fig. 1), sondern auch ein Register für eine Pipelineumgehung und ein I/O-Register zum zeitweiligen Speichern von Eingangs/Ausgangs­ daten des Datenspeichers 3. Die Daten der Registerdatei 10 wer­ den auf einen ersten Quellenbus Src1 und einen zweiten Quellen­ bus Src2 gemäß dem in der Instruktion enthaltenen ersten und zweiten Quellenoperant. Zurückschreiben der Daten in die Regi­ sterdatei 10 wird durch die Umgehungslogik 11 ausgeführt.
Die Umgehungslogik 11 enthält einen Latch zum Latchen der aus dem Datenspeicher 3 geladenen Daten und des Operationsresul­ tates (Daten auf dem Resultatbus "Resultat") aus der arithme­ tischen und logischen Einheit 12. Die Umgehungslogik 11 ver­ gleicht 2 Registerquellen (Quellenoperanden) der gegenwärtigen Instruktion mit dem Bestimmungsoperand der vorhergehenden In­ struktion und führt eine Bestimmung durch, ob eine Umgehungs­ tätigkeit oder -Operation nötig ist. Wenn bestimmt ist, daß die Umgehungsoperation nötig ist, überträgt die Umgehungslogik 11 die gelatchten Daten auf den Quellenbus Src1 oder Src2 ohne diese aus der Registerdatei 10 auszulesen. Die Umgehungslogik 11 führt ebenfalls die Umgehungsoperation aus, wenn die gegen­ wärtige Instruktion das Operationsresultat der vorhergehenden Instruktion benötigt. Nur die Umgehungsoperation der geladenen Daten wird im folgenden beschrieben. Die geladenen Daten, die von der Umgehungslogik 11 gelatcht sind, werden in ein entspre­ chendes Register in dem Rückschreibzyklus zurückgeschrieben, wenn es nötig ist, dieselben in das entsprechende Register in­ nerhalb der Registerdatei 10 zurückzuschreiben.
Fig. 6 ist ein Diagramm, das speziell die Struktur der Umge­ hungslogik zeigt. Die Struktur einer Umgehungsarchitektur ist z. B. in M. Horowitz "MIPS-X: A 20-MPS Peak, 32-bit Micropro­ cessor with On-Chip-Chached", IEEE Journal of Solid-State- Circuits, Band SC-22, Nr. 5, Oktober 1980, Seiten 790-797 be­ schrieben.
Wie in Fig. 6 gezeigt ist, enthält die Umgehungslogik 11 ein Registerlatch 111 zum zeitweiligen Speichern eines ersten Quel­ lenoperantes (Quelle 1) der gegenwärtigen Instruktion, ein Re­ gisterlatch 112 zum zeitweiligen Speichern eines zweiten Quel­ lenoperantes (Quelle 2) der gegenwärtigen Instruktion, ein Re­ gister 113 zum Speichern eines Bestimmungsoperanden (Bestim­ mung) der vorliegenden Instruktion, ein Komparator 110 zum Ver­ gleichen der Inhalte der Registerlatche 111 und 112 mit den In­ halten des Registers 113 und eine Auswahlschaltung 114, die auf das Ausgangssignal des Komparators 110 zum Übertragen von Daten (Latchdaten) eines I/O-Registers 101, das in der Registerdatei 10 enthalten ist, auf einen Quellenbus Src1 oder Src2 reagiert. In diesem Fall wird im allgemeinen in der Umgehungslogik 11 der Quellenoperand der gegenwärtigen Instruktion mit den Bestimmun­ gen der 2 vorhergehenden Instruktionen verglichen, und 2 Regi­ ster 113 sind vorgesehen. In Fig. 6 ist jedoch nur ein Register für die Bestimmung zur Vereinfachung der Beschreibung gezeigt.
Das I/O-Register 101 latcht die von dem Datenspeicher 3 gelade­ nen Daten und speichert die in den Datenspeicher 3 zu schrei­ benden Daten zeitweilig während der Zeit des Speicherns. Die geladenen Daten des I/O-Registers 101 werden in ein entspre­ chendes Register der Registerdatei 2 durch die Rückschreibstufe 8 geschrieben. Wenn die Inhalte des entsprechenden Registers der Registerdatei 2 durch eine Operation auf den neuesten Stand gebracht werden, bevor die Daten geschrieben werden, werden die geladenen Daten, die von dem I/O-Register 101 gelatcht sind, nicht beachtet und nicht in das entsprechende Register ge­ schrieben. Eine kurze Beschreibung dieser Operation wird im folgenden gegeben.
Die Quelle 1 und die Quelle 2 der Quellenoperanten, die in der geholten Instruktion enthalten sind, werden in die Register- Latches 111 und 112 durch die Instruktionsdekodierstufe 5 ge­ speichert. Der Bestimmungsoperant der vorhergehenden Instruk­ tion ist ebenfalls in dem Register 113 durch die Instruktions­ dekodierstufe 5 gespeichert. Der Komparator 110 vergleicht die in den Registerlatchen 111 und 112 gespeicherten Quellenoperan­ den mit dem in dem Register 113 gespeicherten Operand. Wenn eine Übereinstimmung zwischen ihnen festgestellt wird, erzeugt der Komparator 110 ein Steuersignal für die Auswahlschaltung 114. Die Auswahlschaltung 114 überträgt als Reaktion auf das Steuersignal von dem Komparator 110 die in dem I/O-Register 101 gelatchten Daten auf den Quellenbus Src1 oder Src2 entsprechend dem Quellenoperand, für den die Übereinstimmung festgestellt worden ist.
Die Quellenbusse sind mit der arithmetischen und logischen Ein­ heit 12 verbunden, wie in Fig. 5 gezeigt ist. Folglich werden die in dem Speicherzugriffszyklus geladenen Daten zu der arith­ metischen und logischen Einheit 12 während der Ausführungsstufe 6 umgeleitet, ohne daß sie in der Registerdatei 2 gespeichert werden. Als Resultat können in der Praxis Flaschenhälse in der Pipeline verglichen mit dem Fall verringert werden, indem die geladenen Daten in die Registerdatei 2 geschrieben werden und dann die Daten wieder ausgelesen werden.
Selbst wenn eine derartige Umgehungsarchitektur eingesetzt wird, können die Flaschenhälse in der Pipeline nicht vollstän­ dig entfernt werden, wenn die Operationsinstruktion nach der Ladeinstruktion ausgeführt wird und die Operationsinstruktion die durch die Ladeinstruktion geladenen Daten benutzt. Das heißt, wie in Fig. 7 gezeigt ist, daß die durch die Lade-In­ struktion geladenen Daten in dem I/O-Register 110 gelatcht sind, wenn der Speicherzugriffszyklus MEM des Zyklus 4 beendet ist. Wenn die in dem I/O-Register 110 gelatchten Daten zu der arithmetischen und logischen Einheit 12 umgeleitet werden, kann die Instruktion (Fig. 7(b)) die bestimmten Operanddaten benut­ zen und im Zyklus 5 zum erstenmal ausgeführt werden. Folglich wird im Zyklus 4 ein Flaschenhals (Pipelineblockierung) in der Pipeline der Operationsinstruktion, die der Ladeinstruktion folgt, verursacht, wodurch die Verarbeitungsgeschwindigkeit re­ duziert wird.
Die Umgehungslogik ist in der Instruktionsdekodierstufe 5 ent­ halten. Daher führt im Zyklus 5 die Instruktionsdekodierstufe 5 nicht noch einmal das Dekodieren aus, und das Ausführen der Operation wird durch die Ausführungsstufe 6 ausgeführt.
Wie oben ausgeführt ist, wird, damit ein Fall bewältigt werden kann, indem ein Flaschenhals in der Pipeline aufgrund der Datenabhängigkeit einer Instruktion wie einer Operationsin­ struktion, die einer Ladeinstruktion folgt, verursacht wird, eine Bestimmung durchgeführt, ob die Instruktion in der In­ struktionsdekodierstufe 5 ausgeführt werden kann, und die Pipe­ line wird angehalten (Zuführen der Instruktion in die Ausfüh­ rungsstufe 6 wird verzögert) gemäß dem Resultat der Bestimmung. Als Alternative wird eine "NOP"-Instruktion zwischen die In­ struktionen eingefügt, von denen eine von der anderen abhängt, durch einen Compiler oder ähnliches im voraus, so daß ein Pi­ pelinehalt nicht verursacht wird.
Anhalten der Pipeline verursacht jedoch eine Verringerung der Verarbeitungsgeschwindigkeit, und das Einfügen der Leerlauf­ instruktion, d. h. des "NOP", das eine Nicht-Operation befiehlt, verursacht ebenfalls eine Verringerung in der Verar­ beitungsgeschwindigkeit.
Es ist daher die der Erfindung zugrundeliegende Aufgabe, ein Pipelineverarbeitungsgerät und einen Pipelineprozessor der eingangs beschriebenen Art zu schaffen, die eine Instruktion mit hoher Geschwindigkeit ausführen können, selbst wenn es eine Datenabhängigkeit der einen Instruktion von der anderen gibt; insbesondere sollen keine Flaschenhälse in der Pipeline verur­ sacht werden, selbst wenn es eine Datenabhängigkeit zwischen einer Ladeinstruktion und einer der Ladeinstruktion folgenden Operationsinstruktion gibt. Weiter ist es die der Erfindung zugrundeliegende Aufgabe, ein Verfahren zum Ausführen einer Instruktion der eingangs beschriebenen Art vorzusehen, bei dem die Instruktion mit hoher Geschwindigkeit ausgeführt werden kann, selbst wenn es eine Datenabhängigkeit zwischen den Instruktionen gibt.
Diese Aufgabe wird gelöst durch ein Pipelineverarbeitungsgerät der eingangs beschriebenen Art, daß durch die kennzeichnenden Merkmale des Patentanspruches 1 gekennzeichnet ist. Weiter wird die Aufgabe gelöst durch einen Pipelineprozessor, der eingangs beschriebenen Art, der durch die kennzeichnenden Merkmale des Patentanspruches 4 gekennzeichnet ist.
Dabei ist ein Speicherzugriffsmittel zum Auslesen entsprechen­ der Daten aus einem Datenspeicher entsprechend einer Lade-In­ struktion vorgesehen. Es ist ein Registerzugriffsmittel zum Auslesen entsprechend der Daten aus einer Registerdatei gemäß einer Operationsinstruktion vorgesehen, die der Ladeinstruk­ tion folgend zugeführt wird. Es ist ein Bestimmungsmittel zum Durchführen einer Bestimmung vorgesehen, ob es eine Datenab­ hängigkeit zwischen der Operationsinstruktion und der Ladein­ struktion gibt. Es ist ein erstes Operationsmittel zum Ausfüh­ ren einer vorbestimmten Operation auf aus der Registerdatei durch das Registerzugriffsmittel vorgesehen. Es ist ein erstes Auswahlmittel zum Auswählen von Daten aus den durch das Speicherzugriffsmittel ausgelesenen Daten und den durch das Re­ gisterzugriffsmittel ausgelesenen Daten gemäß dem Bestimmungs­ resultat durch das Bestimmungsmittel vorgesehen. Es ist zweites Operationsmittel zum Ausführen einer vorbestimmten Operation auf durch das Auswahlmittel ausgewählten Daten vorgesehen. Schließlich ist ein zweites Auswahlmittel zum Auswählen entwe­ der des ersten oder zweiten Operationsmittels gemäß des Resul­ tates der Bestimmung durch das Bestimmungsmittel vorgesehen.
Gemäß der vorliegenden Erfindung wird auf Grundlage des ersten Auswahlmittels eine Operation selektiv in dem zweiten Opera­ tionsmittel auf von dem Datenspeicher geladenen Daten und auf von der Registerdatei ausgelesenen Daten ausgeführt. Das erste Operationsmittel führt die Operation auf den aus der Register­ datei ausgelesenen Daten durch. Durch Auswählen des Resultates der Operation des zweiten Operationsmittels, wenn die Opera­ tionsinstruktion aus dem Datenspeicher geladene Daten benutzt, kann eine Instruktion mit hoher Geschwindigkeit ohne eine Fla­ schenhals der Pipeline durchgeführt werden, und zwar im Ver­ gleich mit der Struktur, wenn die Operation unter Benutzung des ersten Operationsmittel allein durchgeführt wird.
Bevorzugte Weiterbildungen des Pipelineverarbeitungsgerätes und des Pipelineprozessors ergeben sich aus den jeweils zugehörigen Unteransprüchen.
Weiterhin wird die Aufgabe gelöst durch ein Verfahren zum Aus­ führen einer Instruktion der eingangs beschriebenen Art, daß durch die kennzeichnenden Merkmale des Patentanspruches 8 ge­ kennzeichnet ist.
Bevorzugte Ausführungsformen des Verfahrens sind in den hierzu zugehörigen Unteransprüchen gekennzeichnet.
Weitere Merkmale und Zweckmäßigkeiten der Erfindung ergeben sich aus der Beschreibung von Ausführungsbeispielen anhand der Figuren.
Von den Figuren zeigen:
Fig. 1 ein eine allgemeine Anordnung eines RISC-Compu­ ters mit einem Pipelineverfahren zeigendes Diagramm;
Fig. 2 ein eine Art der Ausführung einer Instruktion in dem in Fig. 1 gezeigten RISC-Computers zeigendes Diagramm;
Fig. 3 ein ein in dem RISC-Computer benutztes Taktsignal zeigendes Diagramm;
Fig. 4 ein Störungen in einer Pipeline zeigendes Dia­ gramm, wenn eine Datenabhängigkeit einer Instruk­ tion von einer anderen in einer herkömmlichen Einrichtung verursacht wird;
Fig. 5 ein schematisch eine Anordnung zur Realisierung einer Umgehungsarchitektur, die bei dem vorhan­ denen RISC-Computer eingesetzt wird, zeigendes Diagramm;
Fig. 6 ein eine spezielle Anordnung einer in Fig. 5 ge­ zeigten Umgehungslogik zeigendes Diagramm;
Fig. 7 ein einen Flaschenhals in einer Pipeline darstel­ lendes Diagramm, wenn eine herkömmliche Umge­ hungsarchitektur eingesetzt wird;
Fig. 8 ein eine Struktur des Hauptabschnittes einer Be­ triebsverarbeitungseinheit gemäß einer Ausfüh­ rungsform der vorliegenden Erfindung zeigendes Diagramm;
Fig. 9 ein den Betrieb der Betriebsverarbeitungseinheit von Fig. 8 zeigendes Zeitablaufdiagramm;
Fig. 10 ein ein Beispiel der speziellen Anordnung der in Fig. 8 gezeigten Bestimmungsschaltung zeigen­ des Diagramm;
Fig. 11 ein ein Beispiel der speziellen Anordnung der in Fig. 8 gezeigten Steuerschaltung zeigendes Dia­ gramm;
Fig. 12 ein einen Übertragungspfad des in Fig. 8 gezeig­ ten Steuersignales oload zeigendes Diagramm; und
Fig. 13 ein in einer Tabelle die durch einen Selektor 260, der in Fig. 8 gezeigt ist, realisierte Lo­ gik zeigendes Diagramm.
Die in Fig. 8 gezeigte Betriebsverarbeitungseinheit enthält Pipelinestufen von 5 Stufen auf die gleiche Weise wie bei der in Fig. 1 gezeigten Betriebsverarbeitungseinheit. Wie in Fig. 8 gezeigt ist, enthält eine Instruktionsdekodierstufe (IDS) einen Instruktionsdekodierer/Steuerer 200 zum Dekodieren einer aus einem Instruktionsspeicher (entsprechend zu 1 in Fig. 1) geholten Instruktion und zum Auslesen der Inhalte OP1, OP2 von Quellenregistern, die die dekodierte Instruktion bezeichnen, Registerlatches 204, 206 zum Speichern von jedem Operanten (Re­ gisteradresse) einer ersten Registerquelle (Quelle 1) und einer zweiten Registerquelle (Quelle 2), die in der gegenwärtig vor­ liegenden Instruktion unter der Steuerung des Dekodierers/Steu­ erers 200 enthalten sind, und ein Registerlatch 202 zum Spei­ chern eines Bestimmungsregistersoperanden (Registeradresse), der in einer Ladeinstruktion enthalten ist. Die Instruktions­ dekodierstufe IDS enthält weiter eine Koinzedent-Erfassungs­ schaltung 210 zum Erfassen einer Koinzidenz zwischen den in dem Bestimmungsregisterlatch 202 gelatchten Daten und den in dem Registerlatch 204 gelatchten Daten, eine Koinzidenzerfassungs­ schaltung 208 zum Erfassen einer Koinzidenz zwischen den Daten, die in den Register 202 und in dem Registerlatch 206 gespei­ chert sind, und eine Bestimmungsschaltung 212 zum Durchführen einer Bestimmung, ob es eine Datenabhängigkeit zwischen einer Ladeinstruktion und einer darauf folgend zugeführten Instruk­ tion gibt.
Wenn die gegenwärtig anliegende Instruktion eine Lade-Instruk­ tion ist, erzeugt der Instruktionsdekodierer/Steuerer 200 eben­ falls ein Signal ⌀load, das anzeigt, daß die Instruktion eine Ladeinstruktion ist. Die Struktur des Registers 202, der Re­ gisterlatches 204, 206 und der Koinzidenzerfassungsschaltung 208, 210 ist jeweils die gleiche wie die Struktur der in Fig. 6 gezeigten Umgehungslogik, und die Koinzidenzerfassungsschal­ tungen 208, 210 entsprechen in ihrer Funktion dem Komparator in Fig. 6. Die Koinzidenzerfassungsschaltungen 208 und 210 er­ zeugen Erfassungssignale MS1 und MS2, die das entsprechende Ko­ inzidenzerfassen anzeigen. Die Bestimmungsschaltung 212 be­ stimmt, daß es eine Datenabhängigkeit zwischen einer vorange­ henden Ladeinstruktion und einer darauf folgend zugeführten Ope­ rationsinstruktion gibt, wenn eins der Erfassungssignale MS1 und MS2 in einem aktiven Zustand ist (wahrer Zustand), und sie erzeugt ein Steuersignal "izon", das die Abhängigkeit bezeich­ net, und ein Signal "opcode", das anzeigt, welche Daten der ersten und zweiten Registerquelle die Daten der Ladeinstruk­ tion benutzen.
In diesem Fall können die Operanden (Registeradressen) der Re­ gisterquellen und des Bestimmungsregisters aufeinanderfolgend in den Registern 202, 204 und 206 unabhängig von der Art der Instruktion jedesmal gespeichert werden, wenn eine Instruktion von einer Instruktionsholstufe IFS zugeführt wird, und nur die Bestimmungsschaltung 212 braucht in dem Zyklus aktiv zu sein, nur wenn eine Ladeinstruktion angelegt wird und darauf folgend eine Operationsinstruktion vorgesehen ist.
Anstatt dieser Struktur kann, wenn eine Ladeinstruktion ange­ legt wird, der Bestimmungsregisteroperand darin in dem Regi­ ster 202 gespeichert werden, und wenn eine Operationsinstruk­ tion angelegt wird, die Operanten der Registerquellen darin können in den Registern 204 und 206 gespeichert werden, und in anderen Fällen können die Inhalte dieser Register auf einen geeigneten Anfangswert zurückgesetzt werden. Bei diesem Fall ist es notwendig, daß Register 202 und die Registerlatches 204, 206 auf Anfangswerte unterschiedlich voneinander zurückzuset­ zen.
Der Instruktionsdekodierer/Steuerer 200 hat ebenfalls die Funk­ tion des Auslesens von Daten OP1 eines ersten Operanten (einer ersten Registerquelle) und Daten OP2 eines zweiten Operanden (einer zweiten Registerquelle) eines entsprechenden Registers aus der Registerdatei entsprechend der geholten Instruktion, obwohl ihr Pfad nicht deutlich gezeigt ist.
Die durch den Instruktionsdekodierer/Steuerer 200 aus der Re­ gisterdatei ausgelesenen Daten OP1, OP2 des ersten und zweiten Operanden werden auf einen ersten und zweiten Quellenbus Src1 bzw. Src2 übertragen.
Eine Ausführungsstufe EXCS enthält eine arithmetische und lo­ gische Einheit 222 zum Empfangen der Daten OP1 und OP2 auf dem ersten und zweiten Quellenbus Src1, Src2 und zum Ausführen einer vorbestimmten Operation darauf, ein Register 224 zum Latchen der Daten OP1 auf dem ersten Quellenbus Src1 gemäß einem T-Takt, und ein Register 226 zum Latchen der Daten OP2 des zweiten Operanden auf dem zweiten Quellenbus Src2 gemäß dem T-Takt.
Die Ausführungsstufe EXCS enthält weiter eine Steuerschaltung 228 zum Empfangen der Steuersignale "izon" und "opcode" von der Instruktionsdekodierstufe IDS und zum Erzeugen von Steuersigna­ len sel_op1, sel_op2 und sel_ result. Das Steuersignal sel_op1 zeigt an, daß der erste Operand in der gegenwärtig ausgeführten Instruktion die durch die vorangehende Ladeinstruktion gela­ denen Daten benutzt. Das Steuersignal sel_op2 zeigt an, daß die durch die vorhergehende Ladeinstruktion geladenen Daten als die Daten OP2 des zweiten Operanden in der gegenwärtig ausge­ führten Operationsinstruktion benutzt werden. Das Steuersignal sel_result zeigt an, daß die Ladedaten der vorangehenden Ladeinstruktion von der gegenwärtig ausgeführten Operationsin­ struktion benutzt werden.
Die Instruktionsausführungsstufe EXCS enthält für ihre Pipeli­ neoperation ein Register 230 zum Latchen der Ausgabe der arith­ metischen und logischen Einheit 222 gemäß dem L-Takt, ein Re­ gister 232 und ein Register 234 zum Latchen der Latchdaten der Register 224 und 226 gemäß dem L-Takt und ein Register 236 zum Latchen des Steuersignales sel_result von der Steuerschaltung 228 gemäß dem T-Takt. Es kann ein Latch zur Verzögerung (Latchen gemäß dem L-Takt) zum Einstellen der Betriebszeit­ punkte der Speicherzugriffsstufe und der Steuerbetriebszeit­ punkte der Steuersignale sel_op1 und sel_op2 vorgesehen sein, wobei deren Erzeugungszeitpunkte in Betracht gezogen werden muß.
Eine Speicherzugriffsstufe MEMS enthält ein Register 240 zum Latchen der Ausgabe des Registers 230 in der Ausführungsstufe XCS gemäß dem T-Takt, eine Auswahlschaltung 242 zum Auswählen entweder der in dem Register 232 gespeicherten Daten oder der aus einem Datenspeicher 254 gemäß dem Steuersignal sel_op1 ge­ ladenen Daten einer Auswahlschaltung 244 zum Auswählen entwe­ der der in dem Register 234 gespeicherten Daten und der aus dem Speicher 254 gemäß dem Steuersignal sel_op1 geladenen Daten und eine arithmetische und logische Einheit 248 zum Ausführen einer vorbestimmten Operation auf den von den Auswahlschaltungen 242 und 244 zugeführten Daten.
Obwohl kein Pfad gezeigt ist, über den auf den Datenspeicher 254 zum Datenschreiben und Datenlesen in der Speicherzugriffs­ stufe MEMS zugegriffen wird, wird auf dem Speicher 254 gemäß einer in der arithmetischen und logischen Einheit 222 der Aus­ führungsstufe EXCS berechneten Speicheradresse zugegriffen, und Daten werden an den Speicher 254 eingegeben und von ihm ausge­ geben durch ein in der oben erwähnten Registerdatei oder einem getakten Puffer enthaltenen I/O-Register. Die von dem Daten­ speicher 254 geladenen Daten werden in dem I/O-Register ge­ speichert und direkt vorbeigeführt zu den Auswahlschaltungen 242 und 244 zur gleichen Zeit. Folglich sind die Eingangssi­ gnale der Auswahlschaltungen 242 und 244 und die arithmetische und logische Einheit 248 bestimmt, wenn der Speicherzyklus der Speicherzugriffsstufe MEMS für die Ladeinstruktion beendet ist.
Die Speicherzugriffsstufe MEMS enthält weiter ein Register 250 zum Latchen der Inhalte des Registers 240 gemäß dem L-Takt.
Eine Rückschreibstufe WBS enthält einen Selektor 260 zum Em­ pfangen der Daten von dem Register 250 an seinem A-Eingang, der Daten von einem Register 252 an seinem B-Eingang und der Ausgabe des Datenspeichers 254 an seinem C-Eingang und zum Aus­ wählen und Übertragen einer entsprechenden Eingabe zu dem D- Ausgang gemäß Verzögerungssignale (die durch die Register 236 und 246 zweier Kaskadenstufen zugeführt sind), dem Steuersi­ gnal sel_result von der Steuerschaltung 228 und dem Steuersi­ gnal ⌀load, und ein Register 262 zum Latchen der Ausgabe des Selektors 260 gemäß dem T-Takt. Das entsprechende Register wird durch den Bestimmungsregisteroperant bestimmt, der in der Ope­ rationsinstruktion enthalten ist. Die von dem Speicher 254 ge­ ladenen Daten können an den Selektor 260 durch das I/O-Register (L-Taktlatch) angelegt werden, und die geladenen Daten können direkt zu den Auswahlschaltungen 242, 244 und zwar nicht durch das I/O-Register angelegt werden. Auf den Speicher 254 kann durch einen getakten Puffer und nicht durch das I/O-Register zugegriffen werden.
Es soll angemerkt werden, daß die Register der Ausführungsstu­ fe EXCS, der Speicherzugriffsstufe MEMS und der Rückschreib­ stufe WBS, wie sie in Fig. 8 gezeigt sind, einfache Latches sind und sich von dem Registern in der Registerdatei unter­ scheiden.
Im folgenden wird eine Beschreibung des Betriebes der Betriebs­ verarbeitungseinheit nach einer Ausführungsform der vorliegen­ den Erfindung unter Bezugnahme auf die Fig. 8 und 9 gegeben.
Der Instruktionsdekodierer/Steuerer 200 dekodiert die von der Instruktionsholstufe IFS (Zyklus 2) geholte Instruktion. Wenn diese Instruktion eine Ladeinstruktion ist, erzeugt der In­ struktionsdekodierer/Steuerer 200 ein Steuersignal ⌀load, das anzeigt, daß es eine Load-Ladeinstruktion ist, und speichert einen Operanden, der in dieser Instruktion enthalten ist und ein Bestimmungsregister anzeigt, in dem Register 202. Gemäß dieser Ladeinstruktion liest der Instruktionsdekodierer/Steu­ erer 200 eine in der Registerdatei enthaltene Speicheradresse an die arithmetische und logische Einheit 222 aus.
In der Ausführungsstufe EXCS berechnet die arithmetische und logische Einheit 222 eine Adresse gemäß dieser Ladeinstruktion und führt dieselbe der Speicherzugriffsstufe MEMS zu. Dann wird die Operationsinstruktion durch den Instruktionsdekodie­ rer/Steuerer 200 parallel zu der Adressenberechnung durch die Ladeinstruktion in der Ausführungsstufe EXCS (Zyklus 3) deko­ diert.
Wenn der Instruktionsdekodierer/Steuerer 200 erfaßt, daß die Operationsinstruktion auf die Ladeinstruktion folgend angelegt ist, schreibt er Datenoperanten, die den in dieser Operations­ instruktion enthaltenen ersten und zweiten Registerquellen ent­ sprechen, in die Register 204 bzw. 206, liest die in den Re­ gistern der Registerdatei, die durch die Operanden der Regi­ sterquellen bezeichnet sind, gespeicherten Daten OP1 und OP2 aus und überträgt dieselben auf die Quellenbusse Src1 und Src2. Die Daten OP1 sind in dem ersten Quellenregister der Opera­ tionsinstruktion gespeicherte Daten und die Daten OP2 sind in Daten, die in dem Quellenregister gespeichert sind, das durch den zweiten Quellenoperand der Operationsinstruktion bezeich­ net ist. Es sei jetzt ein Fall angenommen, in dem das durch den ersten Operand bezeichnete erste Quellenregister die aus dem Speicher 254 durch die vorhergehende Ladeinstruktion geladenen Daten benutzt. Da korrekte Daten noch nicht in diesem Zyklus 3 in das erste Quellenregister geschrieben sind, kann in diesem Zustand eine korrekte Operation noch nicht in der Ausführungs­ stufe ausgeführt werden.
Im Zyklus wird eine Koinzidenzerfassungsoperation durch die Koinzidenzerfassungsschaltung 208 und 210 in der Instruktions­ dekodierstufe IDS ausgeführt, und ein eine Koinzidenz von der Koinzidenzerfassungsschaltung 208 anzeigende Erfassungssignal MS1 wird in einem wahren Zustand gebracht, während ein Erfas­ sungssignal MS2 von der Koinzidenzerfassungsschaltung 210 in einen Falsch-Zustand gebracht wird. Die Bestimmungsschaltung 212 erzeugt ein Steuersignal "izon", das anzeigt, daß eine Da­ tenabhängigkeit gemäß den Erfassungssignalen MS1 und MS2 gibt wodurch die folgenden Stufen benachrichtigt werden, daß das in dieser Ausführungsstufe EXCS erhaltene Operationsresultat nicht korrekt ist.
Die Bestimmungsschaltung 212 erzeugt ein Steuersignal "opcode" zum Anzeigen, welcher von dem ersten Operand und dem zweiten Operand eine Datenabhängigkeit aufweist. Da in diesem Fall der erste Operant (die erste Registerquelle) die Datenabhängigkeit aufweist, ist das Signal "opcode" gleich "1". Dieses Steuersignal "opcode" kann ein Signal aus zwei Bit sein und an­ zeigen, daß der erste Operand die Datenabhängigkeit aufweist, wenn es "01" ist, und das der zweite Operand die Daten­ abhängigkeit aufweist, wenn es in "10" ist.
Im Zyklus 4 wird auf den Speicher 254 gemäß der Ladeinstruk­ tion zugegriffen und entsprechende Daten werden geladen. Die von dem Speicher 254 geladenen Daten werden direkt zu den Aus­ wahlschaltungen 242 und 244 geführt.
In der Ausführungsstufe EXCS setzt die Steuerschaltung 228 die Signale sel_op1 und sel_op2, die anzeigen, welcher Operand die Abhängigkeit aufweist, in der L-Taktphase in einen stetigen Zu­ stand und erzeugt ein Steuersignal sel_result, das anzeigt, daß die Ausgabe der arithmetischen und logischen Einheit 248 ent­ sprechend den Steuersignalen "izon" und "opcode" ausgewählt werden soll.
Die Register 224 und 226 latchen die auf die Quellenbusse Src1 und Src2 in der T-Taktphase des Zyklus 4 geführten ersten und zweiten Operand-Daten OP1 und OP2, und die Register 232 und 234 latchen die Inhalte der Register 224 und 226 in der L-Taktphase dieses Zyklus 4. Das Steuersignal sel_result wird durch das Re­ gister 236 in der T-Taktphase des Zyklus 5 gelatcht.
Im Zyklus 5 sind die von dem Speicher 254 geladenen Daten be­ reits zu dem Selektor 260 geführt. In diesem Zyklus 5 ist das das anzeigende Signal ⌀load von dem Instruktionsdekodie­ rer/Steuerer 200 bereits vorgesehen, und zu diesem Zeitpunkt ist das Auswahlsignal (das verzögerte Signal von sel_result) von dem Register 246 immer noch in dem Falsch-Zustand. In diesem Zustand wählt der Selektor 260 von dem Speicher 254 an den Eingang C angelegte Ladedaten und legt dieselben an das Re­ gister 262 an. Das Register 262 latcht die Ausgabe des Selek­ tors 260 in der T-Taktphase des Zyklus 5. Die von dem Register 262 gelatchten Daten werden in der Rückschreibstufe WBS in ein Bestimmungsregister zurückgeschrieben, das durch einen Operan­ den bezeichnet wird, der in der Ladeinstruktion enthalten ist.
Im Zyklus 5 sind die Auswahlsteuersignale sel_op1 und sel_op2 in einem bestimmten Zustand in den Auswahlschaltungen 242 und 244. Da der erste Operand die Datenabhängigkeit aufweist, ist das Steuersignal sel_op1 in dem Wahr-Zustand, und das Steuer­ signal sel_op2 ist in dem Falsch-Zustand. Zu diesem Zeitpunkt wählt die Auswahlschaltung 242 Ladedaten von dem Speicher 254 und legt diese an einen Eingang der arithmetischen und logi­ schen Einheit 248 an, während die Auswahlschaltung 224 Daten von dem Register 234 wählt und diese an den anderen Eingang der arithmetischen und logischen Einheit 248 anlegt. Die arithme­ tische und logische Einheit 248 führt eine vorbestimmte Opera­ tion auf den Daten von den Auswahlschaltungen 242 und 244 aus und legt das Operationsresultat an das Register 252 an. Das Re­ gister 252 latcht die Ausgabe der arithmetischen und logischen Einheit 248 in der L-Taktphase.
Folglich ist bei diesem Fall an dem Ende des Zyklus 5 ein rich­ tiges Operationsresultat in dem Register 252 gespeichert. Das heißt, korrekte Daten sind bereits durch die Auswahlschaltungen 242 und 244 in der T-Taktphase des Speicherzugriffszyklus dieser Operationsinstruktion ausgewählt, und die Ausgabe der arithmetischen und logischen Einheit 248 ist in der L-Taktpha­ se ein richtiger Wert geworden. Folglich sind richtige Daten durch das Register 252 gelatcht, das die Ausgabe der arithme­ tischen und logischen Einheit 248 in der L-Taktphase latcht.
Das Steuersignal sel_result von dem Register 246 wird in der L- Taktphase des Zyklus 5 bestimmt und an den Selektor 260 ange­ legt. Zu diesem Zeitpunkt ist das Steuersignal ⌀load bereits in den Falsch-Zustand in Zyklus 6 gebracht, und nur das Steuersi­ gnal sel_result ist in dem Wahr-Zustand. In diesem Zustand wählt der Selektor 260 die an seinen B-Eingang angelegten Daten von dem Register 252 und legt diese an das Register 262 an. Als Resultat werden in dem Rückschreibzyklus der Operationsinstruk­ tion Daten in ein Register geschrieben, das durch den Bestim­ mungsoperand dieser Operationsinstruktion in der Registerdatei durch die Rückschreibstufe WBS in T-Taktphase bezeichnet ist.
Wenn es keine Datenabhängigkeit zwischen der Ladeinstruktion und der Operationsinstruktion gibt, befindet sich das Steuer­ signal "izon" in dem Falsch-Zustand. In diesem Fall sind alle Steuersignale sel_op1, sel_op2 und sel_ result von der Steuer­ schaltung 228 in dem Falsch-Zustand. In diesem Fall wird ein Steuersignal ⌀load erzeugt, die von dem Datenspeicher 254 ge­ ladenen Daten werden in ein entsprechendes Register in dem Zyklus 5 von Fig. 9 entsprechend der Ladeinstruktion am An­ fang zurückgeschrieben, und dann wählt der Selektor 260 die an seinen A-Eingang angelegte Ausgabe des Registers 250 und über­ trägt diese zu dem Register 262 in dem nächsten Zyklus. In diesem Fall wird die Operationsinstruktion gemäß der korrekten Daten OP1, OP2 ausgeführt, die an die arithmetische und logi­ sche Einheit 222 der Ausführungsstufe EXCS angelegt sind, und das Operationsresultat daraus wird in ein entsprechendes Regi­ ster in dem Rückschreibzyklus geschrieben, ohne daß irgendein Flaschenhals in der Pipeline verursacht wird.
Da die Tatsache, daß auf dem Speicher nicht in einer Opera­ tionsinstruktion zugegriffen wird, vorteilhafterweise benutzt wird, so daß eine Auswahltätigkeit in bezug auf von dem Daten­ speicher 254 geladenen Daten und Daten von den Quellenregistern in der Speicherzugriffsstufe MEMS zum Durchführen einer Tätig­ keit auf korrekten Daten ausgeführt wird, wird die Operations­ instruktion ohne Verursachung irgendeines Flaschenhalses in der Pipeline ausgeführt. Daher wird es unnötig, die Pipeline anzu­ halten oder eine Leer-"NOP"-Instruktion zwischen den Instruk­ tionscodes einzuführen, so daß ein richtiges Operationsresul­ tat mit hoher Geschwindigkeit erzielt werden kann.
Wie in Fig. 10 gezeigt ist, enthält die in der Instruktions­ dekodierstufe IDS vorgesehene Bestimmungsschaltung 212 eine OR- Gatterschaltung 310 zum Ableiten der logischen Summe der Erfas­ sungssignale MS1 und MS2 der Koinzidenzerfassungsschaltungen 208 und 210 und eine Gatterschaltung 312 zum Empfangen der Er­ fassungssignale MS1 und MS2. Ein Steuersignal "izon" wird von der Gatterschaltung 310 erzeugt, und ein Steuersignal "opcode" wird von der Gatterschaltung 312 erzeugt. Wenn mindestens eines der Erfassungssignale MS1 und MS2 in den "Wahr-Zustand" ge­ bracht wird, bringt die Gatterschaltung 310 das Steuersignal "izon" in den Wahr-Zustand. Die Gatterschaltung 312 enthält eine AND-Gatterschaltung zum Empfangen des Erfassungssignales MS1 an seinem Wahr-Eingang und das Erfassungssignal MS2 an seinem Falsch-Eingang. Wenn das Erfassungssignal MS1 in dem Wahr-Zustand ist und das Erfassungssignal MS2 in dem Falsch- Zustand ist, bringt die Gatterschaltung 312 das Steuersignal "opcode" in den Wahr-Zustand, während, wenn das Erfassungs­ signal MS1 in dem Falsch-Zustand ist und das Erfassungssignal MS2 in dem Wahr-Zustand ist, sie das Steuersignal "opcode" in den Falsch-Zustand bringt.
Bei der Struktur der in Fig. 10 gezeigten Gatterschaltung 312 ist angenommen, daß die Erfassungssignale MS1 und MS2 nicht zu­ sammen in den Wahr-Zustand gebracht werden. Damit ein genaueres Steuersignal erzeugt werden kann, daß es erlaubt, daß die Si­ gnale MS1 und MS2 in dem Wahr-Zustand zur gleichen Zeit sind, kann die Gatterschaltung 312 weggelassen werden und das Steuer­ signal "opcode" kann die Steuersignale MS1, MS2 von 2 Bit ent­ halten.
Wie in Fig. 11 gezeigt ist, enthält die Steuerschaltung 228 Gatterschaltungen 220 und 330 zum Aufnehmen von Steuersignalen "izon" und "opcode". Ein Steuersignal sel_op1 wird von der Gat­ terschaltung 320 erzeugt, und ein Steuersignal sel_op2 wird von der Gatterschaltung 330 erzeugt.
Die Gatterschaltung 320 bringt das Steuersignal sel_op1 in den Wahr-Zustand, wenn das Steuersignal "izon" und das Steuersignal "opcode" beide in dem Wahr-Zustand sind. Das heißt, wenn das Erfassungssignal MS1 in dem Wahr-Zustand ist und das Steuersi­ gnal "izon" erzeugt wird, wird angezeigt, daß die Daten des ersten Quellenregisters übertragen werden sollen.
Die Gatterschaltung 330 empfängt ein Steuersignal "izon" an seinem Wahr-Eingang und empfängt ein Steuersignal "opcode" an seinem Falsch-Eingang. Wenn das Steuersignal "izon" in dem Wahr-Zustand ist und das Steuersignal "opcode" in dem Falsch- Zustand ist, setzt die Gatterschaltung 330 das Steuersignal sel_op2 in den Wahr-Zustand. Das heißt, wenn der zweite Quel­ lenoperant Ladedaten benutzt, wird ein Steuersignal sel_op2 benutzt. Das Steuersignal sel_result benutzt das Steuersignal "izon", wie es ist. In diesem Fall ist die Steuerschaltung 228 in der Ausführungsstufe EXCS enthalten, und die Steuersignale sel_op1, sel_op2 und sel_ result bekommen ihre Zustände mit einer Verzögerung von einem Taktzyklus in bezug auf die Steuer­ signale "opcode" und "izon" von der Instruktionsdekodierstufe IDS bestimmt. Diese Anordnung kann implimentiert werden, indem ein T-Latch zum Latchen der Daten bei dem T-Takt und ein L- Latch zum Latchen dieser T-Latchausgabe gemäß dem L-Takt in der vorderen Stufe der Gatterschaltungen 320 und 330 in der in Fig. 11 gezeigten Anordnung vorgesehen wird. Als Alternative können das T-Latch und das L-Latch in den Ausgabeabschnitten der Gatterschaltungen 320 und 330 vorgesehen werden.
Wie in Fig. 12 gezeigt ist, enthält der Übertragungsweg des in dem Instruktionsdekodierer/Steuerer 200 erzeugten Steuersigna­ les oload ein T-Latch 321 zum Latchen des Steuersignales oload in der T-Taktphase, ein L-Latch 342 zum Latchen der Ausgabe des T-Latches 341 in der L-Taktphase, ein T-Latch 343 zum Latchen der Ausgabe des L-Latches 342 in der T-Taktphase und ein L- Latch 344 zum Latchen der Ausgabe des T-Latches 343 in der L- Taktphase. Die Ausgabe des L-Latches 344 wird an den Steuer­ eingang des Selektors 260 angelegt. Gemäß dieser Anordnung wird das in der L-Taktphase des Zyklus 2 in der in Fig. 9 gezeigten Anordnung erzeugte Steuersignal ⌀load durch das Latch 344 in der L-Taktphase des Taktzyklus 4 so gelatcht, daß es in einem definierten Zustand ist.
Die Anordnung einer normalen Steuerschaltung kann für die Aus­ wahlschaltungen 242 und 244 verwendet werden. Die Anordnungen der arithmetischen und logischen Einheiten 222 und 248 können so sein, daß sie beide die gleichen Operationen ausführen.
Die Ausgabe des Datenspeichers 254 wird zu dem Register 262 durch den Selektor 260 in der Rückschreibstufe WBS geführt. An­ stelle dessen können die Ladedaten von dem Datenspeicher 254 vorbeigeführt werden zu den Auswahlschaltungen 242 und 244 und zu der gleichen Zeit in dem Register 262 und einem I/O-Regi­ ster (nicht gezeigt, siehe Fig. 6) gespeichert werden, und die Inhalte des Registers 262 und des I/O-Registers können selektiv in die Registerdatei gemäß der Steuersignale ⌀load und sel_re­ sult geschrieben werden.
Wie in Fig. 13 gezeigt ist, wählt der Selektor 260 die an den Eingang A von dem Register 250 angelegte Ausgabe aus, wenn das Steuersignal oload und das Steuersignal sel_result beide auf "0" liegen, was "falsch" darstellt. Wenn das Steuersignal ⌀load "1" ist für den Wahr-Zustand, werden die von dem Daten­ speicher 254 an den Eingang C angelegten Ladedaten ausgewählt. Wenn das Steuersignal ⌀load "0" ist für den Falsch-Zu­ stand, werden die von dem Register 252 an den Eingang B ange­ legten Daten, d. h. in der Speicherzugriffsstufe erzielte Ope­ rationsresultat ausgewählt. Verschiedene Arten der Anordnungen können als Schaltungsanordnung zum Realisieren dieser Logik ge­ dacht werden, und jede Anordnung einer 3-Zu-1-Auswahlschaltung kann eingesetzt werden.
Jede Betriebsverarbeitungseinheit kann insoweit verwendet werden, wie sie eine Anordnung aufweist, in der Instruktio­ nen parallel gemäß dem Pipelineverfahren verarbeitet werden. Wie oben ausgeführt wurde, sind gemäß der vorliegenden Erfin­ dung 2 Routen vorgesehen, d. h. es gibt einen Weg, über den die Ladedaten von dem Datenspeicher vorbeigeführt werden und eine Tätigkeit direkt auf den Daten von der Registerdatei ausgeführt werden, und einen Weg, durch den eine Auswahl und eine Tätig­ keit in bezug auf die Registerdateidaten und die geladenen Speicherdaten ausgeführt werden, und die Auswahl der Betriebs­ routen werden gemäß der Datenabhängigkeit zwischen der Ladeinstruktion und der Operationsinstruktion ausgewählt. Als Ergebnis kann eine Betriebsverarbeitungseinheit vorgesehen wer­ den, die in der Lage ist, Instruktionen mit hoher Geschwindig­ keit auszuführen, wobei es nicht nötig ist, die Pipeline anzu­ halten, und es ist ebenfalls nicht nötig, unnütze Instruktio­ nen wie "NOP" zum Vermeiden des Haltens der Pipeline einzufüh­ ren, ohne das doch ein Flaschenhals in der Pipeline auftritt, falls eine Operationsinstruktion einer Ladeinstruktion folgt.
Zusätzlich kann diese Anordnung im wesentlichen die herkömmli­ che Vorwärts-Lade-Architektur wie sie ist benutzen, so daß eine Betriebsverarbeitungseinheit vorgesehen werden kann, die In­ struktionen mit hoher Geschwindigkeit ausführen kann, wobei eine einfache Schaltungsanordnung ohne schwerwiegende Änderun­ gen der Spezifikation benutzt werden können.

Claims (10)

1. Pipelineverarbeitungsgerät, das eine Mehrzahl von Registern (2) und einen Datenspeicher (254) aufweist, mit:
  • - einer Speicherzugriffseinrichtung (MEMS) zum Zugreifen auf den Datenspeicher (254) zum Auslesen von Daten daraus als Reaktion auf eine Ladeinstruktion;
  • - einer Registerzugriffseinrichtung (200), die auf eine Operationsinstruktion zum Auslesen von zu ver­ arbeitenden Daten aus der Mehrzahl von Registern (2) rea­ giert;
  • - einer ersten Operationseinrichtung (222) zum Durchführen einer Operation mit von der Registerzugriffseinrichtung (200) empfangenen Daten; gekennzeichnet durch:
  • - eine Bestimmungseinrichtung (202, 204, 206, 208, 210, 212, 228) zum Bestimmen, ob die Operationsinstruktion eine Daten­ abhängigkeit von der Ladeinstruktion aufweist;
  • - eine erste Auswahleinrichtung (242, 244), die auf ein Resultat der Bestimmung durch die Bestimmungsein­ richtung zum Auswählen entweder der Daten von der Registerzu­ griffseinrichtung (200) oder der durch die Speicherzugriffs­ einrichtung (MEMS) geladenen Daten reagiert;
  • - eine zweite Operationseinrichtung (248) zum Durchführen einer Operation mit durch die erste Auswahleinrichtung (242, 244) ausgewählten Daten;
  • - eine zweite Auswahleinrichtung (260), die auf das Resultat der Bestimmung durch die Bestimmungsein­ richtung zum Auswählen entweder einer Ausgabe von der ersten Operationseinrichtung (222) oder einer Ausgabe von der zwei­ ten Operationseinrichtung (248) reagiert, wobei die so ausgewählte Ausgabe zurück in ein Register in der Mehrzahl von Registern (2) geschrieben wird.
2. Pipelineverarbeitungsgerät nach Anspruch 1, dadurch gekennzeichnet, daß die Bestimmungseinrichtung
eine erste Speichereinrichtung (204) zum Speichern eines ersten Quellenregisteroperanten, der in der Operationsinstruktion ent­ halten ist,
eine zweite Speichereinrichtung (206) zum Speichern eines zwei­ ten Quellenregisteroperanten, der in der Operationsinstruktion enthalten ist,
eine dritte Speichereinrichtung (302) zum Speichern eines Be­ stimmungsregisteroperanten, der in der Ladeinstruktion enthal­ ten ist,
eine Erfassungseinrichtung (208, 210) zum Erfassen der Koinzi­ denz zwischen dem Operanten in der dritten Speichereinrichtung (202) und einem der Operanten in der ersten und zweiten Spei­ chereinrichtung (204, 206), und
eine Steuereinrichtung (212, 228), die auf einer Ausgabe der Erfassungseinrichtung (208, 210) reagiert zum Erzeugen eines ersten (sel_op1, sel_op2) und zweiten (sel_result) Steuersi­ gnales zum Steuern der entsprechenden auswählenden Tätigkeiten der ersten (242, 244) und zweiten (260) Auswahleinrichtung, aufweist.
3. Pipelineverarbeitungsgerät nach Anspruch 2,
dadurch gekennzeichnet, daß die Registerzugriffseinrichtung (200) eine Einrichtung zum Erfassen einer Ladeinstruktion und Erzeugen eines Ladeanzeigesignales (⌀load), das anzeigt, daß eine Ladeinstruktion auszuführen ist, aufweist und daß die zweite Auswahleinrichtung (260) eine Einrichtung (Fig. 13) aufweist, die auf das zweite Steuersignal (sel_result) und das Ladeanzeigesignal (⌀load) reagiert zum Auswählen einer der Ausgaben der ersten Operationseinrichtung (222) und der zweiten Operationseinrichtung (248) und der von dem Datenspeicher (254) durch die Speicherzugriffseinrichtung (MEMS) geladenen Daten.
4. Pipelineprozessor mit einer Registerdatei (2) mit einer Mehrzahl von Registern, gekennzeichnet durch:
  • - eine Instruktionsdekodierstufe (IDS) zum Dekodieren einer aus einem Instruktionsspeicher (1) geholten Instruktion, wobei die Dekodierstufe (IDS) eine Registerzugriffseinrichtung (200) zum Lesen von Daten aus einem Register in der Register­ datei entsprechend einer geholten und dekodierten Instruktion und eine Erfassungseinrichtung (200) zum Erfassen einer Ope­ rationsinstruktion, die auf eine Ladeinstruktion folgend aus­ zuführen ist, aufweist;
  • - eine Instruktionsausführungsstufe (EXCS) zum Ausführen einer vorbestimmten Instruktion auf von der Registerzugriffsein­ richtung (200) erhaltenen Daten, wobei die Ausführungsstufe (EXCS) eine Umgehungseinrichtung (224, 226, 232, 234) zum Vorbeiführen der Daten von der Registerzugriffseinrichtung (200), ohne daß eine arithmetische oder logische Operation darauf ausgeübt wird, aufweist;
  • - eine Bestimmungseinrichtung (202, 204, 206, 208, 210, 212, 228), die auf die Erfassungseinrichtung (200) zum Bestimmen, ob es eine Datenabhängigkeit zwischen der Operationsinstruk­ tion und der Ladeinstruktion gibt, reagiert;
  • - eine Speicherzugriffsstufe (MEMS) zum Zugreifen auf einen Datenspeicher (254), wenn eine Ladeinstruktion von der In­ struktionsstufe (IDS, EXCS) angelegt ist, wobei die Spei­ cherzugriffsstufe (MEMS) eine Auswahleinrichtung (242, 244), die auf die Bestimmungseinrichtung (202 bis 212, 228) zum selektiven Weitergeben von Daten von der Umgehungseinrich­ tung (224, 226, 232, 234) oder von dem Datenspeicher (254) geladene Daten reagiert, und eine andere Operationseinrich­ tung (248) zum Durchführen der vorbestimmten Operation auf von der Auswahleinrichtung (242, 244) erhaltenen Daten auf­ weist; und
    eine Rückschreibstufe (WBS) zum Schreiben von Daten in ein Register in der Registerdatei (2), wobei die Rückschreib­ stufe (WBS) eine andere Auswahleinrichtung (260) aufweist, die auf die Bestimmungseinrichtung (202 bis 212, 228) zum selektiven Weitergeben einer der Ausgaben einer Operations­ einrichtung (222) in der Instruktionsausführungsstufe (EXCS) oder der anderen Operationseinrichtung (248) reagiert zum Zurückschreiben in ein Register in der Registerdatei (2).
5. Pipelineprozessor nach Anspruch 4, dadurch gekennzeichnet, daß die andere Auswahleinrichtung (260) weiter eine Einrichtung (Fig. 13) aufweist, die auf die Erfas­ sungseinrichtung (200) und die Bestimmungseinrichtung (202 bis 212, 228) reagiert zum selektiven Weitergeben einer der Ausga­ ben der Operationseinrichtung (222) und der anderen Operations­ einrichtung (248) und der aus dem Datenspeicher (254) geladenen Daten.
6. Pipelineprozessor nach Anspruch 4 oder 5, dadurch gekennzeichnet, daß die Bestimmungseinrichtung eine erste Einrichtung (202 bis 210) zum Erfassen, daß ein durch die Ladeinstruktion angezeigtes Bestimmungsregister das gleiche ist wie ein durch die Operationsinstruktion angezeigtes Quellenre­ gister, und eine zweite Einrichtung (228), die auf die erste Einrichtung (202 bis 210) reagiert zum Erzeugen eines ersten Steuersignales (sel_op1, sel_op2) zum Steuern einer Auswahl­ tätigkeit der Auswahleinrichtung (242, 244) und zum Erzeugen eines zweiten Steuersignales (sel_result) zum Steuern einer Auswahltätigkeit der anderen Auswahleinrichtung (260), auf­ weist.
7. Pipelineprozessor nach Anspruch 6, dadurch gekennzeichnet, daß die Bestimmungseinrichtung weiter eine Verzögerungseinrichtung (236, 246) zum Verzögern des zwei­ ten Steuersignales (sel_result) zum Einstellen des Zeitpunktes der Auswahl der anderen Auswahleinrichtung (260) auf einen Be­ triebszeitpunkt für die Speicherzugriffsstufe (MEMS) aufweist.
8. Verfahren zum Ausführen einer Instruktion, gekennzeichnet durch die Schritte:
  • - Dekodieren einer aus einem Instruktionsspeicher (1) geholten Instruktion zum Lesen von Daten aus einem entsprechenden Re­ gister einer Registerdatei (2);
  • - Durchführen einer Operation auf aus dem entsprechenden Regi­ ster gelesenen Daten;
  • - Vorbeiführen der aus dem entsprechenden Register ausgelese­ nen Daten;
  • - Erfassen, daß eine gegenwärtig ausgeführte Instruktion eine Operationsinstruktion ist, die unmittelbar einer Ladein­ struktion folgt und eine Datenabhängigkeit davon aufweist;
  • - Zugreifen auf einen Datenspeicher (254) als Reaktion auf die Ladeinstruktion zum Auslesen von durch die Ladeinstruktion bezeichneten Daten daraus;
  • - Vorbeiführen von aus dem Datenspeicher (254) ausgelesenen und geladenen Daten;
  • - selektives Weitergeben von entweder aus dem entsprechenden Register ausgelesenen Daten oder den aus dem Datenspeicher (254) ausgelesenen und geladenen Daten als Reaktion auf das Resultat der Erfassung in dem Schritt des Erfassens;
  • - Durchführen der Operation auf den so selektiv weitergegebe­ nen Daten und
  • - weiter ausgewähltes Weitergeben des Resultates der Opera­ tion auf den Daten aus dem entsprechenden Register und des Resultates der Operation auf den so selektiv weitergegebe­ nen Daten als Reaktion auf das Resultat der Erfassung in dem Schritt des Erfassens.
9. Verfahren zum Ausführen einer Instruktion nach Anspruch 8,
dadurch gekennzeichnet, daß die Daten von dem entsprechenden Register Daten von 2 verschiedenen Registern enthalten und
daß der Schritt des selektiven Weitergebens den Schritt des Auswählens der Daten von den 2 verschiedenen Registern oder der von dem Datenspeicher (254) ausgelesenen und geladenen Daten aufweist,
wenn das Resultat der Erfassung in dem Schritt des Erfassens anzeigt, daß die Operationsinstruktion die aus dem Datenspei­ cher (254) geladenen Daten benutzt als Reaktion auf die Ladeinstruktion.
10. Verfahren zum Ausführen einer Instruktion nach Anspruch 8 oder 9, mit den Schritten:
Erfassen einer Ladeinstruktion zum Erzeugen eines Ladeanzeige­ signales (⌀load) und
Auswählen eines von dem Resultat der Operation auf den Daten des entsprechenden Registers, von dem Resultat der Operation auf den so selektiv weitergegebenen Daten und der aus dem Datenspeicher (254) ausgelesenen und geladenen Daten als Reak­ tion auf das Ladeanzeigesignal (⌀load) und von dem Resultat der Erfassung in dem Schritt des Erfassens.
DE4206062A 1991-03-01 1992-02-27 Pipelineverarbeitung von Instruktionen Expired - Fee Related DE4206062C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3036264A JPH04275628A (ja) 1991-03-01 1991-03-01 演算処理装置

Publications (2)

Publication Number Publication Date
DE4206062A1 true DE4206062A1 (de) 1992-09-03
DE4206062C2 DE4206062C2 (de) 1996-06-13

Family

ID=12464914

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4206062A Expired - Fee Related DE4206062C2 (de) 1991-03-01 1992-02-27 Pipelineverarbeitung von Instruktionen

Country Status (3)

Country Link
US (1) US5404552A (de)
JP (1) JPH04275628A (de)
DE (1) DE4206062C2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113946368A (zh) * 2021-10-29 2022-01-18 西安微电子技术研究所 一种基于risc-v指令集的三级流水线架构、处理器及数据处理方法

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5590294A (en) * 1991-03-19 1996-12-31 Silicon Graphics, Inc. Method and apparatus for retarting pipeline processing
JP2539974B2 (ja) * 1991-11-20 1996-10-02 富士通株式会社 情報処理装置におけるレジスタの読出制御方式
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
US5604909A (en) 1993-12-15 1997-02-18 Silicon Graphics Computer Systems, Inc. Apparatus for processing instructions in a computing system
US5675758A (en) * 1994-11-15 1997-10-07 Advanced Micro Devices, Inc. Processor having primary integer execution unit and supplemental integer execution unit for performing out-of-order add and move operations
TW448403B (en) * 1995-03-03 2001-08-01 Matsushita Electric Ind Co Ltd Pipeline data processing device and method for executing multiple data processing data dependent relationship
US5745726A (en) * 1995-03-03 1998-04-28 Fujitsu, Ltd Method and apparatus for selecting the oldest queued instructions without data dependencies
US5664120A (en) * 1995-08-25 1997-09-02 International Business Machines Corporation Method for executing instructions and execution unit instruction reservation table within an in-order completion processor
US5797019A (en) * 1995-10-02 1998-08-18 International Business Machines Corporation Method and system for performance monitoring time lengths of disabled interrupts in a processing system
US5691920A (en) * 1995-10-02 1997-11-25 International Business Machines Corporation Method and system for performance monitoring of dispatch unit efficiency in a processing system
US5752062A (en) * 1995-10-02 1998-05-12 International Business Machines Corporation Method and system for performance monitoring through monitoring an order of processor events during execution in a processing system
US5751945A (en) * 1995-10-02 1998-05-12 International Business Machines Corporation Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system
US5729726A (en) * 1995-10-02 1998-03-17 International Business Machines Corporation Method and system for performance monitoring efficiency of branch unit operation in a processing system
US5949971A (en) * 1995-10-02 1999-09-07 International Business Machines Corporation Method and system for performance monitoring through identification of frequency and length of time of execution of serialization instructions in a processing system
US5748855A (en) * 1995-10-02 1998-05-05 Iinternational Business Machines Corporation Method and system for performance monitoring of misaligned memory accesses in a processing system
US5751983A (en) * 1995-10-03 1998-05-12 Abramson; Jeffrey M. Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
JP3435267B2 (ja) * 1995-11-07 2003-08-11 株式会社東芝 マイクロプロセッサ及びそのロードアドレス予想方法
US5778208A (en) * 1995-12-18 1998-07-07 International Business Machines Corporation Flexible pipeline for interlock removal
US6115730A (en) * 1996-02-28 2000-09-05 Via-Cyrix, Inc. Reloadable floating point unit
US5813033A (en) * 1996-03-08 1998-09-22 Advanced Micro Devices, Inc. Superscalar microprocessor including a cache configured to detect dependencies between accesses to the cache and another cache
JPH09305401A (ja) * 1996-05-13 1997-11-28 Mitsubishi Electric Corp コンピュータ及びコンパイラ
US6049864A (en) * 1996-08-20 2000-04-11 Intel Corporation Method for scheduling a flag generating instruction and a subsequent instruction by executing the flag generating instruction in a microprocessor
US5878242A (en) * 1997-04-21 1999-03-02 International Business Machines Corporation Method and system for forwarding instructions in a processor with increased forwarding probability
US6000016A (en) * 1997-05-02 1999-12-07 Intel Corporation Multiported bypass cache in a bypass network
US6016543A (en) * 1997-05-14 2000-01-18 Mitsubishi Denki Kabushiki Kaisha Microprocessor for controlling the conditional execution of instructions
US6012137A (en) * 1997-05-30 2000-01-04 Sony Corporation Special purpose processor for digital audio/video decoding
JPH1165840A (ja) * 1997-08-11 1999-03-09 Sony Corp 演算処理装置およびその方法
US6370638B1 (en) * 1997-11-21 2002-04-09 Matsushita Electric Industrial Co., Ltd. Apparatus and method of computer program control in computer systems using pipeline processing
US6546479B1 (en) 1998-02-10 2003-04-08 Koninklijke Philips Electronics N.V. Reduced instruction fetch latency in a system including a pipelined processor
US8636648B2 (en) 1999-03-01 2014-01-28 West View Research, Llc Endoscopic smart probe
US10973397B2 (en) 1999-03-01 2021-04-13 West View Research, Llc Computerized information collection and processing apparatus
US6708267B1 (en) * 2000-02-04 2004-03-16 International Business Machines Corporation System and method in a pipelined processor for generating a single cycle pipeline stall
US7243214B2 (en) * 2003-04-21 2007-07-10 Intel Corporation Stall optimization for an in-order, multi-stage processor pipeline which analyzes current and next instructions to determine if a stall is necessary
US7684563B1 (en) * 2003-12-12 2010-03-23 Sun Microsystems, Inc. Apparatus and method for implementing a unified hash algorithm pipeline
US7720219B1 (en) * 2004-10-19 2010-05-18 Oracle America, Inc. Apparatus and method for implementing a hash algorithm word buffer
US8536664B1 (en) 2007-04-16 2013-09-17 DigitalOptics Corporation MEMS MEMS device with integrated memory cells
CN105094747B (zh) * 2014-05-07 2018-12-04 阿里巴巴集团控股有限公司 基于smt的中央处理单元以及用于检测指令的数据相关性的装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4831515A (en) * 1985-02-08 1989-05-16 Hitachi, Ltd. Information processing apparatus for determining sequence of parallel executing instructions in response to storage requirements thereof

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU553416B2 (en) * 1984-02-24 1986-07-17 Fujitsu Limited Pipeline processing
JP2667849B2 (ja) * 1988-01-06 1997-10-27 株式会社日立製作所 情報処理装置
US5123108A (en) * 1989-09-11 1992-06-16 Wang Laboratories, Inc. Improved cpu pipeline having register file bypass and working register bypass on update/access address compare
US5222240A (en) * 1990-02-14 1993-06-22 Intel Corporation Method and apparatus for delaying writing back the results of instructions to a processor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4831515A (en) * 1985-02-08 1989-05-16 Hitachi, Ltd. Information processing apparatus for determining sequence of parallel executing instructions in response to storage requirements thereof

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
US-Buch: "Computer architecture and parallel pro- cessing", K. Hwang, F.A. Briggs McGraw-Hill Book Company, 1984, S. 187 bis 203 *
US-Z: IEEE Journal of Solid-State-Circuits, Bd. SC-22, Nr. 5, Oktober 1980, S. 790-797 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113946368A (zh) * 2021-10-29 2022-01-18 西安微电子技术研究所 一种基于risc-v指令集的三级流水线架构、处理器及数据处理方法
CN113946368B (zh) * 2021-10-29 2024-04-30 西安微电子技术研究所 一种基于risc-v指令集的三级流水线架构、处理器及数据处理方法

Also Published As

Publication number Publication date
US5404552A (en) 1995-04-04
DE4206062C2 (de) 1996-06-13
JPH04275628A (ja) 1992-10-01

Similar Documents

Publication Publication Date Title
DE4206062C2 (de) Pipelineverarbeitung von Instruktionen
DE68929483T2 (de) Datenprozessor mit einer Befehlseinheit, die einen Cachespeicher und einen ROM aufweist.
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE4222776C2 (de) Parallelverarbeitungseinheit und Verfahren zum Ausführen von Befehlen
DE69727773T2 (de) Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor
DE112004002848B4 (de) Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor
DE602005005726T2 (de) Verbreitung eines Thread-IDs in einem Multithreadpipelineprozessor
DE69724771T2 (de) Zentralprozessoreinheit mit x86 und dsp kern und einem dsp funktions-dekoder zum abbilden von x 86-befehlen auf dsp-befehle
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE3210816C2 (de)
US4587632A (en) Lookahead stack oriented computer
DE60005860T2 (de) Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle
DE60009151T2 (de) Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung
DE69736105T2 (de) Hierarchische durchsuchlogik für ungeordnete lade/speicherausführungssteuerung
DE102004013676A1 (de) Schleifenbetrieb mit null Overhead in einem Mikroprozessor mit Anweisungspuffer
DE4207148A1 (de) Superscalar-prozessor
DE3638572C2 (de)
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE69133571T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE69633474T2 (de) Adressierungsverfahren zur nicht-sequentiellen Ausführung von Ladebefehlen hinsichtlich Speicherungsbefehlen
DE4313594A1 (de) Mikroprozessor
DE4335475A1 (de) Datenverarbeitungseinrichtung mit Cache-Speicher
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE19534752A1 (de) Verfahren und System zum Liefern einer Unterstützung für eine spekulative Ausführung

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee