DE68924380T2 - Vernichtung von Pipelineblasen in einem Rechnersystem. - Google Patents

Vernichtung von Pipelineblasen in einem Rechnersystem.

Info

Publication number
DE68924380T2
DE68924380T2 DE68924380T DE68924380T DE68924380T2 DE 68924380 T2 DE68924380 T2 DE 68924380T2 DE 68924380 T DE68924380 T DE 68924380T DE 68924380 T DE68924380 T DE 68924380T DE 68924380 T2 DE68924380 T2 DE 68924380T2
Authority
DE
Germany
Prior art keywords
bus
data
stage
address
instruction
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
DE68924380T
Other languages
English (en)
Other versions
DE68924380D1 (de
Inventor
George M Uhler
William R Wheeler
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 DE68924380D1 publication Critical patent/DE68924380D1/de
Application granted granted Critical
Publication of DE68924380T2 publication Critical patent/DE68924380T2/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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3873Variable length pipelines, e.g. elastic pipeline
    • 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/3802Instruction 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/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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)
  • Pipeline Systems (AREA)

Description

  • Diese Erfindung bezieht sich auf einen digitalen Computer und insbesondere auf eine Pipeline-CPU für einen digitalen Prozessor.
  • Ein Universalrechner verarbeitet Daten durch die Ausführung eines oder mehrerer vorher festgelegter Befehle in einer bestimmten Reihenfolge. Ein Beispiel einer Rechenmaschine ist ein Taschenrechner. In diesem Gerät beinhalten die vorher festgelegten Befehle (der Befehlssatz) eventuell nur die arithmetischen Operationen Addition, Subtraktion, Multiplikation und Division. Die Daten und die nötige Folge von Befehlen werden durch den Benutzer nacheinander eingegeben, und es findet eine arithmetische Berechnung statt.
  • Der Satz aufeinanderfolgender Befehle, die ein Computer ausführt, um ein gewünschtes Ergebnis zu erzielen, wird Programm genannt. In Universarechnern mit großen Befehlssätzen können die Programme sehr umfangreich sein. Da Computer die Befehle viel schneller ausführen, als Benutzer sie eingeben können, ist es wünschenswert, die Programme in elektronischen Speichern zu speichern, so daß der Computer die Befehle automatisch lesen und dadurch mit höchster Geschwindigkeit laufen kann.
  • Die meisten modernen Speicherprogramm-Datenverarbeitungssysteme basieren auf dem Von-Neumann-Modell. Das Von-Neumann-Computerkonzept basiert auf drei Schlüsselkonzepten:
  • - Daten und Befehle werden in einem einzigen Lese-Schreib-Speicher gespeichert.
  • - Der Inhalt dieses Speichers ist durch die Speicherstelle adressierbar, ohne Rücksicht auf die Art der Daten, die an dieser Speicherstelle enthalten sind.
  • - Die Ausführung erfolgt (wenn nicht ausdrücklich modifiziert) in sequentieller Weise von Befehl zu Befehl.
  • Die primären Schaltkreise des Von-Neumann-Computers können allgemein in zwei Gruppen eingeteilt werden: einen Speicher und eine Zentraleinheit (CPU). Der Speicher enthält die Daten und die Befehle für das Computersystem. Die CPU kann als das Gehirn des Systems betrachtet werden. Sie enthält elektronische Logik, die die gespeicherten Befehle sequentiell abholt und ausführt.
  • In den meisten digitalen Computern werden die Daten in Form von binären Zahlen dargestellt. Jede Stelle im Speicher kann eine binäre Zahl speichern (deren maximale Größe hängt von dem Typ des Computersystems ab). Das Programm oder der Satz der aufeinanderfolgenden Befehle, welche die CPU ausführt, wird in einem bestimmten Bereich des Speichers gespeichert. Ein Befehl kann mehr als eine Stelle im Speicher einnehmen. Der erste Teil von jedem Befehl wird Op-Code (Operationscode) genannt. Der Op-Code ist eine einmal vorkommende binäre Zahl, die der CPU meldet, um welchen Befehl es sich handelt. Die meisten Befehle haben weitere Teile, die Operanden (zu verarbeitende Daten) oder Operandenspezifizierer enthalten können. Operandenspezifizierer informieren die CPU, wo die Operanden zu finden sind, die der Befehl benötigt. Diese Operanden können sich irgendwo im Speicher oder an bestimmten Pufferspeicherstellen innerhalb der CPU befinden.
  • Im allgemeinen führt die CPU die folgenden Operationen durch, um einen Befehl auszuführen:
  • 1. Einen Befehl aus dem Speicher holen.
  • 2. Den abgeholten Befehl decodieren, um den Befehl zu interpretieren.
  • 3. Alle Operanden (Daten, mit welchen der Befehl arbeitet) aus dem Speicher holen, die von dem Befehl benötigt werden.
  • 4. Die von dem Befehl definierte Operation durchführen.
  • 5. Die Ergebnisse der Operation in dem Speicher für künftige Bezugnahme speichern.
  • Verschiedene Hardwaregruppen (Funktionseinheiten genannt) innerhalb der CPU führen diese Operationen aus. Die Funktionseinheiten einer CPU enthalten gewöhnlich verschiedene Register (Speicherelemente) und eine Arithmetik- und Logikeinheit (ALU). Die Register speichern Zwischenergebnisse und Befehls-Operanden (Daten, mit welchen ein Befehl arbeitet). Die ALU verwendet eine kombinierende Logik, um die an ihren Eingängen anliegenden Daten zu verarbeiten. Die Ausgangs-Signale der ALU hängen von den ihr zugeführten Steuersignalen ab und werden aus den Eingangssignalen durch Ausführung einer arithmetischen Operation oder einer logischen (Verschiebe- oder Booleschen) Operation erhalten. Die Verarbeitung in der CPU wird durch Kanalisierung der Daten von Operandenregistern durch die ALU hindurch in die Ergebnisregister ausgeführt. Für komplexe Befehle können die Daten viele Male durch die ALU geleitet werden.
  • Daten werden zwischen den Grundelementen der CPU über gemeinsame Busse (Satz von Leitungen, die miteinander in Beziehung stehende Signale befördern) übertragen. Die Datenübertragungen sind von dem Typ des Befehls abhängig, der gerade ausgeführt wird, und sie werden von einem zentralen Controller initiiert. Der CPU-Controller sendet eine Folge von Steuersignalen an die verschiedenen Register der CPU, wobei er die Register darüber informiert, wann Daten auf den gemeinsamen Lesebus (der zu den Eingängen der ALU führt) übertragen werden müssen und wann Daten von dem gemeinsamen Schreibbus (der aus der ALU herauskommt) abgeholt werden müssen. Der CPU-Controller informiert die ALU auch darüber, welche Operation an den Daten von der Eingabe bis zur Ausgabe auszuführen ist. Auf diese Weise kann der Controller der CPU eine Folge von Datenübertragungen einleiten, die damit beginnen, den Befehl vom Hauptspeicher abzuholen, entsprechende Daten abzuholen, die Daten zwischen der ALU und den verschiedenen Pufferspeicher-Registern zu übermitteln und schließlich die verarbeiteten Daten in den Hauptspeicher zurückzuschreiben.
  • Die verschiedenen Implementierungen eines Controllers fallen unter zwei Hauptkategorien: festverdrahtete und mikroprogrammierte. Festverdrahtete Controller verwenden eine kombinierte Logik und einige Statusregister, um eine Folge von Steuersignalen zu erzeugen. Diese Steuersignale hängen von der Art des soeben abgeholten Befehls und dem Ergebnis der Ausführung des vorherigen Befehls ab. Der mikroprogrammierte Controller führt die gleiche Funktion aus, aber er benutzt eine ROM- oder RAM-gesteuerte Statuseinrichtung (Zustandsautomat), um aus den vorherigen Status- und Befehlseingangssignalen die Steuersignale zu erzeugen.
  • Festverdrahtete Controller sind auf einen bestimmten Befehlssatz zugeschnitten, und die zu ihrer Implementierung verwendete Logik wird zunehmend komplexer, wenn die Komplexität des Befehlssatzes zunimmt. Mikroprogrammierte Controller sind eher universelle Einrichtungen dahingehend, daß Anderungen im Inhalt des Steuerspeichers benutzt werden können, um den Mikrobefehlsfluß zu ändern, ohne die festverdrahtete Logik zu ändern. Während die festverdrahteten Controller schnell sind, weisen mikroprogrammierte Controller mehr Flexibilität auf und können leicht implementiert werden.
  • Bei der einfachsten Implementierung eines mikroprogrammierten Controllers entspricht jeder CPU-Befehl einem Mikrofluß, der in dem Steuerspeicher gespeichert ist. Im vorliegenden Fall bezieht sich ein Mikrofluß auf ein mikroprogrammiertes Unterprogramm. Jedes Bit oder decodierte Feld eines Mikrobefehls entspricht dem Pegel eines Steuersignals. Der Reihe nach durch eine Serie solcher Mikrobefehle zu gehen erzeugt so eine Folge von Steuersignalen. In einem mikroprogrammierten Controller löst jeder CPU-Befehl zumindest einen Mikrofluß aus (der für kleine Ein- Zyklus-CPU-Befehle gerade einen Mikrobefehl lang sein kann), um Steuersignale zu erzeugen, welche die ALU-Operationen und Datenübertragungen auf den internen CPU-Bussen steuern.
  • Computer werden auf der Basis der Befehlssätze, die ihre CPUS unterstützen, oft in Computer mit komplexem Befehlssatz (CISCs) und Computer mit reduziertem Befehlssatz (RISCs) klassifiziert. CISCs haben gewöhnlich einen großen Befehlssatz mit einer großen Vielfalt an Befehlen, während RISCs typischerweise einen relativ kleinen Satz einfacher Befehle aufweisen. Da RISC-CPUs nur wenige einfache Befehle aufweisen, können sie es sich leisten, die schnellen, festverdrahteten Controller zu verwenden. CISC-CPUs verwenden aufgrund der einfachen Implementierung gewöhnlich mikroprogrammierte Controller. Manche CPUs können eine Mehrzahl von Controllern verwenden, d. h. festverdrahtete und mikroprogrammierte, um verschiedene Unterabteilungen der CPU zu steuern.
  • Da eine Computeroperation von der Beendigung einer vorherigen Computeroperation abhängen kann, bearbeiten die Funktionseinheiten die Befehle sequentiell. Somit wird in einem einfachen Computerkonzept jede Funktionseinheit nur für einen Bruchteil der Dauer der Befehlsausführung benutzt.
  • Das iterative Abhol- und Ausführ-Schema des Von-Neumann-Computers ist auf vielfache Weise modifiziert worden, um schnellere Computer herzustellen. Eine solche Modifikation der Architektur ist eine Technik, die als Pipeline-Verarbeitung (Pipelining) bekannt ist. Die Pipeline-Verarbeitung erhöht die CPU-Leistung durch die überlappende Ausführung mehrerer Befehle in der CPU erheblich. In einer Pipeline- Architektur verarbeiten verschiedene Funktionseinheiten verschiedene Befehle gleichzeitig.
  • Ein Beispiel einer Pipeline-CPU wird von Sudhindra N. Mishra in "The VAX 8800 Microarchitecture" im Digital Technical Journal vom Feb. 1987, S.20-33 beschrieben.
  • Die Pipene-Verarbeitung ist wie ein Fließband, bei dem die Montage vieler Einheiten gleichzeitig stattfindet, aber jede Einheit sich zu jedem Zeitpunkt auf einer unterschiedlichen Stufe des Montageprozesses befindet. Die Pipeline-Verarbeitung ermöglicht die sich überlappende Ausführung mehrerer Befehle, wodurch die effektive Ausführungsgeschwindigkeit (oder der Durchsatz) jedes Befehls gesteigert wird.
  • Da jede Funktionseinheit nur einen Befehl gleichzeitig bearbeiten kann, ist es nötig, daß alle Funktionseinheiten die Befehle, die sie auf synchrone Weise bearbeiten, weiterschieben. Anders als bei der Fließbandanalogie können die Funktionseinheiten in einem Pipeline-Computer jedoch unterschiedlich viel Zeit benötigen, was von dem Befehl abhängt, den sie gerade verarbeiten. Wenn eine der Funktionseinheiten lange braucht, um ihre Funktion an einem bestimmten Befehl auszuführen, müssen alle Funktionseinheiten, die in der Pipeline nachfolgen, warten, bis sie fertig ist, bevor sie ihre jeweiligen Befehle weiterschieben können. Dies führt zu einer Pipeline-Verzögerung. Pipeline-Verzögerungen können auch auftreten, wenn ein bestimmter Befehl die Ergebnisse des vorherigen Befehls benötigt. Der Befehl, der die Ergebnisse benötigt, kann die Pipeline, die an der Operanden-Abholeinheit beginnt, verzögern, weil er darauf wartet, daß der vorherige Befehl die Pipeline durchläuft und die Operanden erzeugt, die der verzögerte Befehl benötigt.
  • Eine Verzögerung läßt Blasen in der Pipeline entstehen. Eine Blase stellt eine Stufe in der Pipeline dar, die aufgrund des Fehlens von Daten von einer vorherigen Pipelinestufe keine nützliche Arbeit ausführen kann. Während eine Blase sich durch die Pipeline fortpflanzt, führt sie dazu, daß die entsprechenden Funktionseinheiten untätig werden. In der Tat ist eine Pipene-Blase eine verlorene Gelegenheit, nützliche Arbeit zu leisten, und sie führt zu einem geringeren Prozessor-Durchsatz. Diese Erfindung handelt von der Implementierung einer CPU-Pipeline, die Blasen vernichtet.
  • Bei bekannten RISC-Systemen verwenden die meisten Befehle die verschiedenen CPU-Funktionseinheiten über einen gleichen Zeitraum. Die Pipene- Verarbeitung in den RISCs kann somit durch Überlappen der Ausführung der CPU- Befehle erreicht werden, wie oben beschrieben wurde. Andererseits können manche CISC-Befehle ziemlich komplex sein und für die Ausführung eine lange Zeit benötigen, während andere CISC-Befehle relativ einfach sein können und viel weniger Zeit für die Ausführung benötigen. Die unterschiedliche Verwendung der Funktionseinheiten durch verschiedene CISC-Befehle würde die CISC-Pipeline oft und für relativ lange Zeit aufhalten. Aus diesem Grund ist die Pipeline-Verarbeitung der CISC-CPU- Befehle schwieriger.
  • Verschiedene CISC-Befehle können unterschiedlich große Mikroflüsse haben. Da jeder Mikrobefehl Steuersignale für einen Zyklus für alle Elemente der verschiedenen Funktionseinheiten bereitstellt, werden in einigen CISC-Computern die Mikrobefehle statt der CPU-Befehle (wie dies bei RISC-Computern üblich ist) in der Pipeline verarbeitet. Dies verkürzt die Verzögerung, weil die Ausführungszeit jedes Mikrobefehls gleich ist. In einer Mikrobefehl-Pipeline verwendet jede Stufe ein paar Bits in dem Mikrobefehl, die der Funktionseinheit dieser Stufe entsprechen. Nachdem jede Funktionseinheit von dem Mikrobefehl, der während eines Zyklus ihre Aktivität steuerte, Gebrauch gemacht hat, leitet sie diesen Mikrobefehl im nächsten Zyklus an die nächste Funktionseinheit in der Pipeline weiter. Die erste Funktionseinheit bekommt einen neuen Mikrobefehl. Auf diese Weise wird das grundlegende Prinzip der Pipeline-Verarbeitung -- überlappende Befehlsausführung, um verschiedene Funktionseinheiten parallel zu verwenden -- realisiert. Sogar eine Mikrobefehls-Pipeline ist nicht vor Blasen gefeit. Die vorliegende Erfindung schafft eine Einrichtung zur Vernichtung von Blasen,und zwar für jede Art von Befehls-Pipeline.
  • Eine Grundregel, die die Steuerung der meisten Pipeline-Prozessoren regelt, besteht darin, daß alle Funktionsstufen der Pipeline ihre Zustände gleichzeitig zur nächsten Funktionsstufe weiterschieben. Dies ist notwendig, weil jede Funktionseinheit ihren verarbeiteten Status an die folgende Einheit überträgt, während sie von der vorhergehenden Einheit einen neuen Status empfängt. Somit pflanzt sich bei bisherigen Konzepten, wenn eine Blase in die Pipeline gelangt, diese Blase über jede nachfolgende Pipelinestufe fort, da alle Stufen gleichzeitig weitergeschoben werden. Es wäre daher vorteilhaft, diese hineingelangten Blasen zu überschreiben oder zu vernichten, um den Systemdurchsatz zu optimieren.
  • Die vorliegende Erfindung ermöglicht es, daß Pipelinestufen einer digitalen Computer-CPU so weitergeschoben werden, daß Blasen entfernt werden. Eine Blase stellt eine Stufe in der Pipeline dar, die aufgrund fehlender Daten von einer vorherigen Pipelinestufe keine nützliche Arbeit ausführen kann. Wenn eine bestimmte Pipelinestufe verzögert, dann bewegen sich die CPU-Befehle, die diese Stufe schon passiert haben, weiterhin fort und lassen leere Stufen oder Blasen hinter sich zurück. Diese leeren Stufen haben wegen der Verzögerung keine neuen Befehle zu verarbeiten.
  • Wenn eine Blase einmal in die Pipeline gelangt ist, pflanzt sie sich fort, weil alle Stufen gleichzeitig weitergeschoben werden, falls keine Verzögerung auftritt. Bei Konzepten nach dem Stand der Technik kamen auch alle Stufen vor der verzögerten Stufe zum Stillstand, wenn eine Verzögerung auftrat, und alle Blasen in diesem Bereich blieben unverändert bestehen. Die vorliegende Erfindung bewirkt, daß alle Blasen vor der verzögerten Stufe gefüllt werden, indem sie es den Stufen vor der verzögerten Stufe ermöglicht, sich weiterzubewegen, wenn Blasen vor der verzögerten Stufe entdeckt werden.
  • Die vorliegende Erfindung wird realisiert, indem das Weiterschieben der Pipelinestufen vor einer Blase gesteuert wird, wenn eine der Stufen nach der Blase verzögert hat. Dies schließt die Erkennung von Blasen und Verzögerungen in jeder Stufe ein, indem ihre relativen Positionen verglichen werden und jede Pipelinestufe bedingt weitergeschoben wird.
  • Die für die Erfindung als charakteristisch angesehenen neuheitlichen Merkmale sind in den beiliegenden Ansprüchen dargelegt. Die Erfindung selbst sowie weitere Merkmale und Vorteile derselben werden jedoch unter Bezugnahme auf die ausführliche Beschreibung eines spezifischen Ausführungsbeispiels in Verbindung mit den begleitenden Zeichnungen am besten verständlich, wobei:
  • Fig. 1 ein elektrisches Diagramm im Blockformat von einem Computersystem einschließlich einer Zentraleinheit gemäß einem Ausführungsbeispiel der Erfindung ist
  • Fig. 2 ein elektrisches Diagramm im Blockformat von der Ausführungseinheit der CPU von Fig. 1 ist;
  • Fig. 3 ein elektrisches Diagramm im Blockformat von der Mikroablaufsteuerung der CPU von Fig. 1 ist;
  • Fig. 4 ein Diagramm des Formats der Mikrobefehle ist, die in dem Steuerspeicher von Fig. 3 enthalten sind;
  • Fig. 5 ein elektrisches Diagramm im Blockformat von der Befehlseinheit der CPU von Fig. 1 ist;
  • Fig. 6 ein elektrisches Diagramm der Speicherverwaltungseinheit der CPU von Fig. 1 ist;
  • Fig. 7 ein elektrisches Diagramm im Blockformat vom Primär-Cachespeicher oder P-Cachespeicher der CPU von Fig. 1 ist;
  • Fig. 8 ein elektrisches Diagramm im Blockformat von der Bus-Schnittstelleneinheit der CPU von Fig. 1 ist;
  • Fig. 9 ein Zeitdiagramm ist, das Ereignisse zeigt, die in der Pipeline-CPU 10 von Fig. 1 in aufeinanderfolgenden Maschinenzyklen auftreten;
  • Fig. 10 ein Diagramm von Ereignissen in Abhängigkeit von der Zeit ist, das die Einzelheiten einer Befehlsausführung in der CPU gemäß Fig. 1 - 8 zeigt;
  • Fig. 11 ein Zeitdiagramm der Vier-Phasen-Ausgangssignaltakte ist, die von dem Taktgenerator in der CPU von Fig. 1 erzeugt werden.
  • Die CPU:
  • Bezüglich Fig. 1 wird eine CPU oder Zentraleinheit 10 gezeigt, welche die Merkmale der Erfindung nutzen kann. In einem bevorzugten Ausführungsbeispiel ist die CPU 10 als ein einzelner integrierter Schaltkreis ausgeführt, aber die CPU kann auch ein integrierter Schaltkreis-Chipsatz sein, oder sie kann mit Standard- Logikschaltkreisen oder Gate-Arrays implementiert werden, die auf einer oder mehreren Leiterplatten befestigt sind. Obwohl diese Erfindung in jeder Pipeline-CPU verwendbar ist, führt das hier gezeigte Beispiel einen VAX-Befehlssatz aus und entspricht hinsichtlich der Architektur im allgemeinen derjenigen von VAX-Computern, die früher von dem Rechtsnachfolger vertrieben wurden. Bei dem erläuternden Ausführungsbeispiel ist die CPU 10 mit einem Systemdatenbus 11 verbunden, z. B. einem bidirektionalen 64-Bit-Bus, und mit einem 27-Bit-System-Adreßbus 12 sowie einem Systemsteuerbus 13. Diese Busse 11, 12 und 13 sind mit dem Systemspeicher 15 verbunden, welcher nicht näher gezeigt ist, aber gewöhnlich einen Cachespeicher und Cache-Controller beinhaltet. Die Busse greifen auch auf verschiedene Ein-/Ausgabegeräte zu.
  • Die CPU 10 beinhaltet in ihrem internen Aufbau eine Befehlseinheit 20 (als "I-Box" bezeichnet), die dazu dient, Computerpegel-Befehle für die Ausführung zu decodieren sowie eine Ausführungseinheit 21 (als "E-Box" bezeichnet), welche den Datenmanipulierungsteil der Befehlsausführung durchführt. Die CPU 10 ist mikrocodiert und verwendet einen Steuerspeicher 22, der aus einem ROM (oder EPROM oder ähnlichem) besteht, mit vielleicht 1K oder 2K Mikrobefehlsworten, wobei jedes Wort im vorliegenden Beispiel fünfzig Bit lang ist. Der Steuerspeicher wird durch eine Mikroablaufsteuerung 23 adressiert, welche auf der Basis einer Einsprung-Adresse oder Abwicklungsadresse eine Reihe von Mikroadressen auf einem 11-Bit- Adreßeingang 24 des Steuerspeichers 22 erzeugt, die sie von der Befehlseinheit 20 von einem 11-Bit-Abwicklungsbus 25 erhalten hat. Der Ausgang von dem Steuerspeicher 22 ist ein Mikrobefehlsbus 26, im vorliegenden Ausführungsbeispiel 50 Bit breit; sechzehn Bit des Busses 26 sind auf einen Eingang 27 der Mikroablaufsteuerung 23 rückgekoppelt, um die Adressen von Mikrobefehlen in einer Sequenz, die einem Einsprung folgt, bereitzustellen, und für die Steuerung der Mikrospeicher-Adressierung zu sorgen. Die verbleibenden vierunddreißig Bits des Mikrobefehle-Ausgangsimpuls 26 werden als Steuereingangssignale 28 für die Ausführungseinheit 21 und andere Teile der CPU verwendet.
  • Die CPU 10 verwendet eine virtuelle Adressierung, und eine Speicherverwaltungseinheit 30 (auch als M-Box bezeichnet) wird verwendet, um eine virtuelle Adresse in eine physikalische Adresse zu übersetzen. Diese Einheit entscheidet auch über Befehlsabholungen für die Befehlseinheit 20. Die Speicherverwaltungseinheit wird durch das 34-Bit-Eingangssignal 28 von dem Mikrobefehlsbus sowie von anderen Signalen gesteuert. Die Einheit 30 ist über den Ausgang 32 mit einem internen 30-Bit- Adreßbus 31 und durch einen 32-Bit-ALU-AA-Bus 33 mit der Ausführungseinheit 21 verbunden, um die Adreßregister der Speicherverwaltungseinheit zu lesen. Andere Verbindungen zwischen der Speicherverwaltungseinheit 30 und der Ausführungseinheit beinhalten einen 32-Bit-ALU-Ausgangsbus 34 und einen 32-Bit-Schreibdatenbus 35; Funktionen dieser Busse 33, 34 und 35 werden unter Bezugnahme auf den internen Aufbau der Ausführungseinheit 21 erklärt. Die Einheit 30 empfängt über die Leitungen 36 Steuerbits von der Ausführungseinheit, um die Speicheroperation und die Wortänge zu definieren. Diese Steuerbits auf den Leitungen 36 entstehen in der Befehlseinheit 20 und werden als Teil eines Steuerbusses 38 mit der Ausführungseinheit 21 verbunden. Die Speicherverwaltungseinheit 30 erzeugt ebenso wie die Ausführungseinheit 21 Steuerdaten, die als Mikrotest definiert sind und die über den 3-Bit-Bus 39 mit einem Eingang der Mikroablaufsteuerung 23 verbunden sind; dies sind Bedingungsdaten für eine Mikrobefehls-Verzweigung, die durch Ereignisse innerhalb der Ausführungseinheit 21 oder der Speicherverwaltungseinheit 30 festgelegt wurde.
  • Die CPU 10 beinhaltet einen Primär-Cachespeicher 40 (auch "P-Cache" genannt), welcher in dem Beispiel ein 2 Kbyte-Hochgeschwindigkeits-RAM ist, der die zuletzt benutzten Speicherdaten enthält, die entweder Befehle oder Daten sind. Der Cachespeicher 40 ist mit dem internen 30-Bit-Adreßbus 31 und mit einem internen 32-Bit-Datenbus 41 verbunden. Der interne Datenbus 41 befördert darüber hinaus von der Speicherverwaltungseinheit 30 abgeholte Befehle zur Benutzung durch die Befehlseinheit 20 und Operanden, die zu oder von der Ausführungseinheit 21 übertragen wurden.
  • Eine Bus-Schnittstelleneinheit 42 steuert oder entscheidet auf der Basis eines internen Befehlsbus über die Verbindungen zwischen den verschiedenen internen Bussen der CPU 10 und den Systembussen 11, 12 und 13 und ebenso über die Takte und andere Steuerbits.
  • Unmittelbare (oder literale) Operanden oder Adressen, die in dem Befehlsstrom enthalten sind, werden durch den Bus 41 in die Befehlseinheit 20 geladen. Diese Operandenspezifizierer werden über einen 32-Bit-Bus 43 zum Laden in Register zu der Ausführungseinheit 21 übertragen, um in Register geladen zu werden.
  • Ein Taktgenerator 44 erzeugt ein Vier-Phasen-Ausgangssignal (phi-1 bis phi-4), welches einen Maschinenzyklus von vier Phasen P1, P2, P3 und P4 bildet, auf den noch Bezug genommen wird. Zum Beispiel erzeugt die Taktrate von 25 Mhz einen Maschinenzyklus von 40 ns.
  • Die Ausführungseinheit:
  • Nun zu Fig. 2, in welcher die Ausführungseinheit 21 ausführlicher gezeigt ist. Diese Einheit beinhaltet eine 32-Bit-ALU 45, welche einen 32 Bit großen A-Eingangssignal von dem AA-Bus 33 und einen 32 Bit großen B-Eingangssignal von einem AB- Bus 46 aufweist. Die ALU 45 führt je nach Bedarf Additions-, Subtraktions-, Oder- Operationen usw. aus, um den Befehlssatz der CPU zu unterstützen, und zwar so, wie dies durch ein Feld des gerade verwendeten Mikrobefehls vom Bus 28 definiert ist. Das Ausgangssignal der ALU gelangt immer zu einem Ergebnisbus 47 und somit zu dem Schreibbus 35. Die einzigen zwei Datenquellen für den Ergebnisbus sind die ALU und ein Barrelshifter 48, welcher eine 64-Bit-Eingangs-/ 32-Bit-Ausgangs- Schiebeeinheit ist, die Schiebeoperationen des Befehlssatzes implementiert. Verschiebungen von null bis 32 Bit nach rechts und von null bis 32 Bit nach links können unter der Steuerung von Feldern in den Mikrobefehlen, die über den Bus 28 gesendet wurden, ausgeführt werden. Die Daten auf dem Ergebnisbus 47 können auf den AA- Bus 33 oder als Umgehung auf den AB-Bus 46 geladen werden, oder auch auf den Schreibbus 35 sowie den ALU-Ausgabebus 34, der zu der Speicherverwaltungseinheit 30 führt.
  • Der Schreibbus 35 kann in eine Registerdatei 50 schreiben, welche ein Satz aus einundvierzig 32-Bit-Registern ist, der fünfzehn Register für allgemeine Zwecke, achtzehn Pufferregister und acht Speicherdatenregister enthält; diese Register enthalten Operanden und Adressen die gerade verwendet werden, und das Schreiben in die Registerdatei sowie das Lesen aus dieser stehen unter der Steuerung von Feldern des aktuellen Mikrobefehls, wobei der einzige Ausgang der Registerdatei die 32- Bit-Ausgänge 51 und 52 zu dem AA-Bus 33 oder AB-Bus 46 sind. Der interne Datenbus 41 kann darüber hinaus den Phasendreher 53, wie durch den Mikrobefehl festgelegt, in bestimmte Register der Registerdatei schreiben, und der interne Datenbus kann darüber hinaus die Registerdatei umgehen und über den Eingang 54 direkt auf den AA-Bus und den AB-Bus schreiben, so, wie wenn Daten von dem internen Datenbus in eine Registerdatei geschrieben und ebenfalls als eine ALU-Eingabe in dem gleichen Zyklus benutzt werden.
  • Ein Schiebe-Zählregister 55 stellt eine Schiebezähung für den Schieber 48 bereit und dient auch zum Zählen von Zyklen (was beim Multiplizieren oder Dividieren nützlich ist). Dieser Zähler 55 ist ein 32-Bit-Schieberegister, welches, von dem Mikrobefehl gesteuert, aus dem Schreib-Datenbus 35 oder in den AA-Bus oder dem AB- Bus geladen werden kann.
  • Ein 32-Bit-Programmzähler oder PC 56, der einen internen Addierer enthält, ist ebenfalls Teil des Registersatzes. Der PC 56 enthält die Adresse des Befehls, der gerade ausgeführt wird. Während ein Befehl (einschließlich Operationscode- und Operandenspezifizierer-Bytes sowie Spezifizierer-Erweiterungen) in der Befehlseinheit 20 analysiert wird, wird der PC 56 aktualisiert, um mittels der Delta-PC-Bits von der Befehlseinheit auf dem Bus 38 die Adresse nachzusteuern. Der Programmzähler kann auch aus dem Schreibbus 35 geladen werden. Das Ausgangssignal 57 des Programmzählers 56 geht auf den AA-Bus, von welchem die Adresse durch die ALU 45 und für gewöhnlich über den Bus 34 an die Speicherverwaltungseinheit 30 weitergeleitet wird.
  • Ein Zählerschaltkreis 58, der als Gesamtzähler bezeichnet wird, empfängt sein Eingangssignal 59 von dem AB-Bus 46 und erzeugt ein Ausgangssignal 60 an den AA-Bus 33; dieser Schaltkreis dient dazu, die Anzahl der Bits zu zählen, die in einem binären Wort gesetzt wurden, das auf den AB-Bus geladen wurde, und um einen binären Wert gleich dieser Bitzähung zu erzeugen. Der Gesamtzähler 58 wird verwendet, um die Bitzah in einer Sicherungsmaske (ein binäres Wort, bei dem jedes gesetzte Bit einem Register entspricht, das gesichert werden muß) zu zählen, um zu ermitteln, wo der binäre Wert verwendet wird, um die Anzahl der Register aus der Registerdatei 50 oder dem Registersatz festzulegen, der in einer CALL- (Aufruf-), RETURN- (Rückkehr-), Register-Schiebe- oder Register-Abhol-Prozedur gesichert werden muß.
  • Darüber hinaus ist ein Prozessor-Statusregister 61 in dem Registersatz der Ausführungseinheit 21 enthalten. Dieses Statusregister enthält die ALU-Bedingungsbits, wie z. B. Übertrag, Überlauf, null und negativ, sowie verschiedene andere Statusbits, wie z. B. den Unterbrechungs-Prioritätspegel, die anstehende Spur usw. Das Statusregister kann, von dem Mikrobefehl gesteuert, auf den AA-Bus 33 gelesen oder über den Schreibbus 35 beschrieben werden.
  • Ein Konstantengenerator 62 erzeugt Konstanten zum Laden über die Ausgänge 63 und 64 auf den AA-Bus oder den AB-Bus. Der Mikrobefehl kann eine 8-Bit- Konstante in einem Feld des Busses 28 enthalten (ein "Mikrobefehl-Literal"), und dieses Byte kann durch den Konstantengenerator 62 an jeder der vier Bytepositionen des 32 Bit großen Worts auf den AB-Bus geladen werden, wie durch ein weiteres 2- Bit-Feld des momentanen Mikrobefehls festgelegt ist. Der Generator kann darüber hinaus eine konstante von 1, 2, 4 oder 8 erzeugen, je nach dem Wert der Datenlänge-DL-Steuerbits auf den Leitungen 38, und diese Konstante, die die Anzahl von Bytes in dem Operanden darstellt, der zu bearbeiten ist, wird über den Ausgang 64 auf den AB-Bus 46 geladen. Der Konstantengenerator wird darüber hinaus zusammen mit dem Schieber für vorzeichenerweiternde Daten verwendet.
  • Der Phasendreher 53 ist die Ein/-Ausgabe-Schnittstelle zwischen der Ausführungseinheit 21 und dem internen Datenbus 41 und dient zum Ausrichten der Daten auf Langwortgrenzen, wenn sie in die Register oder den Bus der Ausführungseinheit geladen werden, oder zum erneuten Speichern der Daten, die von der Ausführungseinheit 21 zum Speicher gelangen, auf die geplanten Bytepositionen. Die zwei niederwertigsten Bits der Adresse und die Datenlänge (die DL-Steuerbits auf dem Bus 38) werden von dem Phasendreher 53 verwendet, um diese Umwandlungen durchzuführen.
  • Die Mikroablaufsteuerung:
  • Nun zu Fig. 3, in welcher die Mikroablaufsteuerung 23 ausführlicher gezeigt ist. Die Mikroablaufsteuerung erzeugt in jedem Maschinenzyklus eine 11-Bit-Adresse für den Steuerspeicher 22, und zu Beginn des nächsten Zyklus erzeugt der Steuerspeicher 22 ein zwischengespeichertes 50-Bit-Ausgangssignal auf dem Bus 26, von dem sechzehn Bit zum Adressieren und Steuern durch den Bus 27 in die Mikroablaufsteuerung zurückgeführt werden. Diese sechzehn Bit beinhalten eine Adresse für den nächsten Mikrobefehl sowie Steuerinformationen. Fig. 4 zeigt das Format der 16- Bit-Daten auf dem Bus 27, wo die zwei Informations-Arten, d.h. die Adressen- und die Steuerinformationen, als Sprung und Verzweigung zu sehen sind. Der Sprung enthält eine 11-Bit-Sprungadresse, die Bits 0-10 und ein 3-Bit-Multiplexer-Steuerfeld, die Bits 12-14, während Bit 15 für einen Sprung immer "0" ist (und für eine Verzweigung immer "1"). Bit 11 dient in beiden Fällen zur Mikro-Unterprogrammsteuerung. Das Verzweigungsformat beinhaltet einen 7-Bit-Versatz, die Bits 0-6, und ein 4-Bit- Verzweigungsbedingung-Auswahlfeld.
  • Das Multiplexer-Steuerfeld wird in der Mikroablaufsteuerung 23 in Fig. 3 verwendet, um einen Multiplexer 70 zu steuern, um ein Mikroadressenausgangssignal 71 aus einer Anzahl von Eingangssignalen zu erzeugen; ein Eingangssignal 72 in den Multiplexer 70 besteht aus dem Sprungadressenfeld und den Bits 0-10 vom Bus 27, und natürlich besteht ein weiteres aus der Abwicklungsadresse 25 von der Befehlseinheit 20. Wenn der Mikrobefehl am Ausgang 26 der letzte Befehl der Routine oder des Mikroflusses ist, wird ein Ausgangssignal für den "nächsten Decoderer" ("decoder next" output) gesetzt, um die I-Box 20 zu veranlassen, erneutes Absenden zu bewirken.
  • Eine dritte Eingabe in den Multiplexer 70 ist ein Ausgangssignal 74 (ein Stapel-Lesebus) von einem Registerstapel 75. Der Mikroadressenstapel 75 ist ein Kellerstapel zum Speichern von bis zu acht der 11-Bit-Adressen, die auf dem Bus 24 und somit an einem Eingangs-Schreibbus 76 für den Stapel auftreten. Ein Stapelzeiger 77 zeigt auf den TOS oder das obere Ende des Stapels, und dieser Zeiger wird für Eingabe- oder Abhebe-Stapeloperationen durch Steuerdaten der Bits 11-15 der Steuerinformationen auf dem Bus 27 inkrementiert oder dekrementiert, da er über den Bus 78 mit dem Stapel-Steuer-Decoder 79 verbunden ist. Wenn ein CALL (Aufrufbefehl) decodiert wird, so wird die 11-Bit-Adresse am Eingang 76 in den Stapel 75 eingegeben, oder wenn ein RETURN (Rücksprung) decodiert wird, so wird das obere Ende des Stapels als der Eingang in den Multiplexer 70 gewählt, und aus dem Stapel wird durch Dekrementieren des Zeigers 77 abgehoben.
  • Ein Mikroadressen-Silo 80 stellt ein anderes Eingangssignal 81 an den Multiplexer 70 bereit. Dieser Silo ist ein FIFO-Speicher mit drei Registern, der die drei zuletzt verwendeten 11-Bit-Adressen von dem Adreßbus 24 über den Eingang 82 speichert. Dieser Silo ist als Schieberegister konstruiert, welches durch jeden Maschinenzyklus weitergetaktet wird, außer wenn eine Verzögerung oder ein nicht programmierter Programmsprung signalisiert wird, und in diesem Fall werden die drei Adressen in dem Silo gesichert, bis ein nicht programmierter Programmsprung endet, wenn die letzten drei Adressen verwendet werden können, die den Silo-Eingang 81 mittels des richtigen Codes über den Bus 78 an den Multiplexer 70 benutzen, indem zu einer Wiederherstellungs-Mikroroutine gesprungen wird.
  • Der andere Eingang in den Multiplexer 70 ist ein Ausgang 83 von einem Steueradressengenerator 84 für nicht programmierte Programmsprünge. Es stehen eine Reihe von unterschiedlichen Typen von Mikroroutinen für nicht programmierte Programmsprünge und somit Adressen zum Starten dieser Mikroroutinen zur Verfügung.
  • Eine Verzweigungsadresse, die spezifiziert wird, wenn Bit 15 auf dem Bus 78 eine "1" ist, besteht aus drei Teilen, die in dem Mikroprogramm-Zähler 85 assembliert wurden. Die Bits 7-10 der 11-Bit-Verzweigungsadresse werden von dem aufrufenden Mikrobefehl (d.h. derjenige, der sich gegenwärtig schon in dem Zähler 85 befindet) kopiert, und die Bits 0 und 4-6 werden durch das Eingangssignal 72 aus dem Mikrobefehl kopiert, während die Bits 1-3 über das Gatter 86 die logische ODER-Funktion des Mikrobefehls am Eingang 72 und den Inhalt des 3-Bit-Mikrotestbusses 39 bilden. Das heißt, die "Verzweigungs"-Mikrobefehle (Mikro-Verzweigungs-Befehle) werden auf dem Mikrobefehlsbus 28 durch die Mikrotest-Steuerlogik 87 erkannt. Nach dem Erkennen eines Mikro-Verzweigungs-Befehls leitet die Steuerlogik 87 Bedingungen weiter, die auf dem Mikrotestbus 39 zu dem ODER-Gatter 86 vorliegen, und zur gleichen Zeit erkennt auch die Multiplexer-Steuerlogik 88 einen Mikro-Verzweigungs- Befehl auf dem Mikrobefehlsbus 27 und veranlaßt den Mikroprogramm-Zähler 85, eine Verzweigungsbestimmungsadresse auf der Basis der ODER-Operation der Bedingungen auf dem Mikro-Verzweigungsbus 173 und ausgewählter Bits aus dem Mikro-Verzweigungsbefehl zu berechnen, die dem Multiplexer 70 als Eingangssignal bereitgestellt wurden.
  • In Fig. 4 sieht man auch das Format des Mikrobefehlswortes, speziell den 34- Bit-Teil, der an dem Ausgang des Steuerspeichers am Bus 28 anliegt. Es werden vier allgemeine Typen von Mikrobefehlen verwendet, die als Basic, Constant, Shift und Special bezeichnet sind. Für jeden dieser Typen sind die Bits 16-33 gleich und beinhalten ein 6-Bit "A"-Feld (die Bits 16-21), welches die Quelle des AA-Busses 33 in der Ausführungseinheit auswählt, und ein 6-Bit "W"-Feld (die Bits 28-33), um die Zieladresse auszuwählen, d.h., wohin der Schreibbus 35 geschrieben wird, wie z. B. in eines der Register in der Registerdatei 50. Das Bit 27 ist eine Bedingungs- Codesteuerung für das Prozessor-Statusregister 61. Das gemischte Feld der Bits 22- 26 wird decodiert, um die spezielle Operation zu definieren, die durchzuführen ist. Jeder der Typen Basic, Shift und Special hat ein "B"-Feld (die Bits 34-37), welches die Quelle der Daten auf dem AB-Bus 46 auswählt, d.h. die ALU-B-Eingabe. Der Typ Shift hat Felder (die Bits 38-46), welche die Schiebefunktion, die in dem Verschieber 48 durchzuführen ist, sowie den Schiebewert (Anzahl an Bits von null bis 32 Bits) definieren. Der Typ Constant im Mikrobefehlsformat beinhaltet einen konstanten Wert (die Bits 34-41) für eine Mikrobefehl-Literal-Operation, der über den Konstantengenerator 62 auf den AA-Bus geladen werden soll, und ein Positionsfeld (die Bits 42-43) zum Definieren der Konstantenposition. Die von der ALU 45 durchzuführende Funktion (z. B. Addieren, Subtrahieren, UND-Funktion, Durchlauf-Funktion usw.) wird durch die Bits 44-48 im Basic-Format oder die Bits 44-46 im Constant-Format definiert. Das Bit 38 von Basic ist eine Datenwortlänge-Steuerung, und die Bits 39-43 definieren die Speicher-Anforderungsfunktion.
  • Die Befehlseinheit:
  • In Fig. 5 wird der interne Aufbau der Befehlseinheit 20 gezeigt. Befehle werden von dem internen Datenbus 41 in eine Vorausleseschlange 90 geladen, die ein FIFO ist, das als ein Satz von Hochgeschwindigkeitsregistern aufgebaut ist, die vier 32-Bit-Langworte (vier Vierbyte-Befehle und -Operandenworte) enthalten. Da die Befehle eine unterschiedliche Länge und eine unterschiedliche Anzahl von Operanden und Spezifizierern haben, die einen Op-Code von einem oder zwei Bytes folgen und nicht auf Wortgrenzen abgeglichen sein könnten, hat die Vorausleseschlange 90 die Funktion, es zu ermöglichen, daß auf die Informationen, die benötigt werden, um damit zu beginnen, den nächsten Befehl oder Operanden zu analysieren und zu decodieren, direkt zugegriffen werden kann. Die Vorausleseschlange kann bis zu zwei Langworte in einem Maschinenzyklus verschieben; die Befehlsstrom-Daten werden immer dann an den Eingang der Vorausleseschlange 90 geschoben, wenn die Schlange nicht voll ist und kein anderer Systemprozeß den Datenweg benötigt. Ein Vorauslese-Multiplexer 91 empfängt eine 4-Bit-Adresseninformation von einem Vorauslese-Zeiger 92, um an einem Ausgang 93 sechs Bytes von der Vorausleseschlange 90 zu erzeugen, welche die nächsten sechs gültigen Bytes darstellen, die mit einem Op-Code beginnen; der Op-Code befindet sich eventuell nicht an einer Langwortgrenze, also beinhaltet das Ausgangssignal 93 ein Op-Code-Byte 93a, ein Spezifizierer-Byte 93b und vier Bytes 93c des Spezifizierer-Erweiterungsfelds, das von der Schlange 90 durch den Multiplexer 91 ausgewählt wurde, und zwar an irgendeiner der Bytepositionen der Schlange beginnend. Zwei dieser sechs Bytes werden zu einem Satz von Decodern oder PLAS verbunden, einschließlich einem Op-Code-Decoder 94 und einem Spezifizierer-Decoder 95.
  • Auf der Basis des Op-Code-Bytes am Ausgang 93a erzeugt der Decoder 94 am Ausgang 96 mehrere Sätze von Zugriffstyp- und Datenlänge-Steuerbits (als AT/DL-Steuerdaten bezeichnet), und zwar einen Satz für jeden Operanden, der für diesen Befehl verwendet werden soll. Ein Multiplexer 97 empfängt dieses Ausgangssignal 96 und wählt, je nach der momentanen Definition, für jeden Operanden einen Satz aus. Die Ausgabe des Multiplexers 97 wird in einem Latch 98 gehalten, von welchem der AT/DL-Teil des Steuerbusses 38, der zu der Ausführungseinheit 21 geht, empfangen wird.
  • Ein Abwicklungs-Multiplexer 100 wählt aus, ob die Abwicklungsadresse 25, die an die Mikroablaufsteuerung 23 gesendet werden soll, eine Ausführungs-Abwicklung von dem Befehls-Decoder 94, eine Spezifizierer-Abwicklung von dem Spezifiziererbyte-Decoder 95 oder eine Verzögerungs-Abwicklung ist. Eine Verzögerungs- Abwicklung wird immer dann erzeugt, wenn in der Vorausleseschlange 90 nicht genügend viele Bytes sind, um eine Ausführungs- oder Spezifizierer-Abwicklung zu definieren. Diese Verzögerungs-Abwicklung schickt zwangsweise eine Abwicklungsadresse an die Mikroablaufsteuerung 23, um einen Mikrobefehl zu adressieren, der nichts anderes tut, als eine "nächster-Decoder"-Anforderung zurück an die I-Box auszugeben, wodurch folglich ein Leerlauf-Zyklus eingeleitet wird, um der I-Box zu ermöglichen, die PFQ zu füllen. Das 11-Bit-Adressenausgangssignal von diesem Multiplexer 100 wird in einem Abwicklungsadressen-Latch 101 zwischengespeichert, und so kann sie für ein Silo-Speichern zur Verfügung stehen. Die Spezifizierer- Erweiterungsdaten, bis zu vier Bytes auf den Ausgangssignalen 93c von der Schlange 90, werden an ein Latch 102 angelegt, von welchem sie einen Formatierer 103 durchlaufen, der alle vorhandenen Spezifizierer-Erweiterungsdaten um Vorzeichen erweitert und rechtsbündig ausrichtet, und dann an ein anderes Latch 104, von welchem diese Daten über den 32-Bit-Bus 43 mit der Ausführungseinheit 21 verbunden werden.
  • Ebenso erzeugt die I-Box einen Delta-PC-Wert in dem Latch 105, welcher den Betrag darstellt, um den der Programm-Zähler 56 erhöht werden sollte, damit die E- Box PC 56 auf den nächsten Op-Code oder Spezifizierer zeigt, was auf der Basis der Anzahl an Bytes in dem Op-Code und den Spezifizierern geschieht, die gerade verarbeitet werden. Der Delta-PC-Wert im Latch 105 wird durch eine PLA umgewandelt, dann in ein Latch 106 geladen, um beim nächsten Maschinenzyklus für die Verwendung durch die E-Box über den Bus 38 zur Verfügung zu stehen. Außerdem erzeugt die I-Box ein 4-Bit-RN-Feld in den Latchspeichern 107, welches eines der sechzehn Universal-Register in der Registerdatei 50, die für den aktuellen Spezifizierer- oder Ausführungs-Mikrofluß benutzt werden soll, spezifiziert. Dieses RN-Feld wird aus dem Registerfeld eines Spezifizierer-Bytes abhgeleitet. Außerdem wird ein 3-Bit-SN- Feld in einem Latch 108 erzeugt, um das Speicherdatenregister in der Registerdatei 50 zu spezifizieren, die benutzt werden sollte, um das Ergebnis des aktuellen Spezifiziererflusses zu speichern. Der Wert in dem Latch 108 wird in eine PLA umgewandelt und während des zweiten Zyklus in das Latch 109 geladen; er ist im dritten Zyklus zur Verwendung durch die E-Box über den Bus 38 bereit.
  • Die Speicherverwaltungseinheit:
  • Die Speicherverwaltungseinheit 30 ist in Fig. 6 genau zu sehen. Jede Adresse zum Lesen oder Schreiben eines Befehls oder von Daten liegt an einem virtuellen 32- Bit-Adreßbus 110 an, und diese virtuelle Adresse wird in einem Übersetzungspuffer 111 verwendet, um eine physikalische oder reale Adresse zu erzeugen, die an dem Bus 32 anliegt, der zu dem internen Adreßbus 31 führt. Die virtuelle Adresse kann an dem Ausgang des ALU 45 in der Ausführungseinheit 21 erzeugt und durch den ALU- Ausgangsbus 34 an den virtuellen Adreßbus 110 angelegt werden, oder sie kann über die Ausgangssignale 112 von drei Registern auf den Bus 110 geladen werden, wobei diese drei Register ein virtuelles Adressenregister 113, ein virtuelles Adressen- Primärregister (VAP) 114 und ein virtuelles Befehlspuffer-Adressenregister (VIBA) 115 ist. Die drei Register 113, 114 und 115 ermöglichen vielen Adressen, ohne Benutzung der Hauptdatenwege und des ALU der Ausführungseinheit 21 erzeugt zu werden. Jedes dieser Register kann von dem Schreibbus 35 über die Eingangssignale 116 beschrieben werden oder über die Ausgangssignale 117 und den AA-Bus 33, von den W- und A-Feldern des Mikrobefehls gesteuert, gelesen werden. Das VA- Register 113 stellt die Adresse für Schreiboperationen bereit, und es speichert auch die virtuelle Adresse von dem Bus 110 für jede Speicheranforderung zwischen, so daß ein Mikrobefehl immer auf die einen Fehler nachweisende Adresse in dem VA- Register 113 zugreifen kann, wenn eine Speicherverwaltungs-Abweichung vorkommt. Das VAP-Register 114 speichert immer den VA-Bus 110 plus vier zwischen, so daß er die Adresse des nächsten sequentiellen Langworts enthält; dieses Register wird von den Mikrobefehlen benutzt, um auf Mehrfach-Langworte und auch auf das zweite Langwort von unabgeglichenen Speicherverweisen zuzugreifen, d.h., auf einen Speicherverweis, der einen zweiten Verweis erfordert, um vollständig zu werden. Das VIBA-Register 115 wird immer dann geladen, wenn ein Mikrobefehl ein Räumen und Laden des Programmzählers 56 durchführt; das VIBA-Register wird dann verwendet um Langworte von Befehlsstrom-Daten aus dem Speicher zum Füllen der Vorausleseschlange 90 abzuholen, wobei es nach jeder Befehlsstrom-Langwort-Abholung um vier inkrementiert wird. Ein Inkrementierer 117 dient dazu, die Register 114 und 115 um vier zu inkrementieren.
  • Der Übersetzungspuffer 111 ist ein völlig assoziativer Speicher, der vierundsechzig Speicherstellen enthält, wobei jede Speicherstelle einen Merker einer vor kurzem stattgefundenen erfolgreichen Übersetzung zusammen mit dem Seitentabellen-Eintrag (PTE) für diesen Merker enthält. Die Seitenadresse (die Bits 9-31) jeder virtuellen Adresse, die von dem Bus 110 durch den Übersetzungspuffer empfangen wurde, wird mit dem 23-Bit-Merker aller vierundsechzig Einträge verglichen, und wenn eine Übereinstimmung vorkommt, wird der PTE, der dem übereinstimmenden Merker entspricht, auf den Bus 119 (21 Bits) ausgegeben. Die niederwertigeren dreißig Bits des virtuellen Adreßbusses 110 liegen an einem Bus 120 an, von dem die Bits 0-8 über die Leitungen 121 direkt an den internen Adreßbus 32 angelegt werden und die Byteadresse innerhalb einer Seite darstellen; die einundzwanzig Bits 9-29 vom VA-Bus 110 sind das über den Bus 120 kommende Eingangssignal in einen Multiplexer 122, und die 21-Bit-PTE von dem Übersetzungspuffer sind das über den Bus 119 kommende andere Eingangssignal, und somit kommt der höherwertige 21- Bit-Teil der Adresse, der über den Bus 32 an den internen Adreßbus 31 angelegt wird, entweder direkt von dem VA-Bus oder er wird über den Puffer 111 und die PTE übersetzt. Das heißt, daß durch die Mikrobefehlssteuerung die an den internen Adreßbus 31 angelegte Adresse direkt von dem VA-Bus 110 sein kann, oder sie kann eine übersetzte Adresse sein, die den Übrsetzungspuffer 111 verwendet.
  • Wenn die Seite der Adresse auf dem VA-Bus 110 nicht unter den vierundsechzig Merkern in dem Puffer 111 ist und eine übersetzte Adresse spezifiziert worden ist, dann wird eine Fehlerbedingung gemeldet, wobei dieser Fehler ein TB-Fehler ist. Die Mikroablaufsteuerung 23 erzeugt die Startadresse für eine Routine, die es möglich macht, daß die Seitenadresse in einer Tabelle nachgeschlagen werden kann, die von dem Betriebssystem im Speicher 15 oder im Cachespeicher aufrechterhalten wird; um dies zu erreichen, ist natürlich eine Anzahl von Mikrobefehlszyklen erforderlich.
  • Der Primär-Cachespeicher:
  • Nun zu Fig. 7, in der der Primär-Cachespeicher oder P-Cache 40 ausführlicher gezeigt wird. Dieser Cachespeicher enthält einen 2-KByte-Hochgeschwindigkeitsspeicher 130, der durch den internen Adreßbus 31 adressiert wird und der auf den internen Datenbus 41 liest oder von diesem beschrieben wird. Der Speicher 130 ist in vierundsechzig Zeilen mit vier Vierfachworten QW0, QW1, QW2 und QW3 in jeder Zeile organisiert, zusammen mit vier entsprechenden Merkern 0, 1, 2 und 3, einer für jedes Vierfachwort. Ein Zeilen-Decoder 132 wählt 1 aus 64 auf der Basis von sechs Bits 3-8 auf den Leitungen 133 von dem internen Adreßbus 31. Die ausgewählte Zeile wird in einen Spalten-Decoder 134 für die Daten und einen Spalten-Decoder 135 für die Merker geladen, wo eine 1 aus 4-Auswahl auf der Basis von zwei Bits 9-10 auf den Leitungen 136 von dem IA-Bus 31 getroffen wird. Auf diese Weise werden ein Merker (20 Bits) und ein Vierfachwort (64 Bits oder acht Bytes) auf den Daten- und Merker- Ein/Ausgabe-Bussen 137 und 138 innerhalb des P-Cachespeichers ausgewählt. Der Datenbus 137 wird von den Leseverstärkern 139 gelesen oder durch die Schreibverstärker 140 beschrieben, wo eine weitere 1 aus 2-Auswahl auf der Basis von Bit 2 auf der Leitung 141 vom IA-Bus 31 getroffen wird, so daß die ausgewählten 32 Bits oder vier Bytes in den internen Datenbus 41 geladen oder von diesem übertragen werden, wenn ein Merker-"Treffer" vorliegt. Der aus der ausgewählten Stelle in dem Cache- Speicher 130 gelesene Merker wird in einem Komparator 143 mit den achtzehn Bits 11-28 verglichen, die über die Leitungen 144 von dem IA-Bus 31 kommen. Wenn alle Bits gleich sind, wird auf der Leitung 145 ein Treffer gemeldet, von welchem die Fehlerlogik 146 ein P-Cache-Treffer-Ausgangssignal auf der Leitung 147 erzeugt, wenn Bit 29, das vom IA-Bus über die Leitung 149 kommt, nicht anzeigt, daß sich der Verweis auf den Ein-/Ausgabe-Platz bezieht, weil die Ein-/Ausgabe-Verweise niemals im Cachespeicher gespeichert werden. Es wird auch ein Schreibverstärker 150 für den Merker-Ein-/Ausgabe-Bus 138 freigestellt, um die Merker zu laden, wenn der Cachespeicher 130 voll ist.
  • Die Bus-Schnittstelleneinheit:
  • Bezüglich Fig. 8 treibt die Bus-Schnittstelleneinheit 42 den 27-Bit-System- Adreßbus 12 auf der Basis der physikalischen 30-Bit-Adresse auf dem internen Adreßbus 31 an; der Unterschied besteht darin, daß die 30-Bit-Adresse auf dem Bus 31 eine Byteadresse ist und die 27-Bit-Adresse auf dem Bus 12 auf Vierfachworte (acht Bytes) abgeglichen ist, entsprechend der Vierfachwortänge (64 Bit) des Systemdatenbusses 11. Um diese Umwandlung und verschiedene Datenlängen zu ermöglichen, ob abgeglichen oder nicht abgeglichen, enthält der Steuerbus 13 ein 8- Bit-Bytemaskenfeld, das ein Bit für jede der acht möglichen Bytepositionen enthält, und ein Controller 155 in der Bus-Schnittstelle erzeugt eine 8-Bit-Bytemaske zur Verwendung für den Systemsteuerbus auf der Basis einer internen 4-Bit-Bytemaske, die in der Speicherverwaltungseinheit erzeugt wird und mit der Bus-Schnittstelle über die Leitungen 156 verbunden ist. Die Speicherverwaltungseinheit verwendet die Datenlänge-DL-Steuerbits auf den Leitungen 36, die bei der Decodierung des Op-Code- und Operanden-Spezifizierers in der I-Box über den Bus 38 entstehen, und natürlich definieren die niederwertigen Bits 0-2 der Adresse auf dem Bus 31 die Start-Byte- Adresse. Auf diese Weise wird ein Übergang von dem internen 32-Bit-Datenbus 41 zu dem 64-Bit-System-Datenbus und von dem 30-Bit-Adreßbus zu dem 27-Bit- System-Adreßbus erzeugt.
  • Der System-Steuerbus 13 enthält auch einen 4-Bit-Bus-Befehl, welcher von dem Controller 155 der Bus-Schnittstelleneinheit 42 angetrieben oder von ihm empfangen wird. Dieser Bus-Befehl definiert, welche Operation auf den Systembussen gerade abläuft, d.h. das Lesen der Befehlsstrom-Vierfachworte durch die CPU 10 aus dem Speicher 15, das Lesen der Datenstrom-Vierfachworte durch die CPU 10 das Schreiben in den Speicher 10 durch die CPU 10 usw. Dieser 4-Bit-Befehl wird zusammen mit einem Adressentakt, welcher eine weitere Leitung des Steuerbusses 13 ist, der auch Leitungen für Bereit, Lesen, DMA-Anforderung, Unterbrechung, Halt sowie Coprozessor-Steuerdaten enthält, was für die Implementierung eines vollständigen Systems benötigt werden könnte.
  • Daten und Adressen sowie Bus-Befehle werden durch ein Eingabe-Latch 158 und ein doppeltes Ausgabe-Latch 159 ein- bzw. ausgegeben, von denen jedes ein 64-Bit-Datenregister 160, ein 27-Bit-Adreßregister 161 und ein Bus-Befehlsregister 162 enthält. Auf diese Weise kann das Eingabe-Latch 158 in einem Zyklus ein 64-Bit- Vierfachwort vom Bus 11 empfangen und zwei 32-Bit-Langworte in zwei Zyklen an den internen Bus 41 übertragen. Ebenso kann jedes Ausgabe-Latch 159 zwei 32-Bit- Langworte in zwei Zyklen laden, und dann kann ein 64-Bit-Vierfachwort in einem Zyklus an den Systembus 11 übertragen werden. Der Grund, warum man zwei identische Ausgabe-Latchspeicher haben muß, besteht darin, die Schreiboperationen der CPU 10 in den Speicher zu beschleunigen, da die Übertragung des Ausgabe-Latch zum Bus 11 nicht vor dem dritten Zyklus stattfinden kann (nachdem beide Ladevorgänge vom Bus 41 zum Ausgabe-Latch beendet sind); mit zwei Ausgabe- Latchspeichern kann der zweite laden, während der erste zum System-Datenbus 11 übertragen wird.
  • Eine Speicherlese-Transaktion wird durch die Bus-Schnittstelleneinheit 42 implementiert, wenn der interne Befehlsbus 125 ein Speicherlesen anzeigt, wie von der Speicherverwaltungseinheit 30 signalisiert wird, was auftritt, wenn die Speicherverwaltungseinheit durch die physikalische Adresse spezifizierte Daten anfordert, die auf den internen Adreßbus 31 übertragen wurde. Wenn diese Adresse in dem primären Merker-Speicher des Cachespeichers 40 gefunden wird, steuert der Cachespeicher 40 den internen Datenbus 41 mit diesen Daten, und der geplante Empfänger (I-Box 20 oder E-Box 21) speichert die Daten von dem Datenbus 41 zwischen. Wenn der Merker bei dem Merkervergleich 143 des Primär-Cachespeichers fehlt, wird das Merker-Treffersignal auf der Leitung 147 rückgesetzt und der Lesebefehl auf den Leitungen 125 sowie die physikalische Adresse auf dem Bus 31 werden in das Ausgabe- Latch 159 geladen, und der Controller 155 übernimmt und bedient diese Leseanforderung, sooft die Systembusse in den nächsten paar Zyklen zur Verfügung stehen; es werden keine weiteren Befehle von der M-Box 30 bedient, bis die angeforderten Daten empfangen und in dem Eingabe-Latch 158 zwischengespeichert worden sind. Die Einheit 42 schickt die Daten von dem Eingabe-Latch auf den Bus 41 und somit zu dem geplanten Ziel, der I-Box, der E-Box oder dem P-Cache. Wenn z. B. der Primär- Cachespeicher fehlt und die Daten vom Hauptspeicher 15 abgeholt werden müssen, kann die Lese-Transaktion sechs Maschinenzyklen lang dauern, während die Pipeline der CPU solange verzögert wird.
  • Eine Speicher-Schreibsequenz beginnt mit einem Schreibbefehl, der durch die M-Box an den internen Befehlsbus 125 angelegt wird, während die M-Box gleichzeitig auch die interne Bytemaske auf den Leitungen 156 steuert. Weil der Cachespeicher 40 vom Typ "Durchschreiben" ("write-through") ist, wird über alle Speicher- Schreibvorgänge in dem Cachespeicher "entschieden" und sie werden im Hauptspeicher ausgeführt. Somit vergleicht der P-Cache 40 die Adresse auf dem Bus 31 mit seiner Merkeranordnung, wenn sich ein Schreibbefehl auf dem internen Befehlsbus 125 befindet. Wenn die Bezugnahme zutrifft, werden die Daten auf dem ID-Bus 41 dann in den Speicher 130 geschrieben. Wenn der Merkervergleich negativ ausgeht, werden die Daten von dem P-Cache ignoriert. In jedem Fall werden alle Daten auf dem IA-Bus 31, dem ID-Bus 41, dem internen Befehlsbus 125 und der Bytemaske in das Ausgabe-Latch geladen, so daß eine externe Schreibsequenz in den Hauptspeicher (und, wenn nötig, in einen Sicherungs-Cachespeicher) schreiben kann.
  • Die Pipeline-Verarbeitung:
  • Die CPU 10 in Fig. 1-8 ist in hohem Maße mit Pipelines versehen; Ereignisse bei der Ausführung eines Befehls werden über viele Maschinenzyklen verstreut, und die Ausführung von Teilen einer Anzahl von Befehlen sind überlappend, d.h. sie finden zur gleichen Zeit statt. Die CPU verwendet eine in fünf Abschnitte unterteilte Pipeline, wie in Fig. 9 allgemein gezeigt, wobei, wie man sehen kann, die Ausführung eines Befehls I1 im Abschnitt s1 während des Zyklus 1 beginnt und sich bis zum Abschnitt s5 im Zyklus 5 fortsetzt. Die Ausführung des Befehls I2 beginnt im Abschnitt s1 im Zyklus 2, wenn der Befehl I1 im Abschnitt s2 ist, und er wird in gleicher Weise bis zum Abschnitt 55 in Zyklus 6 fortgesetzt. Im Zyklus 5 und danach gibt es Teile von fünf unterschiedlichen Befehlen, die in den fünf Abschnitten der Pipeline ausgeführt werden. Natürlich stellt Fig. 9 einen Ideal-Zustand dar, wobei angenommen wird, daß jeder Befehl in exakt fünf Abschnitten abläuft, und es gibt keine Verzögerungen oder Ausnahmen; in diesem idealen Fall würde die durchschnittliche Ausführungsrate ein Befehl pro Maschinenzyklus sein.
  • Die eigentlichen Ereignisse, die in den fünf Abschnitten der Pipeline- Verarbeitung in der CPU 10 der Fig. 1-8 stattfinden, werden in Fig. 10 detaillierter gezeigt. Zunächst kann man unter Bezugnahme auf Fig. 11 feststellen, daß die CPU 10 von dem Taktgenerator 44 getaktet wird, um in jedem Maschinenzyklus vier Phasen P1, P2, P3 und P4 von gleicher Länge bereitzustellen. Diese Taktphasen werden verwendet, um den CMOS-Schaltkreis zu steuern, der benutzt wurde, um in dem Muster-Ausführungsbeispiel die CPU 10 zu konstruieren.
  • Wenn die Vorausleseschlange 90 der Befehlseinheit 20 während der Phase P1 einen gültigen Befehls- und Operanden-Spezifizierer aufweist, dann wird im Abschnitt 1 gemäß Fig. 10 diese Information in den Decodern 94 und 95 während P2 und P3 decodiert, so daß das Ausgangssignal des Abwicklungs-Multiplexers 100 in P4 zur Verfügung steht, und das Latch 101 wird mit der Abwickungsadresse geladen. Das Latch 102 wird in P4 mit analysierten Spezifizierer-Erweiterungen geladen, welche ein Teil der Befehlsstrom-Daten sind.
  • In Abschnitt 2 wird die Abwickungsadresse während P1 auf den Bus 25 geschickt, und während P2 und P3 wird auf den Steuerspeicher 22 zugegriffen. Der Mikrobefehl steht während P4 dieses Abschnitts an dem Ausgang 26 zum Laden in die erste Ebene der gesteuerten Elemente der Ausführungseinheit in P1 des nächsten Zyklus bereit. Auch in diesem Abschnitt 2 werden die Spezifizierer-Erweiterungen, falls vorhanden, formatiert, während sie vom Latch 102 durch den Formatierer 103 zum Latch 104 gelangen, und die Daten wie z. B. Sn und Rn werden berechnet und zwischengespeichert, und die AT/DL-Information wird zwischengespeichert, so daß diese Daten- und Steuer-Informationen zu Beginn des nächsten Zyklus der Ausführungseinheit 21 über den Bus 38 zur Verfügung stehen.
  • Im Abschnitt 3 der Pipeline, die auch als CSO-Abschnitt bezeichnet ist, greift die Ausführungseinheit 21 auf die verschiedenen Register oder Busse zu und positioniert die zu verarbeitenden Daten auf dem AA-Bus 33 und dem AB-Bus 46, basierend auf den Steuerfeldern A und B des Mikrobefehls, der in 34 Bit des CSO-Latch 165 zur Verfügung steht, in den er über den Bus 28 geladen worden ist. Die Registerdatei 50, der interne Datenbus 41 und der direkte Datenbus 43 sind alle Quellen für die Operanden, die in diesem Abschnitt auf den AA-Bus und den AB-Bus zu laden sind, ebenso wie der Rest der Registergruppe, einschließlich dem Programmzähler 56, den Adreßregistern 113, 114 und 115 in der Speicherverwaltungseinheit 30 usw.; sie alle werden eingesetzt, um zum Lesen in P4 dieses Zyklus zur Verfügung zu stehen. Darüber hinaus nimmt die Ausführungseinheit während P1 dieses Abschnitts die Steuerbits auf dem Bus 38 an.
  • Im Abschnitt 4, auch CS1-Abschnitt genannt, wird die vom ALU-Funktionsteil des Mikrobefehls spezifizierte Operation in der ALU 45 ausgeführt, wenn sie vom Typ Basic oder Constant ist, wie in Fig. 4 zu sehen, oder, wenn der Mikrobefehl ein Verschiebebefehl ist, wird die von der Verschiebefunktion und den Verschiebewertfeldem des Mikrobefehls spezifizierte Operation in dem Schieber 48 durchgeführt. Da der Steuerspeicher 22 während jedes Zyklus einen neuen Mikrobefehl erstellt, ist es nötig, den Mikrobefehl vom letzten Zyklus speichern zu lassen, wenn der gleiche Mikrobefehl in Abschnitt 3 verwendet wurde; zu diesem Zweck wird das von dem Steuerspeicher zur Verfügung stehende Mikrobefehlsausgangssignal 28 in dem CSO- Latch 165 zwischengespeichert, und das Ausgangssignal dieses Latch wird für die im Abschnitt 3 durchgeführten Operationen verwendet; dann wird es am Ende des Zyklus in einem anderen 34-Bit-CS1-Latch 166 zwischengespeichert, wie in Fig. 3 zu sehen ist, so daß der Mikrobefehl für die Ausführungseinheit 21 in Abschnitt 4 zur Verfilgung steht. Das Ausgangssignal dieses Latch 166 wird am Ende des Abschnitts 4 zur Verwendung im Abschnitt 5 wieder in einem ähnlichen CS2-Latch 167 gespeichert (vierter Taktzyklus für diesen Befehl).
  • Der Betrieb der Speicherverwaltungseinheit 30 findet parallel zu den Pipeline- Abschnitten der Ausführungseinheit 21 statt. Der Mikrobefehl vom Bus 28 wird im Abschnitt 3 in einem anderen CS0-Latch 168 zwischengespeichert, wie in Fig. 6 zu sehen ist, dann in einem weiteren CS1-Latch 169 im Abschnitt 4, so daß das in Fig. 4 zu sehende Mikrobefehl-Speicheranforderungsfeld zur Verfügung steht, wenn es benötigt wird. Während P2 des Maschinenzyklus von Abschnitt 4 sendet die Einheit 30 eine Anforderung an die Bus-Schnittstelleneinheit 42, wenn die Busse benötigt werden. Die Einheit 30 bestimmt aus den möglichen Quellen des ALU-Ausgangsbusses 34, des VA-Registers 113 usw. die Adressenquelle, die von dem Mikrobefehl definiert wurde, der sich in dem CS1-Latch 169 befindet; der virtuelle Adreßbus 110 hat die während P4 ausgewählte Adresse zur Verfügung, und der Übertragungspuffer 111 führt das Nachschlagen des Merkers durch. Am Ende des Abschnitts 4 wird der Mikrobefehl von dem CS1-Latch 169 über den Multiplexer 171 zu dem CS2-Latch 170 übertragen, wenn keine Verzögerung durch einen Fehler oder eine Ausnahme eingeleitet worden ist.
  • Im Abschnitt 5 wird der Schreibbus 35 von der ALU 45 oder dem Ausgangssignal des Schiebers 48 in die Ausführungseinheit 21 geschoben, und er schreibt an die Zieladresse, die von dem W-Feld des Mikrobefehls im CS2-Latch 167 definiert wurde. Die möglichen Zieladressen sind ein ausgewähltes Register in der Registerdatei 50 oder eines der anderen aus dem Registersatz, der interne Datenbus 41 über den Phasendreher 53, der AA-Bus oder der AB-Bus als Umgehung, oder der virtuelle Adreßbus 110 in der Speicherverwaltungseinheit. Während P1 im Abschnitt 5 wird innerhalb der Speicherverwaltungseinheit 30 die PTE zum Bus 119 und über den Bus 32 auf den internen Adreßbus 31 gelesen, wenn der Übertragungspuffer 111 eine Übereinstimmung gefunden hat. Der Zeilendecodierer in dem Primär-Cachespeicher 40 empfängt während P2 die Adresse vom IA 31 und greift am Ende von P2 auf die Daten und den Merker zu, dann führt der Merker-Vergleicher 143 in P3 den Merkervergleich durch; wenn es eine Übereinstimmung gibt, dann stehen die Daten auf dem internen Datenbus 41 am Ende von P3 zur Verfügung, wenn gerade eine Leseoperation durchgeführt wird, oder sie werden in P4 in den Cachespeicher 130 geschrieben, wenn es sich um einen Schreibvorgang handelt. Wenn es keine Merkerübereinstimmung gibt, dann wird in P3 auf der Leitung 147 ein "Fehlertreffer" gemeldet. Wenn der Übertragungspuffer 111 keine Merkerübereinstimmung erkennt, dann wird in der Speicherverwaltungseinheit durch P2 des Abschnitts 5 eine Ausnahme festgestellt und gemeldet, so daß eine Routine implementiert werden kann, um für die Erzeugung einer physikalischen Adresse die Seitennummer nachzuschlagen.
  • Blasenentstehung und -vernichtung:
  • Die oben beschriebene Blasenvernichtung in der CPU-Pipeline wird in Abschnitt 1 und Abschnitt 2 der Pipeline gemäß Fig. 10 durchgeführt.
  • Immer wenn die Vorausleseschange 90 leer ist, kann der Abschnitt 1 der Mikroablaufsteuerung 23 keine gültige Abwicklungsadresse bereitstellen, und statt dessen sendet er an sie eine Verzögerungs-Abwicklung. Eine Verzögerungs-Abwicklung ist eine spezifische Adresse in dem Steuerspeicher 22, die einen "Beende-den-Fluß"- Mikrobefehl erzeugt. Der "Beende-den-Fluß"-Mikrobefehl veranlaßt die Mikroablaufsteuerung 23, eine neue Abwickungsadresse anzufordern, indem sie ein Signal auf die "nächster-Decodierer"-Leitung setzt, die in Fig. 3 zu sehen ist. Dies hat die Wirkung, daß dem Abschnitt 1 ein zusätzlicher Zyklus zur Verfügung gestellt wird, um eine neue Abwicklungsadresse zu erzeugen.
  • Immer wenn der Abschnitt 1 über den Abwicklungs-Multiplexer 100 von Fig. 5 eine Verzögerungs-Abwicklung erzeugt, sind die analysierten und decodierten CPU- Befehlsinformationen, die zu den Latchspeichern 101, 102, 105, 107 und 108 oder Abschnitt 2 gesendet werden, ungültig. Gemäß der Erfindung haben diese Latchspeicher 101, 102, 105, 107 und 108 einen Überschreib-Merker, der immer gesetzt wird, wenn Abschnitt 1 im Multiplexer 100 eine Verzögerungs-Abwicklung erzeugt. Der Überschreib-Merker zeigt an, daß das Latch nutzlose Informationen (eine Blase) enthält und daher jederzeit überschrieben werden kann.
  • Die Tabelle 1 stellt ein Beispiel dar, wie Blasen erzeugt werden und wie sie sich durch die Pipeline einer mikroprogrammierten CPU fortpflanzen, die im Gegensatz zur vorliegenden Erfindung die Blasen nicht vernichtet. Es wird angenommen daß der Überschreib-Merker für die Latchspeicher 101, 102 usw. nicht existiert.
  • Bezüglich Fig. 3 und Tabelle I adressiert die Mikroablaufsteuerung 23 im Zyklus 0 einen "Beende-den-Fluß"-Mikrobefehl. Dies veranlaßt die Mikroablaufsteuerung 23 gemäß Fig. 3, ein Signal auf die "nächster-Decoder"-Leitung zu setzen, um eine neue Mikrofluß-Abwicklungsadresse von der I-Box, Abschnitt 1, zu erhalten. Das Latch 102 enthält gegenwärtig die Abwicklungsadresse eines Mikroflusses, der mit einem Mikrowort B beginnt. In diesem Zyklus hat der Abschnitt 1 nicht genügend Daten, um eine neue Abwicklungsadresse zu erzeugen, daher erstellt er eine Verzögerungs-Abwicklung.
  • In Zyklus 1 veranlaßt das Setzen der "nächster-Decoder"-Leitung die Aktualisierung der Latchspeicher 102,105,107 und 108, und die Ausführungseinheit und die Speicherverwaltungseinheit werden dazu veranlaßt, ihre Daten in den Latchspeichern 165 und 168 zu aktualisieren, indem sie die Pipeline weiterschieben. Die Mikroablaufsteuerung 23 verwendet die Abwicklungsadresse, die während des Zyklus in dem Latch 101 gespeichert wurde, um das Mikrowort B abzuholen. Da der Abschnitt 1 keine neue Abwicklungsadresse bereitstellen konnte, hält das Latch 101 nun eine Verzögerungs-Abwicklung. Auf dieser Stufe enthalten das Latch 101 und folglich auch Abschnitt 2 eine Blase. Abschnitt 1 ist immer noch nicht bereit, eine neue Abwicklungsadresse bereitzustellen.
  • Im Zyklus 2 setzt die Mikroablaufsteuerung 23 den Mikrofluß fort und holt den nächsten Mikrobefehl vom Steuerspeicher 22 ab. Dies führt zur Verzögerung der zweiten Befehlseinheit, Abschnitt 2. in diesem Zyklus erzeugt Abschnitt 1 eine neue Abwickungsadresse für einen Mikrofluß, der mit einem Mikrowort Q beginnt.
  • Im Zyklus 3 holt die Mikroablaufsteuerung 23 den nächsten Befehl von dem Mikrofluß ab und setzt damit das Verzögern von Abschnitt 2 fort. Abschnitt 1 wird auch verzögert, weil er seinen Status nicht in die Latchspeicher 101, 102, 105 usw. weiterschieben konnte. Abschnitt 1 fährt fort, die Adresse für das Mikrowort Q zu erzeugen.
  • Im Zyklus 4 erreicht die Mikroablaufsteuerung 23 das Ende des Mikrofusses und fordert eine neue Mikrofluß-Abwicklungsadresse an, indem sie ein Signal auf die "nächster-Decoder"-Leitung setzt. Abschnitt 1 und Abschnitt 2 fahren mit dem Verzögern fort.
  • Im Zyklus 5 erhält die Mikroablaufsteuerung 23 von dem Latch 102 eine Verzögerungs-Abwicklung (Blase). Dies veranlaßt die Mikroablaufsteuerung 23, einen anderen "Beende-den-Fluß"-Mikrobefehl anzufordern, und somit fährt sie fort, ein Signal auf die "nächster-Decoder"-Leitung zu setzen. Das Latch 105 lädt die Abwicklungsadresse des Mikroflusses hinein, die mit dem Mikrowort Q von Abschnitt 1 beginnt. Abschnitt 1 erzeugt eine neue Abwicklungsadresse für einen Mikrofluß, der mit dem Mikrowort T beginnt.
  • Im Zyklus 6 erhält die Mikroablaufsteuerung 23 die Abwicklungsadresse (die Adresse für das Mikrowort Q) von dem Latch 101. Dieses Latch erhält eine neue Abwicklungsadresse (die Adresse für das Mikrowort T) vom Abschnitt 1. Abschnitt 1 erzeugt eine neue Abwicklungsadresse für einen Mikrofluß, der mit dem Mikrowort Y beginnt. Auf diese Weise wird die von der ersten Pipeline-Verzögerung erzeugte Blase durch die Pipeline-Abschnitte fortgepflanzt.
  • Tabelle II stellt dar, wie Blasen erzeugt und vernichtet werden, indem die "nächster-Decoder"- und Überschreib-Merker-Signale einer mikroprogrammierten Pipeline-CPU 10 verwendet werden, die gemäß der vorliegenden Erfindung arbeitet.
  • Die Zyklen 0,1 und 2 sind im wesentlichen die gleichen wie in Tabelle I. Der einzige Unterschied ist, daß nun ein Überschreib-Merker in den Latchspeichern 102, 105, 107 und 108 gesetzt wird, wenn diese eine Verzögerungs-Abwicklung in Zyklus 1 und Zyklus 2 enthalten; dadurch wird Abschnitt 1 darüber in Kenntnis gesetzt, daß diese Latchspeicher eine Blase enthalten und während des nächsten Zyklus überschrieben werden können, unabhängig davon, ob die Pipene verzögert wird.
  • Im Zyklus 3 holt die Mikroablaufsteuerung 23 den nächsten Befehl von dem Mikrofluß ab, daher fährt sie mit dem Verzögern von Abschnitt 2 fort. Aber weil der Überschreib-Merker in den Latchspeichern 101, 102, 105, 107 und 108 gesetzt worden ist, laden diese Latchspeicher die Daten für einen Mikrofluß, der mit einem Mikrowort Q beginnt, aus dem Abschnitt 1, was zum Überschreiben oder Vernichten der Blase in diesen Latchspeichern führt. Inzwischen erzeugt der Abschnitt 1 eine neue Abwickungsadresse für einen Mikrofluß, der mit einem Mikrowort T beginnt.
  • Im Zyklus 4 erreicht die Mikroablaufsteuerung 23 das Ende des Mikrofusses und fordert eine neue Mikrofluß-Abwicklungsadresse an, indem sie ein Signal auf die "nächster-Decoder"-Leitung setzt. Wegen des Überschreibens der Latchspeicher 102 usw. im Zyklus 3 erhält die Mikroablaufsteuerung 23 nun eine gültige Abwicklungsadresse statt einer Verzögerungs-Abwicklung , welche entstanden wäre, wenn die Blasenvernichtung nicht vollzogen worden wäre.
  • Im Zyklus 5 erhält die Mikroablaufsteuerung 23 die Abwickungsadresse (die Adresse für das Mikrowort Q) von dem Latch 102. Dieses Latch erhält eine neue Abwicklungsadresse, und der Abschnitt 1 erzeugt auch eine neue Abwickungsadresse, genau wie im Zyklus 6 in Tabelle I.
  • Auf diese Weise spart die Blasenvernichtung Zyklen und hilft, in einer Pipe- line-CPU einen größeren Befehlsdurchsatz zu erreichen. Tabelle I Zyklus-Nummer Ausgang von Abschnitt 1 (Eingang für Latch 102) Latch 102 (Abschnitt 2-Eingang) Mikrowort, durch Mikroablaufsteuerungs-Abschnitt 3 adressiert Bemerkungen Verzögerungs-Abwicklung Decodiere CPU-Befehl, um Abwicklungsadresse für Mikrowort zu erzeugen Abwicklungsadresse für Mikrowort B Verzögerungs-Abwicklung: (Blase) Abwicklung für das Mikrowort "Beende den Fluß"-Mikrobefehl; Decoder wird gesetzt Mikrowort Decoder wird gesetzt und veranlaßt die Pipeline, zum nächsten Zyklus vorzurücken Verzögerungs-Abwicklung wird in das Latch 102 geladen. Blase wird dort erzeugt. Abschnitt 1 erzeugt gültige Abwicklungsadresse. Abschnitt 2 wird verzögert. Blase in Latch 102 noch vorhanden. Mikroablaufsteuerung setzt Abholen von Mikrobefehlen aus dem Mikrofluß fort. Verzögerungs-Abwicklung bewirkt, daß "Beende den Fluß"-Mikrobefehl wieder angefordert wird; Decoder wird wieder gesetzt. Pipeline rückt auf normale Weise weiter. Tabelle II Zyklus-Nummer Ausgang von Abschnitt 1 (Eingang für Latch 102) Latch 102 (Abschnitt 2-Eingang) Mikrowort, durch Mikroablaufsteuerungs-Abschnitt 3 adressiert Bemerkungen Verzögerungs-Abwicklung Decodiere CPU-Befehl, um Abwicklungsadresse für Mikrowort zu erzeugen Abwicklungsadresse für Mikrowort B Verzögerungs-Abwicklung: Übershreib-Merker wird gesetzt (Blase) Abwicklung für das Mikrowort "Beende den Fluß"-Mikrobefehl; Decoder wird gesetzt Mikrowort Decoder wird gesetzt und veranlaßt die Pipeline, in den nächsten Zyklus vorzurücken Überschreib-Merker wird gesetzt aufgrund der eben geladenen Verzögerungs-Abwicklung im Latch 102. Überschreib-Merker wird in den Latchspeicher gesetzt, während eine Verzögerungs-Abwicklung erneut geladen wird. Abschnitt 1 erzeugt gültige Abwicklungsadresse. Abschnitt 1 erzeugt gültige Abwicklungsadresse. Abschnitt 2 wird verzögert. Blase in Latchspeichern noch vorhanden. Mikroablaufsteuerung setzt Abholen von Mikrobefehlen aus dem Mikrofluß fort. Decoder wird gesetzt und veranlaßt die Pipeline, in den nächsten Zyklus vorzurücken Pipeline rückt auf normale Weise vor.

Claims (14)

1. Verfahren zum Betreiben einer Pipeline-Verarbeitungseinheit (10) in einem Digitalcomputer, wobei die Pipeline-Verarbeitungseinheit zumindest einen ersten Pipeline-Abschnitt zum Verarbeiten von Daten sowie einen zweiten Pipeline-Abschnitt, nachfolgend zum ersten Pipeline-Abschnitt, zum Verarbeiten von Daten aufweist; wobei es bei der Verarbeitung von Daten möglich ist, daß eine Verzögerungsbedingung auftritt, die einen nichtoperativen Datensatz und Steuerdaten, die als "Blase" bezeichnet werden, im ersten Pipeline-Abschnitt erzeugt; wobei das Verfahren gekennzeichnet ist durch:
a) Detektieren einer Blase im ersten Pipeline-Abschnitt;
b) anschließendes Detektieren einer Verzögerungsbedingung im zweiten Pipeline-Abschnitt; und
c) Überschreiben des nichtoperativen Datensatzes und der Steuerdaten, wodurch die Blase vernichtet wird.
2. Verfahren nach Anspruch 1, bei dem der erste Pipeline-Abschnitt die Operationen der Decodierung eines Befehls und der Erzeugung von Steuerdaten auf der Basis dieses Befehls durchführt.
3. Verfahren nach Anspruch 1 oder 2, bei dem der zweite Pipeline- Abschnitt die Operation der Erzeugung von Steuerbit-Sätzen in Reaktion auf die Decodierung eines Befehls im ersten Pipeline-Abschnitt durchführt.
4. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die Blase im ersten Pipeline-Abschnitt eine Bedingung beinhaltet, die besagt, daß die Steuerdaten ungültig sind und daher überschrieben werden können.
5. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der Prozessor einen dritten Pipeline-Abschnitt aufweist, in dem Operanden aus einer Registerdatei (50) abgeholt werden, eine Operation an den Operanden durchgeführt und ein Ergebnis in der Registerdatei (50) gespeichert wird.
6. Verfahren nach Anspruch 5, bei dem die Steuerdaten die Identifikation eines Registers in der Registerdatei (50) beinhalten.
7. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der Prozessor (10) mikroprogrammiert ist und der zweite Pipeline-Abschnitt das Abholen der Steuerbit-Sätze aus einem Mikrobefehl-Speicher (22) beinhaltet.
8. Prozessor (10) mit:
a) einer Vielzahl aufeinanderfolgender Betriebsstufen (Fig. 10), wobei jede Stufe entweder irgendeine Operation an einem Datensatz oder an Steuerdaten durchführt, die von einer vorangegangenen Stufe empfangen wurden, und einen Ausgabe-Datensatz oder Ausgabe-Steuerdaten an eine nachfolgende Stufe weiterleitet; oder sie eine Verzögerung einleitet, wodurch keine Operation durchgeführt wird und keine Daten oder Steuerdaten an eine nachfolgende Stufe weitergeleitet werden, wobei dann zumindest eine Stufe einen nichtoperativen Datensatz oder Steuerdaten, die als "Blase" bezeichnet werden, zur Weiterleitung an eine nachfolgende Stufe bereithält.
b) eine Einrichtung (44) zum gleichzeitigen Weiterschieben der Datensätze oder Steuerdaten in allen Stufen, wenn keine Stufe eine Verzögerung eingeleitet hat, oder in späteren Stufen, nachfolgend zu einer bestimmten Stufe, wenn diese Stufe eine Verzögerung eingeleitet hat;
gekennzeichnet durch
c) eine Einrichtung zum Detektieren einer Blase in einer ersten Betriebsstufe;
d) eine Einrichtung zum Detektieren einer Verzögerungsbedingung in einer nachfolgenden Stufe; und durch
e) eine Einrichtung zum Überschreiben des nichtoperativen Datensatzes oder der Steuerdaten, wodurch die Blase vernichtet wird.
9. Prozessor nach Anspruch 8, bei dem die Betriebsstufen eine erste Stufe zum Decodieren von Befehlen und zum Erzeugen von Steuerdaten zur Verwendung in einer nachfolgenden Stufe beinhalten.
10. Prozessor nach Anspruch 9, bei dem die Betriebsstufen eine zweite Stufe zur Erzeugung von Steuerbit-Sätzen in Reaktion auf die decodierten Befehle beinhalten.
11. Prozessor nach Anspruch 10, bei dem der Prozessor mikrocodiert ist und die zweite Stufe die Steuerbit-Sätze aus einem Mikrocode-Speicher (22) abholt.
12. Prozessor nach Anspruch 9 oder Anspruch 10 oder Anspruch 11, bei dem die Datensätze oder Steuerdaten vorübergehend in einem Latch (101, 102, 105, 107, 108) gespeichert werden und die Einrichtung zum Überschreiben den Latch überschreibt.
13. Prozessor nach einem der Ansprüche 8 bis 12, bei dem die Stufen eine dritte Stufe beinhalten, um einen Operanden aus einem Register in einer Registerdatei (50) abzuholen und Operationen an dem Operanden durchzuführen.
14. Prozessor nach Anspruch 13, bei dem der Datensatz und die Steuerdaten eine Identifikation des Registers beinhalten.
DE68924380T 1988-07-20 1989-07-20 Vernichtung von Pipelineblasen in einem Rechnersystem. Expired - Fee Related DE68924380T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/221,988 US5019967A (en) 1988-07-20 1988-07-20 Pipeline bubble compression in a computer system

Publications (2)

Publication Number Publication Date
DE68924380D1 DE68924380D1 (de) 1995-11-02
DE68924380T2 true DE68924380T2 (de) 1996-06-13

Family

ID=22830272

Family Applications (1)

Application Number Title Priority Date Filing Date
DE68924380T Expired - Fee Related DE68924380T2 (de) 1988-07-20 1989-07-20 Vernichtung von Pipelineblasen in einem Rechnersystem.

Country Status (6)

Country Link
US (1) US5019967A (de)
EP (1) EP0352103B1 (de)
JP (1) JPH0774991B2 (de)
AT (1) ATE128565T1 (de)
CA (1) CA1320275C (de)
DE (1) DE68924380T2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102008045767A1 (de) * 2008-09-04 2010-03-11 Continental Teves Ag & Co. Ohg Mikroprozessor mit Pipelineblasen-Erfassungseinrichtung

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2858140B2 (ja) * 1988-10-19 1999-02-17 アポロ・コンピューター・インコーポレーテッド パイプラインプロセッサ装置および方法
JPH0395629A (ja) * 1989-09-08 1991-04-22 Fujitsu Ltd データ処理装置
US5555384A (en) * 1989-12-01 1996-09-10 Silicon Graphics, Inc. Rescheduling conflicting issued instructions by delaying one conflicting instruction into the same pipeline stage as a third non-conflicting instruction
US5280597A (en) * 1990-03-30 1994-01-18 Mitsubishi Denki Kabushiki Kaisha Pipeline processor with self timed data transfer
CA2045705A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites In-register data manipulation in reduced instruction set processor
US5430862A (en) * 1990-06-29 1995-07-04 Bull Hn Information Systems Inc. Emulation of CISC instructions by RISC instructions using two pipelined stages for overlapped CISC decoding and RISC execution
JPH04184534A (ja) * 1990-11-20 1992-07-01 Fujitsu Ltd プロセッサ
US5590294A (en) * 1991-03-19 1996-12-31 Silicon Graphics, Inc. Method and apparatus for retarting pipeline processing
US5325495A (en) * 1991-06-28 1994-06-28 Digital Equipment Corporation Reducing stall delay in pipelined computer system using queue between pipeline stages
US5524250A (en) * 1991-08-23 1996-06-04 Silicon Graphics, Inc. Central processing unit for processing a plurality of threads using dedicated general purpose registers and masque register for providing access to the registers
US5438668A (en) 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
DE69408769T2 (de) * 1993-10-18 1998-07-09 Cyrix Corp Fliessbandsteuerung und Registerübersetzung in Mikroprozessor
US6073231A (en) * 1993-10-18 2000-06-06 Via-Cyrix, Inc. Pipelined processor with microcontrol of register translation hardware
US5630149A (en) * 1993-10-18 1997-05-13 Cyrix Corporation Pipelined processor with register renaming hardware to accommodate multiple size registers
US6138230A (en) * 1993-10-18 2000-10-24 Via-Cyrix, Inc. Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline
US6128721A (en) * 1993-11-17 2000-10-03 Sun Microsystems, Inc. Temporary pipeline register file for a superpipelined superscalar processor
US5864716A (en) * 1994-01-07 1999-01-26 Cirrus Logic, Inc. Tagged data compression for parallel port interface
US5784579A (en) * 1994-03-01 1998-07-21 Intel Corporation Method and apparatus for dynamically controlling bus access from a bus agent based on bus pipeline depth
US5548733A (en) * 1994-03-01 1996-08-20 Intel Corporation Method and apparatus for dynamically controlling the current maximum depth of a pipe lined computer bus system
US5636352A (en) * 1994-12-16 1997-06-03 International Business Machines Corporation Method and apparatus for utilizing condensed instructions
US5619408A (en) * 1995-02-10 1997-04-08 International Business Machines Corporation Method and system for recoding noneffective instructions within a data 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
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
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
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
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
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
US5889975A (en) * 1996-11-07 1999-03-30 Intel Corporation Method and apparatus permitting the use of a pipe stage having an unknown depth with a single microprocessor core
US5944841A (en) * 1997-04-15 1999-08-31 Advanced Micro Devices, Inc. Microprocessor with built-in instruction tracing capability
US5933626A (en) * 1997-06-12 1999-08-03 Advanced Micro Devices, Inc. Apparatus and method for tracing microprocessor instructions
US6862563B1 (en) 1998-10-14 2005-03-01 Arc International Method and apparatus for managing the configuration and functionality of a semiconductor design
AU4848700A (en) * 1999-05-13 2000-12-05 Arc International U.S. Holdings Inc. Method and apparatus for processor pipeline segmentation and re-assembly
WO2001069411A2 (en) 2000-03-10 2001-09-20 Arc International Plc Memory interface and method of interfacing between functional entities
US6658557B1 (en) 2000-05-25 2003-12-02 Advanced Micro Devices, Inc. Synthesizing the instruction stream executed by a microprocessor from its branch trace data
US6993641B2 (en) * 2000-11-08 2006-01-31 Pts Corporation Stall control
US7000095B2 (en) 2002-09-06 2006-02-14 Mips Technologies, Inc. Method and apparatus for clearing hazards using jump instructions
US7653807B2 (en) * 2005-09-19 2010-01-26 Synopsys, Inc. Removing a pipeline bubble by blocking clock signal to downstream stage when downstream stage contains invalid data
US8127113B1 (en) 2006-12-01 2012-02-28 Synopsys, Inc. Generating hardware accelerators and processor offloads
JP2008198127A (ja) * 2007-02-15 2008-08-28 Toshiba Corp プロセッサシステム
CN107038125B (zh) * 2017-04-25 2020-11-24 上海兆芯集成电路有限公司 具有加速预取请求的独立流水线的处理器高速缓存

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3248707A (en) * 1961-11-14 1966-04-26 Ibm Semi-asynchronous clock system
US4025771A (en) * 1974-03-25 1977-05-24 Hughes Aircraft Company Pipe line high speed signal processor
US4090249A (en) * 1976-11-26 1978-05-16 International Business Machines Corporation Apparatus for sorting records in overlap relation with record loading and extraction
JPS5466048A (en) * 1977-11-07 1979-05-28 Hitachi Ltd Information processor
US4236206A (en) * 1978-10-25 1980-11-25 Digital Equipment Corporation Central processor unit for executing instructions of variable length
JPS5621242A (en) * 1979-07-28 1981-02-27 Fujitsu Ltd Pipeline control method for computer operation
US4438492A (en) * 1980-08-01 1984-03-20 Advanced Micro Devices, Inc. Interruptable microprogram controller for microcomputer systems
JPS58189739A (ja) * 1982-04-30 1983-11-05 Hitachi Ltd デ−タ処理システム
US4534009A (en) * 1982-05-10 1985-08-06 The United States Of America As Represented By The Secretary Of The Navy Pipelined FFT processor
US4498136A (en) * 1982-12-15 1985-02-05 Ibm Corporation Interrupt processor
US4594655A (en) * 1983-03-14 1986-06-10 International Business Machines Corporation (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions
JPS59231652A (ja) * 1983-06-13 1984-12-26 Hitachi Ltd メモリアクセス・オ−バラツプ検出方式
WO1985000453A1 (en) * 1983-07-11 1985-01-31 Prime Computer, Inc. Data processing system
US4571673A (en) * 1983-09-29 1986-02-18 Tandem Computers Incorporated Enhanced CPU microbranching architecture
US4586130A (en) * 1983-10-03 1986-04-29 Digital Equipment Corporation Central processing unit for a digital computer
BR8503913A (pt) * 1984-08-18 1986-05-27 Fujitsu Ltd Sistema e processo de recuperacao de erros em um processador de dados do tipo de canalizacao tendo um dispositivo de memoria de controle e processo de recuperacao de erros em um processador de dados do tipo de canalizacao
JPS61234436A (ja) * 1985-04-10 1986-10-18 Matsushita Electric Ind Co Ltd マイクロプログラム制御装置
US4794517A (en) * 1985-04-15 1988-12-27 International Business Machines Corporation Three phased pipelined signal processor
US4701842A (en) * 1985-10-04 1987-10-20 International Business Machines Corporation Method and apparatus for avoiding excessive delay in a pipelined processor during the execution of a microbranch instruction
US4709324A (en) * 1985-11-27 1987-11-24 Motorola, Inc. Data processor control unit having an interrupt service using instruction prefetch redirection
US4794527A (en) * 1986-01-29 1988-12-27 Digital Equipment Corporation Microprogrammed data processing system using latch circuits to access different control stores with the same instruction at different times
JPS63141131A (ja) * 1986-12-04 1988-06-13 Toshiba Corp パイプライン制御方式

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102008045767A1 (de) * 2008-09-04 2010-03-11 Continental Teves Ag & Co. Ohg Mikroprozessor mit Pipelineblasen-Erfassungseinrichtung

Also Published As

Publication number Publication date
JPH0774991B2 (ja) 1995-08-09
EP0352103A2 (de) 1990-01-24
ATE128565T1 (de) 1995-10-15
DE68924380D1 (de) 1995-11-02
EP0352103A3 (de) 1992-08-12
CA1320275C (en) 1993-07-13
US5019967A (en) 1991-05-28
EP0352103B1 (de) 1995-09-27
JPH02155037A (ja) 1990-06-14

Similar Documents

Publication Publication Date Title
DE68924380T2 (de) Vernichtung von Pipelineblasen in einem Rechnersystem.
DE68927451T2 (de) Addressieren von Mikrobefehlen in einer Pipeline-Zentraleinheit ( Betriebsverfahren, Adressierverfahren, Kellerspeicher und Zentraleinheit)
DE3486399T2 (de) Zentrale Verarbeitungseinheit mit der Fähigkeit, Befehle mit variablen Längen zu unterstützen.
DE3789345T2 (de) Erweiterte Gleitkommaoperationen zur Unterstützung der Emulation von Quellbefehlsausführungen.
DE68927911T2 (de) Datenverarbeitungssystem
DE3586899T2 (de) Instruktionsvorgriffsystem fuer bedingte sprungbefehle in einer zentralen verarbeitungseinrichtung.
DE2855106C2 (de) Einrichtung zur Durchführung von bedingten Verzweigungen
DE68928236T2 (de) Befehlspuffersystem für einen digitalen Rechner
DE69031139T2 (de) Verfahren und Vorrichtung zum Ordnen und in Warteschlangesetzen mehrerer Speicherzugriffsanforderungen
DE69024068T2 (de) Verfahren und Datenverarbeitungseinheit zur Pipeline- Verarbeitung von Register- und Registeränderungs- Spezifizierern in dem gleichen Befehl
DE3685913T2 (de) Vektorenverarbeitung.
DE69031433T2 (de) Speicherzugriffsausnahmebehandlung bei vorausgelesenen Befehlswörtern in dem Befehlsfliessband eines Rechners mit virtuellem Speicher
DE69028138T2 (de) Mechanismus zur präzisen Behandlung von Ausnahmebedingungen in einem Prozessor mit gepaarten Befehlen
DE69127726T2 (de) Kombinierte Warteschlange für Entwertungen und Rücklaufdaten in einem Multiprozessorsystem
DE69737423T2 (de) Verfahren und gerät zum replizieren von datenspeicherung in einem fortgeschrittenen mikroprozessor
DE69126166T2 (de) Programmierbare Steuerungsvorrichtung
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE69017178T2 (de) Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung.
DE69233493T2 (de) RISC-Prozessor mit erweiterbarer Architektur
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
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
DE2948668A1 (de) Puffereinheit
EP0325677B1 (de) Schaltungsanordnung und Steuerverfahren eines Befehlspufferspeichers in einer Datenverarbeitungsanlage
DE2533737A1 (de) Datenprozessor

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Free format text: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER, 80538 MUENCHEN

8339 Ceased/non-payment of the annual fee