DE68928513T2 - Verfahren zur Vorverarbeitung mehrerer Befehle - Google Patents

Verfahren zur Vorverarbeitung mehrerer Befehle

Info

Publication number
DE68928513T2
DE68928513T2 DE68928513T DE68928513T DE68928513T2 DE 68928513 T2 DE68928513 T2 DE 68928513T2 DE 68928513 T DE68928513 T DE 68928513T DE 68928513 T DE68928513 T DE 68928513T DE 68928513 T2 DE68928513 T2 DE 68928513T2
Authority
DE
Germany
Prior art keywords
instruction
unit
source
queue
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE68928513T
Other languages
English (en)
Other versions
DE68928513D1 (de
Inventor
David B Fite
William R Grundmann
Dwight P Manley
Francis X Mckeen
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.)
Digital Equipment Corp
Original Assignee
Digital Equipment 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 Digital Equipment Corp filed Critical Digital Equipment Corp
Publication of DE68928513D1 publication Critical patent/DE68928513D1/de
Application granted granted Critical
Publication of DE68928513T2 publication Critical patent/DE68928513T2/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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
    • 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/383Operand prefetching
    • 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

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)
  • Electrophonic Musical Instruments (AREA)
  • Magnetic Resonance Imaging Apparatus (AREA)
  • Vehicle Body Suspensions (AREA)

Description

  • Die vorliegende Erfindung bezieht sich allgemein auf Digitalcomputer und insbesondere auf ein System zum Auflösen von Datenabhängigkeiten während der Vorverarbeitung von mehreren Befehlen vor der Ausführung dieser Befehle in einem Digitalcomputer. Diese Erfindung findet insbesondere Anwendung bei der Vorverarbeitung mehrerer Befehle in einem Pipeline-Digitalcomputersystem, das eine Architektur mit einem komplexen Befehlssatz (CIS) von variabler Länge verwendet.
  • Die Vorverarbeitung von Befehlen ist ein übliches Hilfsmittel, das in Digitalcomputern verwendet wird, um die Ausführung einer großen Anzahl von Befehlen zu beschleunigen. Die Vorverarbeitungsoperationen werden typischerweise von einer Befehlseinheit ausgeführt, die zwischen dem Speicher, der die Befehle speichert, und der Ausführungseinheit, die die Befehle ausführt, angeordnet ist. Die Vorverarbeitungsoperationen umfassen z. B. das Vorausholen von Operanden, die von den Operandenspezifizierem identifiziert werden, in aufeinanderfolgenden Befehlen, so daß die Operanden bereits verfügbar sind, wenn die entsprechenden Befehle in die Ausführungseinheit geladen werden. Die Befehlseinheit führt die Vorverarbeitungsoperationen für aufeinanderfolgende Befehle aus, während ein aktueller Befehl von der Ausführungseinheit ausgeführt wird, wodurch die Gesamtverarbeitungszeit für eine beliebige gegebene Folge von Befehlen reduziert wird.
  • Eine Referenz des Standes der Technik mit dem Titel "Varieties of decoupled access/execute computer architectures", von J. E. Smith und T. J. Kaminski, erschienen in Proceedings 20th Annual Allerton Conference on Communications, Control and Computing, 6.-8. Oktober 1982, Monitcello, Illinois, USA, S. 557-586, lehrt getrennte Befehlsströme für den Datenzugriff und die Ausführung in entkoppelten Zugriff/Ausführung-Computerarchitekturen, um eine hohe Leistung zu erreichen. Mehrere Erweiterungen und Verfeinerungen der entkoppelten Architekturen sind in dieser Referenz des Standes der Technik offenbart.
  • Das US-Patent 4.241.397 von Strecker u. a. lehrt ein Digitaldatenverarbeitungssystem mit einem Zentralprozessor, der auf Befehle antwortet, die eine variable Länge aufweisen und von einem Befehlspuffer gehandhabt werden. Jeder Befehl enthält einen Operationscode. Der Zentralprozessor enthält eine Schaltung zum Decodieren des Operationscodes. Der Zentralprozessor antwortet auf einen Befehl zum Addieren zweier Summanden, die in ersten und zweiten Speicherstellen angeordnet sind, und speichert die Summe in einer dritten Speicherstelle.
  • Andere Aufgaben und Vorteile der Erfindung werden deutlich beim Lesen der folgenden genauen Beschreibung unter Bezugnahme auf die Zeichnungen, in welchen:
  • Fig. 1 ein Blockschaltbild eines Digitalcomputersystems mit einer Pipeline-Zentraleinheit ist, die die vorliegende Erfindung verwendet;
  • Fig. 2 ein Schaubild ist, das verschiedene Schritte zeigt, die durchgeführt werden, um einen Befehl zu verarbeiten, und die von einem Pipeline-Befehlsprozessor gemäß Fig. 1 für unterschiedliche Befehle parallel ausgeführt werden können;
  • Fig. 3 ein Blockschaltbild des Befehlsprozessors der Fig. 1 ist, das die zwischen der Befehlseinheit und der Ausführungseinheit eingesetzten Warteschlangen genauer zeigt;
  • Fig. 4 ein Blockschaltbild des Befehlsdecodierers der Fig. 1 ist, das die Datenpfade genauer zeigt, die der Quellenliste und den anderen Registern zugeordnet sind und die zum Austausch von Daten zwischen der Befehlseinheit, der Speicherzugriffseinheit und der Ausführungseinheit verwendet werden;
  • Fig. 5 ein Blockschaltbild ist, das den Datenpfad durch die Befehlseinheit zu den Warteschlangen zeigt;
  • Fig. 6 ein Schaubild ist, das das Format der Operandenspezifiziererdaten zeigt, die über einen GP-Bus von einem Befehlsdecodierer zu einer Universaleinheit in einer Operandenverarbeitungseinheit in der Befehlseinheit übertragen werden;
  • Fig. 7 ein Schaubild ist, das das Format der Kurzliteralspezifiziererdaten zeigt, die über einen SL-Bus vom Befehlsdecodierer zu einer Erweiterungseinheit in der Operandenverarbeitungseinheit übertragen werden;
  • Fig. 8 ein Schaubild ist, das das Format der Quellen- und Zielspezifiziererdaten zeigt, die über einen TR-Bus vom Befehlsdecodierer zu einer Transfereinheit in der Operandenverarbeitungseinheit übertragen werden;
  • Fig. 9 ein schematisches Schaubild der Transfereinheit ist;
  • Fig. 10 ein schematisches Schaubild der Erweiterungseinheit ist;
  • Fig. 11 ein schematisches Schaubild der Universaleinheit in der Operandenverarbeitungseinheit ist;
  • Fig. 12 ein Blockschaltbild der Ausführungseinheit ist, das den Steuerungsablauf für die Ausführung von Befehlen und für das Entnehmen von Ergebnissen zeigt;
  • Fig. 13 ein Blockschaltbild der Ausführungseinheit ist, das die Datenpfade zeigt, die während der Ausführung von Befehlen und der Entnahme von Ergebnissen zur Verfügung stehen;
  • Fig. 14 ein Zeitablaufdiagramm ist, das die Zustände der entsprechenden funktionellen Einheiten zeigt, wenn deren entsprechende arithmetische oder logische Operationen bezüglich der Quellenoperanden unterschiedlicher Datentypen durchgeführt werden;
  • Fig. 15 ein Flußdiagramm der Steuerprozedur ist, die von einer Befehlsausgabeeinheit in der Befehlseinheit verfolgt wird, um Quellenoperanden an spezifizierte funktionelle Einheiten auszugeben und das Ausgeben und das Ziel für das entsprechende Ergebnis in einer Ergebniswarteschlange in der Ausführungseinheit aufzuzeichnen;
  • Fig. 16 ein Flußdiagramm der Steuerprozedur ist, die von der Entnahmeeinheit verfolgt wird, um die Ergebnisse der funktionellen Einheit, die durch den Eintrag an der Spitze der Entnahmewarteschlange spezifiziert wird, zu erhalten und diese Ergebnisse an einem durch diesen Eintrag spezifizierten Ziel zu entnehmen und diesen Eintrag von der Spitze der Entnahmewarteschlange zu entfernen; und
  • Fig. 17 ein Schaubild ist, das die Informationen zeigt, die vorzugsweise in einem Eintrag der Entnahmewarteschlange gespeichert werden.
  • Obwohl die Erfindung verschiedenen Modifizierungen und alternativen Ausführungsformen unterworfen werden kann, sind in den Zeichnungen beispielhaft spezielle Ausführungsformen derselben gezeigt, die im folgenden genauer beschrieben werden. Es ist jedoch zu beachten, daß nicht beabsichtigt ist, die Erfindung auf die offenbarten bestimmten Ausführungsformen zu beschränken, sondern daß im Gegenteil die Erfindung alle Modifizierungen, Entsprechungen und Alternativen abdecken soll, die in den Geist und den Umfang der Erfindung fallen, wie sie durch die beigefügten Ansprüche definiert ist.
  • In den Zeichnungen und insbesondere in Fig. 1 ist ein Teil eines Digitalcomputersystems gezeigt, das einen Hauptspeicher 10, eine Speicher-CPU-Schnittstelleneinheit 11 und wenigstens eine CPU enthält, die eine Befehlseinheit 12 und eine Ausführungseinheit 13 umfaßt. Es ist zu beachten, daß in einem solchen System durch gemeinsame Nutzung des Hauptspeichers 10 zusätzliche CPUs verwendet werden können. Es ist z. B. möglich, daß bis zu vier CPUs gleichzeitig arbeiten und über den gemeinsam genutzten Hauptspeicher 10 effizient kommunizieren. Sowohl Daten als auch Befehle zur Verarbeitung der Daten sind in adressierbaren Speicherstellen innerhalb des Hauptspei chers 10 gespeichert. Ein Befehl enthält einen Operationscode (Opcode), der in codierter Form eine von der CPU auszuführende Operation spezifiziert, sowie Operandenspezifizierer, die Informationen zum Auffinden der Operanden zur Verfügung stellen. Die Ausführung eines einzelnen Befehls wird in mehrere kleinere Aufgaben unterteilt. Diese Aufgaben werden von speziellen, separaten und unabhängigen Funktionseinheiten ausgeführt, die für diesen Zweck optimiert sind.
  • Obwohl jeder Befehl letztendlich eine andere Operation ausführt, sind viele der kleineren Aufgaben, in die jeder Befehl unterteilt wird, allen Befehlen gemeinsam. Im allgemeinen werden während der Ausführung eines Befehls die folgenden Schritte ausgeführt: Befehl holen, Befehl decodieren, Operand holen, Ausführung und Ergebnis speichern. Durch die Verwendung der speziellen Hardware- Stufen können somit die Schritte in einer Pipeline-Operation überlappen, wodurch der Gesamtbefehlsdurchsatz erhöht wird.
  • Der Datenpfad durch die Pipeline enthält einen entsprechenden Satz von Registern zum Übertragen der Ergebnisse jeder Pipeline-Stufe zur nächsten Pipeline-Stufe. Diese Übertragungsregister werden in Abhängigkeit von einem gemeinsamen Systemtakt getaktet. Zum Beispiel wird während eines ersten Taktzyklus der erste Befehl von der Hardware geholt, die für das Befehlholen zuständig ist. Während des zweiten Taktzyklus wird der geholte Befehl übertragen und von der Befehlsdecodierungs-Hardware decodiert, wobei jedoch gleichzeitig von der Befehl- Holen-Hardware der nächste Befehl geholt wird. Während des dritten Taktzyklus werden die jeweiligen Befehle zur nächsten Stufe der Pipeline geschoben und es wird ein neuer Befehl geholt. Nachdem die Pipeline gefüllt worden ist, wird somit am Ende jedes Taktzyklus ein Befehl vollständig ausgeführt sein.
  • Diese Prozeß entspricht einer Montagestraße in einer Fabrik. Jedem Arbeiter ist die Durchführung einer einzelnen Aufgabe bezüglich jedes Produktes zugewiesen, das durch seine Arbeitsstufe läuft. Mit jeder ausgeführten Aufgabe kommt das Produkt seiner Fertigstellung näher. In der letzten Stufe rollt jedesmal dann, wenn der Arbeiter seine zugewiesene Aufgabe ausgeführt hat, ein fertiges Produkt von der Montagestraße.
  • In dem in Fig. 1 dargestellten besonderen System enthält die Schnittstelleneinheit 11 einen Haupt-Cache 14, der auf einer Mittelungsgrundlage den Befehls- und Ausführungseinheiten 12 und 13 ermöglicht, Daten mit einer schnelleren Rate zu verarbeiten als es die Zugriffszeit des Hauptspeichers 10 zuläßt. Dieser Cache 14 enthält eine Einrichtung zum Speichern ausgewählter vordefinierter Blöcke von Datenelementen, eine Einrichtung zum Empfangen von Anfragen von der Befehlseinheit 12 über einen Übersetzungspuffer 15 für einen Zugriff auf ein spezifiziertes Datenelement, eine Einrichtung zum Prüfen, ob das Datenelement sich in einem im Cache gespeicherten Block befindet, sowie eine Einrichtung, die aktiv wird, wenn die Daten für den Block, der das spezifizierte Datenelement enthält, nicht auf diese Weise gespeichert ist, um den spezifizierten Block von Daten aus dem Hauptspeicher 10 zu lesen und diesen Block von Daten im Cache 14 zu speichern. Mit anderen Worten, der Cache schafft ein "Fenster" im Hauptspeicher und enthält Daten die von den Befehls- und Ausführungseinheiten wahrscheinlich benötigt werden.
  • Wenn ein von den Befehls- und Ausführungseinheiten 12 und 13 benötigtes Datenelement nicht im Cache 14 gefunden wird, wird das Datenelement anschließend aus dem Hauptspeicher 10 erhalten, wobei jedoch im Prozeß ein ganzer Block, der zusätzliche Daten enthält, vom Hauptspeicher 10 erhalten und in den Cache 14 geschrieben wird. Aufgrund des Prinzips der Lokalität bezüglich der Zeit und des Speicherraums ergibt sich beim nächsten mal, wenn die Befehls- und Ausführungseinheiten ein Datenelement anfordem, eine hohe Wahrscheinlichkeit, daß dieses Datenelement in dem Block gefunden wird, der das vorher adressierte Datenelement enthält. Folglich ergibt sich eine hohe Wahrscheinlichkeit, daß der Cache 14 bereits das Datenelement enthält, das von den Befehls- und Ausführungseinheiten 12 und 13 angefordert wird. Da im allgemeinen auf den Cache 14 mit einer sehr viel höheren Rate zugegriffen wird als auf den Hauptspeicher 10, kann der Hauptspeicher eine proportional langsamere Zugriffszeit besitzen als der Cache, ohne daß die durchschnittliche Leistung des Datenverarbeitungssystems wesentlich beeinträchtigt wird. Der Hauptspeicher 10 kann daher langsamere und kostengünstigere Speicherelemente enthalten.
  • Der Übersetzungspuffer 15 ist ein Hochgeschwindigkeits- Assoziativspeicher, der die zuletzt benutzten Virtuell- Physikalisch-Adressenübersetzungen speichert. In einem virtuellen Speichersystem kann eine Referenz auf eine einzelne virtuelle Adresse mehrere Speicherzugriffe verursachen, bevor die gewünschten Informationen verfügbar sind. Wenn jedoch der Übersetzungspuffer 15 verwendet wird, wird die Übersetzung auf ein einfaches finden eines "Treffers" im Übersetzungspuffer 15 reduziert.
  • Ein E/A-Bus 16 ist mit dem Hauptspeicher 10 und dem Haupt-Cache 14 verbunden, um Anweisungen und Eingangsdaten zum System zu übertragen und Ausgangsdaten vom System zu empfangen.
  • Die Befehlseinheit 12 enthält einen Programmzähler 17 sowie einen Befehls-Cache 18 zum Holen von Befehlen aus dem Haupt-Cache 14. Der Programmzähler 17 adressiert vorzugsweise die virtuellen Speicherstellen statt der physikalischen Speicherstellen des Hauptspeichers 10 und des Cache 14. Daher muß die virtuelle Adresse des Programmzählers 17 in die physikalische Adresse des Hauptspeichers 10 übersetzt werden, bevor die Befehle wiedergewonnen werden können. Dementsprechend werden die Inhalte des Programmzählers 17 zur Schnittstelleneinheit 11 übertragen, wo der Übersetzungspuffer 15 die Adressenumsetzung durchführt. Der Befehl wird aus seiner physikalischen Speicherstelle im Cache 14 unter Verwendung der umgesetzten Adresse wiedergewonnen. Der Cache 14 liefert den Befehl über Datenrückkehrleitungen zum Befehls-Cache 18. Die Organisation und die Operation des Cache 14 und des Übersetzungspuffers 15 sind genauer beschrieben in Kapitel 11, Levy & Eckhouse, Jr., Computer Programming and Architecture, The VAX-11, Digital Equipment Corporation, S. 351-368 (1980).
  • Die meiste Zeit hat der Befehls-Cache im voraus Befehle an den Adressen gespeichert, die vom Programmzähler 17 spezifiziert werden, wobei die adressierten Befehle sofort für eine Übertragung in einen Befehlspuffer 19 verfügbar sind. Die adressierten Befehle werden aus den Puffern 19 einem Befehlsdecodierer 20 zugeführt, der sowohl die Opcodes als auch die Spezifizierer decodiert. Eine Operandenverarbeitungseinheit (OPU) 21 holt die spezifizierten Operanden und führt diese der Ausführungseinheit 13 zu.
  • Die OPU 21 erzeugt ferner virtuelle Adressen. Genauer erzeugt die OPU 21 virtuelle Adressen für Speicherquellen-(Lese-) und Ziel-(Schreib)-Operanden. Wenigstens für die Speicherleseoperanden muß die OPU 21 diese virtuellen Adressen an die Schnittstelleneinheit 11 liefern, wo sie in physikalische Adressen übersetzt werden. Anschließend wird auf die physikalischen Speicherstellen des Cache 14 zugegriffen, um die Operanden für die Speicherquellenoperanden zu holen.
  • In jedem Befehl enthält das erste Byte den Opcode, während die folgenden Bytes die zu decodierenden Operandenspezifizerer sind. Das erste Byte jedes Spezifizierers zeigt den Adressierungsmodus für diesen Spezifizierer an. Dieses Byte wird üblicherweise in Hälften unterteilt, wobei eine Hälfte den Adressierungsmodus spezifiziert und die andere Hälfte ein für die Adressierung zu verwendendes Register spezifiziert. Die Befehle besitzen vorzugsweise eine variable Länge, wobei verschiedene Typen von Spezifizierern mit demselben Opcode verwendet werden können, wie in Strecker u. a., US-Patent 4.241.397, erteilt am 23. Dezember 1980, offenbart ist.
  • Der erste Schritt bei der Verarbeitung der Befehle ist, den "Opcode"-Abschnitt des Befehls zu decodieren. Der erste Abschnitt jedes Befehls besteht aus dessen Opcode, der die im Befehl durchzuführende Operation sowie die Anzahl und den Typ der zu verwendenden Spezifizierer spezifiziert.
  • Die Decodierung wird unter Verwendung einer Tabellennachschlagetechnik im Befehlsdecodierer 20 bewerkstelligt. Der Befehlsdecodierer findet eine Mikrocodestartadresse zum Ausführen des Befehls in einer Nachschlagtabelle und gibt die Startadresse an die Ausführungseinheit 13 weiter. Später führt die Ausführungseinheit die spezifizierte Operation durch, indem sie den im voraus gespeicherten Mikrocode beginnend mit der angegebenen Startadresse ausführt. Der Decodierer ermittelt ferner, wo im Befehl Quellenoperanden- und Zieloperandenspezifizierer auftreten, und leitet diese Spezifizierer an die OPU 21 zur Vorverarbeitung vor der Ausführung des Befehls weiter.
  • Die Nachschlagtabelle ist als Matrix von mehreren Blöcken organisiert, die jeweils mehrere Einträge aufweisen. Jeder Eintrag kann durch seinen Block und den Eintragsindex adressiert werden. Das Opcode-Byte adressiert den Block, während ein Zeiger von einem Ausführungszeigerzähler (der die Position des aktuellen Spezifizierers im Befehl angibt) einen bestimmten Eintrag im Block auswählt. Der Ausgang der Nachschlagtabelle spezifiziert den Datenkontext (Byte, Wort usw.), den Datentyp (Adresse, ganze Zahl, usw.) und den Zugriffsmodus (Lesen, Schreiben, Modifizieren, usw.) für jeden Spezifizierer und liefert ferner eine Mikrocode-Abfertigungsadresse an die Ausführungseinheit.
  • Nachdem ein Befehl decodiert worden ist, prüft die OPU 21 die Operandenspezifizerer und berechnet deren effektive Adressen; dieser Prozeß verwendet das Lesen der GPRs (General Purpose Register = Universalregister) und das mögliche Modifizieren der GPR-Inhalte mittels automatischer Inkrementierung oder automatischer Dekrementierung. Anschließend werden aus diesen effektiven Adressen die Operanden geholt und zur Ausführungseinheit 13 weitergeleitet, die den Befehl ausführt und das Ergebnis in das durch den Zielzeiger für diesen Befehl identifizierte Ziel schreibt.
  • Jedesmal dann, wenn ein Befehl an die Ausführungseinheit weitergeleitet wird, sendet die Ausführungseinheit eine Mikrocode-Abfertigungsadresse und einen Satz von Zeigern für (1) die Stellen im Ausführungseinheitsregistersatz, in denen die Quellenoperanden gefunden werden können, und (2) die Stelle an der die Ergebnisse zu speichern sind. Innerhalb der Ausführungseinheit enthält ein Satz von Warteschlangen 23 eine Gabel-Warteschlange zum Speichern der Mikrocode-Abfertigungsadresse, eine Quellenzeigerwarteschlange zum Speichern der Quellenoperandenstellen sowie eine Zielzeigerwarteschlange zum Speichern des Zielortes. Jede diese Warteschlangen ist ein FIFO-Puffer, der die Daten für mehrere Befehle halten kann.
  • Die Ausführungseinheit 13 enthält ferner eine Quellenliste 24, die eine Registergruppe mit mehrfachen Anschlüssen ist und eine Kopie der Universalregister und eine Liste der Quellenoperanden enthält. Diese Einträge in der Quellenzeigerwarteschlange zeigen entweder auf die GPR-Stellen für die Registeroperanden oder auf die Quellenliste für die Speicher- und Literaloperanden. Sowohl die Schnittstelleneinheit 11 als auch die Befehlseinheit 12 schreiben Einträge in die Quellenliste 24, wobei die Ausführungseinheit 13 nach Bedarf Operanden aus der Quellenliste liest, um die Befehle auszuführen. Zum Ausführen von Befehlen enthält die Ausführungseinheit 13 eine Befehlsausgabeeinheit 25, eine Mikrocodeausführungseinheit 26, eine arithmetisch-logische Einheit (ALU) 22 sowie eine Entnahmeeinheit 27.
  • Die vorliegende Erfindung ist für Pipeline-Prozessoren besonders nützlich. Wie oben erläutert worden ist, kann in einem Pipeline-Prozessor die Befehl-Holen-Hardware des Prozessors einen Befehl holen, während eine andere Hardware den Operationscode eines zweiten Befehls decodiert, die Operanden eines dritten Befehls holt, einen vierten Befehl ausführt und die verarbeiteten Daten eines fünften Befehls speichert. Fig. 2 zeigt eine Pipeline für einen typischen Befehl, wie z. B.:
  • ADDL3 R0, B^12(R1),R2.
  • Dies ist eine Langwort-Addition, die den Verschiebungsmodus der Adressierung verwendet.
  • In der ersten Stufe der Pipeline-Ausführung dieses Befehls wird der Programmzähler (PC) des Befehls erzeugt; dies wird üblicherweise entweder durch Inkrementieren des Programmzählers ausgehend vom vorangehenden Befehl oder durch Verwenden der Zieladresse eines Verzweigungsbefehls bewerkstelligt. Der PC wird anschließend verwendet, um in der zweiten Stufe der Pipeline auf den Befehlscache 18 zuzugreifen.
  • In der dritten Stufe der Pipeline sind die Daten aus dem Cache 18 für die Verwendung durch den Befehlsdecodierer 20 oder zum Laden in den Befehlspuffer 19 verfügbar. Der Befehlsdecodierer 20 decodiert den Opcode und die drei Spezifizierer in einem einzigen Zyklus, wie im folgenden genauer beschrieben wird. Die Nummer R1 gemeinsam mit der Byteverschiebung wird am Ende des Decodierungszyklus zur OPU 21 gesendet.
  • In der Stufe 4 werden die Zeiger R0 und R2 an die Warteschlangeneinheit 23 weitergeleitet. Ferner liest die Operandeneinheit 21 die Inhalte ihrer Universalregistergruppe an der Stelle Rl, addiert diesen Wert zur spezifizierten Verschiebung (12) und sendet die resultierende Adresse zum Übersetzungspuffer 15 in der Schnittstelleneinheit 11 gemeinsam mit einer OP-Lese-Anfrage am Ende der Adreßerzeugungsstufe. Ein Zeiger auf eine reservierte Stelle in der Quellenliste für die Aufnahme des zweiten Operanden wird an die Warteschlangeneinheit 23 weitergeleitet. Wenn die OP-Lese-Anfrage bearbeitet wird, wird der aus dem Speicher gelesene zweite Operand an die reservierte Stelle in der Quellenliste übertragen.
  • In Stufe 5 wählt die Schnittstelleneinheit 11 die in Stufe 4 erzeugte Adresse zur Ausführung aus. Unter Verwendung des Übersetzungspuffers 15 übersetzt die Schnittstelleneinheit 11 die virtuelle Adresse während der Adressenübersetzungsstufe in eine physikalische Adresse. Die physikalische Adresse wird anschließend verwendet, um den Cache 14 zu adressieren, der in Stufe 6 der Pipeline gelesen wird.
  • In Stufe 7 der Pipeline wird der Befehl an die ALU 22 ausgegeben, die die zwei Operanden addiert und das Ergebnis an die Entnahmeeinheit 27 sendet. Während der Stufe 4 wurden die Registernummern für R1 und R2 und ein Zeiger auf den Quellenlistenort für die Speicherdaten zur Ausführungseinheit gesendet und in den Zeigerwarteschlangen gespeichert. Während der Cache-Lesestufe beginnt die Ausführungseinheit anschließend, nach den zwei Quellenoperanden in der Quellenliste zu suchen. In diesem speziellen Beispiel findet sie nur die Registerdaten in R0, wobei jedoch am Ende dieser Stufe die Speicherdaten ankommen und anstelle der ungültigen ausgelesenen Daten des Registersatzes eingesetzt werden. Somit sind in der Befehlsausführungsstufe beide Operanden verfügbar.
  • In der Entnahmestufe 8 der Pipeline werden die Ergebnisdaten mit dem nächsten Eintrag in der Entnahmewarteschlange gepaart. Ferner stehen zu diesem Zeitpunkt die Bedingungscodes zur Verfügung, die den Verzweigungsentscheidungen zugrunde liegen. Obwohl mehrere Funktionsausführungseinheiten gleichzeitig beschäftigt sein können, kann in einem einzigen Zyklus nur ein Befehl entnommen werden.
  • In der letzen Stufe 9 der erläuterten Pipeline werden die Daten in den GPR-Abschnitt des Registersatzes sowohl in der Ausführungseinheit 13 als auch in der Befehlseinheit 12 geschrieben.
  • Es ist erwünscht, einen Pipeline-Prozessor mit einem Mechanismus zur Vorhersage des Ausgangs von bedingten Verzweigungsentscheidungen zu schaffen, um den Einfluß von Halten oder "Lücken" in der Pipeline zu minimieren. Dies ist insbesondere wichtig für den Pipeline-Prozessor der Fig. 1, da die Warteschlangen 23 die Zwischenergebnisse mehrerer Befehle speichern können. Wenn Halte oder Lücken auftreten, verlieren die Warteschlangen ihre Effektivität bei der Erhöhung des Durchsatzes des Prozessors. Die Tiefe der Pipeline jedoch bewirkt, daß das "Zurückspulen" einer Befehlssequenz im Fall einer unkorrekten Vorhersage hinsichtlich der Hardware oder der Ausführungszeit aufwendiger ist. Das Zurückspulen bewirkt das Befreien der Informationspipeline von Befehlen im falschen Pfad, die einer Verzweigung folgen, die unkorrekt vorhergesagt wurde, und das Umleiten der Ausführung auf den korrekten Pfad.
  • Wie in Fig. 1 gezeigt, ist die Befehlseinheit 12 des Pipelineprozessors mit einer Verzweigungsvorhersageeinheit 28 versehen. Die genaue Funktion der Verzweigungsvorhersageeinheit 28 besteht darin, einen Wert (VORHERSAGE-PC) zu ermitteln oder auszuwählen, den der Programmzähler 17 annimmt, nachdem ein Verzweigungsbefehl adressiert worden ist. Dieser Wert oder diese Auswahl wird über einen Bus 29 von der Verzweigungsvorhersageeinheit 28 zur Programmzählereinheit 17 übertragen.
  • Die Verzweigungsvorhersageeinheit 28 spricht auf vier Haupteingangssignale an. Wenn der Befehlsdecodierer 20 einer Verzweigungs-Opcode vom Befehlspuffer 19 empfängt, werden Verzweigungs-Opcode-Informationen und ein Verzweigungs-Opcode-Impulssignal (BSHOP) über einen Eingangsbus 30 zur Verzweigungsvorhersageeinheit übertragen. Gleichzeitig wird die Adresse des Verzweigungsbefehls (DECODE PC) auf einem Eingangsbus 31 von der Programmzählereinheit 17 empfangen. Die Zieladresse des Verzweigungsbefehls (TARGET PC) und ein Zieladressenimpulssignal (TARGET VALID) werden auf einem Eingangsbus 32 von der Operandeneinheit 21 empfangen. Die Operandeneinheit 21 addiert z. B. den Wert eines Verschiebungsspezifizierers im Verzweigungsbefehl zur Adresse des Befehls, der dem Verzweigungsbefehl folgt, um die Zieladresse zu berechnen. Bei bedingten Verzweigungen wird die Verzweigungsentscheidung gefällt und die Vorhersage mittels eines Gültigkeitssignals (BRANCH VALID) für gültig erklärt, das mit einem Datensignal (BRANCH DECISION) auf einem Bus 33 von der Ausführungseinheit 13 empfangen wird.
  • Während der Ausführung der meisten Befehlssequenzen empfängt die Verzweigungsvorhersageeinheit 28 zuerst einen Verzweigungs-Opcode und dessen zugehörige Adresse, empfängt anschließend die entsprechende Zieladresse und empfängt schließlich ein Gültigkeitssignal. Die Verzweigungsvorhersageeinheit 28 antwortet auf diese typische Sequenz, indem sie eine Verzweigungsvorhersage macht, sobald der Verzweigungs-Opcode und seine entsprechende Adresse empfangen worden sind.
  • Wenn ein bedingter Verzweigungsbefehl für gültig erklärt wird, wird die Ausführung normal fortgesetzt. Ansonsten, wenn die Verzweigungsentscheidung nicht mit der Vorhersage übereinstimmt, wird eine "Rückspul"-Operation durchgeführt. Dies nutzt die Aufzeichnung der Entscheidung im Verzweigungs-Historie-Cache und leitet anschließend den Befehlsstrom um. Der Befehlsstrom wird umgeleitet, indem der Zustand der Zentraleinheit auf den Zustand zurückgesetzt wird, der zu dem Zeitpunkt, zu dem die Vorhersage gefällt wurde, bestand, woraufhin die Ausführung zu Beginn des alternativen Ausführungspfades ausgehend vom Verzweigungsbefehl neu gestartet wird. Die Ausführung wird z. B. an der vorher gesicherten "Rückspul"-Adresse (UNWIND PC) neu gestartet. Die Konstruktion und die Operation der bevorzugten Verzweigungsvorhersageeinheit ist genauer beschrieben in der obigen Referenz, D. Fite u. a., US-Patent Nr. 5.142.634, eingereicht am 3. Februar 1989, mit dem Titel "Branch Prediction".
  • Der Befehlsdecodierer 20 in der Befehlseinheit 12 und die Warteschlange 23 in der Ausführungseinheit 13 sind in Fig. 3 genauer gezeigt. Es wird deutlich, daß der Decodierer 20 einen Decodierer 20a für den Programmzähler, einen Gabeltabellen-RAM 20b, zwei Quellenoperandenspezifizierer-Decodierer 20c und 20d, einen Zieloperandenspezifizierer-Decodierer 20e und einen Registeroperationsdecodierer 20c enthält, die im folgenden genauer beschrieben werden. In einer bevorzugten Ausführungsform sind die Decodierer 20c-20f eng verknüpft und in eine große komplexe Decodierungseinheit integriert, wie in der obenerwähnten Referenz, D. Fite u. a., US-Patent Nr. 5.148.528, eingereicht am 3. Februar 1989, mit dem Titel "Decoding Multiple Specifiers in a Variable Length Instruction Architecture", genauer beschrieben ist. Der Decodierer 20b ist vorzugsweise in der Ausführungseinheit nahe der Gabelwarteschlange 23b statt in der Befehlseinheit angeordnet, da die Gabeladressen mehr Bits enthalten als die Opcodes, so daß in diesem Fall weniger Datenleitungen zwischen der Befehlseinheit und der Ausführungseinheit erforderlich sind.
  • Der Ausgang des Programmzählerdecodierers 20a wird in einer Programmzählerwarteschlange 23a in der Ausführungseinheit 13 gespeichert. Der RAM 20b empfängt nur das Opcode-Byte jedes Befehls und verwendet diese Daten, um eine "Gabel"-(Mikrocode)-Abfertigungsadresse aus einer Tabelle auszuwählen. Diese Abfertigungsadresse identifiziert den Beginn des Mikrocodes, der für die Ausführung des Befehls geeignet ist, und wird in einer Gabelwarteschlange 23b in der Ausführungseinheit 13 gespeichert.
  • Jeder der vier Decodierer 20c-20f empfängt sowohl das Opcode-Byte als auch die Operandenspezifiziererdaten vom Befehlspuffer 19. Die Decodierer 20c und 20d decodieren zwei Quellenoperandenspezifizierer, um Quellenoperanden zeiger zu erzeugen, die von der Ausführungseinheit verwendet werden können, um die zwei Quellenoperanden zu lokalisieren. Diese zwei Zeiger werden in einer Quellenzeigerwarteschlange 23c in der Ausführungseinheit gespeichert. Der Zieloperandenspezifizierer wird vom Decodierer 20e decodiert, um einen Zieloperandenzeiger zu erzeugen, der in einer Zielzeigerwarteschlange 23e in der Ausführungseinheit gespeichert wird.
  • Um auf die obenbeschriebenen Registerkonflikte zu prüfen, werden jedes mal, wenn ein neuer Befehl decodiert wird, zwei Masken erzeugt, um alle Universalregister zu identifizieren, die die Ausführungseinheit während der Ausführung dieses Befehls liest oder schreibt. Diese Masken werden im Registeroperationsdecodierer 20c (im folgenden in Verbindung mit Fig. 4 beschrieben) erzeugt und in einer Maskenwarteschlange 23f in der Befehlseinheit gespeichert. Jede Maske umfaßt eine Anzahl von Bitpositionen, die der Anzahl der Universalregister entspricht. In der Lesemaske wird für jedes während der Ausführung des neuen Befehls zu lesende Universalregister ein Bit gesetzt, während für jedes während der Ausführung dieses Befehls zu schreibende Universalregister ein Bit in der Schreibmaske gesetzt wird.
  • Sowohl die Lese- als auch die Schreibmasken für einen gegebenen Befehl werden als einzelner Eintrag in der Maskenwarteschlange 23f gespeichert. Wenn es 15 Universalregister gibt, besteht jeder Eintrag in der Maskenwarteschlange aus 30 Bits (15 Bits in jeder Lesemaske zum Identifizieren der zu lesenden Universalregister und 15 Bits in jeder Schreibmaske zum Identifizieren der zu schreibenden Universalregister). Die Gesamtheit aller gültigen Masken in der Maskenwarteschlange 23f wird verwendet, um jedes zu verwendende Register zu prüfen, um während der Vorverarbeitung von Befehlen in der Befehlseinheit 12 eine Speicheradresse zu erzeugen, um zu ermitteln, ob die Vorverarbeitung dieses Befehls angehalten werden soll. Die bevorzugte Konstruktion und die Operation der Maskenwarteschlange 23f wird genauer beschrieben im obenerwähnten US-Patent Nr. 5.142.631 von Murray u. a., eingereicht am 3. Februar 1989 mit dem Titel "Multiple Instruction Processing System With Data Dependency Resolution".
  • Diese Referenz zeigt ferner die Grundkonstruktion einer Warteschlange genauer, die deren Einfügungszeiger, deren Entnahmezeiger, die Logik zum Erfassen, wann die Warteschlange voll ist, sowie die Logik zum Löschen der Warteschlange enthält.
  • In Fig. 4 ist ein genaueres Blockschaltbild der Quellenliste 24 und der zugehörigen Registergruppen, gemeinsam mit 40 bezeichnet, gezeigt, die zusammen in zwei zeitlich selbst gesteuerten integrierten Registergruppenschaltungen integriert sind. Diese zeitlich selbst gesteuerte Registergruppe 40 schafft die Datenschnittstelle zwischen der Speicherzugriffseinheit 11, der Befehlseinheit 12 und der Ausführungseinheit 13.
  • Die Registergruppe 40 enthält vorzugsweise vier Sätze mit jeweils 16 Registern, wobei jedes Register 36 Bits lang ist. In diesem Fall werden zwei integrierte Schaltungen des gleichen Typs in Kombination verwendet, um die vier Sätze der 16 32-Bit-Register zu schaffen. Jedes Register ist so konfiguriert, daß es vier Bytes plus einem Pantätsbit für jedes Byte enthält. Die vier Sätze entsprechen jeweils den Universalregistern 41, der Quellenliste 24, den temporären Speicherregistern 42 und den temporären Ausführungsregistern 43. Diese Register besitzen Doppelanschluß-Ausgänge und enthalten zwei Multiplexer 45, 46, deren Eingänge mit jedem der 16 Register in jedem der vier Sätze von Registern verbunden sind. Die Ausgänge der 36-Bit-Multiplexer sind direkt mit der Ausführungseinheit 13 verbunden. Zwischen der Ausführungseinheit 13 und den Auswahleingängen der Multiplexer 45, 46 sind Auswahlleitungen angeschlossen. Diese Auswahlleitungen erzeugen ein 6-Bit-Signal, um die Adressierung jedes der 64 individuellen Register zu ermöglichen. Die Eingänge in jedes der Register 41, 24, 42, 43 weisen ebenfalls die Doppelanschluß-Verschiedenheit auf und akzeptieren sowohl A- als auch B-Dateneingänge. Es ist jedoch zu beachten, daß dann, wenn die vier Sätze von Registern jeweils die Doppelanschluß-Verschiedenheit aufweisen, die Registergruppe 40 Eingänge von drei unterschiedlichen Quellen empfängt und diese Eingänge so weiterleitet, daß nicht mehr als zwei Eingänge an irgendeinen der vier Sätze von Registern geliefert werden.
  • Wie oben angegeben, ist die Quellenliste 24 eine Registergruppe, die Quellenoperanden enthält. Somit zeigen die Einträge in der Quellenzeigerwarteschlange der Ausführungseinheit 13 auf die Quellenliste für Speicher- und Unmittelbar- oder Literaloperanden. Sowohl die Speicherzugriffseinheit 11 als auch die Befehlseinheit 12 schreiben Einträge in die Quellenliste 24, wobei die Ausführungseinheit 13 nach Bedarf Operanden aus der Quellenliste liest, um die Befehle auszuführen.
  • Die Universalregister 41 enthalten 16 Universalregister, wie von der VAX-Architektur definiert wird. Diese Register bieten Speicher für die Quellenoperanden und die Ergebnisse der ausgeführten Befehle. Ferner schreibt die Ausführungseinheit 13 Ergebnisse in die Universalregister 41, während die Befehlseinheit 13 die Universalregister 41 bei Selbstinkrement- und Selbstdekrement-Befehlen aktualisiert.
  • Die temporären Speicherregister 42 enthalten 16 Hochgeschwindigkeitsregister, auf die durch die Ausführungseinheit 13 und die Speicherzugriffseinheit 11 zugegriffen werden kann. Die Speicherzugriffseinheit 11 schreibt die von der Ausführungseinheit 13 angeforderten Daten. Ferner kann die Mikrocode-Ausführungseinheit 26 ebenfalls Schreibvorgänge in die temporären Speicherregister einleiten, falls während der Mikrocode-Ausführung erforderlich.
  • Die temporären Ausführungsregister 43 enthalten 16 Hochgeschwindigkeitsregister, auf die allein von der Ausführungseinheit 13 zugegriffen werden kann. Genauer verwendet die Mikrocode-Ausführungseinheit 13 die temporären Ausführungsregister 43 für eine Zwischenspeicherung.
  • Die Ausführungseinheit 13 ist mit den Universalregistern 46, den temporären Speicherregistern 42 und den temporären Ausführungsregistern 43 über einen 36-Bit-Datenbus verbunden. Die Übertragungsgatter 47, 48 und 49 steuern jeweils die Daten, die vom Ausführungseinheitsdatenbus an die Universalregister 41, die temporären Speicherregister 42 und die temporären Ausführungsregister 43 geliefert werden, über einen 6-Bit-Auswahlbus, der mit den Auswahleingängen der Übertragungsgatter 47, 48 und 49 verbunden ist. In ähnlicher Weise ist die Befehlseinheit 12 mit den B-Eingängen der Universalregister 41 und der Quellenliste 24 über die Übertragungsgatter 50, 51 verbunden. In diesem Fall sind jedoch die Auswahlleitungen der Übertragungsgatter 50, 51 voneinander getrennt und werden unabhängig gesteuert. Der Zweck der unabhängigen Adressierbarkeit besteht darin, die Anzahl von Taktzyklen zu reduzieren, die erforderlich sind, um Selbstinkrementund Selbstdekrement-Bewege-Adressenoperationen aus zuführen, die der Vorverarbeitung der Spezifizierer mit Selbstinkrement- oder Selbstdekrement-Modi zugeordnet sind. Genauer wird für ein Selbstdekrement in einem einzigen Zyklus der Anfangswert eines spezifizierten Universalregisters dekrementiert und der dekrementierte Wert zurück in das Universalregister geladen und ferner in einen ausgewählten Eintrag in der Quellenliste 24 geladen. Für ein Selbstinkrement jedoch wird in einem einzigen Zyklus der Anfangswert eines spezifizierten Universalregisters inkrementiert und in das Universalregister zurückgeladen, wobei jedoch in den ausgewählten Eintrag in der Quellenliste der Anfangswert geladen wird. Somit erlaubt die unabhängige Adressierbarkeit, daß sowohl die Selbstinkrement- als auch die Selbstdekrementoperation in einem einzigen Zyklus durchgeführt werden.
  • Die Speicherzugriffseinheit 11 besitzt einen 72-Bit- Datenbus und schreibt somit vorzugsweise in zwei 36-Bit- Register. Daher ist der Bus in einen niedrigerwertigen 36-Bit-Abschnitt und einen höherwertigen 36-Bit-Abschnitt unterteilt, um zu ermöglichen, daß die Daten in aufeinanderfolgenden Registeradressen gespeichert werden. Die niedrigerwertigen 36 Bits werden entweder über das Übertragungsgatter 52 zur Quellenliste 24 oder über das Übertragungsgatter 53 zum temporären Speicherregister 42 geliefert. In der obenerwähnten bevorzugten Implementierung, die zwei gleiche integrierte Schaltungen verwendet, werden die höherwertigen 18 Bits jedes 32-Bit-Abschnitts in einer der integrierten Schaltungen gespeichert, während die entsprechenden niedrigerwertigen 18 Bits des 32- Bit-Abschnitts in der anderen integrierten Schaltung gespeichert werden.
  • Die Speicherzugriffseinheit 11 liefert ferner einen 7- Bit-Auswahlbus an die Übertragungsgatter 68, 70. Das zusätzliche Bit wird verwendet, um der Speicherzugriffseinheit 12 zu ermöglichen, die höherwertigen 36 Bits zu schreiben, die an das nächste sequentielle Register entweder über das Übertragungsgatter 68 zur Quellenliste 48 oder über das Übertragungsgatter 70 zum temporären Speicherregister 50 geliefert werden. Somit werden die höherwertigen 36 Bits entweder in der Quellenliste 48 oder im temporären Speicherregister 50 an einer Stelle gespeichert, die um 1 größer ist als die im gleichen Register gespeicherten niedrigerwertigen 36 Bits. Wenn somit die Ausführungseinheit 16 die in der Quellenliste und den temporären Speicherregistern 48, 50 gespeicherten Daten wiedergewinnt, gewinnt sie zuerst die in den niedrigerwertigen 36 Bits gespeicherten Daten, inkrementiert ihren internen Zeiger und gewinnt anschließend die höherwertigen 36 Bits, ohne erneut eine zweite Adresse zu berechnen.
  • In Fig. 5 ist der Datenpfad durch die Befehlseinheit genauer gezeigt. Der Befehlsdecodierer 20 besitzt die Fähigkeit, gleichzeitig zwei Quellenspezifizierer und einen Zielspezifizierer zu decodieren. Während eines Taktzyklus kann einer der Quellenspezifizierer ein Kurzliteralspezifizierer sein. In diesem Fall wird das decodierte Kurzliteral über einen EX-Bus zu einer Erweiterungseinheit übertragen, die das Kurzliteral auf eines oder mehrere 32-Bit-Langwörter erweitert, die ausreichen, um dieses Kurzliteral darzustellen oder in den für diesen Spezifizierer für den derzeit decodierten Befehl spezifizierten Datentyp umzusetzen.
  • Der Befehlsdecodierer besitzt die Fähigkeit, während jedes Taktzyklus einen "komplexen" Quellen- oder Zielspezifizierer zu decodieren. Mit komplex ist gemeint, daß der Spezifizierer weder ein Registerspezifizierer noch ein Kurzliteralspezifizierer ist. Ein komplexer Spezifizierer kann z. B. eine Basisregisternummer, eine Indexregisternummer und eine Verschiebung enthalten und kann verschiedene Modi wie z. B. unmittelbar, absolut, abgeleitet und die Selbstinkrement- und Selbstdekrement-Modi aufweisen. Die Auswertung komplexer Spezifizierer für einige dieser Modi erfordert eine Adreßberechnung und Speicherleseoperationen, die von einer GP-Einheit oder einer Adreßberechnungseinheit 62 ausgeführt werden.
  • Für die Berechnung einer Verzweigungsverschiebung oder unmittelbarer Daten (d. h. ein im Befehlsstrom gefundenes Langliteral) ist es nicht erforderlich, daß die GP-Einheit eine Speicherleseoperation einleitet. Im Fall einer Verzweigungsverschiebung sendet die GP-Einheit die Verschiebung direkt zur Verzweigungsvorhersageeinheit (28 in Fig. 1). Für unmittelbare Daten sendet die GP-Einheit die Daten zur Quellenliste 24. Da die Quellenliste einen einzigen Anschluß besitzt, der für die Operandenverarbeitungseinheit 21 verfügbar ist, ist in der Operandenverarbeitungseinheit ein Multiplexer 63 enthalten, um 32-Bit- Wörter an Daten entweder aus der GP-Einheit 62 oder der EXP-Einheit 61 auszuwählen. Einer gültigen Erweiterung eines Kurzliterals wird Vorrang gegeben.
  • Normalerweise werden Registerspezifizierer nicht von der Befehlseinheit bewertet, statt dessen werden Registerzeiger (d. h. Universalregisternummern) an die Ausführungseinheit weitergeleitet. Dies vermeidet Halte in den Fällen, in denen ein im voraus decodierter, jedoch noch nicht ausgeführter Befehl, den Wert des Registers verändem kann. In einem ungewöhnlichen Fall von "Intrabefehls-Registerlesekonflikt" erhält jedoch die GP- Einheit die Inhalte eines durch einen Registeroperanden spezifizierten Registers und plaziert die Inhalte in der Quellenliste. Dies tritt dann auf, wenn der Befehlsdecodierer 20 den Konflikt detektiert und ein Antwortsignal zu einem Mikrosequenzer 63 sendet, der im voraus so programmiert ist, daß er die normale Operation der GP- Einheit übersteuert, um den Konflikt zu behandeln. Der Mikrosequenzer ist ferner so programmiert, daß er die Befehlseinheitskopie der Universalregister mit den Universalregistern in der Ausführungseinheit in Übereinstimmung hält. Diese Aspekte der Operandenverarbeitungseinheit sind in der obenerwähnten US-Patentanmeldung mit dem Titel "Decoding Multiple Specifiers in a Variable Length Instruction Architecture" beschrieben.
  • In Fig. 6 ist das Format für den GP-Bus genauer gezeigt. Der GP-Bus sendet ein einzelnes Bit "Daten-Gültig-Merker" (VDF), um der Universaleinheit 62 anzuzeigen, ob während des vorangehenden Zyklus des Systemtaktes ein komplexer Spezifizierer decodiert worden ist. Ein Einzelbit "Indexregistermerker" (IRF) wird ebenfalls übertragen, um anzuzeigen, ob der komplexe Spezifizierer auf ein Indexregister Bezug nimmt. Ein beliebiges in Bezug genommenes Indexregister wird durch eine 4-Bit-Indexregisternummer bezeichnet, die über den GP-Bus übertragen wird. Der GP- Bus befördert ferner 4-Bits, die den Spezifizierermodus des komplexen Spezifizierers anzeigen, 4-Bits, die die Basisregisternummer anzeigen, sowie 32-Bits, die eine beliebige Verschiebung enthalten, die vom komplexen Spezifizierer spezifiziert wird.
  • Der GP-Bus überträgt ferner eine 3-Bit-Spezifizierernummer, die die Position des komplexen Spezifizierers in der Sequenz der Spezifizierer für den aktuellen Befehl angibt. Die Spezifizierernummer ermöglicht der Universaleinheit 62, den Zugriffs- und Datentyp für den spezifizierten Operanden aus einer Decodierung des Opcode- Bytes auszuwählen. Die Universaleinheit 62 kann daher in gewisser Weise unabhängig von der Erweiterungseinheit 61 und der Übertragungseinheit 64 der Fig. 5 operieren. Genauer schafft die Universaleinheit 62 ein unabhängiges Haltesignal (OPU_STALL), das anzeigt, ob die Universaleinheit 62 mehr als einen Zyklus benötigt, um den Operanden zu ermitteln.
  • In Fig. 7 ist das Format für den Erweiterungsbus (EX) gezeigt. Der Erweiterungsbus befördert einen Einzelbit- Gültigkeitsdatenmerker, die 6 Bit der Kurzliteraldaten sowie eine 3-Bit-Spezifizierernummer. Die Spezifizierernummer zeigt die Position des Kurzliteralspezifizierers in der Sequenz der Spezifizierer an, die dem momentanen Befehl folgen, und wird von der Erweiterungseinheit 31 verwendet, um den relevanten Datentyp aus einer Decodierung des Opcode-Bytes auszuwählen. Daher kann die Erweiterungseinheit 61 ebenfalls eher unabhängig operieren und erzeugt ein entsprechendes Haltsignal (SL_STALL), das anzeigt, ob die Erweiterungseinheit mehr als einen Zyklus benötigt, um einen Kurzliteralspezifizierer zu verarbeiten.
  • In Fig. 8 ist das Format für den Übertragungsbus (TR) gezeigt. Der TR-Bus enthält einen ersten Quellenbus 65, einen zweiten Quellenbus 66, sowie einen Zielbus 67, die jeweils einen entsprechenden Gültigkeitsdatenmerker (VDF), einen Registermerker (RGF) sowie eine Registernummer befördern. Der Registermerker wird gesetzt, wenn ein entsprechender Registerspezifizierer decodiert worden ist. Ferner wird immer dann, wenn ein komplexer Spezifizierer oder ein Kurzliteralspezifizierer decodiert werden, das entsprechende der Gültigkeitsdatenmerker auf dem ersten Quellenbus, dem zweiten Quellenbus oder dem Zielbus gesetzt, wobei der zugehörige Registermerker gelöscht wird, um auf dem Datenpfad zur Quellenlistenzeigerschlange oder zur Zielwarteschlange für den Quellen- oder Zieloperanden Platz zu reservieren.
  • Ein Eintrag in der Quellenzeigerwarteschlange besitzt vorzugsweise ein Format, das der Kombination des Quelle-1-Busses 65 und des Quelle-2-Busses 66 entspricht oder dieser ähnlich ist. Immer wenn ein gültiger Quelle-1-Spezifizierer kein Registerspezifizierer ist und angenommen wird, daß die Warteschlangen 23 oder die Quellenliste 24 nicht überläuft, wird der nächste freie Quellenlistenzeiger anstelle der ungültigen Quelle-1- Registernummer in die Quellenzeigerwarteschlange eingesetzt. In ähnlicher Weise wird immer dann, wenn ein gültiger Quelle-2-Spezifizierer kein Registerspezifizierer ist, der nächste folgende freie Quellenlistenzeiger (d. h. den Quellenlisteneinträgen folgend, die für einen Quelle-1-Nicht-Registerspezifizierer reserviert sind, für den Fall, daß die Quelle 1 kein Registerspezifizierer ist) in die Quellenzeigerwarteschlange anstatt der ungültigen Quelle-2-Registernummer eingesetzt, für den Fall, daß die Warteschlangen 23 oder die Quellenliste nicht überläuft. Genauer, wenn zwei Nicht-Register-Spezifizierer vorliegen, wird ein Quellenlistenzeiger auf den ersten Spezifizierer nicht in der Quellenzeigerwarteschlange 23c plaziert, solange nicht ein Quellenlistenzeiger auf den zweiten Spezifizierer ebenfalls gleichzeitig im selben Eintrag der Quellenzeigerwarteschlange plaziert werden kann, ohne einen Überlauf der Quellenliste zu verursachen. Dies vereinfacht die Warteschlangenkonstruktion insofern, als nur ein einzelner Schreibfreigabeimpuls für das Einfügen eines Eintrages in die Schreibwarteschlange erforderlich ist, wobei es noch wichtiger ist, daß eine 1-zu-l-Entsprechung zwischen jedem Eintrag der Quellenzeigerwarteschlange und einem Zyklus des Befehlsdecodierers, in dem wenigstens ein gültiger Spezifizierer decodiert wird, vorliegt, so daß die Reihenfolge der Decodierung der Spezifizierer und deren Reihenfolge innerhalb des decodierten Befehls später leicht von der Befehlseinheit ermittelt werden können; genauer kann die Ausführungseinheit immer annehmen, daß ein gültiger und vorangehender Quelle-1-Spezifizierer vorliegt, für den Fall, daß ein gültiger Quelle-2- Spezifizierer vorhanden ist, was durch den Quelle-2- Daten-Gültig-Merker (VDF) in der Warteschlange angezeigt wird. Zum Erzeugen der nächsten freien Quellenlistenzeiger entsprechend diesen Betrachtungen ist eine Freizeigerlogik 68 in der Operandenverarbeitungseinheit 21 (siehe Fig. 5) zusammen mit einem Satz von Multiplexern 69 vorgesehen, die die Freizeiger in die entsprechenden ungültigen Registernummern einsetzen, was durch das Vorhandensein der gültigen Nicht-Register-Spezifizierer und bei Abwesenheit von Überlaufbedingungen erforderlich ist.
  • Der einzige Zielzeiger, der für Nicht-Register-Zielspezifizierer (d. h. komplexe Spezifizierer, da ein Literalspezifizierer nicht als gültiges Ziel decodiert wird) verwendet wird, ist vorzugsweise der Daten-Gültig-Merker. Mit anderen Worten, zum Zeigen auf die Zieladressen der Speicherschreibspezifizierer wird ein anderer Mechanismus verwendet. Der bevorzugte Mechanismus ist eine "Schreibwarteschlange" 70 (siehe Fig. 1) in der Speicherzugriffseinheit, um die physikalischen Adressen der Speicherschreibspezifizierer in eine Warteschlange zu stellen. Wenn somit die GP-Einheit die Adresse eines Zielortes berechnet, sendet die GP-Einheit diese zur Speicherzugriffseinheit zusammen mit einem Code, der diese als Zieladresse identifiziert, die in der Schreibwarteschlange zu speichern ist, bis das entsprechende Ergebnis von der Entnahmeeinheit 27 der Ausführungseinheit 13 entnommen und zum Speicher übertragen wird. Da die Entnahmeeinheit Ergebnisse in derselben Reihenfolge entnimmt, in der sie decodiert werden, wird die entsprechende Adresse für jedes Ergebnis von der Spitze der Schreibwarteschlange entfernt, wenn das Ergebnis entnommen und zur Speicherzugriffseinheit weitergeleitet worden ist. Weitere Aspekte der Schreibwarteschlange 70 sind offenbart im obenerwähnten US-Patent Nr. 5.125.083, eingereicht am 3. Februar 1989, mit dem Titel "Method and Apparatus For Resolving A Variable Number Of Potential Memory Access Conflicts In A Pipelined Computer System".

Claims (5)

1. Verfahren zum Verarbeiten mehrerer Befehle, die Operationscode- und Operandenspezifizierer enthalten, in einem digitalen Computer, der in Daten- und Steuerwegen zwischen einer Befehlseinheit (12) und einer Ausführungseinheit (13) einen Satz von Warteschlangen enthält, gekennzeichnet durch: Decodieren des Operationscodes in jedem Befehl, um Verzweigungsdaten zu bestimmen, die eine Auswahladresse identifizieren; Speichern der Verzweigungsdaten in einer Verzweigungsdatenwarteschlange (23b); Decodieren der Operationscode- und Operandenspezifizierer in jedem Befehl, um Quellzeiger und Zielzeiger zu bestimmen, die die Orte der entsprechenden Operanden identifizieren; Speichern der Quellzeiger in einer Quellzeigerwarteschlange (23c); Speichern der Zielzeiger in einer Zielzeigerwarteschlange (23e); Holen der Quelloperanden von den durch die Quellzeiger identifizierten Orten; und Speichern der geholten Quelloperanden in einer Quelloperandenwarteschlange.
2. Verfahren nach Anspruch 1, bei dem bestimmte der durch die Quellzeiger und die Zielzeiger identifizierten Orte Computerspeicherstellen sind.
3. Verfahren nach Anspruch 1 oder Anspruch 2, enthaltend die Ausführung jedes Befehls mit Quelloperanden von der Quelloperandenwarteschlange, das Holen von Zieloperanden von den Orten, die durch die Zielzeiger identifiziert werden, und Ablegen der Ergebnisse der ausgeführten Befehle an den Zielen, die durch die jeweiligen Zieloperanden identifiziert werden.
4. Verfahren nach irgendeinem der Ansprüche 1 bis 3, bei dem die Verzweigungsdaten eine funktionale Einheit identifizieren, die für die Ausführung jedes Befehls zu verwenden ist.
5. Verfahren nach irgendeinem der vorangehenden Ansprüche für die Verwendung in einem digitalen Computer, der eine Pipeline-Programmbefehlzähleinheit (17) enthält, wobei das Verfahren die Speicherung der Programmbefehlszählstände in einer Programmbefehlzählwarteschlange (23a) enthält.
DE68928513T 1989-02-03 1989-09-25 Verfahren zur Vorverarbeitung mehrerer Befehle Expired - Fee Related DE68928513T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/306,843 US5109495A (en) 1989-02-03 1989-02-03 Method and apparatus using a source operand list and a source operand pointer queue between the execution unit and the instruction decoding and operand processing units of a pipelined data processor

Publications (2)

Publication Number Publication Date
DE68928513D1 DE68928513D1 (de) 1998-02-05
DE68928513T2 true DE68928513T2 (de) 1998-06-10

Family

ID=23187116

Family Applications (1)

Application Number Title Priority Date Filing Date
DE68928513T Expired - Fee Related DE68928513T2 (de) 1989-02-03 1989-09-25 Verfahren zur Vorverarbeitung mehrerer Befehle

Country Status (5)

Country Link
US (1) US5109495A (de)
EP (1) EP0380859B1 (de)
JP (1) JPH02234229A (de)
AT (1) ATE161640T1 (de)
DE (1) DE68928513T2 (de)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5293592A (en) * 1989-04-07 1994-03-08 Intel Corporatino Decoder for pipelined system having portion indicating type of address generation and other portion controlling address generation within pipeline
JP2505887B2 (ja) * 1989-07-14 1996-06-12 富士通株式会社 命令処理システム
US5233702A (en) * 1989-08-07 1993-08-03 International Business Machines Corporation Cache miss facility with stored sequences for data fetching
DE69031705T2 (de) * 1989-11-29 1998-04-02 Toshiba Kawasaki Kk Zum Anschluss einer Erweiterungseinheit geeignetes Rechnersystem
EP0443876A3 (en) * 1990-02-23 1992-01-02 Kabushiki Kaisha Toshiba Computer system capable of connecting expansion unit
DE69130138T2 (de) * 1990-06-29 1999-05-06 Digital Equipment Corp Sprungvorhersageeinheit für hochleistungsfähigen Prozessor
US5432918A (en) * 1990-06-29 1995-07-11 Digital Equipment Corporation Method and apparatus for ordering read and write operations using conflict bits in a write queue
CA2045756C (en) * 1990-06-29 1996-08-20 Gregg Bouchard Combined queue for invalidates and return data in multiprocessor system
US5450555A (en) * 1990-06-29 1995-09-12 Digital Equipment Corporation Register logging in pipelined computer using register log queue of register content changes and base queue of register log queue pointers for respective instructions
US5471591A (en) * 1990-06-29 1995-11-28 Digital Equipment Corporation Combined write-operand queue and read-after-write dependency scoreboard
US5305446A (en) 1990-09-28 1994-04-19 Texas Instruments Incorporated Processing devices with improved addressing capabilities, systems and methods
US5515523A (en) * 1991-06-03 1996-05-07 Digital Equipment Corporation Method and apparatus for arbitrating conflicts by monitoring number of access requests per unit of time in multiport memory systems
US5826055A (en) * 1991-07-08 1998-10-20 Seiko Epson Corporation System and method for retiring instructions in a superscalar microprocessor
US5493687A (en) * 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5490255A (en) * 1991-12-26 1996-02-06 Amdahl Corporation Expedited execution of pipelined command having self-ordering operand processing requirements
JP3730252B2 (ja) 1992-03-31 2005-12-21 トランスメタ コーポレイション レジスタ名称変更方法及び名称変更システム
JP3637920B2 (ja) * 1992-05-01 2005-04-13 セイコーエプソン株式会社 スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法
US6240508B1 (en) * 1992-07-06 2001-05-29 Compaq Computer Corporation Decode and execution synchronized pipeline processing using decode generated memory read queue with stop entry to allow execution generated memory read
US5542058A (en) * 1992-07-06 1996-07-30 Digital Equipment Corporation Pipelined computer with operand context queue to simplify context-dependent execution flow
JP3372970B2 (ja) * 1992-09-02 2003-02-04 シャープ株式会社 自己同期型転送制御回路
US5628021A (en) * 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
DE69320991T2 (de) 1992-12-31 1999-01-28 Seiko Epson Corp System und verfahren zur änderung der namen von registern
US5604912A (en) * 1992-12-31 1997-02-18 Seiko Epson Corporation System and method for assigning tags to instructions to control instruction execution
US5511174A (en) * 1993-03-31 1996-04-23 Vlsi Technology, Inc. Method for controlling the operation of a computer implemented apparatus to selectively execute instructions of different bit lengths
JP3452655B2 (ja) * 1993-09-27 2003-09-29 株式会社日立製作所 ディジタル信号処理プロセッサおよびそれを用いて命令を実行する方法
US5615402A (en) * 1993-10-18 1997-03-25 Cyrix Corporation Unified write buffer having information identifying whether the address belongs to a first write operand or a second write operand having an extra wide latch
US5500943A (en) * 1993-11-02 1996-03-19 Motorola, Inc. Data processor with rename buffer and FIFO buffer for in-order instruction completion
US5805913A (en) * 1993-11-30 1998-09-08 Texas Instruments Incorporated Arithmetic logic unit with conditional register source selection
US5625808A (en) * 1995-03-31 1997-04-29 International Business Machines Corporation Read only store as part of cache store for storing frequently used millicode instructions
US5867681A (en) * 1996-05-23 1999-02-02 Lsi Logic Corporation Microprocessor having register dependent immediate decompression
US5896519A (en) * 1996-06-10 1999-04-20 Lsi Logic Corporation Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions
US5794010A (en) * 1996-06-10 1998-08-11 Lsi Logic Corporation Method and apparatus for allowing execution of both compressed instructions and decompressed instructions in a microprocessor
US6041403A (en) * 1996-09-27 2000-03-21 Intel Corporation Method and apparatus for generating a microinstruction responsive to the specification of an operand, in addition to a microinstruction based on the opcode, of a macroinstruction
US5887160A (en) * 1996-12-10 1999-03-23 Fujitsu Limited Method and apparatus for communicating integer and floating point data over a shared data path in a single instruction pipeline processor
US5870576A (en) * 1996-12-16 1999-02-09 Hewlett-Packard Company Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures
US6112270A (en) * 1997-10-31 2000-08-29 International Business Machines Corporation Method and system for high speed transferring of strictly ordered bus operations by reissuing bus operations in a multiprocessor system
US6145038A (en) * 1997-10-31 2000-11-07 International Business Machines Corporation Method and system for early slave forwarding of strictly ordered bus operations
US6405303B1 (en) * 1999-08-31 2002-06-11 Advanced Micro Devices, Inc. Massively parallel decoding and execution of variable-length instructions
US7376814B1 (en) 1999-09-07 2008-05-20 Nxp B.V. Method for forming variable length instructions in a processing system
US6539470B1 (en) * 1999-11-16 2003-03-25 Advanced Micro Devices, Inc. Instruction decode unit producing instruction operand information in the order in which the operands are identified, and systems including same
US6633969B1 (en) 2000-08-11 2003-10-14 Lsi Logic Corporation Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions
US7055020B2 (en) * 2001-06-13 2006-05-30 Sun Microsystems, Inc. Flushable free register list having selected pointers moving in unison
US6826681B2 (en) * 2001-06-18 2004-11-30 Mips Technologies, Inc. Instruction specified register value saving in allocated caller stack or not yet allocated callee stack
JP3940707B2 (ja) * 2003-06-23 2007-07-04 桂子 溝尾 文章分析装置、及び文章分析プログラム
US9317286B2 (en) * 2009-03-31 2016-04-19 Oracle America, Inc. Apparatus and method for implementing instruction support for the camellia cipher algorithm
US20100246815A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the kasumi cipher algorithm
US8832464B2 (en) * 2009-03-31 2014-09-09 Oracle America, Inc. Processor and method for implementing instruction support for hash algorithms
US20100250965A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm
US9082078B2 (en) 2012-07-27 2015-07-14 The Intellisis Corporation Neural processing engine and architecture using the same
CN112395004A (zh) * 2019-08-14 2021-02-23 上海寒武纪信息科技有限公司 运算方法、系统及相关产品

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1443777A (en) * 1973-07-19 1976-07-28 Int Computers Ltd Data processing apparatus
US4395758A (en) * 1979-12-10 1983-07-26 Digital Equipment Corporation Accelerator processor for a data processing system
US4392200A (en) * 1980-01-28 1983-07-05 Digital Equipment Corporation Cached multiprocessor system with pipeline timing
CA1174370A (en) * 1980-05-19 1984-09-11 Hidekazu Matsumoto Data processing unit with pipelined operands
US4509116A (en) * 1982-04-21 1985-04-02 Digital Equipment Corporation Special instruction processing unit for data processing system
US4521851A (en) * 1982-10-13 1985-06-04 Honeywell Information Systems Inc. Central processor
US4543626A (en) * 1982-12-06 1985-09-24 Digital Equipment Corporation Apparatus and method for controlling digital data processing system employing multiple processors
WO1985000453A1 (en) * 1983-07-11 1985-01-31 Prime Computer, Inc. Data processing system
EP0208181A1 (de) * 1985-06-28 1987-01-14 Hewlett-Packard Company Befehlszählerwarteschlange für einen Pipeline-Prozessor
US4890218A (en) * 1986-07-02 1989-12-26 Raytheon Company Variable length instruction decoding apparatus having cross coupled first and second microengines
JP2695157B2 (ja) * 1986-12-29 1997-12-24 松下電器産業株式会社 可変パイプラインプロセッサ
US4926323A (en) * 1988-03-03 1990-05-15 Advanced Micro Devices, Inc. Streamlined instruction processor

Also Published As

Publication number Publication date
US5109495A (en) 1992-04-28
DE68928513D1 (de) 1998-02-05
JPH0567970B2 (de) 1993-09-28
JPH02234229A (ja) 1990-09-17
EP0380859B1 (de) 1997-12-29
EP0380859A2 (de) 1990-08-08
EP0380859A3 (de) 1992-09-16
ATE161640T1 (de) 1998-01-15

Similar Documents

Publication Publication Date Title
DE68928513T2 (de) Verfahren zur Vorverarbeitung mehrerer Befehle
DE69032276T2 (de) Verfahren und Anordnung zur Verbesserung der Datenspeicherungsgeschwindigkeit eines Computersystems
DE3851746T2 (de) Sprungvorhersage.
DE69024068T2 (de) Verfahren und Datenverarbeitungseinheit zur Pipeline- Verarbeitung von Register- und Registeränderungs- Spezifizierern in dem gleichen Befehl
DE69932066T2 (de) Mechanismus zur "store-to-load forwarding"
DE68927855T2 (de) Verfahren und Datenverarbeitungseinheit zur Vorverarbeitung von implizierten Spezifizierern in einem Pipeline-Prozessor
DE69127242T2 (de) Sicherung der Datenintegrität in einem Multipipelineprozessorsystem
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE3486399T2 (de) Zentrale Verarbeitungseinheit mit der Fähigkeit, Befehle mit variablen Längen zu unterstützen.
DE69031991T2 (de) Verfahren und Gerät zur Beschleunigung von Verzweigungsbefehlen
DE69031139T2 (de) Verfahren und Vorrichtung zum Ordnen und in Warteschlangesetzen mehrerer Speicherzugriffsanforderungen
DE69031183T2 (de) Verfahren und Anordnung zur Kontrolle der Umwandlung virtueller Adressen in physikalische Adressen in einem Computersystem
DE69433621T2 (de) Geraet zur verarbeitung von befehlen in einem rechnersystem
DE68927415T2 (de) Kontextumschaltungsverfahren und -anordnung zur Verwendung in einem Vektorverarbeitungssystem
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE69727773T2 (de) Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor
DE69631778T2 (de) Flexible implementierung eines systemverwaltungsmodus in einem prozessor
DE60308201T2 (de) Datenverarbeitungssystem mit externen und internen anweisungssätzen
DE69017178T2 (de) Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung.
DE3884101T2 (de) Abholung von Operanden in Unordnung.
DE69434669T2 (de) Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge
DE68927492T2 (de) Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten
DE3685913T2 (de) Vektorenverarbeitung.
DE3588182T2 (de) Vorausschauende Speicherabrufmethode und System für Verzweigung mit Ausführungsbefehlen
DE60036960T2 (de) Unterscheidung von feinkorntranslation

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee