-
Hintergrund der Erfindung
-
1. Sachgebiet der Erfindung
-
Die vorliegende Erfindung bezieht
sich allgemein auf das Design von Mikroprozessor-Architekturen vom
RISC-Typ, und, insbesondere, auf RISC-Mikroprozessor-Architekturen, die
dazu geeignet sind, mehrere Instruktionen gleichzeitig auszuführen.
-
2. Beschreibung des in
Bezug stehenden Stands der Technik
-
In neuerer Zeit hat sich das Design
von Mikroprozessor-Architekturen von der Verwendung von komplexen
Instruction Set Computer (CISC) zu einfacheren Reduced Instruction
Computer (RISC) Architekturen entwickelt. Die CISC-Architekturen
sind für
die Vorsehung von im wesentlichen Hardware anzuführen, um eine Instruktions-Ausführungs-Pipeline auszuführen und
zu unterstützen
bzw. zu übertragen.
Die typische, konventionelle Pipeline-Struktur umfaßt, in einer
festgelegten Reihenfolge, Instruktions-Abrufungs-, Instruktions-Decodier-,
Daten-Lade-, Instruktions-Ausführungs-
und Daten-Speicher-Stufen. Ein Funktionsvorteil wird durch die gleichzeitige
Ausführung
verschiedener Teile eines Satzes von Instruktionen durch die jeweiligen
Stufen der Pipeline erhalten. Je länger die Pipeline ist, desto
größer ist
die Anzahl von Ausführungs-Stufen,
die verfügbar
sind, und desto größer ist
die Anzahl von Instruktionen, die gleichzeitig ausgeführt werden
können.
-
Zwei allgemeine Probleme begrenzen
die Effektivität
von CISC-Pipeline-Architekturen.
Das erste Problem ist dasjenige, daß konditionale Verzweigungs-Instruktionen nicht
adäquat
evaluiert werden können,
bis eine Vor-Zustands-Code-Einstell-Instruktion im wesentlichen eine Ausführung über die
Pipeline abgeschlossen hat.
-
Demzufolge wird die darauffolgende
Ausführung
der konditionalen Verzweigungs-Instruktion
verzögert,
oder angehalten, was dazu führt,
daß verschiedene
Pipeline-Stufen inaktiv für
mehrfache Prozessorzyklen verbleiben. Typische Zustands-Code werden
in ein Zustands-Code-Register, auch als ein Prozessor-Status-Register
(PSR) bezeichnet, nur bei Abschluß einer Verarbeitung einer
Instruktion über
die Ausführungs-Stufe
eingeschrieben. Demzufolge muß die
Pipeline mit der konditionalen Verzweigungs-Instruktion in der Decodier-Stufe
für eine
von mehrfachen Prozessorzyklen abhängigen Bestimmung des Verzweigungs-Zustands-Codes
angehalten werden. Das Anhalten der Pipeline führt zu einem wesentlichen Verlust
an Durchsatz. Weiterhin wird der durchschnittliche Durchsatz des
Computers im wesentlichen von der bloßen Frequenz von konditionalen
Verzweigungs-Instruktionen abhängig
sein, die kurz nach den den Zustands-Code einstellenden Instruktionen
in der Programm-Instruktions-Folge auftreten.
-
Ein zweites Problem entsteht aus
der Tatsache, daß Instruktionen,
die dicht in der Programm-Instruktions-Folge auftreten, dazu tendieren
werden, auf dieselben Register der Prozessor-Register-Datei Bezug
zu nehmen. Daten-Register werden oftmals als die Bestimmung oder
Quelle von Daten in den Speicher- und Lade-Stufen von aufeinanderfolgenden
Instruktionen verwendet. Allgemein muß eine Instruktion, die Daten
zu der Register-Datei hin speichert, eine Verarbeitung durch mindestens
die Ausführungs-Stufe
abschließen,
bevor der Lade-Stufe, die eine darauffolgende Instruktion verarbeitet,
erlaubt werden kann, auf die Register-Datei zuzugreifen. Da die
Ausführung
von vielen Instruktionen mehrfache Prozessorzyklen in einer einzelnen
Ausführungs-Stufe
erfordert, um Speicher-Daten zu erzeugen, wird die gesamte Pipeline
typischerweise für
die Dauer einer Ausführungs-Stufen-Operation
angehalten. Demzufolge ist der Ausführungs-Durchsatz des Computers
im wesentlichen von der internen Reihenfolge der Instruktions-Folge,
die ausgeführt
werden soll, abhängig.
-
Ein drittes Problem entsteht nicht
so stark aufgrund der Ausführung
der Instruktionen selbst, sondern durch die Wartung der Hardware
unterstützten
Instruktions-Ausführungsumgebung,
oder des Zustands der Maschine, des Mikroprozessors selbst. Heutige
CISC-Mikroprozessor-Hardware-Untersysteme können das Auftreten von Trap-Zuständen während der
Ausführung
von Instruktionen erfassen. Traps umfassen Hardware-Unterbrechungen,
Software-Trap und Ausnahmen. Jede Trap erfordert eine Ausführung von
entsprechenden Trap-Handhabungs-Programmen durch den Prozessor.
Beim Erfassen der Trap muß die
Ausführungs-Pipeline
freigemacht werden, um die unmittelbare Ausführung des Trap-Handhabungs-Programms
zu ermöglichen.
Gleichzeitig muß der
Zustand der Maschine als der präzise
Punkt des Auftretens der Trap eingerichtet werden; der präzise Punkt
eines Auftretens bei der Schlußfolgerung
der ersten, momentan ausführenden
Instruktion für
Unterbrechungen und Traps und unmittelbar vor einer Instruktion,
die aufgrund einer Ausnahme fehlschlägt. Darauffolgend muß der Zustand
der Maschine und wiederum in Abhängigkeit
von der Art der Trap die Ausführungs-Instruktion
selbst bei dem Abschluß des
Handhabungs-Programms erneut gespeichert werden. Demzufolge wird,
mit jeder Trap oder einem dazu in Bezug stehenden Ereignis, eine
Latenz durch das Freimachen der Pipeline bei sowohl dem Anfang als
auch dem Ende des Handhabungs-Programms und
einer Speicherung und einer Rückführung des
präzisen
Zustands der Maschine mit einer entsprechenden Verringerung des
Durchsatzes des Prozessors eingeführt.
-
Diesen Problemen hat man sich auf
verschiedene Art und Weise zugewandt bei der Bemühung, den potentiellen Durchsatz
von CISC-Architekturen zu verbessern. Annahmen können in Bezug auf die geeignete Ausführung von
konditionalen Verzweigungs-Instruktionen
vorgenommen werden, um dadurch zu ermöglichen, daß eine Pipeline-Ausführung versuchsweise
vor der abschließenden
Beendigung des Verzweigungs-Zustands-Codes
fortschreitet. Annahmen können
auch dahingehend vorgenommen werden, ob ein Register modifiziert
werden wird, um dadurch zu ermöglichen,
daß darauffolgende
Instruktionen auch versuchsweise ausgeführt werden. Schließlich kann
im wesentlichen zusätzliche
Hardware vorgesehen werden, um das Auftreten von Ausnahmen zu minimieren,
die eine Ausführung
von Handhabungs-Programmen erfordern und dadurch die Frequenz von
Ausnahmen reduzieren, die die Verarbeitung der Programm-Instruktions-Folge unterbrechen
können.
-
Diese Lösungen führen auch, während sie
offensichtlich im wesentlichen zusätzliche Hardware-Komplexitäten einführen, bestimmte
Probleme, die sie selbst betreffen, ein. Die fortgeführte Ausführung von
Instruktionen vor einer abschließenden Auflösung entweder eines Verzweigungs-Zustands
oder eines Register-Datei-Speicher-Zugriffs erfordern, daß der Zustand
der Maschine zu irgendeinem von mehreren Punkten in der Programm-Instruktions-Folge
zurückstellbar
ist, einschließlich
der Stelle der konditionalen Verzweigung, jeder Modifikation einer
Register-Datei und für
irgendein Auftreten einer Ausnahme; potentiell zu einem Punkt vor
der vollständig
abgeschlossenen Ausführung
der letzten paar Instruktionen. Demzufolge ist sogar mehr unterstützende Hardware
erforderlich und muß besonders
ausgelegt sein, um nicht wesentlich die Zykluszeit irgendeiner Pipeline-Stufe zu erhöhen.
-
RISC-Architekturen sind dahingehend
betrachtet worden, viele der vorstehenden Probleme durch drastisches
Vereinfachen der Hardware-Umsetzung der Mikroprozessor-Architektur zu vermeiden.
In dem Extremfall führt
jede RISC-Instruktion nur drei in Form einer Pipeline verknüpfte Programmzyklen,
einschließlich eines
Ladezyklus, eines Ausfüh rungszyklus
und eines Speicherzyklus, aus. Durch die Verwendung der Bypass-Führung von
Lade- und Speicher-Daten können
herkömmliche
RISC-Architekturen im wesentlichen eine einzelne Instruktion pro
Zyklus in der Drei-Stufen-Pipeline ausführen.
-
Wenn immer es möglich ist, wird eine Hardware-Unterstützung in
RISC-Architekturen
zugunsten von Softwareprogrammen zum Ausführen der erforderlichen Funktionen
minimiert. Demzufolge bringt die RISC Architektur die Hoffnung einer
wesentlichen Flexibilität
und einer hohen Geschwindigkeit durch die Verwendung einer einfachen
Lade/Speicher-Instruktions-Einstellung, die durch eine optimal angepaßte Pipeline
ausgeführt wird,
mit sich. Und in der Praxis sind RISC-Architekturen dahingehend
befunden worden, daß sie
hinsichtlich der Balance zwischen einer kurzen Hochleistungs-Pipeline
und dem Erfordernis, wesentlich größere Anzahlen von Instruktionen
auszuführen,
um alle erforderlichen Funktionen umzusetzen, von Vorteil sind.
-
Das Design der RISC-Architektur vermeidet
oder minimiert allgemein die Probleme, die mit CISC-Architekturen
verbunden sind, und zwar hinsichtlich von Verzweigungen, Register-Referenzen
und Ausnahmen. Die Pipeline, die in einer RISC Architektur eingesetzt
ist, ist kurz und hinsichtlich der Geschwindigkeit optimiert. Die
Kürze der
Pipeline minimiert die Konsequenzen eines Pipeline-Anhaltens oder
-Löschens
ebenso wie eine Minimierung der Probleme beim erneuten Speichern
des Zustands der Maschine zu einem früheren Ausführungspunkt.
-
Allerdings können wesentliche Durchsatz-Funktions-Erhöhungen gegenüber allgemein
derzeit realisierten Niveaus nicht einfach durch die herkömmliche
RISC-Architektur erreicht werden. Demzufolge sind alternativ sogenannte
Super-Skalierer-Architekturen verschiedentlich vorgeschlagen worden.
Diese Architekturen versuchen allgemein, mehrfache Instruktionen
gleichzeitig auszuführen
und dadurch proportional den Durchsatz des Prozessors zu erhöhen. Allerdings
werden solche Architekturen wiederum ähnlichen, wenn nicht derselben,
konditionalen Verzweigungs-, Register-Bezugnahme- und Ausnahme-Handhabungsproblemen
unterworfen, wie sie bei CISC-Architekturen vorhanden sind.
-
V. Popescu et al., „The Metaflow
Architecture", IEEE
Mikro, Vol. 11, No. 3, 1991, Seiten 10 bis 13, 63 bis 73, offenbart
die Metaflow-Architektur und deren Ausführung in einem Superscalar-Prozessor.
Die primären
Hardware-Elemente umfassen einen Instruktionscache, eine Registerdatei
und eine oder mehrere Ausführungseinheit(en),
alle durch Pipeline-Register separiert. Die Registerdatei bildet
einen Speicher für
acht Register. Ein Satz von bestimmten Ausführungseinheiten ist vorgesehen.
In der Abrufphase ruft der Prozessor eine Instruktion bzw. einen
Befehl von dem Instruktions-Cache ab. Die Ausgabe-Logik decodiert
partiell die Instruktion, um den Typ einer Ausführungseinheit, die benötigt wird,
zu bestimmen, und liest die Operanden der Instruktion von der Registerdatei.
In der Aktualisierungsphase wird das Ergebnis der Instruktionsausführung in die
Stelle deren Bestimmungsregister in der Registerdatei hineingeschrieben.
Es ist beschrieben, dass ein Vorteil einer Ausführung außerhalb der Reihenfolge (out-of-order)
derjenige ist, Duplikat-Ausführungseinheiten parallel
laufen zu lassen. In dem entkoppelten Ablaufplanungsschema werden
zwei aufeinanderfolgende Instruktionen pro Taktzyklus geplant bzw.
behandelt. Eine ideale Ablaufplanungseinrichtung könnte acht
Instruktionen während
der ersten vier Zyklen ablaufmäßig geplant
haben. Eine Ablagephase ist offenbart, bei der die Befehle dazu
führen,
dass sie für
eine Zeitperiode vor einem Schreiben davon zu der Registerdatei
ausgelagert werden, wobei sie von der Ergebnis-Auslagerung in die
Registerdatei bewegt werden. Instruktionen bewegen sich in die DRIS
(deferred-scheduling, register-renaming instruction shelf) zu dem
Ausgabezeitpunkt in der Reihenfolge, in der sie ausgegeben wurden.
Sie verbleiben dort, und zwar in dieser Reihenfolge, zu der Ablagezeit,
bis sie entfernt werden. Weiterhin wird eine Verzweigungsausführungseinheit
beschrieben, die eine Verzweigungsinstruktion pro Taktzyklus verarbeitet.
Die Instruktionsausgabeeinheit ruft vier Instruktionen pro Taktzyklus
ab. Der Ablageprozess kann bis zu acht Instruktionen pro Taktzyklen
ablegen.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Es ist die Aufgabe der Erfindung,
ein Verfahren zum Verarbeiten von Daten in einem Mikroprozessorsystem,
einen Superscalar-Mikroprozessor und ein Mikroprozessorsystem mit
einer wesentlich verbesserten Funktion zu schaffen.
-
Diese Aufgabe wird durch die Erfindung,
wie sie in den unabhängigen
Ansprüchen
beansprucht ist, gelöst.
-
Bevorzugte Ausführungsformen sind in den abhängigen Ansprüchen definiert.
-
Demzufolge wird eine Super-Skalar-Prozessor-Architektur,
auf RISC basierend, mit hoher Leistung, geschaffen, die wesentliche
Funktionsvorteile gegenüber
herkömmlichen
CISC- und RISC-Architekturen besitzt, und die weiterhin für eine Mikroprozessor-Umsetzung geeignet
ist.
-
Dies wird durch die Vorsehung einer
Mikroprozessor-Architektur erreicht, die in der Lage ist, gleichzeitige
Instruktionen auszuführen,
die von einem Instruktionsspeicher erhalten sind. Die Mikroprozessor-Architektur
umfaßt
eine Instruktions-Abrufeinheit zum Abrufen vorab von Instruktions-Sätzen von
dem Instruktionsspeicher. Jeder Instruktions-Satz umfaßt eine
Mehrzahl von Instruktionen mit festgelegter Länge. Eine Instruktions-FIFO
ist zum Puffern von Instruktions-Sätzen in einer Mehrzahl von
Instruktions-Satz-Puffern vorgesehen, umfassend einen ersten Puffer
und einen zweiten Puffer. Eine Instruktions-Ausführungseinheit,
umfassend eine Registerdatei und eine Mehrzahl von funktionalen
Einheiten, ist mit einer Instruktionssteuereinheit versehen, die
zum Prüfen
von Instruktionssätzen
innerhalb des ersten und des zweiten Puffers und zum Herausgeben
irgendeiner dieser Instruktionen zum Ausführen durch verfügbare, funktionale
Einheiten vorgesehen ist. Mehrfache Datenpfade zwischen den funktionalen
Einheiten und der Registerdatei ermöglichen mehrfache, unabhängige Zugriffe
auf die Registerdatei, wie dies für die gleichzeitige Ausführung der
jeweiligen Instruktionen notwendig ist.
-
Die Registerdatei umfaßt einen
zusätzlichen
Satz von Datenregistern, verwendet für die temporäre Speicherung
der Registerdaten. Diese temporären
Datenregister werden durch die Instruktionsausführungssteuereinheit verwendet,
um Daten, verarbeitet durch die funktionalen Einheiten, in der Ausführung außerhalb der
Reihenfolge von Instruktionen zu empfangen. Die Daten, die in den
temporären
Datenregistern gespeichert sind, werden selektiv gehalten, dann
gelöscht
oder erneut zu der Registerdatei aufgesucht, wenn, und falls, der
präzise
Zustand der Maschine zu der Stelle der Instruktion in der Instruktionsdatenfolge
fortschreitet, wo alle früheren
Instruktionen in der Reihenfolge vollständig ausgeführt und aufgesucht worden sind.
-
Schließlich wird das Vorababrufen
von Instruktions-Sätzen
von dem Instruktionsspeicher durch mehrfache Vorababruf-Pfade erleichtert,
die ein Vorababrufen der Hauptprogramminstruktionsfolge, einer Ziel-Konditional-Verzweigungs-Instruktions-Datenfolge
und einer prozedurale Instruktions-Datenfolge ermöglichen. Der
Ziel- bzw. Target-Konditional-Verzweigungs-Vorababruf-Pfad
ermöglicht,
daß beide
möglichen
Instruktions-Datenfolgen
für eine
konditionale Verzweigungs-Instruktion, Haupt und Target, simultan
vorab abgerufen werden. Der prozedurale Instruktions-Vorababruf-Pfad
ermöglicht
eine zusätzliche
Instruktions-Datenfolge, die dafür
effektiv ist, eine Ausführung
von erweiterten Prozeduren zu ermöglichen, die eine singuläre Instruktion ausführen, die
in der Haupt- oder
Ziel-Instruktions-Datenfolge vorgefunden werden; der prozedurale
Vorababruf-Pfad ermöglicht,
daß diese
erweiterten Prozeduren vorab abgerufen und ohne Löschen mindestens
der Haupt-Vorababruf-Puffer ausgeführt werden.
-
Demzufolge ist ein Vorteil der vorliegenden
Erfindung derjenige, daß sie
eine Architektur ermöglicht, die
einen extrem hohen Funktionsdurchsatz unter Verwendung einer fundamentalen
RISC-Typ-Core-Architektur realisiert.
-
Ein anderer Vorteil der vorliegenden
Erfindung ist derjenige, daß sie
die Ausführung
von mehrfachen Instruktionen pro Zyklus erzielt.
-
Ein weiterer Vorteil der vorliegenden
Erfindung ist derjenige, daß sie
für die
dynamische Auswahl und Verwendung von funktionalen Einheiten, notwendig,
um optimal mehrfache Instruktionen gleichzeitig auszuführen, dient.
-
Ein noch anderer Vorteil der vorliegenden
Erfindung ist derjenige, daß sie
eine Register-Datei-Einheit schafft, die integral einen Mechanismus
zum Unterstützen
einer Präzise-State-of-the-machine-Rückführ-Fähigkeit
einsetzt.
-
Ein noch anderer Vorteil der vorliegenden
Erfindung ist derjenige, daß sie
mehrfache Registerdateien innerhalb der Register-Datei-Einheit einsetzt,
die generalisiert, typisiert und für mehrfache Register-Datei-Funktionen
geeignet sind, einschließlich
einer Operation, wie mehrfache, unabhängige und parallele Integer-Register-Dateien,
einer Operation einer Registerdatei als sowohl eine Fließpunkt-
als auch Integerpunkt-Datei und einer Operation einer bezeichneten,
Boolschen Registerdatei.
-
Ein noch weiterer Vorteil der vorliegenden
Erfindung ist derjenige, daß Lade-
und Speicheroperationen und die Handhabung von Ausnahme und Unterbrechungen
in einer präzisen
Art und Weise durch die Verwendung einer Präzise-State-of-the-machine-Rückführ-Fähigkeit durchgeführt werden
kann, umfassend effiziente Instruktions-Aufhebungs-Mechanismen und einen Lade/Speicher-Reihenfolge-Synchronisierer.
-
Ein noch weiterer Vorteil der Erfindung
ist die Vorsehung einer zugeordneten bzw. dedizierten Register-Datei-Einheit-Unterstützung von
Trap-Zuständen,
um so eine Latenz zu minimieren und einen Verarbeitungsdurchsatz
zu erhöhen.
-
Ein noch weiterer Vorteil der vorliegenden
Erfindung ist die Vorsehung von Haupt- und Target-Verzweigungs-Instruktions-Vorababruf-Warteschlangen,
wodurch sogar eine nicht korrekte Target- bzw. Ziel-Verzweigungs-Datenfolge-Ausführung im
voraus minimal den gesamten Verarbeitungsdurchsatz beeinträchtigt,
der durch die vorliegende Erfindung erhaltbar ist. Weiterhin ermöglicht die
prozedurale Instruktions-Vorababruf-Warteschlange eine effiziente
Art und Weise eines Eingriffs in die Ausführung der Haupt- oder Target-Verzweigungs-Instruktions-Datenfolge,
um die effektive Ausführung
von neuen Instruktionen durch die Ausführung von prozeduralen Programmen
zu ermöglichen
und um wesentlich die extern gelieferte Revision der prozeduralen
Programme, ausführend
Built-in-Prozedural-Instruktionen,
ermöglicht.
-
Kurze Beschreibung
der Zeichnungen
-
Diese und andere Vorteile und Merkmale
der vorliegenden Erfindung werden besser unter Berücksichtigung
der nachfolgenden, detaillierten Beschreibung der Erfindung verstanden
werden, wenn sie in Verbindung mit den beigefügten Zeichnungen gesehen wird,
in der entsprechende Bezugszeichen entsprechende Teile durch die
Figuren hinweg bezeichnen, und wobei:
-
1 zeigt
ein vereinfachtes Blockdiagramm der bevorzugten Mikroprozessor-Architektur, die
die vorliegende Erfindung ausführt;
-
2 zeigt
ein detailliertes Blockdiagramm der Instruktions-Abrufeinheit, die
gemäß der vorliegenden Erfindung
aufgebaut ist;
-
3 zeigt
ein Blockdiagramm der Programm-Zähler-Logik-Einheit,
die gemäß der vorliegenden
Erfindung aufgebaut ist;
-
4 zeigt
ein weiteres, detailliertes Blockdiagramm der Programm-Zähler-Daten
und der Steuerpfad-Logik;
-
5 zeigt
ein vereinfachtes Blockdiagramm der Instruktions-Ausführungs-Einheit
der vorliegenden Erfindung;
-
6a zeigt
ein vereinfachtes Blockdiagramm der Register-Datei-Architektur,
die in einer bevorzugten Ausführungsform
der vorliegenden Erfindung verwendet wird;
-
6b zeigt
eine graphische Darstellung des Speicher-Register-Formats der Temporär-Puffer-Register-Datei,
und die Daten, die in einer bevorzugten Ausführungsform der vorliegenden
Erfindung verwendet sind;
-
6c zeigt
eine graphische Darstellung der Primär- und Sekundär-Instruktions-Sätze, wie sie in den letzten
zwei Stufen der Instruktions-FIFO-Einheit der vorliegenden Erfindung
vorhanden sind;
-
7a–7c zeigen eine graphische
Darstellung der rekonfigurierbaren Zustände des Primär-Integer-Register-Satzes,
wie er gemäß einer
bevorzugten Ausführung
der vorliegenden Erfindung vorgesehen ist;
-
8 zeigt
eine graphische Darstellung eines rekonfigurierbaren Gleitpunkt-
und Sekundär-Integer-Register-Satzes,
wie er gemäß der bevorzugten
Ausführungsform
der vorliegenden Erfindung vorgesehen ist;
-
9 zeigt
eine graphische Darstellung eines tertiären Boolschen Register-Satzes, wie dies
in einer bevorzugten Ausführungsform
der vorliegenden Erfindung vorgesehen ist;
-
10 zeigt
ein detailliertes Blockdiagramm des Primär-Integer-Verarbeitungs-Datenpfad-Bereichs der
Instruktions-Ausführungs-Einheit,
die gemäß der bevorzugten
Ausführungsform
der vorliegenden Erfindung aufgebaut ist;
-
11 zeigt
ein detailliertes Blockdiagramm des Primär-Fließkomma-Datenpfad-Bereichs der Instruktions-Ausführungs-Einheit,
die gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung aufgebaut ist;
-
12 zeigt
ein detailliertes Blockdiagramm des Boolschen Operations-Datenpfad-Bereichs
der Instruktions-Ausführungs-Einheit,
wie sie gemäß der bevorzugten
Ausführungsform
der vorliegenden Erfindung aufgebaut ist;
-
13 zeigt
ein detailliertes Blockdiagramm einer Lade/Speicher-Einheit, die
gemäß der bevorzugten Ausführungsform
der vorliegenden Erfindung aufgebaut ist;
-
14 zeigt
ein Zeitabstimmungsdiagramm, das die bevorzugte Operations-Sequenz einer bevorzugten
Ausführungsform
der vorliegenden Erfindung beim Ausführen von mehrfachen Instruktionen
gemäß der vorliegenden
Erfindung darstellt;
-
15 zeigt
ein vereinfachtes Blockdiagramm der virtuellen Speicher-Steuereinheit, wie
sie gemäß der bevorzugten
Ausführungsform
der vorliegenden Erfindung aufgebaut ist;
-
16 zeigt
eine graphische Darstellung des virtuellen Speicher-Steuer-Algorithmus, wie
er in einer bevorzugten Ausführungsform
der vorliegenden Erfindung verwendet wird; und
-
17 zeigt
ein vereinfachtes Blockdiagramm der Cache-Steuereinheit, wie sie
in einer bevorzugten Ausführungsform
der vorliegenden Erfindung verwendet wird.
-
Detaillierte Beschreibung
der Erfindung
-
- I. Übersicht
der Mikroprozessor-Architektur
- II. Instruktions-Abruf-Einheit
- A) IFU-Datenpfad
- B) IFU-Steuerpfad
- C) IFU/IEU-Steuerschnittstelle
- D) Detail der PC-Logik-Einheit
- 1) Detail der PF- und ExPC-Steuer/Daten-Einheit
- 2) Detail des PC-Steuer-Algorithmus
- E) Unterbrechungs- und Ausnahme-Handhabung
- 1) Übersicht
- 2) Asynchrone Unterbrechungen
- 3) Synchrone Ausnahmen
- 4) Hantierer-Versenden und -Rückführen
- 5) Verschachtelung
- 6) Liste von Traps
- III. Instruktions-Ausführungs-Einheit
- A) Detail des IEU-Datenpfads
- 1) Detail der Register-Datei
- 2) Detail des Integer-Datenpfads
- 3) Detail des Fließkomma-Datenpfads
- 4) Detail des Boolschen Register-Datenpfads
- A) Lade/Speicher-Steuereinheit
- B) Detail des IEU-Steuerpfads
- 1) Detail der E-Decodiereinheit
- 2) Detail der Übertragungs-Prüfungs-Einheit
- 3) Detail der Daten-Abhängigkeits-Prüfungs-Einheit
- 4) Detail der Register-Umbenennungs-Einheit
- 5) Detail der Instruktions-Ausgabeeinrichtungs-Einheit
- 6) Detail der Erledigt-Steuereinheit
- 7) Detail der Ablage-Steuereinheit
- 8) Detail der Steuerfluß-Steuereinheit
- 9) Detail der Bypass-Steuereinheit
- IV. Steuereinheit des virtuellen Speichers
- V. Cache-Steuereinheit
- VI. Zusammenfassung/Schlußfolgerung
-
I. Übersicht der Mikroprozessor-Architektur:
-
Die Architektur 100 der
vorliegenden Erfindung ist allgemein in 1 dargestellt. Eine Instruktions-Abruf-Einheit
(Instruction Fetch Unit – IFU) 102 und
eine Instruktions-Ausführungs-Einheit
(Instruction Execution Unit – IEU) 104 sind
die prinzipiellen, operativen Elemente der Architektur 100.
Eine virtuelle Speicher-Einheit (Virtual Memory Unit – VMU) 108,
eine Cache-Steuereinheit (Cache Control Unit – CCU) 106 und eine
Speicher-Steuereinheit
(Memory Control Unit – MCU) 110 sind
vorgesehen, um direkt die Funktion der IFU 102 und der
IEU 104 zu unterstützen.
Eine Speicherfeld-Einheit (Memory Array Unit – MAU) 112 ist auch
als ein allgemein wesentliches Element für die Operation der Architektur 100 vorgesehen,
obwohl die MAU 112 nicht direkt als eine integrale Komponente
der Architektur 100 existiert. Das bedeutet, daß in den
bevorzugten Ausführungsformen
der vorliegenden Erfindung die IFU 102, die IEU 104,
die VMU 108, die CCU 106 und die MCU 110 auf
einer einzelnen Siliziumplatte hergestellt sind, und zwar unter
Verwendung eines Niedrigenergie-CMOS-Prozesses mit einer 0,8 Micron
Designregel und einige 1.200.000 Transistoren aufweisend. Die Standard-Prozessor-
oder System-Taktgeschwindigkeit
der Architektur 100 beträgt 40 MHz. Allerdings beträgt, gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung, die interne Prozessor-Taktgeschwindigkeit
160 MHz.
-
Die IFU 102 ist primär für den Abruf
von Instruktionen, die Pufferung von ausführungsabhängigen Instruktionen durch
die IEU 104 und, allgemein, für die Berechnung der nächsten,
virtuellen Adresse, die für
den Abruf der nächsten
Instruktion verwendet werden soll, zuständig.
-
In den bevorzugten Ausführungsformen
der vorliegenden Erfindung sind Instruktionen jeweils bei einer Länge von
32 Bits festgelegt. Instruktions-Sätze, oder "Speicherbereiche" (Buckets), von vier Instruktionen werden
durch die IFU 102 simultan von einem Instruktions-Cache 132 innerhalb
der CCU 106 über
einen 128 Bit breiten Instruktions-Bus 114 abgerufen. Die Übertragung
von Instruktions-Sätzen
wird zwischen der IFU 102 und der CCU 106 durch
Steuersignale koordiniert, die über
einen Steuer-Bus 116 geliefert werden. Die virtuelle Adresse
eines Instruktions-Satzes, der abgerufen werden soll, wird durch
die IFU 102 über
eine IFU kombinierte Entscheidung, einen Steuer- und Adressen-Bus 108,
basierend auf einer gemeinsam geteilten Entscheidung, einen Steuer- und Adressen-Bus 120,
der weiterhin zwischen der IEU 104 und der VMU 108 gekoppelt
ist, geliefert. Eine Entscheidung für einen Zugriff auf die VMU 108 entsteht
aus der Tatsache, daß sowohl
die IFU 102 als auch die IEU 104 die VMU 108 als
eine gemeinsam geteilte Ressource verwenden. In der bevorzugten
Ausführungsform
der Architektur 100 werden Bits niedriger Ordnung, die
eine Adresse innerhalb einer physikalischen Seite der virtuellen
Adresse definieren, direkt durch die IFU 102 zu der Cache-Steuereinheit 106 über die
Steuerleitungen 116 übertragen.
Die Virtualisierungen von Bits höherer
Ordnung der virtuellen Adresse, die durch die IFU 102 zugeführt ist,
werden durch den Adressen- Bereich
der Busse 118, 120 zu der VMU 108 für eine Translation
in eine entsprechende, physikalische Seiten-Adresse geliefert. Für die IFU 102 wird
diese physikalische Seiten-Adresse
direkt von der VMU 108 zu der Cache-Steuereinheit 106 über die Adressen-Steuerleitungen 122,
einen halben, internen Prozessorzyklus nachdem die Translationsanforderung mit
der VMU 108 plaziert ist, übertragen.
-
Die Instruktions-Folge, die durch
die IFU 102 abgerufen ist, wird wiederum über einen
Instruktions-Folge-Bus 124 zu der IEU 104 geliefert.
Steuersignale werden zwischen der IFU 102 und der IEU 104 über Steuerleitungen 126 ausgetauscht.
Zusätzlich
werden bestimmte Instruktions-Abruf-Adressen, typischerweise solche,
die einen Zugriff auf die Register-Datei erfordern, die innerhalb
der IEU 104 vorhanden ist, zurück zu der IFU über einen
Ziel-Adressen-Rückführungs-Bus
innerhalb der Steuerleitungen 126 geliefert.
-
Die IEU 104 speichert Daten
in Bezug auf einen Daten-Cache 134 und sucht sie auf, der
innerhalb der CCU 106 vorgesehen ist, und zwar über einen
80 Bit breiten bidirektionalen Daten-Bus 130. Die gesamte,
physikalische Adresse für
IEU-Daten-Zugriffe ist über
einen Adressen-Bereich des Steuer-Busses 128 zu der CCU 106 vorgesehen.
Der Steuer-Bus 128 dient auch für den Austausch von Steuersignalen
zwischen der IEU 104 und der CCU 106 zum Handhaben
von Daten-Übertragungen.
Die IEU 104 verwendet die VMU 108 als eine Ressource
zum Wandeln einer virtueller Daten-Adresse in physikalische Daten-Adressen,
die für
eine Sendeübergabe
zu der CCU 106 geeignet sind. Der virtualisierende Bereich
der Daten-Adresse wird über
den Entscheidungs-, Steuer- und Adressen-Bus 120 zu der
VMU 108 zugeführt.
Im Gegensatz zu der Operation in Bezug auf die IFU 102 führt die
VMU 108 die entsprechende, physikalische Adresse über den
Bus 120 zu der IEU 104 zurück. In den bevorzugten Ausführungsformen
der Architektur 100 erfordert die IEU 104 die
physikalische Adresse zur Verwendung beim Sicherstellen, daß Lade/Speicheroperationen
in einer geeigneten Programm-Folgen-Reihenfolge auftreten.
-
Die CCU 106 führt die
allgemein konventionelle Hoch-Niveau-Funktion einer Bestimmung durch,
ob über
eine physikalische Adresse definierte Anforderung nach Daten von
den Instruktions- und Daten-Cache-Speichern 132, 134 erfüllt werden
können,
wie dies geeignet ist. Dort, wo die Zugriffs-Anforderung geeignet
durch Zugriff auf die Instruktions- oder Daten-Cache-Speicher 132, 134 erfüllt werden
kann, koordiniert die CCU 106 die Datenübertragung über die Daten-Busse 114, 128 und
führt sie
durch.
-
Dort, wo eine Daten-Zugriffs-Anforderung
nicht von den Instruktions- oder Daten-Cache-Speichern 132, 134 erfüllt werden
kann, liefert die CCU 106 die entsprechende, physikalische
Adresse zu der MCU 110 zusammen mit ausreichenden Steuerinformationen,
um zu identifizieren, ob ein Lese- oder Schreib-Zugriff der MAU 112 erwünscht ist,
und zwar der Source- bzw. Quellen- oder Bestimmungs-Cache 132, 134 der
CCU 106 für
jede Anforderung, und zusätzliche,
identifizierende Informationen, um zu ermöglichen, daß die Anforderungs-Operation
zu der ultimativen Daten-Anforderung, wie sie durch die IFU 102 oder
IEU 104 ausgegeben ist, korrelierbar ist.
-
Die MCU 110 umfaßt vorzugsweise
eine Anschluß-Umschalt-Einheit 142,
die mit einem unidirektionalen Daten-Bus 136 mit dem Instruktions-Cache 132 der
CCU 106 und einem bidirektionalen Daten-Bus 138 zu dem
Daten-Cache 134 verbunden ist. Der Anschluß-Umschalter 142 ist
im wesentlichen ein großer
Multiplexer, der die Übertragung
einer physikalischen Adresse, die von dem Steuer-Bus 140 erhalten
ist, zu irgendeinem eine Anzahl von Anschlüssen P0–PN 1460–n und
die bidirektionale Übertragung
von Daten von den Anschlüssen
zu den Daten-Bussen 136, 138 ermöglicht.
Jede Speicher-Zugriffs-Anforderung,
die durch die MCU 110 verarbeitet ist, ist einem der Anschlüsse 1460–n zu
Zwecken einer Entscheidung für
einen Zugriff zu dem Hauptsystem-Speicher-Bus 162, wie
dies für
einen Zugriff der MAU 112 erforderlich ist, zugeordnet.
Wenn einmal eine Daten-Übertragungs-Verbindung
eingerichtet worden ist, liefert die MCU Steuerinformationen über den
Steuer-Bus 140 zu der CCU 106, um die Übertragung
von Daten zwischen entweder dem Instruktions- oder Daten-Cache 132, 134 und
der MAU 112 über
den Anschluß-Umschalter 142 und
den entsprechenden einen der Anschlüsse 1460–n zu
initiieren. Entsprechend mit den bevorzugten Ausführungsformen
der Architektur 100 speichert oder verriegelt die MCU 110 nicht
tatsächlich
Daten beim Übergang
zwischen der CCU 106 und der MAU 112. Dies wird
vorgenommen, um eine Latenz bei der Übertragung zu minimieren und
um das Erfordernis für
eine Spurung oder Handhabung von Daten zu vermeiden, die einmalig
in der MCU 110 vorhanden sein können.
-
II. Instruktions-Abruf-Einheit:
-
Die primären Elemente der Instruktions-Abruf-Einheit 102 sind
in 2 dargestellt. Die
Operation und die Beziehung dieser Elemente untereinander kann am
besten unter Betrachtung deren Partizipierung in den IFU Daten-Steuerpfaden
verstanden werden.
-
A) IFU-Datenpfad:
-
Der IFU-Datenpfad beginnt mit dem
Instruktions-Bus 114, der Instruktions-Sätze für eine temporäre Speicherung
in einem Vorababruf-Puffer 260 aufnimmt. Ein Instruktions-Satz von dem Vorababruf-Puffer 260 wird
durch eine IDecodiereinheit 262 und dann zu einer IFIFO-Einheit 264 weitergeführt. Die
Instruktions-Sätze,
die in den letzten zwei Stufen des Instruktions-FIFO 264 gespeichert
sind, sind kontinuierlich, über
die Daten-Busse 278, 280, zu der IEU 104 verfügbar.
-
Die Vorababruf-Puffer-Einheit 260 empfängt einen
einzelnen Instruktions-Satz zu einem Zeitpunkt vom Instruktions-Bus 114.
Der Instruktions-Satz mit einer Breite von vollen 138 Bits wird
allgemein parallel zu einem von vier Vorababruf-Puffer-Stellen mit
128 Bit Breite in einem Bereich eines Haupt-Puffers (Main Buffer – MBUF) 188 des
Vorababruf-Puffers 160 eingeschrieben.
Bis zu vier zusätzliche
Instruktions-Sätze
können ähnlich in
zwei Vorababruf-Puffer-Stellen eines Target-Puffers (Target Buffer – TBUF)
mit einer Breite von 128 Bits oder zu zwei Vorababruf-Puffer-Stellen
eines prozeduralen Puffers (Procedural Buffer – EBUF) mit einer Breite von
128 Bits eingeschrieben werden. In der bevorzugten Architektur 100 kann
ein Instruktions-Satz in irgendeiner der Vorababruf-Puffer-Stellen innerhalb
des MBUF 188, des TBUF 190 oder des EBUF 192 zu
dem Vorababruf-Puffer-Ausgangs-Bus 196 übertragen werden. Zusätzlich ist
ein direkter Abfall über
den Instruktions-Satz-Bus 194 vorgesehen, um den Instruktions-Bus 114 direkt
mit dem Vorababruf-Puffer-Ausgangs-Bus 196 zu verbinden,
um dadurch den MBUF, den TBUF und den EBUF 188, 190, 192,
im Bypass zu umgehen.
-
In der bevorzugten Architektur 100 wird
der MBUF 188 zu Puffer-Instruktions-Sätzen
in dem nominalen oder Haupt-Instruktions-Fluß verwendet. Der TBUF 190 wird
zu Pufferinstruktionen verwendet, die von einem versuchsweisen Zielverzweigungs-Instruktionsstrom
abgerufen sind. Demzufolge ermöglicht
die Vorababruf-Puffer-Einheit 260, daß beide, mögliche Instruktionsflüsse einer
konditionalen Verzweigungs-Instruktion folgen, die vorab abgerufen
werden soll. Diese Einrichtung vermeidet die Latenz für weitere
Zugriffe auf zumindest die CCU 106, wenn nicht sogar die
wesentlich größere Latenz
einer MAU 112, um den korrekten, nächsten Instruktions-Satz für eine Ausführung zu
erhalten, die einer konditionalen Verzweigungs-Instruktion folgt,
und zwar ungeachtet des bestimmten Instruktionsflusses, der eventuell
unter Auflösung
der konditionalen Verzweigungs-Instruktion ausgewählt ist.
In der bevorzugten Architektur 100 der Erfindung ermöglicht die
Vorsehung der MBUF 188 und der TBUF 190, daß die Instruktions-Abruf-Einheit
102 sowohl
eine potentielle Instruktions-Folge vorab abruft als auch, wie nachfolgend
in Bezug auf die Instruktions-Ausführungs-Einheit 104 diskutiert
werden wird, weiterhin eine Ausführung
der vorab angenommenen, korrekten Instruktions-Folge ermöglicht.
Dort, wo unter Auflösung
der konditionalen Verzweigungs-Instruktion der korrekten Instruktions-Folge vorab in den
MBUF 188 hinein abgerufen worden ist, können irgendwelche Instruktions-Sätze in dem
TBUF 190 einfach für
ungültig
erklärt
werden. Alternativ liefert dort, wo Instruktions-Sätze der
korrekten Instruktions-Folge in dem TBUF 190 vorhanden
sind, die Instruktionsvorabruf-Puffer-Einheit 160 eine
direkte, laterale Übertragung
dieser Instruktions-Sätze
von dem TBUF 190 zu jeweiligen Puffer-Stellen in dem MBUF 188.
Die in dem MBUF 188 gespeicherten Instruktions-Sätze werden
effektiv für
ungültig
erklärt,
wenn sie durch von dem TBUF 190 übertragene Instruktions-Sätze überschrieben
werden. Dort, wo kein TBUF-Instruktions-Satz, der zu einer MBUF-Stelle übertragen
ist, vorhanden ist, wird diese Stelle einfach als ungültig markiert.
-
Ähnlich
ist der EBUF 192 als ein anderer, alternativer Vorabruf-Pfad
durch den Vorababruf-Puffer 260 vorgesehen. Der EBUF 192 wird
vorzugsweise bei dem Vorababrufen einer alternativen Instruktions-Folge
verwendet, die dazu verwendet wird, eine Operation auszuführen, die
durch eine einfache Instruktion, eine "prozedurale" Instruktion, spezifiziert ist, die
in der Instruktions-Folge des MBUF 188 enthalten ist. Auf
diese Art und Weise können
komplexe oder erweiterte Instruktionen durch Softwareprogramme,
oder Prozeduren, ausgeführt
werden, und über
die Vorababruf-Puffer-Einheit 260 ohne Stören der
Instruktions-Folge, die bereits in den MBUF 188 hinein
vorab abgerufen sind, verarbeitet werden. Obwohl die vorliegende
Erfindung allgemein ein Handhaben prozeduraler Instruktionen ermöglicht,
die zuerst in dem TBUF 190 vorhanden sind, wird ein Vorababrufen
der prozeduralen Instruktions-Folge bei allen zuvor anhängigen,
konditionalen Verzweigungs-Instruktionen vorgenommen, die aufgelöst sind.
Dies ermöglicht,
daß konditionale
Verzweigungs-Instruktionen, die in der prozeduralen Instruktions-Folge
auftreten, konsistent über
die Verwendung des TBUF 190 gehandhabt werden. Demzufolge
werden dort, wo eine Verzweigung in der prozeduralen Folge vorgenommen
ist, die Ziel-Instruktions-Sätze zuvor
in den TBUF 190 hinein abgerufen worden sein und können einfach
lateral zu dem EBUF 192 übertragen werden. Schließlich werden
sowohl der MBUF 188 als auch der TBUF 190 und
der EBUF 192 mit dem Vorabpuffer-Ausgangs-Bus 196 gekoppelt,
um so irgendeinen Instruktions-Satz, gespeichert durch die Vorababruf-Einheit, auf
dem Ausgangs-Bus 196 zu liefern. Zusätzlich ist ein Fluß durch
den Bus 194 vorgesehen, um direkt einen Instruktions-Satz
von dem Instruktions-Bus 114 zu dem Ausgangs-Bus 196 zu übertragen.
-
In der bevorzugten Architektur 100 bilden
die Vorababruf-Puffer innerhalb des MBUF 188, des TBUF 190,
des EBUF 192 nicht direkt eine FIFO-Struktur. Anstelle
davon ermöglicht
die Vorsehung einer Verbindungsmöglichkeit
irgendeiner Pufferstelle zu dem Ausgangs-Bus 196 einen
wesentlichen Freiheitsgrad bei der Vorababruf-Reihenfolge der Instruktions-Sätze, die
von dem Instruktions-Cache 132 aufgesucht sind. Das bedeutet,
daß die
Instruktions-Abruf-Einheit 102 allgemein Instruktions-Sätze in der
geeigneten Instruktions-Folge-Reihenfolge von Instruktionen bestimmt
und anfordert. Allerdings ist hinsichtlich der Reihenfolge, in der
Instruktions-Sätze
zu der IFU 102 zurückgeführt werden,
zugelassen, daß sie
nicht in einer Reihenfolge auftreten, wie dies geeignet ist, um
den Umständen
Rechnung zu tragen, bei denen angeforderte Instruktions-Sätze von
der CCU 106 alleine verfügbar und zugänglich sind,
und andere erfordern einen Zugriff auf die MAU 112.
-
Obwohl Instruktions-Sätze nicht
in der Reihenfolge zu der Vorababruf-Einheit 260 zurückgeführt werden
können,
muß die
Sequenz einer Instruktions-Satz-Ausgabe auf dem Ausgangs-Bus 196 allgemein
mit der Reihenfolge von Instruktions-Satz-Anforderungen übereinstimmen,
die durch die IFU 102 ausgegeben sind; die Instruktions-Folge-Sequenz
in Reihenfolge, die Gegenstand von, zum Beispiel, einer versuchsweisen
Ausführung
eines Vielverzweigungsflusses ist.
-
Die IDecodiereinheit 262 nimmt
Instruktions-Sätze
auf, allgemein einen pro Zyklus, die der Raum der IFIFO-Einheit 264 zuläßt, und
zwar von dem Vorababruf-Puffer-Ausgangs-Bus 196.
Jeder Satz aus vier Instruktionen, der einen einzelnen Instruktions-Satz bildet, wird
parallel durch die IDecodiereinheit 262 decodiert. Während relevante
Steuerfluß-Informationen über Leitungen 318 zugunsten
des Steuerpfad-Bereichs der IFU 102 extrahiert werden,
werden die Inhalte des Instruktions-Satzes nicht durch die IDecodiereinheit 262 verändert.
-
Instruktions-Sätze von der IDecodiereinheit 162 werden
auf einen Eingangs-Bus 198 mit einer Breite von 128 Bits
der IFIFO-Einheit 264 geliefert. Intern besteht die IFIFO-Einheit 264 aus
einer Sequenz von Master/Slave-Registern 200, 204, 208, 212, 216, 220, 224.
Jedes Register ist mit seinem Nachfolger verbunden, um zu ermöglichen,
daß die Inhalte
der Master-Register 200, 208, 216 während eines
ersten halben, internen Prozessorzyklus einer FIFO-Operation zu
den Slave-Registern 204, 212, 220 und
dann zu dem nächsten,
darauffolgenden Master-Register 208, 216, 224 während der
Operation des darauffolgenden halben Zyklus übertragen werden können. Der
Eingangs-Bus 198 ist mit dem Eingang jedes der Master-Register 200, 208, 216, 224 verbunden,
um ein Laden eines Instruktions-Satzes von der IDecodiereinheit 262 direkt
in ein Master-Register während
des zweiten halben Zyklus einer FIFO-Operation zu ermöglichen.
Allerdings muß ein
Laden eines Master-Registers von dem Eingangs-Bus 198 nicht
simultan mit einer FIFO-Verschiebung
von Daten innerhalb der IFIFO-Einheit 264 auftreten. Demzufolge
kann die IFIFO-Einheit 264 kontinuierlich von dem Eingangs-Bus 198 ungeachtet
der momentanen Tiefe von Instruktions-Sätzen, die innerhalb der Instruktions-FIFO-Einheit 264 gespeichert
sind, und, weiterhin, unabhängig
der FIFO-Verschiebung von Daten über die
IFIFO-Einheit 264 gefüllt
werden.
-
Jedes der Master/Slave-Register 200, 204, 208, 212, 216, 220, 224 liefert,
zusätzlich
zu einer Vorsehung der vollen, parallelen Speicherung eines Instruktions-Satzes
einer Breite von 128 Bits, auch eine Speicherung von verschiedenen
Bits von Steuerinformationen in den jeweiligen Steuer-Registern 202, 206, 210, 214, 218, 222, 226.
Der bevorzugte Satz von Steuer-Bits umfaßt Ausnahme-Fehlen und Ausnahme-Modifizieren,
(VMU), keinen Speicher (MCU), Verzweigungs-Vorspannung bzw. -Beurteilung,
Folge und Offset (IFU). Diese Steuerinformation hat ihren Ursprung
von dem Steuerpfad-Bereich der IFU 102 simultan mit dem
Laden eines IFIFO-Master-Registers mit einem neuen Instruktions-Satz von dem Eingangs-Bus 198.
Danach werden die Steuer-Register-Informationen parallel gleichzeitig
mit den Instruktions-Sätzen über die
IFIFO-Einheit 264 verschoben.
-
Schließlich wird in der bevorzugten
Architektur 100 die Ausgabe von Instruktions-Sätzen von der IFIFO-Einheit 264 simultan
von den letzten zwei Master-Registern 216, 224 auf
den I_Bucket_0 und I_Bucket_1 Instruktions-Satz-Ausgangs-Bussen 278, 280 erhalten.
Zusätzlich
werden die entsprechenden Steuer-Register-Informationen auf den
IBASV0- und den IBASV1-Steuerfeld-Bussen 282, 284 geliefert.
Diese Ausgangs-Busse 278, 282, 280, 284 sind
alle als Instruktions-Folge-Bus 124 zu der IEU 104 vorgesehen.
-
B) IFU-Steuerpfad:
-
Der Steuerpfad für die IFU 102 unterstützt direkt
die Operation der Vorababruf-Puffer-Einheit 260,
der IDecodiereinheit 262 und der IFIFO-Einheit 264.
Eine Vorababruf- Steuer-Logik-Einheit 266 managt
primär
die Operation der Vorababruf-Puffer-Einheit 260. Die Vorababruf-Steuer-Logik-Einheit 266 und
die IFU 102 empfangen allgemein das Systemtaktsignal über die
Taktleitung 260 zum Synchronisieren von IFU-Operationen mit
denjenigen der IEU 104, der CCU 106 und der VMU 108.
Steuersignale, die für
die Auswahl und das Schreiben von Instruktions-Sätzen in den MBUF 188,
den TBUF 190 und den EBUF 192 hinein geeignet
sind, werden auf den Steuerleitungen 304 geliefert.
-
Eine Anzahl von Steuersignalen ist
auf den Steuerleitungen 316 zu der Vorababruf-Steuer-Logik-Einheit 266 vorgesehen.
Genauer gesagt wird ein Abrufanforderungs-Steuersignal geliefert, um eine Vorababruf-Operation
zu initiieren. Andere Steuersignale, die auf der Steuerleitung 316 geliefert
werden, identifizieren die vorgesehene Bestimmung der angeforderten
Vorababruf-Operation dahingehend, daß sie der MBUF 188, der
TBUF 190 oder der EBUF 192 ist. In Abhängigkeit
einer Vorababruf-Anforderung erzeugt die Vorababruf-Steuer-Logik-Einheit 166 einen
ID-Wert und bestimmt, ob die Vorababruf-Anforderung zu der CCU 106 verschickt
werden kann. Die Erzeugung des ID-Werts wird über die Verwendung eines zirkularen
Vier-Bit-Zählers vorgenommen.
-
Die Verwendung eines Vier-Bit-Zählers ist
in dreierlei Hinsicht wesentlich. Zunächst kann beispielsweise ein
Maximum von neun Instruktions-Sätzen
zu einem Zeitpunkt in der Vorababruf-Puffer-Einheit 260 aktiv sein;
vier Instruktions-Sätze
in dem MBUF 188, zwei in dem TBUF 190, zwei in
dem EBUF 192 und einer, der direkt zu der IDecodiereinheit 262 über den
Fluß durch
den Bus 194 geliefert wird. Zweitens umfassen Instruktions-Sätze vier
Instruktionen aus vier Bytes jeweils. Demzufolge sind die signifikantesten
vier Bits irgendeiner Adresse, die einen Instruktions-Satz zum Abrufen
auswählt, überflüssig. Schließlich kann
der Vorababruf-Anforderungs-ID-Wert leicht einer Vorababruf-Anforderung durch
Einsetzen als die signifikantesten vier Bits der Vorababruf-Anforderungs-Adresse
zugeordnet werden; dadurch wird die ganze Anzahl von Adressenleitungen reduziert,
die erforderlich ist, um mit der CCU 106 schnittstellenmäßig zu verbinden.
-
Um zu ermöglichen, daß Instruktions-Sätze zu der
CCU 106 außerhalb
der Reihenfolge in Bezug auf die Sequenz von Vorababruf-Anforderungen,
ausgegeben durch die IFU 102, zurückgeführt werden, dient die Architektur 100 für die Rückführung des
ID-Anforderungswerts
mit der Rückführung von
Instruktions-Sätzen von
der CCU 106. Allerdings kann die Instruktions-Satz-Rückführungsfähigkeit
außerhalb
der Reihenfolge zu der Abgabe der sechzehn einzigartigen IDs führen. Eine
Kombination von konditionalen Instruktionen, die außerhalb
der Reihenfolge ausgeführt
sind, was zu zusätzlichen
Vorababrufungen und Instruktions-Sätzen führt, die angefordert sind,
allerdings noch nicht zurückgeführt sind,
kann zu einer potentiellen Wiederverwendung eines ID-Werts führen. Deshalb
wird der Vier-Bit-Zähler
vorzugsweise gehalten und keine weiteren Instruktions-Satz-Vorababruf-Anforderungen
werden ausgegeben, wo der nächste
ID-Wert derselbe wie derjenige sein würde, der einer noch ausstehenden
Abruf-Anforderung oder einem anderen Instruktions-Satz, die dann
in dem Vorababruf-Puffer 260 anhängig sind, zugeordnet ist.
-
Die Vorababruf-Steuer-Logik-Einheit 266 managt
direkt ein Vorababruf-Status-Feld 268, das Status-Speicher-Stellen
enthält,
die logisch jeder Instruktions-Satz-Vorababruf-Puffer-Stelle innerhalb des MBUF 188,
des TBUF 190 und des EBUF 192 entsprechen. Die
Vorababruf-Steuer-Logik-Einheit 266 kann, über Auswahl-
und Datenleitungen 306, Daten abtasten, lesen und zu dem
Status-Register-Feld 268 hin schreiben. Innerhalb des Felds 268 dient
ein Haupt-Puffer-Register 308 zur Speicherung von vier
ID-Werten mit vier Bits (MB ID), vier Einzel-Bit-Umkehr-Zeichen
(MB RES) und vier Einzelbit-Gültigkeits-Zeichen (MB VAL),
wobei jedes davon durch eine logische Bit-Position den jeweiligen
Instruktions-Satz-Speicher-Stellen innerhalb des MBUF 180 entspricht. Ähnlich dienen
ein Ziel-Puffer-Register 310 und ein erweitertes Puffer-Register 312 jeweils
für die
Speicherung von zwei Vier-Bit-ID-Werten (TB ID, EB ID), zwei Einzelbit-Umkehrzeichen
(TB RES, EB RES) und zwei Einzel-Bit-Gültigkeitszeichen (TB VAL, EB
VAL). Schließlich
dient ein Fluß durch
ein Status-Register 314 für die Speicherung eines Einzel-Vier-Bit-ID-Werts
(FT ID), eines Einzel-Umkehr-Zeichenbits (FR RES) und eines Einzel-Gültigkeits-Zeichenbits
(FT VAL).
-
Das Status-Register-Feld 268 wird
zuerst abgetastet und entsprechend so, wie dies geeignet ist, durch die
Vorababruf-Steuer-Logik-Einheit 266 zu jedem Zeitpunkt,
zu dem eine Vorababruf-Anforderung innerhalb der CCU 106 plaziert
und darauffolgend abgetastet wird, und zu jedem Zeitpunkt, zu dem
ein Instruktions-Satz zurückgeführt wird,
aktualisiert. Genauer gesagt erhöht,
unter Empfang des Vorababruf-Anforderungs-Signals über die
Steuerleitungen 316, die Vorababruf-Steuer-Logik-Einheit 216 den
momentanen in dem zirkularen Zähler
erzeugten ID-Wert, tastet das Status-Register-Feld 268 ab,
um zu bestimmen, ob der ID-Wert zur Verwendung verfügbar ist
und ob eine Vorababruf-Puffer- Stelle
des Typs, der durch das Vorababruf-Anforderungs-Signal spezifiziert
ist, verfügbar
ist, prüft
den Status der CCU IBUSY Steuerleitung 300, um zu bestimmen,
ob die CCU 106 eine Vorababruf-Anforderung annehmen kann,
und stellt, falls dies der Fall ist, ein CCU IREAD Steuersignal
auf der Steuerleitung 298 auf und plaziert den erhöhten ID-Wert
auf dem CCU-ID-Ausgangs-Bus 294 zu der CCU 106.
Eine Vorababruf-Speicher-Stelle ist zur Verwendung dort verfügbar, wo
sowohl das entsprechende, umgekehrte als auch das Gültigkeits-Status-Zeichen
falsch sind. Die Vorababruf-Anforderung-ID wird in die ID-Speicherstelle innerhalb
des Status-Register-Felds 268 entsprechend zu der vorgesehenen
Speicherstelle innerhalb des MBUF 188, des TBUF 190 oder
des EBUF 192 gleichzeitig mit der Plazierung der Anforderung
an der CCU 106 eingeschrieben. Zusätzlich wird das entsprechende,
umgekehrte Status-Zeichen auf wahr eingestellt.
-
Wenn die CCU 106 in der
Lage ist, einen zuvor angeforderten Instruktions-Satz zu der IFU 102 zurückzuführen, wird
das CCU IREADY-Signal auf die Steuerleitung 302 gegeben
und die entsprechende Instruktions-Satz-ID wird auf die CCU-ID-Steuerleitungen 296 gegeben.
Die Vorababruf-Steuer-Logik-Einheit 266 tastet die ID-Werte
und umgekehrten Zeichen innerhalb des Status-Register-Felds 268 ab,
um die vorgesehene Bestimmung des Instruktions-Satzes innerhalb
der Vorababruf-Puffer-Einheit 260 zu identifizieren. Nur
eine einzelne Anpassung ist möglich.
Wenn der Instruktions-Satz einmal identifiziert ist, wird er über den
Bus 114 in die geeignete Stelle innerhalb der Vorababruf-Puffer-Einheit 260 eingeschrieben,
oder, wenn er als ein Fluß durch
eine Anforderung identifiziert ist, wird er direkt zu der IDecodiereinheit 262 geliefert.
In jedem Fall wird das Gültigkeits-Status-Zeichen
in dem entsprechenden Status-Register-Feld auf wahr gesetzt.
-
Die PC-Logik-Einheit 270 spurt,
wie nachfolgend im größeren Detail
beschrieben werden wird, die virtuelle Adresse der Instruktions-Ströme des MBUF 188,
des TBUF 190 und des EBUF 192 durch die gesamte IFU 102.
Beim Durchführen
dieser Funktion steuert der PC-Logik-Block 270 und arbeitet
auch von der IDecodiereinheit 262 aus. Genauer gesagt werden
Teile der Instruktionen, die durch die IDecodiereinheit 262 als
potentiell relevant zu einer Änderung
in dem Programm-Instruktions-Stromfluß decodiert sind, auf dem Bus 318 zu
einer Steuerströmungs-Erfassungs-Einheit 274 und
direkt zu dem PC-Logik-Block 270 geliefert.
Die Steuerfluß-Erfassungs-Einheit 274 identifiziert
jede Instruktion in dem decodierten Instruktions-Satz, die eine
Steuerfluß-Instruktion
bildet, die konditionale und nicht konditionale Verzweigungs-Instruktionen,
Aufruf-Typ-Instruktionen, Software- Trap-Prozedur-Instruktionen und verschiedene
Rückführ-Instruktionen
bilden. Die Steuerfluß-Erfassungs-Einheit 274 liefert
ein Steuersignal, und zwar über
Leitungen 322, zu der PC-Logik-Einheit 270, um
die Stelle und die spezifische Art der Steuerfluß-Instruktionen innerhalb des
Instruktions-Satzes zu identifizieren, der in der IDecodiereinheit 262 vorhanden
ist. Die PC-Logik-Einheit 270 bestimmt wiederum die Ziel-Adresse
der Steuerfluß-Instruktion, typischerweise
aus Daten, die innerhalb der Instruktion geliefert und zu der PC-Logik-Einheit über Leitungen 318 übertragen
sind. Dort, wo zum Beispiel eine Verzweigungs-Logik-Bias ausgewählt worden
ist, um zuvor konditionale Verzweigungs-Instruktionen auszuführen, wird die PC-Logik-Einheit 270 damit
beginnen, das Vorababrufen von Instruktions-Sätzen von der konditionalen
Verzweigungs-Instruktions-Ziel-Adresse
zu richten und separat zu spuren. Demzufolge wird mit der nächsten Geltendmachung
einer Vorababruf-Anforderung auf den Steuerleitungen 316 die
PC-Logik-Einheit 270 weiterhin ein Steuersignal, und zwar über Leitungen 316,
aufstellen, was die Bestimmung des Vorababrufens, der TBUF 190 zu
sein, aufstellt, unter der Annahme, daß vorherige Vorababruf-Instruktions-Sätze zu dem
MBUF 188 oder dem EBUF 192 gerichtet wurden. Wenn
einmal die Vorababruf-Steuer-Logik-Einheit 266 bestimmt,
daß eine
Vorababruf-Anforderung zu der CCU 106 zugeführt werden
kann, liefert die Vorababruf-Steuer-Logik-Einheit 266 ein Freigabesignal,
wiederum über
Leitungen 316, zu der PC-Logik-Einheit 270, um die Vorsehung eines
Seiten-Offset-Bereichs der Target-Adresse (CCU PADDR [13:4]) über die
Adressen-Leitungen 324 direkt zu der CCU 106 freizugeben.
Zur selben Zeit liefert die PC-Logik-Einheit 270 dort,
wo eine neue, virtuelle zur physikalischen Seitentranslation erforderlich
ist, weiterhin ein VMU-Anforderungssignal über Steuerleitungen 328 und
den virtualisierenden Teil der Ziel-Adresse (VMU VADDR [31:14]) über die
Adressen-Leitungen 326 zu der VMU 108 für eine Translation
in eine physikalische Adresse. Dort, wo eine Seitentranslation nicht
erforderlich ist, ist keine Operation durch die VMU 108 erforderlich.
Im Gegensatz dazu wird das vorherige Translationsergebnis in einer
Ausgangsverriegelung, gekoppelt mit dem Bus 122, für eine unmittelbare
Benutzung durch die CCU 106 beibehalten.
-
Operationsmäßige Fehler in der VMU 108 beim
Durchführen
der virtuellen zur physikalischen Translation, angefordert durch
die PC-Logik-Einheit 270, werden über die VMU-Ausnahme- und VMU-Fehl-Steuerleitungen 332, 334 berichtet.
Die VMU-Fehl-Steuerleitung 334 berichtet
einem Translations-Look-Aside-Puffer (TLB) ein Fehlen. Das VMU-Ausnahme-Steuersignal,
auf der VMU-Ausnahmeleitung 332, wird für alle anderen Ausnahmen angehoben.
In beiden Fällen
handhabt die PC-Logik-Einheit den Fehlerzustand durch Speichern
des momentanen Ausführungspunkts
in der Instruktions-Folge und nimmt dann ein Vorababrufen, wie bei
der Antwort auf eine nicht konditionale Verzweigung, einer zugeordneten
Ausnahme-Handhabungs-Programm-Instruktions-Folge zum Diagnostizieren
und Handhaben des Fehlerzustands, vor. Die VMU-Ausnahme und Fehl-Steuersignale identifizieren
die allgemeine Art der Ausnahme, die vorhanden ist, um dadurch der PC-Logik-Einheit 270 zu
ermöglichen,
die Vorababruf-Adresse eines entsprechenden Ausnahme-Handhabungs-Programms
zu identifizieren.
-
Die IFIFO-Steuer-Logik-Einheit 272 ist
vorgesehen, um direkt die IFIFO-Einheit 264 zu unterstützen. Genauer
gesagt liefert die PC-Logik-Einheit 270 ein Steuersignal über die
Steuerleitungen 336, um der IFIFO-Steuer-Logik-Einheit 272 zu
signalisieren, daß ein
Instruktions-Satz auf dem Eingangs-Bus 198 von der IDecodiereinheit 262 verfügbar ist.
Die IFIFO-Steuereinheit 272 ist für eine Auswahl des tiefsten,
verfügbaren Master-Registers 200, 208, 216, 224 zur
Aufnahme des Instruktions-Satzes verantwortlich. Der Ausgang jedes der
Master-Steuer-Register 202, 210, 218, 226 wird
zu der IFIFO-Steuereinheit 272 über den Steuer-Bus 338 geliefert.
Die Steuer-Bits, die durch jedes Master-Steuer-Register gespeichert sind, umfassen
eine Zwei-Bit-Puffer-Adresse (IF_Bx_ADR), ein Einzel-Fluß-Indikator-Bit
(IF_Bx_STRM) und ein Einzel-Gültigkeits-Bit
(IF_Bx_VLD). Die Zwei-Bit-Puffer-Adresse
identifiziert die erste Gültigkeits-Instruktion
innerhalb des entsprechenden Instruktions-Satzes. Das bedeutet,
daß Instruktions-Sätze, die
durch die CCU 106 zurückgeführt sind,
nicht so ausgerichtet werden können,
daß die
Ziel-Instruktion einer Verzweigungs-Operation zum Beispiel in der
anfänglichen
Instruktionsstelle innerhalb des Instruktions-Satzes angeordnet
ist. Demzufolge wird der Puffer-Adressen-Wert geliefert, um einzigartig
die anfängliche
Instruktion innerhalb eines Instruktions-Satzes zu identifizieren,
der zur Ausführung
berücksichtigt
werden soll.
-
Das Fluß-Bit wird im wesentlichen
als ein Markierer verwendet, um die Stelle von Instruktions-Sätzen zu
identifizieren, die konditionale Steuer-Fluß-Instruktionen enthalten,
und geben Anlaß zu
potentiellen Steuerfluß-Änderungen,
und zwar in dem Fluß der
Instruktionen durch die IFIFO-Einheit 264. Der Haupt-Instruktions-Fluß wird durch
den MBUF 188 im allgemeinen mit einem Fluß-Bit-Wert
von 0 verarbeitet. Beim Auftreten einer relativen, konditionalen
Verzweigungs-Instruktion zum Beispiel wird der entsprechende Instruktions-Satz mit
einem Fluß-Bit-Wert
von 1 markiert. Die konditionale Verzweigungs-Instruktion wird durch die IDecodiereinheit 262 erfaßt. Bis
zu vier konditionale Steuerfluß-Instruktionen können in
dem Instruktions-Satz vorhanden sein. Der Instruktions-Satz wird
dann in dem tiefsten, verfügbaren
Master-Register der IFIFO-Einheit 264 gespeichert.
-
Um die Ziel-Adresse der konditionalen
Verzweigungs-Instruktion zu bestimmen, werden die Ausführungs-Punkt-Adressen
(DPC) zu der momentanen IEU 104, die relative Stelle des
die konditionale Instruktion enthaltenden Instruktions-Satzes, wie
dies durch das Flußfolge-Bit
identifiziert ist, und das konditionale Instruktions-Stellen-Offset
in dem Instruktions-Satz, wie dies durch den Steuerfluß-Detektor 274 geliefert
wird, mit dem relativen Verzweigungs-Offset-Wert, wie er von einem
entsprechenden Verzweigungs-Instruktions-Feld über Steuerleitungen 318 erhalten
ist, kombiniert. Das Ergebnis ist eine virtuelle Verzweigungs-Ziel-Adresse, die
durch die PC-Logik-Einheit 270 gespeichert wird. Die anfänglichen
Instruktions-Sätze
der Ziel-Instruktions-Folge können
dann in dem TBUF 190 unter Verwendung dieser Adresse vorab
abgerufen werden.
-
In Abhängigkeit von der zuvor ausgewählten Verzweigungs-Bias,
ausgewählt
für die
PC-Logik-Einheit 270, wird die IFIFO-Einheit 264 fortfahren,
von entweder dem MBUF 188 oder dem TBUF 190 geladen
zu werden. Falls ein zweiter Instruktionssatz, der eine oder mehrere
konditionale Fluß-Instruktionen
enthält,
vorgefunden wird, wird der Instruktions-Satz mit einem Flußfolge-Bit-Wert von 0 markiert.
Da die zweite Ziel-Flußfolge
nicht abgerufen werden kann, wird die Ziel-Adresse berechnet und
durch die PC-Logik-Einheit 270 gespeichert, allerdings
wird kein Vorababrufen durchgeführt.
Zusätzlich
können
keine weiteren Instruktions-Sätze über die
IDecodiereinheit 262 verarbeitet werden, oder zumindest
keine, die dahin befunden sind, eine konditionale Fluß-Steuer-Instruktion
zu enthalten.
-
Die PC-Logik-Einheit 270 kann,
in den bevorzugten Ausführungsformen
der vorliegenden Erfindung, bis zu acht konditionale Fluß-Instruktionen
managen, die in bis zu zwei Instruktions-Sätzen auftreten. Die Ziel-Adressen
für jeden
der zwei Instruktions-Sätze,
die durch Flußfolge-Bit-Änderungen
markiert sind, werden in einem Feld aus vier Adressen-Registern gespeichert,
wobei jede Ziel-Adresse logisch in Bezug auf die Stelle der entsprechenden,
konditionalen Fluß-Instruktion
in dem Instruktions-Satz positioniert ist.
-
Wenn einmal das Verzweigungsergebnis
der konditionalen Flußinstruktion
in Reihenfolge aufgelöst ist,
wird die PC-Logik-Einheit 270 die Vorababruf-Steuereinheit 260 dahingehend
richten, und zwar über
Steuersignale auf Leitungen 316, die Inhalte des TBUF 190 zu
dem MBUF 188 zu übertragen,
wenn die Verzweigung vorgenommen ist, und um die Inhalte des TBUF 190 als
ungültig
zu markieren. Irgendwelche Instruktions-Sätze
in der IFIFO-Einheit 264 von der nicht korrekten Instruktions-Flußfolge,
einer Ziel-Flußfolge,
wenn die Verzweigung nicht herangezogen wird, und einer Haupt-Flußfolge,
falls die Verzweigung herangezogen wird, werden von der IFIFO-Einheit 264 gelöscht. Falls
eine zweite oder darauffolgende, konditionale Strömungs-Steuerinstruktion
in dem mit dem ersten Flußfolge-Bit
markierten Instruktions-Satz existiert, wird diese Instruktion in
einer konsistenten Art und Weise gehandhabt: die Instruktions-Sätze von
der Ziel-Flußfolge werden
vorab abgerufen, Instruktions-Sätze
von dem MBUF 188 oder dem TBUF 190 werden über die
IDecodiereinheit 262 in Abhängigkeit von der Verzweigungs-Bias verarbeitet
und die IFIFO-Einheit 264 wird in Bezug auf nicht korrekte
Flußfolge-Instruktions-Sätze gelöscht, wenn
sich die konditionale Fluß-Instruktion
schließlich auflöst.
-
Wenn ein sekundärer, konditionaler Fluß-Instruktions-Satz
in der IFIFO-Einheit 264 verbleibt, wenn einmal die IFIFO-Einheit 264 von
nicht korrekten Flußfolge-Instruktions-Sätzen gelöscht ist, und der erste, konditionale
Fluß-Instruktions-Satz
keine weiteren, konditionalen Fluß-Instruktionen enthält, werden
die Ziel-Adressen des mit dem zweiten Flußfolge-Bit markierten Instruktions-Satzes
zu dem ersten Feld von Adress-Registern überführt. In jedem Fall kann ein
nächster
Instruktions-Satz, der konditionale Fluß-Instruktionen enthält, dann über die IDecodiereinheit 262 evaluiert
werden. Demzufolge ermöglicht
die Toggle-Benutzung des Flußfolge-Bits,
daß sich
der potentielle Steuerfluß so ändert, um über die
IFIFO-Einheit 264 markiert und gespurt zu werden, und zwar
zu Zwecken einer Berechnung von Verzweigungs-Ziel-Adressen und zum Markieren
der Instruktions-Satz-Stelle oberhalb der dort zu löschen ist,
wo die Verzweigungs-Bias darauffolgend dahingehend bestimmt ist,
nicht korrekt für
eine bestimmte, konditionale Fluß-Steuer-Instruktion gewesen zu sein.
-
Im Gegensatz dazu, tatsächlich Instruktions-Sätze von
den Master-Registern zu löschen,
setzt die IFIFO-Steuer-Logik-Einheit 272 einfach das Gültigkeits-Bit-Zeichen
in den Steuer-Registern der entsprechenden Master-Register der IFIFO-Einheit 264 zurück. Der
Löschungsvorgang
wird durch die PC-Logik-Einheit 270 in einem Steuersignal,
das auf Leitungen 336 geliefert wird, eingeleitet. Die
Eingänge
jeder der Master-Steuer-Register 202, 210, 218, 226 sind
direkt durch die IFIFO-Steuer-Logik-Einheit 272 über den
Status- Bus 230 zugreifbar.
In der bevorzugten Architektur 100 können die Bits innerhalb dieser
Master-Steuer-Register 202, 210, 218, 226 durch
die IFIFO-Steuereinheit 272 gleichzeitig zu oder unabhängig von
einem Datenverschiebevorgang durch die IFIFO-Einheit 264 eingestellt
werden. Diese Fähigkeit
ermöglicht,
daß ein
Instruktions-Satz in irgendeinem der Master-Register 200, 208, 216, 224 eingeschrieben
werden kann und die entsprechenden Status-Informationen in die Master-Steuer-Register 202, 210, 218, 226 asynchron
in Bezug auf die Operation der IEU 104 eingeschrieben werden
können.
-
Schließlich gibt eine zusätzliche
Steuerleitung auf dem Steuer-Status-Bus 230 die FIFO-Operation
der IFIFO-Einheit 264 frei und führt sie. Eine IFIFO-Verschiebung
wird durch die IFIFO-Steuer-Logik-Einheit 272 in Abhängigkeit
des Verschiebe-Anforderungs-Steuersignals,
geliefert durch die PC-Logik-Einheit 270, über die
Steuerleitungen 236 durchgeführt. Die IFIFO-Steuereinheit. 272 liefert,
basierend auf der Verfügbarkeit
eines Master-Registers 200, 208, 216, 224,
um einen Instruktions-Satz zu empfangen, ein Steuersignal, und zwar über Leitungen 316,
zu der Vorababruf-Steuereinheit 266, um die Übertragung
eines nächsten,
geeigneten Instruktions-Satzes von den Vorababruf-Puffern 260 anzufordern.
Bei der Übertragung
des Instruktions-Satzes wird das entsprechende Gültigkeits-Bit in dem Feld 268 zurückgesetzt.
-
C) IFU/IEU-Steuerschnittstelle:
-
Die Steuerschnittstelle zwischen
der IFU 102 und der IEU 104 wird durch den Steuer-Bus 126 erzielt. Dieser
Steuer-Bus 126 ist mit der PC-Logik-Einheit 270 verbunden
und besteht aus einer Anzahl von Steuer-Adress- und spezialisierten
Datenleitungen. Unterbrechungs-Anforderungs- und Rückmeldungs-Steuersignale,
wie sie über
die Steuerleitungen 340 geführt werden, ermöglichen
der IFU 102, Unterbrechungs-Operationen mit der IEU 104 zu
signalisieren und damit zu synchronisieren. Ein extern erzeugtes
Unterbrechungssignal wird auf einer Leitung 292 zu der
logischen Einheit 270 geliefert. Daraufhin verursacht ein
Unterbrechungs-Anforderungs-Steuersignal, geliefert auf Leitungen 340,
daß die
IEU 104 versuchsweise ausgeführte Instruktionen aufhebt.
Informationen, die sich auf die Art einer Unterbrechung beziehen,
werden über
Unterbrechungs-Informationsleitungen 341 ausgetauscht.
Wenn die IEU 104 bereit ist, damit zu beginnen, Instruktions-Sätze aufzunehmen,
die von der Unterbrechungs-Service-Programm-Adresse vorab abgerufen
sind, bestimmt durch die PC-Logik-Einheit 270, stellt die
IEU 104 ein Unterbrechungs-Rückmeldungs-Steuersignal auf den
Leitungen 340 auf. Eine Ausführung des Unterbrechungs-Service-Programms,
wie es vorab durch die IFU 102 abgerufen ist, wird dann
beginnen.
-
Ein IFIFO-Lese-(IFIFO RD)-Steuersignal
wird durch die IEU 104 geliefert, um zu signalisieren,
daß der Instruktions-Satz,
der in dem tiefsten Master-Register 224 vorhanden ist,
vollständig
ausgeführt
worden ist, und daß ein
nächster
Instruktions-Satz erwünscht
ist. Unter Empfangen dieses Steuersignals leitet die PC-Logik-Einheit 270 die
IFIFO-Steuer-Logik-Einheit 272 so,
um eine IFIFO-Verschiebe-Operation an der IFIFO-Einheit 264 durchzuführen.
-
Ein PC-Erhöhungs-Anforderungs- und -Größenwert
(PC INC/SIZE) wird auf den Steuerleitungen 344 geliefert,
um die PC-Logik-Einheit 270 so zu führen, den momentanen Programm-Zählerwert
durch eine entsprechende Größenzahl
von Instruktionen zu aktualiseren. Dies ermöglicht der PC-Logik-Einheit 270,
einen Punkt eines Ausführungs-Programm-Zählers (DPC)
beizubehalten, der zu der Stelle der ersten Ausführungs-Instruktion in Reihenfolge in der momentanen
Programm-Instruktions-Flußfolge
präzise
ist.
-
Eine Ziel-Adresse (TARGET ADDR) wird
auf den Adressen-Leitungen 346 zu der PC-Logik-Einheit 270 zurückgeführt. Die
Ziel-Adresse ist die virtuelle Ziel-Adresse einer Verzweigungs-Instruktion,
die von Daten abhängig
ist, die innerhalb der Register-Datei der IEU 104 gespeichert
sind. Eine Operation der IEU 104 ist deshalb erforderlich,
um die Ziel-Adresse
zu berechnen.
-
Steuer-Fluß-Ergebnis-(CF RESULT)-Steuersignale
werden auf den Steuerleitungen 348 zu der PC-Logik-Einheit 270 geliefert,
um zu identifizieren, ob irgendeine momentan anhängige, konditionale Verzweigungs-Instruktion
aufgelöst
worden ist und ob das Ergebnis entweder eine Verzweigung ist, die
genommen ist, oder die nicht genommen ist. Basierend auf diesen
Steuersignalen kann die PC-Logik-Einheit 270 bestimmen,
welcher der Instruktions-Sätze
in dem Vorababruf-Puffer 260 und der IFIFO-Einheit 264 aufgerufen werden
muß, falls
dies der Fall ist als eine Folge der Ausführung der konditionalen Ablauf-Instruktion.
-
Eine Zahl von IEU-Instruktions-Rückführungs-Typ-Steuersignalen
(IEU Return) wird auf den Steuerleitungen 350 geliefert,
um die IFU 102 an die Ausführung bestimmter Instruktionen
durch die IEU 104 zu erinnern. Diese Instruktionen umfassen
eine Rückführung von
einer prozedurmäßigen Instruktion,
eine Rückführung von
einer Trap und eine Rückführung von
einem Unterprogammaufruf. Die Rückführung von
einer Trap-Instruktion wird ebenso in Hardware-Unterbrechungs- und
Software-Trap-Handhabungs-Programmen verwendet. Die Unterprogramm-Aufruf-Rückführung wird
auch in Verbindung mit Aufruf-Vorgängen vom
Typ Sprung und Verknüpfung
verwendet. In jedem Fall werden die Rückführ-Steuersignale vorgesehen,
um die IFU 102 daran zu erinnern, deren Instruktions-Aufruf-Operation
in Bezug auf die zuvor unterbrochene Instruktions-Flußfolge wieder
aufzunehmen. Der Ursprung der Signale von der IEU 104 ermöglicht,
daß die
präzise Operation
des Systems 100 beibehalten wird; die Wiederaufnahme einer "unterbrochenen" Instruktions-Flußfolge wird
an dem Punkt einer Ausführung
der Rückführ-Instruktion
durchgeführt.
-
Eine momentane Instruktions-Ausführungs-PC-Adresse
(momentane IF_PC) wird auf einem Adressen-Bus 352 zu der
IEU 104 geliefert. Dieser Adressenwert, der DPC, identifiziert
die präzise
Instruktion, die durch die IEU 104 ausgeführt werden
soll. Das bedeutet, daß,
während
die IEU 104 versuchsweise Vorinstruktionen nach der momentanen
IF_PC-Adresse ausführen
kann, diese Adresse zu Zwecken einer präzisen Steuerung der Architektur 100 in
Bezug auf das Auftreten von Unterbrechungen, Ausnahmen und irgendwelchen
anderen Ereignissen beibehalten werden muß, die eine Kenntnis des präzisen Zustands
der Maschine erfordern würden.
Wenn die IEU 104 bestimmt, daß der präzise Zustand der Maschine in
der momentanen Ausführungs-Instruktions-Flußfolge weitergeführt werden
kann, wird das PC-Inc/Size-Signal zu der IFU 102 geliefert
und unmittelbar zurück
in den momentanen IF_PC-Adressenwert reflektiert.
-
Schließlich wird ein Adressen- und
bidirektionaler Daten-Bus 354 für die Übertragung von speziellen Register-Daten
vorgesehen. Diese Daten können
in spezielle Register innerhalb der IFU 102 durch die IEU 104 programmiert
oder davon ausgelesen werden. Spezielle Register-Daten werden allgemein
durch die IEU 104 zur Verwendung durch die IFU 102 geladen
oder berechnet.
-
D) Detail der PC-Logik-Einheit:
-
Ein detailliertes Diagramm der PC-Logik-Einheit 270,
die eine PC-Steuereinheit 362, eine Unterbrechungs-Steuereinheit 363,
eine Vorababruf-PC-Steuereinheit 364 und eine Ausführungs-PC-Steuereinheit 366 umfaßt, ist
in 3 dargestellt. Die
PC-Steuereinheit 362 liefert
eine Zeitabstimmungs-Steuerung über
die Vorababruf- und Ausführungs-PC-Steuereinheiten 364, 366 in
Abhängigkeit
von Steuersignalen von der Vorababruf-Steuer-Logik-Einheit 266,
der IFIFO-Steuer-Logik-Einheit 272 und der IEU 104,
und zwar über
den Schnittstellen-Bus 126. Die Unterbrechungs-Steuereinheit 363 ist
für die
Handhabung der präzisen
Verarbeitung von Unterbrechungen und Ausnahmen verantwortlich, einschließlich der
Bestimmung eines Vorababruf-Trap-Adressen-Offsets, das ein geeignetes
Handhabungs-Programm auswählt,
um einen jeweiligen Typ einer Trap zu verarbeiten. Die Vorababruf-PC-Steuereinheit 364 ist,
insbesondere, zum Handhaben von Programm-Zählern verantwortlich, die dazu
notwendig sind, die Vorababruf-Puffer 188, 190, 192,
einschließlich Speicher-Rückführ-Adressen
für Trap-Handhabungs-
und prozedurmäßige Unterprogramm-Instruktions-Flüsse zu unterstützen. Bei
der Unterstützung
dieser Operation ist die Vorababruf-PC-Steuereinheit 364 für eine Erzeugung
der virtuellen Vorababruf-Adresse verantwortlich, umfassend die
CCU PADDER-Adresse auf den physikalischen Adressen-Busleitungen 324 und
der VMU VMADDR-Adresse auf den Adressen-Leitungen 326. Demzufolge ist
die Vorababruf-PC-Steuereinheit 364 zum Beibehalten des
virtuellen, momentanen Vorababruf-PC-Adressen-Werts verantwortlich.
-
Die Vorababruf-Operation wird allgemein
durch die IFIFO-Steuer-Logik-Einheit 272 über ein
Steuersignal initiiert, das auf den Steuerleitungen 316 geliefert
wird. In Abhängigkeit
davon erzeugt die PC-Steuereinheit 362 eine Anzahl von
Steuersignalen, die auf den Steuerleitungen 372 geliefert
werden, um die Vorababruf-PC-Steuereinheit 364 so zu betreiben,
um die PADDR- und, falls benötigt,
die VMADDR-Adressen auf den Adressen-Leitungen 324, 326 zu
erzeugen. Ein Erhöhungs-Signal,
das einen Wert von 0 bis vier besitzt, kann auch auf den Steuerleitungen 374 geliefert
werden, und zwar in Abhängigkeit
davon, ob die PC-Steuereinheit 362 ein Instruktions-Satz-Abrufen
an der momentanen Vorababruf-Adresse, ein Ausrichten für die zweite
in einer Reihe von Vorababruf-Anforderungen,
oder ein Auswählen
des nächsten,
vollen, sequentiellen Instruktions-Satzes für ein Vorababrufen ausführt. Schließlich wird
die momentane Vorababruf-Adresse
PF_PC auf dem Bus 370 zu der Ausführungs-PC-Steuereinheit 366 geliefert.
-
Neue Vorababruf-Adressen stammen
von einer Anzahl von Quellen. Eine primäre Quelle von Adressen ist
die momentane IF_PC Adresse, die von der Ausführungs-PC-Steuereinheit 366 über einen
Bus 352 geliefert wird. Prinzipiell liefert die IF_PC Adresse
eine Rückführ-Adresse
für die
darauffolgende Verwendung durch die Vorababruf-PC-Steuereinheit 364,
wenn ein anfänglicher
Ruf, eine Trap oder eine prozedurmäßige Instruktion auftritt.
Die IF_PC Adresse wird in Registern in der Vorababruf-PC-Steuereinheit 364 bei
jedem Auftreten dieser Instruktionen gespeichert. Auf diese Art
und Weise muß die
PC-Steuereinheit 362, beim Empfang eines IEU Rückführungs-Signals, über Steuerleitungen 350,
nur das entsprechend Rückführ-Adressen-Register
innerhalb der Vorababruf-PC-Steuereinheit 364 auswählen, um
eine neue, virtuelle Vorababruf-Adresse quellenmäßig einzugeben, um dadurch
den originalen Programm-Instruktions-Stromfluß wieder anzunehmen.
-
Eine andere Quelle von Vorababruf-Adressen
ist der Ziel-Adressen-Wert, der auf dem relativen Ziel-Adressen-Bus 382 von
der Ausführungs-PC-Steuereinheit 366 oder
auf dem absoluten Ziel-Adressen-Bus 346, geliefert von
der IEU 104, geliefert wird. Relative Ziel-Adressen sind
solche, die durch die Ausführungs-PC-Steuereinheit 366 direkt
berechnet werden können.
Absolute Ziel-Adressen müssen
durch die IEU 104 erzeugt werden, da solche Ziel-Adressen
von Daten abhängig
sind, die in der IEU-Register-Datei enthalten sind. Die Ziel-Adresse
wird über
den Ziel-Adressen-Bus 384 zu der Vorababruf-PC-Steuereinheit 364 zur Verwendung
als eine virtuelle Vorababruf-Adresse geführt. Beim Berechnen der relativen
Ziel-Adresse wird ein Operandenteil der entsprechenden Verzweigungs-Instruktion
auch auf dem Operanden-Verschiebungsteil des Busses 318 von
der IDecodiereinheit 262 geliefert.
-
Eine andere Quelle von virtuellen
Vorababruf-Adressen ist die Ausführungs-PC-Steuereinheit 366.
Ein Rückführ-Adressen-Bus 352' ist vorgesehen,
um den momentanen IF_PC-Wert (DPC) zu der Vorababruf-PC-Steuereinheit 364 zu übertragen.
Diese Adresse wird als eine Rückführ-Adresse
dort verwendet, wo eine Unterbrechung, eine Trap oder eine andere
Steuerfluß-Instruktion,
wie beispielsweise ein Ruf, innerhalb der Instruktions-Folge aufgetreten
ist. Die Vorababruf-PC-Steuereinheit 364 ist dann frei,
um eine neue Instruktions-Folge vorab abzurufen. Die PC-Steuereinheit 362 empfängt ein
IEU-Rückführsignal über Leitungen 350 von
der IEU 104, wenn einmal das entsprechende Unterbrechungs-
oder Trap-Handhabungs-Programm oder -Unterprogramm ausgeführt worden
ist. Hieraufhin wählt
die PC-Steuereinheit 362, über eines der PFPC-Steuersignale
auf der Leitung 372 und basierend auf einer Identifikation
der Rückführ-Instruktion,
die so ausgeführt ist,
wie sie über
Leitung 350 geliefert ist, ein Register aus, das die momentane,
virtuelle Rückführ-Adresse
enthält.
Diese Adresse wird dann dazu verwendet, die Vorababruf-Operation
durch die PC-Logik-Einheit 270 fortzuführen.
-
Schließlich ist eine andere Quelle
von virtuellen Vorababruf-Adressen eine solche von dem speziellen Register-Adressen-
und Daten-Bus 354. Ein Adressen-Wert, oder mindestens ein
Basis-Adressen-Wert, berechnet oder geladen durch die IEU 104,
wird als Datensatz über
den Bus 354 zu der Vorababruf-PC-Steuereinheit 364 übertragen.
Die Basis-Adressen umfassen die Basis-Adressen für die Trap-Adressen-Tabelle,
eine schnelle Trap-Tabelle und eine Basis-Prozedur-Instruktions-Versende-Tabelle.
Der Bus 354 ermöglicht
auch, daß viele
der Register in den Vorababruf- und Ausführungs-PC-Steuereinheiten 364, 366 gelesen
werden können,
um entsprechende Aspekte über
den Zustand der Maschine, damit er über die IEU 104 manipuliert
werden kann, zu lesen.
-
Die Ausführungs-PC-Steuereinheit 366,
die der Steuerung der PC-Steuereinheit 362 unterliegt,
ist primär
für eine
Berechnung des momentanen IF_PC Adressen-Werts verantwortlich. In
dieser Rolle antwortet die Ausführungs-PC-Steuereinheit 366 auf
Steuersignale, die durch die PC-Steuereinheit 362 auf den
ExPC-Steuerleitungen 378 geliefert werden, und auf Erhöhungs/Größen-Steuersignale,
die auf den Steuerleitungen 380 geliefert werden, um die
IF_PC Adresse einzustellen. Diese Steuersignale werden primär in Abhängigkeit
des IFIFO-Lese-Steuersignals, geliefert auf der Leitung 342,
und des PC-Erhöhungs/Größen-Werts,
geliefert auf den Steuerleitungen 344, von der IEU 104 erzeugt.
-
1) Detail der PF- und
ExPC-Steuer-Daten-Einheit:
-
4 gibt
ein detailliertes Blockdiagramm der Vorababruf- und Ausführungs-PC-Steuereinheiten 364, 366 an.
Diese Einheiten bestehen primär
aus Registern, Inkrementoren und dergleichen, Selektoren und Addiererblöcken. Eine
Steuerung zum Managen der Übertragung
von Daten zwischen diesen Blöcken
wird durch die PC-Steuereinheit 362 über die PFPC-Steuerleitungen 372,
die ExPC-Steuerleitungen 378 und die Inkrementierungs-
bzw. Erhöhungs-Steuerleitungen 374, 380 vorgenommen.
Zum Zwecke der Deutlichkeit sind diese spezifischen Steuerleitungen
nicht in dem Blockdiagramm der 4 dargestellt.
Allerdings sollte verständlich
werden, daß diese
Steuersignale zu den Blöcken
so zugeführt
werden, wie dies hier beschrieben ist.
-
Zentral zu der Vorababruf-PC-Steuereinheit 364 ist
ein Vorababruf-Selektor (PF_PC SEL) 390 vorhanden, der
als ein zentraler Selektor der momentanen, virtuellen Vorababruf-Adressen
arbeitet. Diese momentane Vorababruf-Adresse wird auf den Ausgangs-Bus 392 von
dem Vorababruf-Selektor zu einer Inkrementator-Einheit 394 gegeben,
um eine nächste
Vorababruf-Adresse zu erzeugen. Diese nächste Vorababruf-Adresse wird
auf dem Inkrementator-Ausgangs-Bus 396 zu einem parallelen
Feld aus Registern MBUF PFnPC 398, TBUF PFnPC 400 und
EBUF PFnPC 402 geliefert. Diese Register
398, 400, 402 speichern
effektiv die nächste Instruktions-Vorababruf-Adresse.
Allerdings werden gemäß der bevorzugten
Ausführungsform
der vorliegenden Erfindung separate Vorababruf-Adressen für den MBUF- 188,
den TBUF 190 und den EBUF 192 gehalten. Die Vorababruf-Adressen
werden, wie sie durch die M-BUF, TBUF- und EBUF PFnPC-Register 398, 400, 402 gespeichert
sind, jeweils durch die Adressen-Busse 404, 408, 410 zu
dem Vorababruf-Selektor 390 geliefert. Demzufolge kann
die PC-Steuereinheit 362 direkt eine unmittelbare Umschaltung
der Vorababruf-Instruktions-Folge nur durch Führen der Auswahl durch den
Vorabauswahl-Selektor 390, eines anderen einen der Vorababruf-Register 398, 400, 402,
führen.
Wenn der Adressen-Wert einmal durch den Inkrementator 394 erhöht worden
ist, falls ein nächster
Instruktions-Satz in der Flußfolge
vorab abgerufen werden soll, wird der Wert zu dem geeigneten einen
der Vorababruf-Register 398, 400, 402 zurückgeführt. Ein
anderes, paralleles Feld aus Registern ist, zur Vereinfachung als
ein einzelner, spezieller Register-Block 412 dargestellt,
vorgesehen, um eine Anzahl von speziellen Adressen zu speichern.
Der Register-Block 412 umfaßt ein Trap-Rückführ-Adressen-Register,
ein prozedurales Instruktions-Rückführ-Adressen-Register,
ein prozedurales Instruktions-Versende-Tabellen-Basis-Adressen-Register,
ein Trap-Programm-Versende-Tabelle-Basis-Adressen-Register
und ein schnelles Trap-Programm-Tabellen-Basis-Adressen-Register. Unter der Steuerung
der PC-Steuereinheit 362 können diese Rückführ-Adressen-Register
die momentane IF_PC Ausführungs-Adresse über den
Bus 352' empfangen.
Die Adressen-Werte, die durch die Rückführ- und Basis-Adressen-Register innerhalb
des Register-Blocks 412 gespeichert sind, können beide
unabhängig
durch die IEU 104 gelesen und beschrieben werden. Das Register
wird ausgewählt
und Werte werden über
den speziellen Register-Adressen- und Daten-Bus 354 übertragen.
-
Ein Selektor innerhalb des speziellen
Register-Blocks 412, gesteuert durch die PC-Steuereinheit 362, ermöglicht,
daß Adressen
durch die Register des Register-Blocks 412 gespeichert
werden, die auf den speziellen Register-Ausgangs-Bus 416 zu
dem Vorababruf-Selektor 390 gegeben werden sollen. Rückführ-Adressen
werden direkt zu dem Vorababruf-Selektor 390 geführt. Basis-Adressen-Werte
werden mit dem Offset-Wert, geliefert auf dem Unterbrechungs-Offset-Bus 373 von
der Unterbrechungs-Steuereinheit 363, geliefert. Wenn einmal
eine spezielle Adresse quellenmäßig zu dem
Vorababruf-Selektor 390 über den Bus 373' geführt ist,
kann diese als die Anfangs-Adresse für eine neue Vorababruf-Instruktions-Folge
verwendet werden, indem danach die inkrementale bzw. Erhöhungs- Schleife der Adresse
durch den Inkrementator 394 und eines der Vorababruf-Register 398, 400, 402 fortgeführt wird.
-
Eine andere Quelle von Adressen zu
dem Vorababruf-Selektor 390 ist ein Feld aus Registern
innerhalb des Ziel-Adressen-Register-Blocks 414. Die Ziel-Register
innerhalb des Blocks 414 dienen zur Speicherung von, in
der bevorzugten Ausführungsform,
acht potentiellen Verzweigungs-Ziel-Adressen. Diese acht Speicherstellen
entsprechen logisch den acht potentiell ausführbaren Instruktionen, die
in den untersten bzw. niedrigsten zwei Master-Registern 216, 224 der
IFIFO-Einheit 264 gehalten sind. Da irgendwelche, und potentiell alle,
dieser Instruktionen konditionale Verzweigungs-Instruktionen sein
könnten,
ermöglicht
der Ziel-Register-Block 414, daß deren vorab berechnete Ziel-Adressen,
auf die Verwendung zum Abrufen einer Ziel-Instruktions-Flußfolge durch
den TBUF 190 wartend, gespeichert werden. Insbesondere
wird, wenn eine konditionale Verzweigungs-Bias so eingestellt ist,
daß die
PC-Steuereinheit 362 unmittelbar damit beginnt, eine Ziel-Instruktions-Folge
vorab abzurufen, die Ziel-Adresse unmittelbar durch den Ziel-Register-Block 414 über den Adressen-Bus 418 zu
dem Vorababruf-Selektor 390 zugeführt. Wenn die Adresse einmal
durch den Inkrementator 394 erhöht ist, wird sie zurück zu dem
TBUF PFnPC 400 zur Verwendung in darauffolgenden Vorababruf-Operationen
der Ziel-Instruktions-Folge
gespeichert. Falls zusätzliche
Verzweigungs-Instruktionen innerhalb der Ziel-Instruktions-Folge
auftreten, werden die Ziel-Adressen solcher sekundären Verzweigungen
berechnet und in dem Ziel-Register-Feld 414 gespeichert,
bei anhängiger
Verwendung unter Auflösung
der ersten, konditionalen Verzweigungs-Instruktion.
-
Eine berechnete Ziel-Adresse, wie
sie durch den Ziel-Register-Block 414 gespeichert ist,
wird von einer Ziel-Adressen-Berechnungseinheit innerhalb der Ausführungs-PC-Steuereinheit 366 über die
Adressenleitungen 382 oder von der IEU 104 über den
absoluten Ziel-Adressen-Bus 346 übertragen.
-
Der Adressen-Wert, der über den
Vorababruf-PF_PC-Selektor 390 übertragen ist, ist ein voller,
zweiunddreißig
Bit, virtueller Adressen-Wert. Die Seitengröße ist, in der bevorzugten
Ausführungsform
der vorliegenden Erfindung, bei 16 KBytes, entsprechend dem maximalen
Seiten-Offset-Adressen-Wert [13:0], festgelegt. Deshalb ist eine
VMU-Seitentranslation
nicht erforderlich, ohne daß dabei
eine Änderung
in der momentanen, virtuellen Vorababruf-Seiten-Adresse vorhanden
ist [27:14]. Eine Vergleichseinrichtung in dem Vorababruf-Selektor 390 erfaßt diesen
Umstand. Ein VMU-Translations- Anforderungssignal
(VMXLAT) wird über die
Leitung 372' zu
der PC-Steuereinheit 362 geführt, wenn dort eine Änderung
in der virtuellen Seiten-Adresse vorhanden ist, entweder aufgrund
einer Erhöhung über eine
Seitengrenze hinaus oder einer Steuerflußverzweigung zu einer anderen
Seiten-Adresse. Hieraufhin richtet die PC-Steuereinheit 362 die
Plazierung der VM VADDR Adresse auf den Leitungen 326,
zusätzlich
zu dem CCU PADDR auf den Leitungen 324, beide über eine
Puffer-Einheit 420, und die geeigneten Steuersignale auf
den VMU Steuerleitungen 326, 328, 330,
um eine VMU virtuell zur physikalischen Seitentranslation zu erhalten.
Dort, wo eine Seitentranslation nicht erforderlich ist, wird die
momentane, physikalische Seiten-Adresse [31:14] durch eine Verriegelung
an dem Ausgang der VMU Einheit 108 auf dem Bus 122 beibehalten.
-
Die virtuelle Adresse, die auf dem
Bus 370 geliefert wird, wird durch den Inkrementator 394 in
Abhängigkeit
von einem Signal erhöht,
das auf der Erhöhungs-Steuerleitung 374 geführt wird.
Der Inkrementator 394 erhöht durch einen Wert, der einen
Instruktions-Satz darstellt (vier Instruktionen oder sechzehn Bytes),
um einen nächsten
Instruktions-Satz auszuwählen.
Die vier Bits niedriger Ordnung einer Vorababruf-Adresse, wie sie
zu der CCU-Einheit 106 geliefert sind, sind Null. Deshalb
kann die aktuelle Ziel-Adressen-Instruktion
in einem ersten Verzweigungs-Ziel-Instruktions-Satz nicht in der
ersten Instruktions-Stelle angeordnet werden. Allerdings werden
die vier Bits niedriger Ordnung der Adresse zu der PC-Steuereinheit 362 geliefert,
um zu ermöglichen,
daß die
geeignete, erste Verzweigungs-Instruktionsstelle durch die IFU 102 bekannt
ist. Die Erfassung und Handhabung, durch Rückführung der Bits niedriger Ordnung
[3:2] einer Ziel-Adresse
als die Zwei-Bit-Puffer-Adresse, um die geeignete, erste Instruktion
für eine
Ausführung
in einem nicht ausgerichteten Ziel-Instruktions-Satz auszuwählen, wird
nur für
das erste Vorababrufen einer neuen Instruktions-Folge durchgeführt, d.
h. irgendeine erste, nicht sequentielle Instruktions-Satz-Adresse
in einer Instruktions-Folge. Die nicht ausgerichtete Beziehung zwischen
der Adresse der ersten Instruktion in einem Instruktions-Satz und
der Vorababruf-Adresse, die beim Vorababrufen des Instruktions-Satzes
verwendet ist, kann und wird danach ignoriert werden, und zwar für die Dauer
der momentanen, sequentiellen Instruktions-Folge.
-
Der Rest der funktionalen Blöcke, dargestellt
in 4, weist die Ausführungs-PC-Steuereinheit 366 auf.
Gemäß der bevorzugten
Ausführungsform
der vorliegenden Erfindung schließt die Ausführungs-PC-Steuereinheit 366 deren
eigenen, unabhängig
funktio nierenden Programm-Zähler-Inkrementator
ein. Zentral zu dieser Funktion ist ein Ausführungs-Selektor (DPC SEL) 430 vorhanden.
Der Adressen-Ausgang durch den Ausführungs-Selektor 430,
auf dem Adressen-Bus 352',
ist die momentane Ausführungs-Adresse
(DPC) der Architektur 100. Diese Ausführungs-Adresse wird zu einer
Addierereinheit 434 geführt.
Die Erhöhung/Größen-Steuersignale,
die auf den Leitungen 380 gegeben sind, spezifizieren einen
Instruktions-Erhöhungs-Wert von
eins bis vier, den die Addierereinheit 434 zu der Adresse
hinzu addiert, die von dem Selektor 430 erhalten ist. Wenn
der Addieren 432 zusätzlich
eine Ausgangs-Verriegelungs-Funktion durchführt, wird die erhöhte, nächste Ausführungs-Adresse
auf den Adressenleitungen 436 direkt zurück zu dem
Ausführungs-Selektor 430 zur
Verwendung in den nächsten
Ausführungs-Erhöhungs-Zyklus
geführt.
-
Die anfängliche Ausführungs-Adresse
und alle darauffolgenden, neuen Folge-Adressen werden über eine neue Folgefluß-Register-Einheit 438 über die
Adressen-Leitungen 440 erhalten.
Die neue Flußfolge-Register-Einheit 438 ermöglicht,
daß die
neue, momentane Vorababruf-Adresse, wie sie auf dem PFPC-Adressen-Bus 370 von
dem Vorababruf-Selektor 390 geliefert wird, weiter zu dem
Adressen-Bus 440 direkt geführt oder für eine darauffolgende Verwendung
gespeichert wird. Das bedeutet, daß dort, wo die Vorababruf-PC-Steuereinheit 364 bestimmt,
ein Vorababrufen an einer neuen, virtuellen Adresse zu beginnen,
die neue Flußfolge-Adresse
temporär
durch die Register-Einheit 438 für die neue
Flußfolge
gespeichert wird. Die PC-Steuereinheit 362 hält, durch
ihre eigenen Partizipierung in sowohl dem Vorababruf- als auch dem
Ausführungs-Erhöhungs-Zyklus,
die neue Flußfolge-Adresse
in dem Register 438 für
die neue Flußfolge,
bis die Ausführungs-Adresse
den Programm-Ausführungspunkt
entsprechend zu der Steuerfluß-Instruktion
erreicht hat, die die neue Instruktions-Flußfolge auferlegt hat. Die neue
Flußfolge-Adresse
wird dann von der Register-Einheit 438 für die neue
Flußfolge
zu dem Ausführungs-Selektor 430 ausgegeben,
um die unabhängige
Erzeugung von Ausführungs-Adressen
in der neuen Instruktions-Flußfolge
zu initiieren.
-
Gemäß den bevorzugten Ausführungsformen
der vorliegenden Erfindung dient die Register-Einheit 438 für die neue
Flußfolge
zum Puffern von zwei Steuerfluß-Instruktions-Ziel-Adressen. Durch
die unmittelbare Verfügbarkeit
der neuen Flußfolge-Adresse
ist im wesentlichen keine Latenz beim Umschalten der Ausführungs-PC-Steuereinheit 366 von der
Erzeugung einer momentanen Sequenz von Ausführungs-Adressen zu einer Sequenz
einer neuen Flußfolge
von Ausführungs-Adressen
vorhanden.
-
Schließlich ist ein IF_PC-Selektor
(IF_PC SEL) 442 vorgesehen, um letztendlich die
momentane IF_PC-Adresse auf dem Adressen-Bus 352 zu der
IEU 104 auszugeben. Die Eingänge zu dem IF_PC-Selektor 442 sind
die Ausgangs-Adressen, die von entweder dem Ausführungs-Selektor 430 oder
der Register-Einheit 438 für die neue Flußfolge erhalten
sind. In den meisten Fällen
wird der IF_PC-Selektor 442 durch die PC-Steuereinheit 362 geführt, um
die Ausführungs-Adressen-Ausgabe
durch den Ausführungs-Selektor 430 auszuwählen. Allerdings
kann, um weiterhin die Latenz beim Umschalten zu einer neuen, virtuellen
Adressen, die dazu verwendet ist, eine Ausführung einer neuen Instruktions-Flußfolge zu
initiieren, zu reduzieren, die ausgewählte Adresse, die von der Register-Einheit 438 für die neue
Folge zugeführt
wird, im Bypass über
den Bus 440 direkt zu dem IF_PC Selektor 442 zum
Vorsehen als die momentane IF_PC Ausführungs-Adresse geführt werden.
-
Die Ausführungs-PC-Steuereinheit 366 ist
zum Berechnen aller relativen Verzweigungs-Ziel-Adressen geeignet.
Die momentane Ausführungspunkt-Adresse
und die durch die Register-Einheit 428 für die neue Flußfolge gelieferte
Adresse werden durch einen Steuerfluß-Selektor (CF_PC) 446 über die
Adressen-Busse 352', 440 empfangen.
Dementsprechend besitzt die PC-Steuereinheit 362 eine wesentliche
Flexibilität
beim Auswählen
der exakten, anfänglichen
Adresse, von der aus eine Ziel-Adresse zu berechnen ist. Diese anfängliche
oder Basis-Adresse wird über
einen Adressen-Bus 454 zu einer Ziel-Adressen-ALU 450 zugeführt. Ein zweiter
Eingangswert zu der Ziel-ALU 450 wird von einer Steuerfluß-Verschiebungs-Berechnungs-Einheit 452 über einen
Bus 458 zugeführt.
Relative Verzweigungs-Instruktionen schließen, entsprechend der bevorzugten Architektur 100,
einen Verschiebungswert in der Form einer unmittelbaren Modus-Konstanten
ein, die eine relative, neue Target-Adresse spezifiziert. Die Steuerfluß-Verschiebungs-Berechnungs-Einheit 452 empfängt den
Operanden-Verschiebungs-Wert, der anfänglich über den IDecodiereinheit-Operanden-Ausgangsbus 318 erhalten
ist. Schließlich
wird ein Offset-Register-Wert zu der Ziel-Adressen-ALU 450 über die
Leitungen 456 zugeführt.
Das Offset-Register 448 empfängt einen Offset-Wert über die
Steuerleitungen 378' von
der PC-Steuereinheit 362. Die Größe des Offset-Werts wird durch
die PC-Steuereinheit 362 basierend auf dem Adressen-Offset
zwischen der Basis-Adresse, die auf den Adres sen-Leitungen 454 zugeführt ist,
und der Adresse der momentanen Verzweigungs-Instruktion, für die die relative Ziel-Adresse
berechnet werden soll, bestimmt. Das bedeutet, daß die PC-Steuereinheit 362, über deren
Steuerung der IFIFO-Steuer-Logik-Einheit 372, die Anzahl
von Instruktionen leitet, die die Instruktion an der momentanen
Ausführungs-Punktadresse (angefordert
durch CP_PC) separiert und der Instruktion, die momentan durch die
IDecodiereinheit 262 verarbeitet werden soll, führt, und
deshalb durch die PC-Logik-Einheit 270 verarbeitet wird,
um die Ziel-Adresse für diese
Instruktion zu bestimmen.
-
Wenn die relative Ziel-Adresse durch
die Ziel-Adressen-ALU 450 berechnet worden ist, wird die Ziel-Adresse
in ein entsprechendes eines der Ziel-Register 414 über den
Adressen-Bus 382 eingeschrieben.
-
2) Details des PC-Steuer-Algorithmus
-
- 1) Haupt-Instruktions-Flußfolge-Verarbeitung: MBUF PFnPC
- 1.1 Die Adresse der nächsten
Hauptfluß-Vorababruf-Instruktion
wird in der MBUF PFnPC gespeichert.
- 1.2 Beim Nichtvorhandensein einer Steuerfluß-Instruktion stellt ein 32
Bit Inkrementator den Adressen-Wert in dem MBUF PFnPC durch sechzehn
Bytes (× 16)
mit jedem Vorababruf-Zyklus ein.
- 1.3 Wenn eine nicht konditionale Steuerfluß-Instruktion I-decodiert ist,
werden alle vorab abgerufenen Daten, die auf den Instruktions-Satz
folgend abgerufen sind, entleert und der MBUF PFnPC wird geladen,
und zwar über
die Ziel-Register-Einheit, den PF_PC-Selektor und den Inkrementator,
und zwar mit der neuen Haupt-Instruktions-Fluß-Adresse.
Die neue Adresse wird auch in den neuen Flußfolge-Registern gespeichert.
- 1.3.1 Die Zieladresse eines relativen, nicht konditionalen Steuerflusses
wird durch die IFU von Register-Daten, die durch die IFU gehalten
sind, und von Operanden-Daten,
die der Steuerfluß-Instruktion
folgen, berechnet.
- 1.3.2 Die Ziel-Adresse einer absoluten, nicht konditionalen
Steuerfluß-Instruktion
wird eventuell durch die IEU von einer Register-Referenz, einem
Basis-Register-Wert und einem Index-Register-Wert berechnet.
- 1.3.2.1 Ein Instruktions-Vorababruf-Zyklus setzt aus, bis die
Ziel-Adresse durch die IEU für
eine absolute Adressen-Steuer-Fluß-Instruktion zurückgeführt ist;
ein Instruktions-Ausführungs-Zyklus
fährt fort.
- 1.4 Die Adresse des nächsten
Hauptfluß-Vorababruf-Instruktions-Satzes,
resultierend von einer nicht konditionalen Steuerfluß-Instruktion,
wird im Bypass über
die Ziel-Adressen-Register-Einheit,
den PF_PC-Selektor und den Inkrementator vorbeigeführt und
für eine
eventuelle Speicherung in dem MBUF PFnPC geführt; ein Vorababrufen fährt bei
1.2 fort.
- 2 Prozedurale Instruktions-Flußfolge-Verareitung: EBUF PFnPC
- 2.1 Eine prozedurale Instruktion kann in der Haupt- oder Verzweigungs-Ziel-Instruktions-Flußfolge vorab abgerufen
werden. Falls in einer Ziel-Flußfolge
abgerufen ist, erfolgt ein Aussetzen eines Vorababrufens der prozeduralen
Flußfolge,
bis sich die konditionale Steuerfluß-Instruktion auflöst und die
prozedurale Instruktion zu dem MBUF übertragen wird. Dies ermöglicht,
daß der
TBUF beim Handhaben von konditionalen Steuerflüssen verwendet werden kann,
die in der prozeduralen Instruktions-Flußfolge auftreten.
- 2.1.1 Eine prozedurale Instruktion sollte nicht in der prozeduralen
Instruktions-Folge erscheinen, d. h. prozedurale Instruktionen sollten
nicht darin verschachtelt sein: eine Rückführung von einer prozeduralen
Instruktion wird eine Ausführung
zu dem Haupt-Instruktions-Fluß zurückführen. Um
ein Verschachteln zu ermöglichen,
würde eine
zusätzlich
zugeordnete Rückführung von
einer verschachtelten, prozeduralen Instruktion erforderlich sein.
Während
die Architektur leicht eine solche Instruktion stützen kann,
wird das Erfordernis für
eine Fähigkeit
hinsichtlich einer verschachtelten, prozeduralen Instruktion nicht
wahrscheinlich die Funktion der Architektur verbessern.
- 2.1.2 In einer Haupt-Instruktions-Folge wird eine prozedurale
Instruktions-Flußfolge,
die wiederum erste und zweite konditionale Steuerfluß-Instruktion
enthaltende Instruktions-Sätze
umfaßt,
ein Vorababrufen in Bezug auf den zweiten, konditionalen Steuerfluß-Instruktions-Satz
aussetzen, bis irgendwelche konditionalen Steuerfluß-Instruktionen in
dem ersten eines solchen Instruktions-Satzes aufgelöst werden
und der zweite, konditionale Steuerfluß-Instruktions-Satz zu dem
MBUF übertragen
worden ist.
- 2.2 Prozedurale Instruktionen liefern ein relatives Offset,
das als ein unmittelbares Modus-Operanden-Feld der Instruktion umfaßt ist,
um die prozedurale Programm-Start-Adresse
zu identifizieren:
- 2.2.1 Der Offset-Wert, der durch die prozedurale Instruktion
geliefert wird, wird mit einem Wert kombiniert, der in einem prozeduralen
Basis-Adressen-(PBR)-Register enthalten ist, das in der IFU geführt wird.
Dieses PBR-Register ist über
die spezielle Adresse und einen Daten-Bus in Abhängigkeit der Ausführung einer speziellen
Register-Bewegungs-Instruktion lesbar und beschreibbar.
- 2.3 Wenn eine prozedurale Instruktion umfaßt ist, wird die nächste Haupt-Instruktions-Flußfolge-IF_PC-Adresse
in dem uPC-Rückführ-Adressen-Register
gespeichert und das Prozedur-In-Progress-Bit wird in das Prozessor-Status-Register
(PSR) eingegeben.
- 2.4 Die Start-Adresse der prozeduralen Flußfolge wird von dem PBR-Register
(plus dem prozeduralen Instruktions-Operanden-Offset-Wert) zu dem
PF PC-Selektor geführt.
- 2.5 Die Start-Adresse der prozeduralen Flußfolge wird simultan zu der
Register-Einheit für
die neue Flußfolge
und zu dem Inkrementator zur Erhöhung
(× 16)
geführt;
die erhöhte
Adresse wird dann in dem EBUF PFnPC gespeichert.
- 2.6 Beim Nichtvorhandensein einer Steuerfluß-Instruktion stellt ein 32
Bit Inkrementator einen Adressen-Wert (× 16) in dem EBUF PFnPC mit
jedem prozeduralen Instruktions-Vorababruf-Zyklus ein.
- 2.7.1 Wenn eine nicht konditionale Steuerfluß-Instruktion I-decodiert wird,
werden alle vorab abgerufenen Daten, die auf die Verzweigungs-Instruktion
folgend abgerufen sind, gelöscht,
und der EBUF PFnPC wird mit der neuen, prozeduralen Instruktions-Flußfolge-Adresse
geladen.
- 2.7.1 Die Ziel-Adresse einer relativen, nicht konditionalen
Steuerfluß-Instruktion
wird durch die IFU aus in der IFU gehaltenen Register-Daten und
aus den Operanden-Daten,
die innerhalb eines unmittelbaren Modus-Operanden-Felds der Steuerfluß-Instruktion geliefert
werden, berechnet.
- 2.7.2 Die Ziel-Adresse einer absoluten, nicht konditionalen
Verzweigung wird durch die IEU von einer Register-Referenz, einem
Basis-Register-Wert und einem Index-Register-Wert berechnet.
- 2.7.2.1 Ein Instruktions-Vorababruf-Zyklus setzt aus, bis die
Ziel-Adresse durch die IEU für
absolute Adressen-Verzweigungen zurückgeführt ist; der Ausführungs-Zyklus fährt fort.
- 2.8 Die Adresse des nächsten,
prozeduralen Fluß-Vorababruf-Instruktions-Satzes
wird in dem EBUF PFnPC gespeichert und ein Vorababrufen fährt bei
1.2 fort.
- 2.9 Wenn eine Rückführung von
einer Prozedur-Instruktion idecodiert wird, fährt ein Vorababrufen von der Adresse
fort, die in dem uPC-Register gespeichert ist, die dann erhöht wird
(× 16)
und zu dem MBUF PFnPC-Register für
darauffolgende Vorababruf-Vorgänge
zurückgeführt wird.
- 3 Verarbeitung einer Verzweigungs-Instruktions-Flußfolge:
TBUF PFnPC
- 3.1 Wenn eine konditionale Steuerfluß-Instruktion, die in einem
ersten Instruktions-Satz in der MBUF-Instruktionflußfolge auftritt,
I-decodiert ist, wird die Ziel-Adresse durch die IFU bestimmt, falls
die Ziel-Adresse relativ zu der momentanen Adresse vorhanden ist,
oder durch die IEU für
absolute Adressen.
- 3.1 Für
eine "Verzweigung
vorgenommene Bias"
- 3.1.1 Falls die Verzweigung zu einer absoluten Adresse vorliegt,
Aussetzen eines Instruktions-Vorababruf-Zyklus, bis die Ziel-Adresse
durch die IEU zurückgeführt wird:
der Ausführungs-Zyklus
fährt fort.
- 3.1.2 Laden des TBUF PFnPC mit der Verzweigungs-Ziel-Adresse
durch Übertragen über den
PF PC-Selektor und den Inkrementator.
- 3.1.3 Ziel-Instruktions-Flußfolge-Instruktionen
werden in den TBUF vorab abgerufen und dann in den IFIFO für eine darauffolgende
Ausführung
geführt:
falls der IFIFO und der TBUF voll sind, Aussetzen eines Vorababrufens.
- 3.1.4 Der 32 Bit Inkrementator stellt (× 16) den Adressen-Wert in
dem TBUF PFnPC mit jedem Vorababruf-Zyklus ein.
- 3.1.5 Aussetzen der Vorababruf-Operation beim (decodieren einer
konditionalen Steuerfluß-Instruktion,
die in einem zweiten Instruktions-Satz in der Ziel-Instruktions-Folge
auftritt, bis alle konditionalen Verzweigungs-Instruktionen in dem
ersten (primären) Satz
aufgelöst
sind (gehe allerdings weiter berechne die relative Ziel-Adresse
und speichere sie in den Ziel-Registern).
- 3.1.6 Falls die konditionale Verzweigung in dem ersten Instruktions-Satz
sich zu "taken" ("genommen") auflöst:
- 3.1.6.1 Entleere Instruktions-Sätze, die dem ersten, konditionalen
Fluß-Instruktions-Satz
in dem MBUF oder EBUF folgen, falls die Quelle der Verzweigung die
EBUF-Instruktions-Flußfolge war,
wie dies für
das Prozedur-In-Progress-Bit bestimmt ist.
- 3.1.6.2 Übertrage
den TBUF PFnPC Wert zu dem MBUF PFnPC oder dem EBUF basierend auf
dem Zustand des Prozedur-In-Progress-Bits.
- 3.1.6.3 Übertragen
die vorab abgerufene TBUF-Instruktion zu dem MBUF oder dem EBUF
basierend auf dem Zustand des Prozedur-In-Progress-Bits.
- 3.1.6.4 Falls ein zweiter, konditionaler Verzweigungs-Instruktions-Satz
nicht I-decodiert worden ist, fahre mit MBUF oder EBUF Vorababruf-Operationen
basierend auf dem Zustand des Prozedur-In-Progress-Bits fort.
- 3.1.6.5 Falls eine zweite, konditionale Verzweigungs-Instruktion
I-decodiert worden ist, beginne eine Verarbeitung dieser Instruktion
(gehe zu Schritt 3.3.1).
- 3.1.7 Falls die konditionale Steuerung für Instruktionen) in den ersten,
konditionalen Instruktions-Satz sich zu "not taken" ("nicht
genommen") auflöst:
- 3.1.7.1 Entleere den IFIFO und IEU von Instruktions-Sätzen und
Instruktionen von der Ziel-Instruktions-Flußfolge.
- 3.1.7.2 Führe
MBUF oder EBUF Vorababruf-Operationen vorab fort.
- 3.2 Für "eine Verzweigung
nicht vorgenommener Bias" ("branch not taken
bias"):
- 3.2.1 Setze ein Vorababrufen von Instruktionen in den MBUF aus;
ein Ausführungs-Zyklus fährt fort.
- 3.2.1.1 Falls die konditionale Steuerfluß-Instruktion in dem ersten,
konditionalen Instruktions-Satz relativ ist, berechne die Ziel-Adresse
und speichere sie in den Ziel-Registern.
- 3.2.1.2 Falls die konditionalen Steuerfluß-Instruktionen in dem ersten,
konditionalen Instruktions-Satz absolut sind, warte auf die IEU,
um die Ziel-Adresse zu berechnen und führe die Adresse zu den Ziel-Registern
zurück.
- 3.2.1.3 Setze die Vorababruf-Operation beim (decodieren einer
konditonalen Steuerfluß-Instruktion in einem
zweiten Instruktions-Satz aus, bis die konditionale Steuerfluß- Instruktionen) in
der ersten, konditionalen Instruktions-Satz-Instruktion aufgelöst ist (sind).
- 3.2.2 Wenn einmal die Ziel-Adresse der ersten, konditionalen
Verzweigung berechnet ist, Laden in den TBUF PFnPC und auch Beginn
eines Vorababrufens von Instruktionen in dem TBUF gleichzeitig mit
der Ausführung
der Haupt-Instruktions-Flußfolge.
Ziel-Instruktions-Sätze
werden nicht in den IFIFO hinein geladen (die Verzweigungs-Ziel-Instruktionen
stehen so zur Verfügung,
wenn sich jede konditionale Steuer-Bus-Instruktion in dem ersten
Instruktions-Satz auflöst).
- 3.2.3 Falls eine konditionale Steuer-Fluß-Instruktion in dem ersten
Satz sich zu "genommen" ("taken") auflöst:
- 3.2.3.1 Entleere den MBUF oder EBUF. falls die Quelle der Verzweigung
die EBUF-Instruktions-Flußfolge war,
wie dies aus dem Zustand des Prozedur-In-Progress-Bits bestimmt ist,
und den IFIFO und den IEU der Instruktionen von der Hauptflußfolge,
dem ersten konditionalen Verzweigungs-Instruktions-Satz folgend.
- 3.2.3.2 Übertragung
des TBUF PFnPC-Werts zu dem MBUF PFnPC oder EBUF, wie dies von dem
Zustand des Prozedur-In-Progress-Bits bestimmt ist.
- 3.2.3.3 Übertragung
der vorab abgerufenen TBUF-Instruktionen zu dem MBUF oder EBUF,
wie dies aus dem Zustand des Prozedur-In-Progress-Bits bestimmt
ist.
- 3.2.3.4 Fortfahren von MBUF oder EBUF Vorababruf-Operationen,
wie dies aus dem Zustand des Prozedur-In-Progress-Bits bestimmt
ist.
- 3.2.4 Falls eine konditionale Steuerfluß-Instruktion in dem ersten
Satz sich zu "nicht
genommen" ("not taken") auflöst:
- 3.2.4.1 Entleere den TBUF von Instruktions-Sätzen von dem Ziel-Instruktions-Folgefluß.
- 3.2.4.2 Falls eine zweite, konditionale Verzweigungs-Instruktion
nicht I-decodiert worden ist, fahre mit MBUF oder EBUF fort, wie
dies für
den Zustand des Prozedur-In-Progress-Bits
bestimmt ist, unter Vorababrufen von Operationen.
- 3.2.4.3 Falls eine zweite, konditionale Verzweigungs-Instruktion
I-decodiert worden ist, beginne eine Verarbeitung dieser Instruktion
(gehe zu Schritt 3.4.1).
- 4 Unterbrechungen, Ausnahmen und Trap-Instruktionen.
- 4.1 Traps umfassen allegemein:
- 4.1.1 Hardware-Unterbrechungen
- 4.1.1.1 Asynchron (extern) Auftreten der Ereignisse, intern
oder extern.
- 4.1.1.2 Können
zu irgendeinem Zeitpunkt auftreten, und arbeite weiter.
- 4.1.1.3 Behandelt in einer Prioritätsreihenfolge zwischen atomischen
(gewöhnlichen)
Instruktionen, und können
prozedurale Instruktionen suspendieren.
- 4.1.1.4 Die Start-Adresse einer Unterbrechungs-Handhabungseinrichtung
wird als das Vektorzahl-Offset in eine vordefinierte Tabelle von
Trap-Handhabungseinrichtungs-Eintrittspunkten
bestimmt.
- 4.1.2 Software-Trap-Instruktionen
- 4.1.2.1 Synchron (intern) auftretende Instruktionen.
- 4.1.2.2 Eine Software-Instruktion, die als eine Ausnahme ausführt.
- 4.1.2.3 Die Start-Adresse der Trap-Handhabungseinrichtung wird
aus dem Trap-Zahl-Offset
kombiniert mit einem Basis-Adressen-Wert, gespeichert in dem TBR-
oder FTB-Register, bestimmt.
- 4.1.3 Ausnahmen
- 4.1.3.1 Ereignisse, die synchron zu einer Instruktion auftreten.
- 4.1.3.2 Gehandhabt zu dem Zeitpunkt, zu dem die Instruktion
ausgeführt
wird.
- 4.1.3.3 Aufgrund von Konsequenzen der Ausnahme werden die ausgenommene
Instruktion und alle darauffolgenden, ausgeführten Instruktionen aufgehoben
bzw. aufgegeben.
- 4.1.3.4 Die Start-Adresse der Ausnahme-Handhabungseinrichtung
wird aus dem Trap-Zahl-Offset
in eine vordefinierte Tabelle für
einen Trap-Handhabungseinrichtungs-Eintrittspunkt bestimmt.
- 4.2 Trap-Instruktions-Flußfolge-Operationen
treten Inline mit der dann momentan ausführenden Instruktions-Flußfolge auf.
- 4.3 Traps können
sich verschachteln, vorausgesetzt, das Trap-Handhabungs-Programm sichert
die xPC-Adresse vor einer nächsten,
zugelassenen Trap – ein
Fehler dabei, dies so zu tun, wird den Zustand der Maschine nachteilig
beeinflussen, falls eine Trap vor einem Abschluß der momentanen Trap-Operation auftritt.
- 5 Trap-Instruktions-Flußfolge-Verarbeitung:
xPC.
- 5.1 Wenn eine Trap vorhanden ist:
- 5.1.1 Falls eine asynchrone Unterbrechung, wird die Ausführung der
momentanen Ausführungs-Instruktionen)
aufgehoben.
- 5.1.2 Falls eine asynchrone Ausnahme, wird die Trap unter Ausführung der
ausgenommenen Instruktion verarbeitet.
- 5.2 Wenn eine Trap verarbeitet wird:
- 5.2.1 Unterbrechungen werden gesperrt.
- 5.2.2 Die momentane IF_PC Adresse wird in dem xPC Trap-Zustands-Rückführ-Adressen-Register
gespeichert.
- 5.2.3 Die IFIFO und MBUF Vorababruf-Puffer an und folgend der
IF_PC Adresse werden entleert.
- 5.2.4 Ausgeführte
Instruktionen an und folgend der Adresse IF_PC und die Ergebnisse
solcher Instruktionen werden aus der IEU gelöscht.
- 5.2.5 Der MBUF PFnPC wird mit der Adresse des Trap-Handhabungseinrichtungs-Programms geladen.
- 5.2.5.1 Die Quelle einer Trap-Adresse entweder des TBF- oder
FTB-Registers, in Abhängigkeit
von dem Typ einer Trap, wie sie durch die Trap-Zahl bestimmt ist,
die in dem Satz spezieller Register vorgesehen sind.
- 5.2.6 Instruktionen werden vorab abgerufen und in den IFIFO
zur Ausführung
in einer normalen Art und Weise fallengelassen.
- 5.2.7 Die Instruktionen des Trap-Programms werden dann ausgeführt.
- 5.2.7.1 Das Trap-Handhabungs-Programm kann für die xPC Adresse dienen, die
an einer vordefinierten Stelle gesichert werden soll, und Unterbrechungen
werden erneut freigegeben; das xPC Register wird über eine
spezielle Register-Bewegungs-Instruktion
und den speziellen Register-Adressen- und Daten-Bus gelesen/geschrieben.
- 5.2.8 Der Trap-Zustand muß durch
die Ausführung
einer Rückführung von
einer Trap-Instruktion
angeregt werden.
- 5.2.8.1 Falls zuvor gesichert, muß die xPC Adresse erneut von
deren vordefinierter Stelle vor einem Ausführen der Rückführung von einer Trap-Instruktion
gespeichert werden.
- 5.3 Wenn eine Rückführung von
der Trap ausgeführt
wird:
- 5.3.1 Unterbrechungen werden freigegeben.
- 5.3.2 Die xPC Adresse wird zu dem momentanen Instruktions-Folge-Register
MBUF oder EBUF PFnPC zurückgeführt, wie
dies aus dem Zustand des Prozedur-In-Progress-Bits bestimmt ist, und ein Vorababrufen
führt von
dieser Adresse fort.
- 5.3.3 Die xPC Adresse wird in dem IF_PC Register über das
neue Flußfolge-Register
erneut gespeichert.
-
E) Unterbrechung- und
Ausnahme-Handhabung:
-
1) Übersicht:
-
Unterbrechungen und Ausnahmen werden,
solange wie sie freigegeben sind, ungeachtet davon, ob der Prozessor
von dem Haupt-Instruktions-Fluß oder
einem prozeduralen Instruktionsfluß ausführt, verarbeitet werden. Unterbrechungen
und Ausnahmen werden in einer Prioritätsreihenfolge bearbeitet und
dauern an, bis sie beseitigt sind. Die Start-Adresse eines Trap-Hantierers wird als
ein Vektor-Nummern-Offset in eine vordefinierte Tabelle von Trap-Hantierer-Adressen
bestimmt, wie dies nachfolgend beschrieben ist.
-
Unterbrechungen und Ausnahmen sind
von zwei Grundtypen in der vorliegenden Ausführungsform, solche, die synchron
mit bestimmten Instruktionen in der Instruktions-Flußfolge
auftreten, und solche, die asynchron mit bestimmten Instruktionen
in der Instruktions-Flußfolge
auftreten. Die Ausdrücke
Unterbrechung, Ausnahme, Trap und Fehler werden gegeneinander austauschbar
hier verwendet. Asynchrone Unterbrechungen werden durch Hardware,
entweder auf einem Chip oder entfernt von einem Chip, erzeugt, die
nicht synchron mit der Instruktions-Flußfolge arbeiten. Zum Beispiel
sind Unterbrechungen, die durch einen Zeitgeber/Zähler auf
einem Chip erzeugt sind, asynchron, da sie Hardware-Unterbrechungen
und nicht maskierbare Unterbrechungen (NMI) sind, die von außerhalb
des Chips geliefert werden. Wenn eine asynchrone Unterbrechung auftritt,
wird der Prozessor-Kontext eingefroren, alle Traps werden gesperrt,
bestimmte Prozessor-Status-Informationen
werden gespeichert und die Prozessor-Vektoren zu einem Unterbrechungs-Hantierer
entsprechend zu der bestimmten Unterbrechung werden empfangen. Nachdem
der Unterbrechungs-Hantierer seine Verarbeitung abgeschlossen hat,
führt eine
Programmausführung
mit der Instruktion fort, die der letzten, abgeschlossenen Instruktion
in der Flußfolge
folgt, die ausgeführt
wurde, als die Unterbrechung auftrat.
-
Synchrone Ausnahmen sind solche,
die synchron mit Instruktionen in der Instruktions-Flußfolge auftreten.
Diese Ausnahmen treten in Relation zu bestimmten Instruktionen auf
und werden gehalten, bis die relevante Instruktion ausgeführt werden
soll. In den bevor zugten Ausführungsformen
entstehen synchrone Ausnahmen während
eines Vorababrufens, während
einer Instruktionscodierung oder während einer Instruktionsausführung. Ausnahmen
eines Vorababrufens umfassen, zum Beispiel, ein TLB-Fehlen oder
andere VMU-Ausnahmen. Decodier-Ausnahmen entstehen zum Beispiel
dann, wenn die Instruktion, die decodiert werden soll, eine illegale
Instruktion ist oder nicht das momentane Privileg-Niveau des Prozessors
anpaßt. Ausführungs-Ausnahmen
entstehen aufgrund von arithmetischen Fehlern, zum Beispiel wie
beim Dividieren durch Null. Immer wenn diese Ausnahmen auftreten,
hält die
bevorzugte Ausführungsform
sie in Übereinstimmung
mit der bestimmten Instruktion aufrecht, die die Ausnahme verursachte,
und zwar bis zu der Zeit, zu der diese Instruktion abgelegt werden
soll. Zu diesem Zeitpunkt werden alle früheren, abgeschlossenen Instruktionen
abgelegt, irgendwelche versuchsweisen Ergebnisse von der Instruktion,
die durch die Ausnahme verursacht sind, werden entleert, wie die
versuchsweisen Ergebnisse von irgendwelchen folgenden, versuchsweise ausgeführten Instruktionen.
Eine Steuerung wird dann zu einem Ausnahme-Hantierer entsprechend
der Ausnahme zu der höchsten
Priorität übertragen,
die für
diese Instruktion auftratt.
-
Software-Trap-Instruktionen werden
an der IDecodierstufe durch CF_DET 274 (2) erfaßt und werden ähnlich zu
beiden, nicht konditionalen Aufruf-Instruktionen und anderen, synchronen
Traps gehandhabt. Das bedeutet, daß eine Ziel-Adresse berechnet
wird und ein Vorababrufen zu der dann momentan vorab abgerufenen
Warteschlange (EBUF oder MBUF) fortführt. Zur selben Zeit wird die
Ausnahme auch entsprechend zu der Instruktion angeführt und
gehandhabt, wenn die Instruktion abgelegt werden soll. Alle anderen
Typen von synchronen Ausnahmen werden nur angeführt und entsprechend zu der
bestimmten Instruktion akkumuliert, die sie verursacht hat, und
werden zu der Ausführungszeit
gehandhabt.
-
2) Asynchrone Unterbrechungen:
-
Asynchrone Unterbrechungen werden
zu der PC-Logik-Einheit 270 über Unterbrechungsleitungen 292 signalisiert,
Wie in 3 dargestellt
ist, sind diese Leitungen zu der Unterbrechungs-Logik-Einheit 363 in der
PC-Logik-Einheit 270 vorgesehen und weisen eine NMI-Leitung,
eine IRQ-Leitung und einen Satz von Unterbrechungs-Niveau-Leitungen
(LVL) auf. Die NMI-Leitung signalisiert eine nicht maskierbare Unterbrechung und
leitet von einer externen Quelle ab. Es ist die Unterbrechungs-Ausnahme
mit der höchsten
Priorität
für ein Hardware-Reset.
Die IRQ-Leitung leitet auch von einer externen Quelle ab und zeigt
an, wenn die externe Vorrichtung eine Hardware-Unterbrechung anfordert.
Die bevorzugten Ausführungsformen
ermöglichen
bis zu 32 durch den Benutzer definierte, extern zugeführte Hardware-Unterbrechungen,
und die bestimmte, externe Vorrichtung, die die Unterbrechung anfordert,
liefert die Zahl der Unterbrechungen (0–31) auf den Unterbrechungs-Niveau-Leitungen
(LVL). Die Speicher-Fehler-Leitung wird durch MCU 110 aktiviert,
um verschiedene Arten von Speicherfehlern zu signalisieren. Andere,
asynchrone Unterbrechungsleitungen (nicht dargestellt) sind auch
zu der Unterbrechungs-Logik-Einheit 363 vorgesehen,
einschließlich
Leitungen zum Anfordern einer Zeitgeber/Zähler-Unterbrechung, einer Speicher-I/O-Fehler-Unterbrechung,
einer Maschinen-Prüf-Unterbrechung und
einer Funktions-Monitor-Unterbrechung. Jede der asynchronen Unterbrechungen,
ebenso wie die synchronen Ausnahmen, die nachfolgend beschrieben
sind, besitzen eine entsprechende, vorbestimmte Trap-Zahl, die dazu
zugeordnet ist, wobei 32 dieser Trap-Zahlen zu den 32 verfügbaren Hardware-Unterbrechungs-Niveaus
zugeordnet werden. Eine Tabelle dieser Trap-Zahlen wird in der Unterbrechungs-Logik-Einheit 363 aufrechterhalten.
Je höher
die Trap-Zahl allgemein ist, desto höher ist die Priorität der Trap.
-
Wenn eine der asynchronen Unterbrechungen
zu der Unterbrechungs-Logik-Einheit 363 signalisiert wird,
schickt die Unterbrechungs-Steuereinheit 363 eine Unterbrechungs-Anforderung zu der
IEU 104 über INT
REQ/ACK-Leitungen 340 aus. Die Unterbrechungs-Steuereinheit 363 schickt
auch ein anhängiges
Vorababruf-Signal zu der PC-Steuereinheit 362 über Leitungen 343,
was bewirkt, daß die
PC-Steuereinheit 262 ein Vorababrufen von Instruktionen
stoppt. Die IEU 104 hebt entweder alle dann ausführenden
Instruktionen auf und entleert alle versuchsweisen Ergebnisse, oder
sie kann ermöglichen,
daß einige
oder alle Instruktionen abgeschlossen werden. In den bevorzugten
Ausführungsformen
werden irgendwelche dann ausführenden
Instruktionen aufgegeben, um dadurch das schnellste Ansprechen auf
asynchrone Unterbrechungen zu ermöglichen. In jedem Fall wird
die DPC in der Ausführungs-PC-Steuereinheit 366 aktualisiert,
um der letzten Instruktion zu entsprechen, die abgeschlossen und
aufgegeben bzw. abgelegt worden ist, und zwar bevor die IEU 104 die
Unterbrechung bestätigt.
Alle anderen, vorab abgerufenen Instruktionen in dem MBUF, dem EBUF, dem
TBUF und dem IFIFO 264 werden auch aufgehoben.
-
Nur dann, wenn die IEU 104 bereit
ist, die Instruktionen von einem Unterbrechungs-Hantierer zu empfangen, schickt sie
ein Unterbrechungs-Bestätigungs-Signal
auf den INT REQ/ACK-Leitungen 340 zurück zu der Unterbrechungs-Steuereinheit 363.
Die Unterbrechungs-Steuereinheit 363 versendet dann zu
dem geeigneten Trap-Hantierer so, wie dies nachfolgend beschrieben
ist.
-
3) Synchrone Ausnahmen:
-
Für
synchrone Ausnahmen behält
die Unterbrechungs-Steuereinheit 363 einen Satz von vier
internen Ausnahme-Bits (nicht dargestellt) für jeden Instruktions-Satz bei,
und zwar ein Bit entsprechend jeder Instruktion in dem Satz. Die
Unterbrechungs-Steuereinheit 363 behält auch eine Indikation der
bestimmten Trap-Zahlen bei, falls irgendwelche für jede Instruktion erfaßt sind.
-
Falls dem VMU-Signal eine TLB- oder
eine andere VMU-Ausnahme fehlt, während ein bestimmter Instruktions-Satz
vorab abgerufen wird, wird diese Information zu der PC-Logik-Einheit 270,
und insbesondere zu der Unterbrechungs-Steuereinheit 363, über die
VMU-Steuer-Leitungen 332 und 334 übertragen.
Wenn die Unterbrechungs-Steuereinheit 363 ein solches Signal
empfängt,
signalisiert sie der PC-Steuereinheit 362 über die
Leitung 343, weitere Vorababrufungen anzuhängen. Zu
derselben Zeit stellt die Unterbrechungs-Steuereinheit 363 das
VM_Miss- oder VM_Excp-Bit, wie dies geeignet ist, zugeordnet dem
Vorababruf-Puffer, zu dem der Instruktions-Satz hin bestimmt war,
ein. Die Unterbrechungs-Steuereinheit 363 stellt dann alle
vier internen Ausnahme-Indikator-Bits entsprechend zu diesem Instruktions-Satz
ein, da keine der Instruktionen in dem Satz gültig sind, und speichert die
Trap-Zahl für
die bestimmte Ausnahme, die entsprechend zu jeder der vier Instruktionen
in dem Fehler-Instruktions-Satz erhalten ist. Die Verschiebung und
Ausführung
von Instruktionen vor dem Fehler-Instruktions-Satz fährt dann
wie gewöhnlich
fort, bis der Fehlersatz das niedrigste Niveau in dem IFIFO 264 erreicht.
-
Ähnlich
wird, falls andere synchrone Ausnahmen während der Verschiebung einer
Instruktion über
die Vorababruf-Puffer 260 erfaßt werden, die IDecodiereinheit 262 oder
der IFIFO 264 diese Information auch zu Unterbrechungs-Steuereinheit 363 übertragen,
die das interne Ausnahme-Indikator-Bit entsprechend der Instruktion,
die die Ausnahme erzeugt, einstellt und die Trap-Zahl entsprechend
zu der Ausnahme speichert. Wie bei den Vorababruf-Synchron-Ausnahmen
fährt die
Verschiebung und Ausführung
der Instruktion vor der Fehler-Instruktion dann wie gewöhnlich fort,
bis der Fehlersatz das niedrigste Niveau in dem IFIFO 264 erreicht.
-
In den bevorzugten Ausführungsformen
ist der einzige Typ einer Ausnahme, die während der Verschiebung einer
Instruktion durch die Vorababruf-Puffer 260, die IDecodiereinheit 262 oder
den IFIFO 264 erfaßt
wird, eine Software-Trap-Instruktion. Software-Trap-Instruktionen werden an der IDecodierstufe
durch eine CF_DET-Einheit 274 erfaßt. Während in einigen Ausführungsformen
andere Formen von synchronen Ausnahmen in der IDecodiereinheit 262 erfaßt werden
können,
ist es bevorzugt, daß die
Erfassung irgendwelcher anderer, synchroner Ausnahmen wartet, bis
die Instruktion die Ausführungs-Einheit 104 erreicht.
Dies vermeidet die Möglichkeit,
daß bestimmte
Ausnahmen, wie beispielsweise solche, die von der Handhabung einer privilegierten
Instruktion entstehen, auf der Basis eines Prozessorzustands signalisiert
werden könnte,
der sich vor der effektiven Ausführung
in Reihenfolge der Instruktion ändern
kann. Ausnahmen, die nicht von dem Prozessorzustand abhängen, wie
beispielsweise eine illegale Instruktion, könnten in der IDecodierstufe
erfaßt werden,
allerdings ist eine Hardware minimiert, falls dieselbe Logik alle
Vorabausführungs-Synchron-Ausnahmen
erfaßt
(im Gegensatz zu VMU-Ausnahmen). Auch ist dabei keine Zeitstrafe
vorhanden, die durch ein Warten auferlegt wird, bis Instruktionen
die Ausführungs-Einheit 104 erreichen,
da die Handhabung solcher Ausnahmen selten zeitkritisch ist.
-
Wie erwähnt ist, werden Software-Trap-Instruktionen
an der IDecodierstufe durch die CF_Det-Einheit 274 erfaßt. Das
interne Ausnahme-Indikator-Bit entsprechend zu dieser Instruktion
in der Unterbrechungs-Logik-Einheit 363 wird eingestellt
und die Software-Trap-Zahl,
die irgendeine Zahl von 0 bis 127 sein kann und die in einem Zwischemodus-Operanden-Feld der
Software-Trap-Instruktion spezifiziert ist, wird entsprechend zu
der Trap-Instruktion gespeichert. Im Gegensatz zu Vorababruf-Synchron-Ausnahmen
signalisiert allerdings, da Software-Traps als sowohl eine Steuerfluß-Instruktion
als auch eine synchrone Ausnahme behandelt werden, die Unterbrechungs-Steuereinheit 363 nicht
der PC-Steuereinheit 362, Vorababrufungen anzuhängen, wenn
eine Software-Trap-Instruktion
erfaßt
ist. Im Gegensatz dazu ruft zu dem Zeitpunkt, zu dem die Instruktion
durch den IFIFO 264 verschoben wird, die IFU 102 den
Trap-Hantierer in den MBUF-Instruktions-Flußfolge-Puffer
vorab ab.
-
Wenn ein Instruktions-Satz das niedrigste
Niveau des IFIFO 264 erreicht, überträgt die Unterbrechungs-Logik-Einheit 363 die
Ausnahme-Indikator Bits für
diesen Instruktions-Satz
als einen 4-Bit-Vektor zu der IEU 104 über die SYNCH_INT_INFO-Leitungen 341, um
anzuzeigen, welche, falls welche vorhanden sind, der Instruktionen
in dem Instruktions-Satz bereits dahingehend bestimmt worden sind,
die Quelle einer synchronen Ausnahme zu sein. Die IEU 104 antwortet
nicht unmittelbar, sondern läßt zu, daß alle Instruktionen
in dem Instruktions-Satz in dem normalen Ablauf ablaufmäßig geplant
werden können.
Weitere Ausnahmen, wie beispielsweise arithmetische Integer-Ausnahmen,
können
während
einer Ausnahme erzeugt werden. Ausnahmen, die von dem momentanen
Zustand der Maschine abhängen,
wie beispielsweise aufgrund der Ausführung einer privilegierten
Instruktion, werden auch zu diesem Zeitpunkt erfaßt, und
um sicherzustellen, daß der
Zustand der Maschine aktuell zu allen vorherigen Instruktionen in
der Instruktions-Flußfolge ist,
wobei alle Instruktionen, die eine Möglichkeit haben, die PSR zu
beeinflussen (wie beispielsweise ein spezielles Bewegen und Rückführen von
Trap-Instruktionen), dazu gebracht werden, in Reihenfolge ausgeführt zu werden.
Nur dann, wenn eine Instruktion, die die Quelle einer synchronen
Ausnahme irgendeiner Sorte ist, abgelegt werden soll, wird das Auftreten
der Ausnahme zu der Unterbrechungs-Logik-Einheit 363 signalisiert.
-
Die IEU 104 legt alle Instruktionen
ab, die versuchsweise ausgeführt
worden sind und die in der Instruktions-Flußfolge vor der ersten Instruktion
auftreten, die eine synchrone Ausnahme besitzt, und entleert die versuchsweisen
Ergebnisse von irgendwelchen versuchsweise ausgeführten Instruktionen,
die in der Instruktions-Flußfolge
darauffolgend auftreten. Die bestimmte Instruktion, die die Ausnahme
verursachte, wird auch entleert, da die Instruktion typischerweise
erneut unter Rückkehr
von der Trap ausgeführt
werden wird. Der IF_PC in der Ausführungs-PC-Steuereinheit 366 wird
dann aktualisiert, um der letzten Instruktion, die tatsächlich abgelegt
ist, zu entsprechen, und bevor irgendeine Ausnahme der Unterbrechungs-Logik-Einheit 363 signalisiert
wird.
-
Wenn die Instruktion, die die Quelle
einer Ausnahme ist, abgelegt ist, kehrt die IEU 104 zu
der Unterbrechungs-Logik-Einheit 363, und zwar über die
SYNCH_INT_INFO-Leitungen 341,
sowohl einen neuen 4-Bit-Vektor, der anzeigt, welche, falls welche
vorhanden sind, Instruktionen in dem abgelegten Instruktions-Satz
(Register 224) eine synchrone Ausnahme hatte, als auch
Informationen, die die Quelle der ersten Ausnahme in dem Instruktions-Satz
anzeigen, zurück.
Die Informationen in dem 4-Bit-Ausnahm-Vektor, zurückgeführt durch
die IEU 104, sind eine Akkumulation der 4-Bit-Ausnahme-Vektoren,
die zu der IEU 104 durch die Unterbrechungs-Steuereinheit 363 geliefert
sind, ebenso wie Ausnahmen, die in der IEU 104 erzeugt
sind. Der Rest der Information, zurückgeführt von der IEU 104 zu
der Unterbrechungs-Steuereinheit 363, zusammen mit irgendwelchen
Informationen, die bereits in der Unterbrechungs-Logik-Einheit 363 aufgrund
von Ausnahmen gespeichert sind, die beim Vorababrufen oder (decodieren
erfaßt
sind, sind für
die Unterbrechungs-Steuereinheit 363 ausreichend, um die
Art der synchronen Ausnahme mit höchster Priorität und deren Trap-Zahl
zu bestimmen.
-
4) Hantierer-Versenden-
und -Rückführen:
-
Nachdem ein Unterbrechungs-Kenntnis-Signal über Leitungen 340 von
der IEU empfangen ist, oder nachdem ein Nicht-Null-Ausnahme-Vektor über Leitungen 341 empfangen
ist, wird die momentane DPC temporär als eine Rückführ-Adresse
in einem xPC-Register
gespeichert, das eines der speziellen Register 412 (4) ist. Das Register über den
momentanen Prozessorstatus (PSR) wird auch in einem Register für frühere PSR
(PPSR) gespeichert, und das Register für den momentanen Vergleichszustand
(CSR) wird in einem Register für
einen früheren
Vergleichszustand (PCSR) in den speziellen Registern 412 gespeichert.
-
Die Adresse eines Trap-Hantierers
wird als eine Trap-Basis-Register-Adresse plus ein Offset berechnet.
Die PC-Logik-Einheit 270 unterhält zwei Basis-Register für Traps,
wobei beide davon ein Teil der speziellen Register 412 (4) sind und beide davon
durch spezielle Bewegungs-Instruktionen, die zuvor ausgeführt sind,
initialisiert sind. Für
die meisten Traps ist das Basis-Register, das dazu verwendet wird,
die Adresse des Hantierers zu berechnen, ein Trap-Basis-Register
TBR.
-
Die Unterbrechungs-Steuereinheit 363 bestimmt
die Unterbrechung oder Ausnahme mit höchster Priorität, die momentan
anhängig
ist, und bestimmt, über
eine Durchsichtstabelle, die Trap-Zahl, die dazu zugeordnet ist.
Dies wird über
einen Satz von INT_OFFSET-Leitungen 373 zu der Vorababruf-PC-Steuereinheit 364 als
ein Offset zu dem ausgewählten
Basis-Register vorgenommen. In vorteilhafter Weise wird die Vektor-Adresse durch nur
Verknüpfen
der Offset-Bits als Bit niedriger Ordnung zu höherer Ordnung, erhalten von dem
TBR-Register, berechnet. Dieses vermeidet irgendein Erfordernis
für Verzögerungen
eines Addierers. (So, wie es hier verwendet wird, wird das 2' Bit als das Bit
i'-ter Ordnung bezeichnet.)
Zum Beispiel kann, falls Traps von 0 bis 255 durchnumeriert sind,
dargestellt als ein 8-Bit-Wert, die Hantierer-Adresse durch Verknüpfungen
der 8-Bit-Trap-Zahl mit dem Ende eines 22-Bit-TBR-Speicherwerts
berechnet werden.
-
Zwei Null-Bits niedriger Ordnung
können
an die Trap-Zahl angehängt
werden, um sicherzustellen, daß die
Trap-Hantierer-Adresse immer an einer Wortgrenze auftritt. Die verknüpfte Hantierer-Adresse,
die so konstruiert ist, wird als eine der Eingaben, 373,
zu dem Vorababruf-Selektor PF_PC Sel 390 (4) geliefert und wird als die nächste Adresse
ausgewählt,
von der an Instruktionen vorab abgerufen werden sollen.
-
Die Vektor-Hantierer-Adressen für Traps,
unter Verwendung des TBR-Registers, sind alle nur ein Wort voneinander
beabstandet. Demzufolge muß die
Instruktion an der Trap-Hantierer-Adresse eine vorausgehende Verzweigungs-Instruktion
zu dem längeren
Trap-Handhabungs-Programm sein. Bestimmte Traps erfordern allerdings
eine sehr sorgfältige
Handhabung, um eine Degradation einer Systemfunktion zu verhindern. TLB-Traps müssen zum
Beispiel sehr schnell ausgeführt
werden. Aus diesem Grund umfassen die bevorzugten Ausführungsformen
einen schnellen Trap-Mechanismus, der so ausgelegt ist, um das Aufrufen
von kleinen Trap-Hantierern ohne die Kosten dieser vorausgehenden
Verzweigung zu ermöglichen.
Zusätzlich
können schnelle
Trap-Hantierer unabhängig
von einem Speicher angeordnet werden, und zwar in einem auf dem
Chip befindlichen ROM zum Beispiel, um Speichersystem-Nachteile,
die RAM-Stellen zugeordnet sind, zu eliminieren.
-
In den bevorzugten Ausführungsformen
sind nur Traps, die in schnellen Traps resultieren, die VMU-Ausnahmen,
die vorstehend erwähnt
sind. Schnelle Traps werden separat von anderen Traps numeriert, und
besitzen einen Bereich von 0 bis 7. Allerdings haben sie dieselbe
Priorität
wie MMU-Ausnahmen. Wenn die Unterbrechungs-Steuereinheit 363 eine schnelle
Trap als die Trap höchster
Priorität
erkennt, die dann anhängig
ist, bewirkt sie, daß ein
Basis-Register für
schnelle Traps (FTB) von den speziellen Registern 412 ausgewählt wird
und auf den Leitungen 416 zugeführt wird, um mit dem Trap-Offset
kombiniert zu werden. Die sich ergebende Vektor-Adresse, die zu
dem Vorababruf-Selektor PF_PC Sel 390, über Leitungen 373', geliefert
ist, ist dann eine Verknüpfung
der 22-Bits hoher Ordnung von dem FTB-Register, gefolgt durch drei
Bits, die die Zahl für
schnelle Traps darstellt, gefolgt durch sieben Bits von 0. Demzufolge
ist jede schnelle Trap-Adresse von 128 Bytes, oder 32 Worten, beabstandet.
Bei einem Aufruf verzweigt der Prozessor zu dem Start-Wort und kann
Programme innerhalb des Blocks oder einer Verzweigung außerhalb
davon ausführen.
Eine Ausführung von
kleinem Programm, wie beispielsweise von Standard TBL-Handhabungs-Programmen,
die in 32 In struktionen oder weniger ausgeführt werden können, ist
schneller als gewöhnliche
Traps, da die vorausgehende Verzweigung zu dem tatsächlichen
Ausnahme-Handhabungs-Programm
vermieden wird.
-
Es sollte angemerkt werden, daß, obwohl
alle Instruktionen dieselbe Länge
von 4 Bytes haben (d. h. Belegen von vier Adressen-Stellen), und
zwar in den bevorzugten Ausführungsformen,
der schnelle Trap-Mechanismus auch in Mikroprozessoren nützlich ist,
deren Instruktionen in der Länge
variabel sind. In diesem Fall wird ersichtlich werden, daß die schnellen
Trap-Vektor-Adressen durch ausreichenden Raum separiert sind, um
mindestens zwei der kürzesten
Instruktionen, die an dem Mikroprozessor verfügbar sind, und vorzugsweise
ungefähr
32 durchschnittlich dimensionierte Instruktionen, aufzunehmen. Mit
Sicherheit sollten, wenn der Mikroprozessor eine Rückführung von
einer Trap-Instruktion umfaßt,
die Vektor-Adressen durch mindestens genug Raum separiert sein,
um zu ermöglichen,
daß einer
Instruktion mindestens eine andere Instruktion in dem Hantierer
vorausgeht.
-
Auch gibt bei einer Versendung zu
einem Trap-Hantierer der Prozessor sowohl einen Kernel-Mode als auch
einen unterbrochenen Zustand ein. Gleichzeitig wird eine Kopie des
Vergleichs-Zustands-Registers (CSR) in dem Register für den vorherigen,
geführten
Zustand (PCSR) plaziert und eine Kopie des PSR wird in dem Register
für die
frühere
PSR (PPSR) gespeichert. Die Kernel-Moden und die Moden über die
unterbrochenen Zustände
werden durch Bits in dem Prozessor-Status-Register (PSR) dargestellt.
Immer wenn das Bit über
den unterbrochenen Zustand in das momentane PSR eingegeben wird,
werden die Shadow-Register oder Trap-Register RT[24] bis RT[31]
sichtbar, wie dies vorstehend beschrieben und in 7b dargestellt ist. Der Unterbrechungs-Hantierer
kann einen Kernel-Modus nur durch Schreiben eines neuen Modus in
das PSR ausschalten, allerdings ist die einzige Art und Weise, um
den unterbrochenen Zustand zu belassen, diejenige, durch Ausführen einer
Rückführung von
einer Trap-(RTT)-Instruktion.
-
Wenn die IEU 104 eine RTT-Instruktion
ausführt,
wird PCSR zu dem CSR-Register hin gespeichert und das PPSR-Register
wird zu dem PSR-Register zurückgespeichert,
um dadurch automatisch das Bit über den
Unterbrechungs-Zustand in dem PSR-Register zu beseitigen. Der PF_PC
SEL-Selektor 390 wählt
auch ein spezielles Register xPC in dem speziellen Register-Satz 412 als
die nächste
Adresse aus, von der vorab abgerufen ist. xPC wird zu entweder dem
MBUF PFnPC oder dem EBUF PFnPC umgespeichert, wie dies geeignet
ist, und zwar über
einen Inkrementator 394 und einen Bus 396. Die
Entscheidung, ob xPC in den EBUF oder den MBU F PFnPC umzuspeichern
ist, wird entsprechend dem Bit "Prozedur
In-Progress" des
PSR vorgenommen, wenn einmal umgespeichert wird.
-
Es sollte angemerkt werden, daß der Prozessor
nicht dasselbe, spezielle Register xPC verwendet, um die Rückführ-Adresse
für beide
Traps und prozeduralen Instruktionen zu speichern. Dir Rückführ-Adresse
für eine
Trap wird in dem speziellen Register xPC gespeichert, wie dies erwähnt ist,
allerdings wird die Adresse, um zu einer Stelle nach einer prozeduralen
Instruktion zurückzukehren,
in einem unterschiedlichen, speziellen Register, uPC, gespeichert.
Demzufolge verbleibt der unterbrochene Zustand gerade dann verfügbar, während der
Prozessor eine Emulations-Flußfolge
ausführt,
die durch eine prozedurale Instruktion anforderungsmäßig herangezogen
ist. Andererseits sollten Ausnahme-Handhabungs-Programme nicht irgendwelche
prozeduralen Instruktionen umfassen, da dabei kein spezielles Register
vorhanden ist, um eine Adresse für
eine Rückführung zu
dem Ausnahme-Hantierer zu speichern, nachdem die Emulations-Flußfolge abgeschlossen
ist.
-
5) Verschachtelung:
-
Obwohl bestimmte Prozessor-Status-Informationen
automatisch beim Versenden zu einem Trap-Hantierer, insbesondere
einem CSR, einem PSR, dem Rückführ-PC und
in einem bestimmten Sinne der "A" Register-Satz ra[24]
bis ra[31], gesichert wird, sind andere Kontext-Informationen nicht
geschützt.
Zum Beispiel werden die Inhalte eines Fließkomma-Status-Registers (FSR)
nicht automatisch gesichert. Wenn ein Trap-Hantierer beabsichtigt,
diese Register zu ändern,
muß er
seine eigene Sicherung durchführen.
-
Aufgrund der begrenzten Sicherung
bzw. des Backups, die automatisch bei einem Versenden zu einem Trap-Hantierer
durchgeführt
wird, wird eine Verschachtelung von Traps nicht automatisch ermöglicht.
Ein Trap-Hantierer sollte irgendwelche erwünschten Register aktualisieren,
irgendeinen Unterbrechungszustand beseitigen, irgendwelche Informationen,
die zur Handhabung der Trap für
die System-Register notwendig sind, lesen und sie geeignet verarbeiten.
Unterbrechungen werden automatisch unter Versenden zu dem Trap-Hantierer
freigegeben. Nach einer Verarbeitung kann der Hantierer dann die
gesicherten Register zurücksetzen und
Unterbrechungen erneut freigeben und die RTT-Instruktion ausführen, um zu der Unterbrechung
zurückzukehren.
-
Wenn verschachtelte Traps zugelassen
werden sollen, sollte der Trap-Hantierer in einen ersten und einen
zweiten Bereich unterteilt werden. In dem ersten Bereich sollte,
während
Unterbrechungen gesperrt werden, der xPC kopiert werden, und zwar
unter Verwendung einer speziellen Register-Bewegungs-Instruktion, und
auf den Stapel geschoben werden, der durch den Trap-Hantierer aufrechterhalten
wird. Die Adresse des Beginns des zweiten Bereichs des Trap-Hantierers
sollte dann zur Verwendung der speziellen Register-Bewegungs-Instruktion
in den xPC verschoben werden und eine Rückführung von der Trap-Instruktion
(RTT) sollte ausgeführt
werden. Die RTT beseitigt den unterbrochenen Zustand (über die
Zurücksetzung
von PPSR in PSR) und überträgt eine
Steuerung zu der Adresse in dem xPC, der nun die Adresse des zweiten
Bereichs des Hantierers enthält.
Der zweite Bereich kann Unterbrechungen an diesem Punkt freigeben
und fortfahren die Ausnahme in dem unterbrechbaren Modus zu verarbeiten.
Es sollte angemerkt werden, daß die Shadow-Register
RT[24] bis RT[31] nur in dem ersten Bereich dieses Hantierers sichtbar
sind und nicht in dem zweiten Bereich. Demzufolge sollte in dem
zweiten Bereich der Hantierer jeder der "A" Register-Werte
bewahren, wo diese Register-Werte dahingehend wahrscheinlich sind,
daß sie
durch den Hantierer geändert
werden. Wenn die Trap-Handhabungs-Prozedur
abgeschlossen ist, sollte sie alle gesicherten Register erneut speichern,
in Original-xPC und dem Trap-Hantierer-Stapel herausnehmen und wieder
zurück
in das xPC-Spezial-Register unter Verwendung einer Spezial-Register-Bewegungs-Instruktion bewegen,
und eine andere RTT ausführen.
Dies führt
eine Steuerung zu der geeigneten Instruktion in der Haupt- oder
Emulations-Instruktions-Flußfolge
zurück.
-
6) Liste von Traps:
-
Die folgende Tabelle 1 gibt die Trap-Zahlen,
Prioritäten
und Handhabungs-Moden von Traps an, die in den bevorzugten Ausführungsformen
erkannt werden:
-
-
III. Instruktions-Ausführungs-Einheit:
-
Die kombinierten Steuer- und Datenpfad-Bereiche
der IEU 104 sind in 5 dargestellt.
Der primäre Datenpfad
beginnt mit dem Instruktions-Operanden-Daten-Bus 124 von
der IFU 102. Als ein Daten-Bus werden Zwischen-Operanden
zu einer Operanden-Ausrichtungs-Einheit 470 geliefert
und weiter zu einer Register-Datei (REG ARRAY) 472 geführt. Register-Daten
werden von der Register-Datei 472 über eine Bypass-Einheit 474, über einen
Register-Datei-Ausgangs-Bus 476 zu einem parallelen Feld
bzw. Array aus funktionalen Berechnungselementen (FU0–n) 4780–n , über einen
Verteilungsbus 480, geführt.
Daten, die durch die funktionalen Einheiten 4780–n erzeugt
sind, werden zurück
zu der Bypass-Einheit 474 oder dem Register-Feld 472,
oder beiden, über
einen Ausgangs-Bus 482 geliefert.
-
Eine Lade/Speicher-Einheit 484 vervollständigt den
Datenpfad-Bereich der IEU 104 Die Lade/Speicher-Einheit 484 ist
zum Handhaben der Übertragung
von Daten zwischen der IEU 104 und der CCU 106 verantwortlich.
Genauer gesagt, werden geladene Daten, die von dem Daten-Cache 134 der
CCU 106 erhalten sind, durch die Lade/Speicher-Einheit 484 zu
einem Eingang des Register-Felds 472 über einen Lade-Daten-Bus 486 übertragen.
Daten, die zu dem Daten-Cache 134 der CCU 106 gespeichert
werden sollen, werden von dem Verteilungs-Bus 480 der funktionalen
Einheit empfangen.
-
Der Steuerpfad-Bereich der IEU 104 ist
zum Ausgeben, Managen und Vervollständigen der Verarbeitung von
Informationen über
den IEU-Datenpfad verantwortlich. In den bevorzugten Ausführungsformen
der vorliegenden Erfindung ist der IEU-Steuerpfad zum Managen der
gleichzeitigen Ausführung
von mehrfachen Instruktionen in der Lage und der IEU-Datenpfad dient
für mehrfache,
unabhängige
Datenübertragungen
zwischen im wesentlichen allen Datenpfad-Elementen der IEU 104.
Der IEU-Steuerpfad arbeitet in Abhängigkeit von Instruktionen,
die über
den Instruktions/Operanden-Bus 124 empfangen sind. Genauer
gesagt werden Instruktions-Sätze
durch die EDecodiereinheit 490 empfangen. In den bevorzugten
Ausführungsformen
der vorliegenden Erfindung empfängt
die EDcodiereinheit 490 beide Instruktions-Sätze, die
durch die IFIFO-Master-Register 216, 224 gehalten
sind und decodiert sie. Die Ergebnisse des Decodierens aller acht
Instruktionen werden auf verschiedene Weise zu einer Übertragungs-Prüfeinrichtungs-(CRY
CHKR)-Einheit 492, einer Abhängigkeits-Prüfeinrichtungs-(DEP
CHKR)-Einheit 494, einer Register-Umbenennungseinheit-(REG
RENAME)-Einheit 496, einer Instruktions-Herausgeber-Einheit (ISSUER) 498 und
einer Ablage-Steuereinheit-(RETIRE CTL) 500 zugeführt.
-
Die Trage-Prüfeinrichtungs-Einheit 492 empfängt decodierte
Informationen über
die acht anhängigen Instruktionen
von der EDecodiereinheit 490 über Steuerleitungen 502.
Die Funktion der Übertragungs-Prüfeinrichtung 492 dient
auch dazu, solche der anhängigen
Instruktionen zu identifizieren, die entweder das Übertragungs-Bit
des Prozessor-Status-Worts
beeinflussen oder von dem Zustand des Übertragungs-Bits abhängig sind.
Diese Steuerinformationen werden über Steuerleitungen 504 zu
der Instruktions-Herausgeber-Einrichtungs-Einheit 498 zugeführt.
-
Decodierte Informationen, die die
Register der Register-Datei 472 identifizieren, werden
durch die acht anhängigen
Instruktionen verwendet, wie sie direkt zu der Register- Umbenennungs-Einheit 496 über Steuerleitungen 506 zugeführt sind.
Diese Informationen werden auch zu der Abhängigkeits-Prüfeinrichtungs-Einheit 494 zugeführt. Die
Funktion der Abhängigkeits-Prüfeinrichtungs-Einheit 494 ist
diejenige, zu bestimmen, welches der anhängigen Instruktions-Referenz-Register
als die Bestimmung für
Daten und welche Instruktionen, falls welche vorhanden sind, bei
irgendeinem solcher Bestimmungs-Register anhängig sind. Solche Instruktionen,
die Register-Abhängigkeiten
haben, werden durch Steuersignale identifiziert, die über die
Steuerleitungen 508 zu der Register-Umbennenungs-Einheit 496 zugeführt werden.
-
Schließlich liefert die EDecodiereinheit 490 Steuerinformationen,
die die bestimmte Art und Funktion jeder der acht anhängigen Instruktionen
identifizieren, zu der Instruktions-Ausgabeeinrichtungs-Einheit 498 über Steuerleitungen 510.
Die Ausgabeeinrichtungs-Einheit 498 ist
zur Bestimmung der Datenpfad-Ressourcen, insbesondere der Verfügbarkeit
bestimmter, funktionaler Einheiten, für die Ausführung von anhängigen Instruktionen
verantwortlich. Gemäß den bevorzugten
Ausführungsformen
der Architektur 100 ermöglicht
die Instruktions-Ausgabeeinrichtungs-Einheit 498 die Ausführung außerhalb
der Reihenfolge irgendwelcher der acht anhängigen Instruktionen, die Gegenstand
der Verfügbarkeit
von Datenpfad-Ressourcen und Führungs- und
Register-Abhängigkeits-Einschränkungen
sind. Die Register-Umbenennungs-Einheit 496 versorgt die
Instruktions-Ausgabe-Einheit 498 mit
einer Bit-Auflistung, und zwar über
Steuerleitungen 512 dieser Instruktionen, die in geeigneter
Weise nicht eingeschränkt
sind, um eine Ausführung
zu ermöglichen.
Instruktionen, die bereits ausgeführt worden sind (erledigt sind)
und solche mit Register- oder Übertragungsabhängigkeiten,
werden logisch von der Bit-Auflistung entfernt.
-
In Abhängigkeit von der Verfügbarkeit
erforderlicher, funktionaler Einheiten 4780–n kann
die Instruktions-Ausgabeeinrichtungs-Einheit 498 die Ausführung von
mehrfachen Instruktionen während
jedes System-Takt-Zyklus initiieren. Der Status der funktionalen
Einheiten 4780–n wird über einen
Status-Bus 514 zu der Instruktions-Ausgabeeinrichtungs-Einheit 498 zugeführt. Steuersignale
zum Initiieren, und darauffolgendem Handhaben der Ausführung der
Instruktionen, werden durch die Instruktions-Ausgabeeinrichtungs-Einheit 498 auf
den Steuerleitungen 516 zu der Register-Umbenennungs-Einheit 496 und
selektiv zu den funktionalen Einheiten 4780–n zugeführt. In
Abhängigkeit
davon liefert die Register- Umbenennungs-Einheit 496 Register-Auswahl-Signale
auf einem Register-Datei-Zugriffs-Steuer-Bus 518. Die spezifischen
Register, die über
die Steuersignale freigegeben sind, die auf dem Bus 518 zugeführt sind,
werden durch die Auswahl der Instruktion, die ausgeführt werden
soll, und durch die Bestimmung durch die Register-Umbenenungs-Einheit 496 der
Register, auf die durch die bestimmte Instruktion Bezug genommen
ist, bestimmt.
-
Eine Bypass-Steuereinheit (BYPASS
CTL) 520 steuert allgemein die Operation der Bypass-Daten-Führungs-Einheit 474 über Steuersignale
auf Steuerleitungen 524. Die Bypass-Steuereinheit 520 überwacht
den Status jeder der funktionalen Einheiten 4780–n und
bestimmt, in Verbindung mit den Register-Referenzen, die von der
Register-Umbenennungs-Einheit 496 über Steuerleitungen 422 zugeführt werden,
ob Daten von der Register-Datei 472 zu den funktionalen
Einheiten 4780–n geführt werden
sollen, oder ob Daten durch die funktionalen Einheiten 4780–n unmittelbar über die
Bypass-Einheit 474 zu dem Verteilungs-Bus 480 der
funktionalen Einheit zur Verwendung bei der Ausführung einer neu herausgegebenen
Instruktion, die durch die Instruktions-Herausgabeeinrichtungs-Einheit 498 herausgegeben
ist, geführt
werden kann. In jedem Fall steuert die Instruktions-Herausgabeeinrichtungs-Einheit 498 direkt
die Führung
von Daten von dem Verteilungs-Bus 480 zu den funktionalen
Einheiten 4780–n durch selektives
Freigeben von spezifischen Register-Daten zu jeder der funktionalen
Einheiten 4780–n .
-
Die verbleibenden Einheiten des IEU-Steuerpfads
umfassen eine Ablage-Steuereinheit 500,
eine Steuerfluß-Steuer-(CF
CTI)-Einheit 528, eine Erledigt-Steuer-(DONE CTL)-Einheit 536. Die
Ablage-Steuereinheit 500 arbeitet so, um die Ausführung von
außerhalb
der Reihenfolge ausgeführten
Instruktionen zu vermeiden oder zu bestätigen. Dort, wo eine Instruktion
außerhalb
der Reihenfolge ausgeführt
worden ist, kann diese Instruktion beschädigt werden oder, wenn einmal
alle früheren
Instruktionen auch abgelegt sind, abgelegt bzw. aufgegeben werden.
Basierend auf einer Identifikation davon, welche des momentanen
Satzes von acht anhängigen
Instruktionen ausgeführt
werden müssen,
die auf den Steuerleitungen 532 zugeführt sind, führt die Ablage-Steuereinheit 500 Steuersignale
auf den Steuerleitungen 534, gekoppelt mit dem Bus 518,
zu, um effektiv die Ergebnis-Daten, die durch das Register-Feld 472 gespeichert
sind, als das Ergebnis der früheren Ausführung von
einer außerhalb
der Reihenfolge ausgeführten
Instruktion zu bestätigen.
-
Die Ablage-Steuereinheit 500 führt die
PC-Erhöhungs/Größen-Steuersignale
auf Steuerleitungen 344 zu der IFU 102, wenn sie
jede Instruktion sucht. Da mehrfache Instruktionen außerhalb
der Reihenfolge ausgeführt
werden können,
und deshalb leicht für
eine simultane Ablage bereit sind, bestimmt die Ablage-Steuereinheit 500 einen
Größenwert
basierend auf der Anzahl von Instruktionen, die gleichzeitig abgelegt
sind. Schließlich
liefert dort, wo alle Instruktionen des IFIFO-Master-Registers 224 ausgeführt und
abgelegt worden sind, die Ablage-Steuereinheit 500 das
IFIFO-Lese-Steuersignal auf den Steuerleitungen 342 zu
der IFU 102, um einen Verschiebevorgang der IFIFO-Einheit 264 zu
initiieren, um dadurch die EDecodiereinheit 490 mit zusätzlichen,
vier Instruktionen als eine instruktionsanhängige Ausführung zu versorgen.
-
Die Steuerfluß-Steuereinheit 528 führt die
etwas spezifischere Funktion eines Ergebnisses des logischen Verzweigungsergebnisses
jeder konditionalen Verzweigung-Instruktion
durch. Die Steuerfluß-Steuereinheit 528 empfängt eine
8-Bit-Vektor-Identifikation
der momentan anhängigen
konditionalen Verzweigungs-Instruktionen von der EDecodiereinheit 490 über die
Steuerleitungen 510. Ein 8-Bit-Vektor-Instruktions-Erledigt-Steuersignal
wird ähnlich über die
Steuerleitungen 582 von der Erledigt-Steuereinheit 540 empfangen.
Dieses Erledigt-Steuersignal ermöglicht
der Steuerfluß-Steuereinheit 528,
zu identifizieren, wenn eine konditionale Verzweigungs-Instruktion
vorgenommen ist, zumindest zu einem Punkt, der ausreichend ist,
um einen konditionalen Steuerfluß-Status zu bestimmen. Das
Steuerfluß-Status-Ergebnis
für die
anhängigen, konditionalen
Verzweigungs-Instruktionen wird durch die Steuerfluß-Steuereinheit 528 so
gespeichert, wie sie ausgeführt
werden. Die Daten, die notwendig sind, um das Ergebnis der konditionalen
Steuerfluß-Instruktion zu
bestimmen, wird von temporären
Status-Registern
in dem Register-Feld 472 über die Steuerleitungen 530 erhalten.
Wenn jede konditionale Steuerfluß-Instruktion ausgeführt ist,
führt die
Steuerfluß-Steuereinheit
ein neues Steuerfluß-Ergebnis-Signal
auf den Steuerleitungen 348 zu der IFU 102 zu.
Dieses Steuerfluß-Ergebnis-Signal
umfaßt
vorzugweise zwei 8 Bit-Vektoren, die festlegen, ob die Status-Ergebnisse,
durch eine jeweilige Bit-Position, der acht potentiell anhängigen Steuerfluß-Instruktionen
bekannt sind und das entsprechende Status-Ergebnis angibt, was auch
durch das Bit-Positions-Ansprechverhalten gegeben ist.
-
Zuletzt wird die Erledigt-Steuereinheit 540 angewiesen,
den operationsmäßigen Ausführungszustand jeder
der funktionalen Einheiten 4780–n zu überwachen.
Wenn jede der funktionalen Einheiten 4780–n einen
Abschluß einer
Instruktions-Ausführungs-Operation signalisiert,
liefert die Erledigt-Steuereinheit 540 ein entsprechendes
Erledigt-Steuersignal
auf den Steuerleitungen 542, um die Register-Umbenennungs-Einheit 496,
die Instruktions-Ausgabeeinrichtungs-Einheit 498, die Ablage-Steuereinheit 500 und
die Bypass-Steuereinheit 520 zu warnen bzw. darauf hinzuweisen.
-
Die Parallel-Feld-Anordung der funktionalen
Einheiten 4780–n erhöht die Steuerkonsistenz
der IEU 104. Die bestimmte Art der individuellen funktionalen
Einheiten 4780–n muß durch
die Instruktions-Herausgabeeinrichtungs-Einheit 498 bekannt
sein, damit Instruktionen geeignet erkannt und für eine Ausführung ablaufmäßig geplant
werden. Die funktionalen Einheiten 4780–n sind
zum Bestimmen und Ausführen
deren spezifischer Steuerfluß-Operationen verantwortlich,
die notwendig sind, um deren erforderliche Funktionen durchzuführen. Demzufolge
muß, anders
als die Instruktions-Ausgabe-Einrichtung 498, keine der
IEU-Steuereinheiten eine unabhängige
Kenntnis der Steuerfluß-Verarbeitung
einer Instruktion haben. Zusammen liefern die Instruktions-Herausgabeeinrichtungs-Einheit 498 und
die funktionalen Einheiten 4780–n die
notwendige Steuersignal-Führung
der Funktionen, die durch die verbleibenden Steuerfluß-Handhabungs-Einheiten 496, 500, 520, 528, 540 durchgeführt werden
sollen. Demzufolge beeinflußt
eine Veränderung
in der bestimmten Steuerfluß-Operation
einer funktionalen Einheit 4780–n nicht
die Steuer-Operation der IEU 104. Weiterhin erfordern die
funktionale Erhöhung
einer existierenden, funktionalen Einheit 4780–n und
sogar die Hinzufügung
einer oder mehrerer neuer funktionaler Einheiten 4780–n ,
wie beispielsweise ein erweiterter Präzisisons-Fließkomma-Multiplizierer
und eine erweiterte Präzisions-Fließkomma-ALU,
eine schnellere Fourier-Berechnungs-Funktional-Einheit und eine trigonometrische
Berechnungs-Einheit, nur eine geringe Modifikation der Instruktions-Herausgabeeinrichtungs-Einheit 498.
Die erforderlichen Modifikationen müssen für die Erkennung der bestimmten
Instruktion, basierend auf dem entsprechenden Instruktions-Feld,
isoliert durch die EDecodiereinheit 490, eine Korrelation
der Instruktion zu der erforderlichen, funktionalen Einheit 4780–n liefern.
Eine Steuerung bzw. Kontrolle über
die Auswahl eines Register-Datums, eines Führens von Daten, eines Instruktions-Abschlusses und
einer Ablage, verbleiben konsistent mit der Handhabung aller anderen
Instruktionen, die in Bezug auf alle anderen funktionalen Einheiten 4780–n ausgeführt sind.
-
A) Detail des IEU-Datenpfads:
-
Das zentale Element des IEU-Datenpfads
ist die Register-Datei 472. Innerhalb des IEU-Datenpfads dient
allerdings die vorliegende Erfindung für eine Anzahl von parallelen
Datenpfaden, die allgemein für
spezifische Funktionen optimiert sind. Die zwei prinzipiellen Datenpfade
sind ganzzahlig und mit Fließkomma.
Innerhalb jedes parallelen Datenpfads ist ein Bereich der Register-Datei 472 vorgesehen,
um Datenmanipulationen zu unterstützen, die innerhalb des Datenpfads
auftreten.
-
1) Detail der Register-Datei:
-
Die bevorzugte, allgemeine Architektur
einer Datenpfad-Register-Datei ist in 6a dargestellt. Die Datenpfad-Register-Datei 550 umfaßt einen
temporären
Puffer 552, ein Register-Datei-Feld 564, einen
Eingabe-Selektor 559 und einen Ausgabe-Selektor 556.
Daten, die letztendlich für
das Register-Feld 564 bestimmt sind, werden typischerweise
zuerst durch den temporären
Puffer 552 über
einen kombinierten Daten-Eingangs-Bus 558` empfangen.
Dies bedeutet, daß alle
Daten, die zu der Datenpfad-Register-Datei 550 gerichtet sind,
durch den Eingangs-Selektor 559 von einer Anzahl von Eingangs-Bussen 558,
vorzugsweise zwei, auf dem Eingangs-Bus 558' im Multiplexverfahren verarbeitet
werden. Register-Auswahl- und Freigabe-Steuersignale, die auf dem
Steuer-Bus 518 geliefert werden, wählen die Register-Stelle für die empfangenen
Daten innerhalb des temporären
Puffers 552 aus. Bei der Ablage einer Instruktion, die
Daten erzeugt hat, die in dem temporären Puffer gespeichert sind,
geben Steuersignale, die wiederum auf dem Steuer-Bus 518 geliefert
werden, die Übertragung
der Daten von dem temporären
Puffer 552 zu einem logisch entsprechenden Register innerhalb
des Register-Datei-Felds 564 über den Daten-Bus 560 frei.
Allerdings können,
vor einer Ablage der Instruktion, Daten, die in den Registern des
temporären
Puffers 552 gespeichert sind, bei der Ausführung darauffolgender
Instruktionen durch Führen
von in dem temporären
Puffer gespeicherten Daten zu dem Ausgabe-Daten-Selektor 556 über einen
Bypass-Bereich des Daten-Busses 560 verwendet werden. Der
Selektor 556, gesteuert durch ein Steuersignal, das über den
Steuer-Bus 518 geliefert ist, wählt zwischen Daten aus, die
von den Registern des temporären
Puffers 552 geliefert sind, und von solchen des Register-Datei-Felds 564.
Die sich ergebenden Daten werden auf dem Register-Datei-Ausgangs-Bus 564 geliefert.
Auch kann dort, wo eine Ausführungs-Instruktion
beim Abschluß abgelegt
werden wird, d. h. die Instruktion ist in der Reihenfolge ausgeführt worden,
der Eingangs-Selektor 559 so ge richtet werden, um die sich
ergebenden Daten direkt zu dem Register-Feld 554 über eine
Bypass-Verlängerung
bzw. -Erweiterung 558'' zu führen.
-
Gemäß den bevorzugten Ausführungsformen
der vorliegenden Erfindung läßt jede
Datenpfad-Register-Datei 550 zwei simultane Register-Operationen
zu, die auftreten. Demzufolge sieht der Eingangs-Bus 558 für zwei Voll-Register-Daten-Werte
vor, daß diese
in den temporären
Puffer 553 eingeschrieben werden. Intern bildet der temporäre Puffer 582 ein
Multiplexer-Feld, das die simultane Führung der Eingabedaten zu irgendwelchen
zwei Registern innerhalb des temporären Puffers 552 ermöglicht. Ähnlich lassen
die internen Multiplexer zu, daß jedes
der fünf
Register des temporären
Puffers 552 ausgewählt
werden kann, um Daten auf dem Bus 560 auszugeben. Das Register-Datei-Feld 564 umfaßt in ähnlicher
Weise Eingangs- und Ausgangs-Multiplexer, die ermöglichen,
daß zwei
Register ausgewählt
werden, um auf dem Bus 560, oder fünf zu einer Quelle, über einen
Bus 562, jeweilige Daten simultan zu empfangen. Schließlich ist
der Register-Datei-Ausgabe-Selektor 556 vorzugsweise
so ausgeführt,
um zu ermöglichen,
daß irgendwelche
fünf der
zehn Register-Daten-Werte, die über
die Busse 560, 562 empfangen sind, simultan auf
dem Register-Datei-Ausgangs-Bus 564 ausgegeben werden können.
-
Der Register-Satz innerhalb des temporären Puffers
ist allgemein in 6b dargestellt.
Der Register-Satz 552' besteht
aus acht Einzel-Wort-(32 Bit)-Registern IORD, I1RD, ... I7RD. Der
Register-Satz 552' kann
auch als ein Satz von vier Doppel-Wort-Registern IORD, IORD + 1
(IORD4), I1RD, I1RD + 1 (ISRD), ... I3RD, I3RD + 1 (I7RD) verwendet
werden.
-
Gemäß der vorliegenden Erfindung
wird, im Gegensatz dazu, Duplikat-Register für jedes der Register innerhalb
des Register-Datei-Felds 554 vorzusehen, die Register in
dem temporären
Puffer-Register-Satz 552 durch die Register-Umbenennungs-Einheit 496 basierend
auf der relativen Stelle der jeweiligen Instruktionen innerhalb
der zwei IFIFO-Master-Register 216, 224 Bezug
genommen. Jede Instruktion, die durch die Architektur 100 ausgeführt ist,
kann zur Ausgabe auf bis zu zwei Register, oder ein Doppel-Wort-Register, für die Bestimmung
von Daten, die durch die Ausführung
der Instruktion erzeugt sind, Bezug nehmen. Typischerweise wird
eine Instruktion nur auf ein einzelnes Ausgangs-Register Bezug nehmen.
Demzufolge wird eine Instruktion zwei (I2)
der acht anhängigen
Instruktionen, positionsmäßig so identifiziert,
wie dies in 6c dargestellt ist,
und die auf ein einzelnes Ausgangs-Register Bezug nimmt, daß Datenbestimmungs- Register I2RD so
ausgewählt
werden, um Daten aufzunehmen, die durch die Ausführung der Instruktion produziert
sind. Dort, wo die Daten, die durch die Instruktion I2 produziert
sind, durch eine darauffolgende Instruktion verwendet werden, zum
Beispiel I5, werden die Daten, die in dem
I2RD Register gespeichert sind, heraus über den Bus 560 übertragen
werden und die sich ergebenden Daten werden zurück zu dem temporären Puffer 552 in
das Register, das als I5RD identifiziert ist, gespeichert werden.
Es ist anzumerken, daß die
Instruktion I5 von der Instruktion I2 abhängig
ist. Die Instruktion I5 kann nicht ausgeführt werden,
bis die Ergebnis-Daten von I2 verfügbar sind. Allerdings
kann, wie gesehen werden kann, die Instruktion I5 vor
der Ablage der Instruktion I2 durch Erhalten deren
erforderlicher Eingangs-Daten von der Datenstelle der Instruktion
I2 des temporären Puffers 552' ausgeführt werden.
-
Schließlich werden, wenn eine Instruktion
I2 abgelegt wird, die Daten von dem Register
I2RD zu der Register-Stelle innerhalb des Register-Datei-Felds 564 eingeschrieben
werden, wie dies durch die logische Position der Instruktion an
dem Punkt der Ablage bestimmt ist. Das bedeutet, daß die Ablage-Steuereinheit 560 die
Adresse der Bestimmungs-Register
in dem Register-Datei-Feld von den Register-Referenz-Feld-Daten,
die von der EDecodiereinheit 490 auf den Steuerleitungen 510 geliefert
werden, bestimmt. Wenn einmal die Instruktionen I0–3 abgelegt
worden sind, werden die Werte in die I4RD–I7RD in die IORD–I3RD simultan
mit einer Verschiebung der IFIFO-Einheit 264 verschoben.
-
Eine Komplikation entsteht dort,
wo eine Instruktion I2 einen Doppel-Wort-Ergebnis-Wert liefert. Gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung wird eine Kombination von Stellen 12RD und 16RD dazu
verwendet, die Daten zu speichern, die sich aus der Instruktion
I2 ergeben, bis diese Instruktion abgelegt
oder in anderer Weise aufgehoben ist. In der bevorzugten Ausführungsform
wird die Ausführung
von Instruktionen I4–7 dort gehalten, wo
eine Doppel-Wort-Ausgangs-Referenz durch irgendeine der Instruktionen I0–3 durch
die Register-Umbenennungs-Einheit 496 erfaßt ist.
Dies ermöglicht,
daß der
gesamte temporäre
Puffer 552' als
ein einzelner Rang bzw. eine Datenebene von Doppelwort-Registern
verwendet werden kann. Wenn einmal Instruktionen I0–3 abgelegt
worden sind, kann der temporäre
Puffer 552' wieder
als zwei Ränge bzw.
Ranks von Einzelwort-Registern verwendet werden. Weiterhin wird
die Ausführung
irgendeiner Instruktion I4–7 dort gehalten, wo
ein Doppelwort-Ausgangs-Register erforderlich ist, bis die Instruktion
in eine entsprechende I0–7 Stelle hinein verschoben
worden ist.
-
Die logische Organisation des Register-Datei-Felds 564 ist
in 7a–b dargestellt. Gemäß den bevorzugten Ausführungsformen
der vorliegenden Erfindung steht das Register-Datei-Feld 554 für einen
ganzzahligen Datenpfad aus 40 Registern mit einer 32-Bit-Breite. Dieser Satz
von Registern, der einen Register-Satz-Satz "A" bildet,
ist als ein Basis-Register-Satz ra[0 .. 23] 565, ein oberer
Satz aus Registern für
allgemeine Zwecke ra[24 .. 31] 566 und ein Schatten-Register-Satz
aus acht Trap-Registern für
allgemeine Zwecke rt[24 .. 31] organisiert. Im normalen Betrieb
bilden die Register für
allgemeine Zwecke ra[0 .. 31] 565, 566 den aktiven "A" Register-Satz des Register-Datei-Felds
für den
ganzzahligen Datenpfad.
-
Wie in 7b dargestellt ist, können die
Trap-Register rt[24 .. 31] 567 in den aktiven Register-Satz "A" ausgelagert werden, um einen Zugriff
zusammen mit dem Aktiv-Basis-Satz
von Registern ra[0 .. 23] 565 zu ermöglichen. Diese Konfiguration
des "A" Register-Satzes wird unter
der Kenntnis einer Unterbrechung oder der Ausführung eines Ausnahme-Trap-Handhabungs-Programms
ausgewählt.
Dieser Zustand des Register-Satzes A" wird beibehalten, bis er ausdrücklich zu
dem Zustand zurückgeführt wird,
der in 7a dargestellt
ist, und zwar durch die Ausführung
von Freigabe-Unterbrechungs-Instruktionen oder die Ausführung einer
Rückführung von
einer Trap-Instruktion.
-
In der bevorzugten Ausführungsform
der vorliegenden Erfindung, wie sie durch die Architektur 100 ausgeführt ist,
verwendet der Fließkomma-Datenpfad
ein Register-Datei-Feld 572 mit
erweiterter Präzision
so, wie dies allgemein in 8 dargestellt
ist. Das Register-Datei-Feld 572 besteht aus 32 Registern,
rf[0 .. 31], wobei jedes davon eine Breite von 64 Bits besitzt.
Die Fließkomma-Register-Datei 572 kann
auch logisch als ein "B" Satz von ganzzahligen
Registern rb[0 .. 31] bezeichnet werden. In der Architektur 100 ist
dieser "B" Satz von Registern äquivalent
zu 32 Bits niedriger Ordnung jeder der Fließkomma-Register rf[0 .. 31].
-
Einen dritten Datenpfad darstellend
ist ein Boolscher Operator-Register-Satz 574 vorgesehen,
wie dies in 9 dargestellt
ist, um das logische Ergebnis von Boolschen, kombinatorischen Operationen
zu speichern. Dieser "C" Register-Satz 574 besteht
aus 32 Einzel-Bit-Registern rc[0 .. 31]. Die Operation des Boolschen
Register-Satzes 574 ist dahingehend einzigartig, daß die Ergebnisse
von Boolschen Operationen zu irgendeinem über eine Instruktions auswählbaren
Register des Boolschen Register-Satzes 574 gerichtet werden
kann. Dies steht im Gegensatz zu der Verwendung eines Einzel-Prozessor- Status-Wort-Registers,
das einzelne Bit-Zeichen für
Zustände,
wie beispielsweise gleich, nicht gleich, größer als und andere, einfache, Boolsche
Status-Werte speichert.
-
Sowohl der Fließkoma-Register-Satz 572 als
auch der Boolsche Register-Satz 574 sind durch temporäre Puffer,
die architekturmäßig identisch
zu dem Ganzzahl-Temporär-Puffer 552 sind,
der in 6b dargestellt
ist, ausgeführt.
Der wesentliche Unterschied ist derjenige, daß die Breite der Temporär-Puffer-Register so
definiert ist, daß sie
identisch zu demjenigen des Kompliment-Register-Datei-Felds 572, 574 sind:
in der bevorzugten Ausführung
64 Bits und ein Bit jeweils.
-
Eine Anzahl von zusätzlichen,
speziellen Registern ist zumindest logisch in dem Register-Feld 472 vorhanden.
Die Register, die physikalisch in dem Register-Feld 472 vorhanden
sind, wie dies in 7c dargestellt
ist, umfassen einen Kernel-Stapel-Hinweiszeiger 568, ein
Prozessor-Zustands-Register (PSR) 560, ein Register für den vorherigen
Prozessor-Zustand (PPSR) 570 und ein Feld aus acht Registern
für den
temporären
Prozessor-Zustand
(tPSR[0 .. 7]) 571. Die verbleibenden, speziellen Register
sind über
verschiedene Teile der Architektur 100 verteilt. Der spezielle
Adressen- und Daten-Bus 354 ist so vorgesehen, um Daten
zwischen den speziellen Registern und den "A" und "B" Sätzen
der Register auszuwählen
und zu übertragen.
Eine spezielle Register-Bewegungs-Instruktion ist vorgesehen, um
ein Register von entweder dem "A" oder "B" Register-Satz, die Richtung einer Übertragung
auszuwählen,
um den Adressen-Identifizierer eines speziellen Registers zu spezifizieren.
-
Das Kernel-Stapel-Hinweiszeiger-Register
und die Temporär-Prozessor-Zustands-Register unterscheiden
sich von den anderen, speziellen Registern. Auf den Kernel-Stapel-Hinweiszeiger
kann über
die Ausführung
einer Bewegungs-Instruktion von einem Standard-Register zu einem
Register, wenn man sich in einem Kernel-Zustand befindet, zugegriffen
werden. Auf die Temporär-Prozessor-Zustands-Register
ist nicht direkt zugreifbar. Im Gegensatz hierzu wird dieses Feld
von Registern dazu verwendet, einen Vererbungs-Mechanismus zum Propagieren
des Werts des Prozessor-Zustands-Registers zur Verwendung bei der
Ausführung
von Instruktionen außerhalb
der Reihenfolge auszuführen.
Der anfängliche
Propagations-Wert ist derjenige des Prozessor-Zustands-Registers:
der Wert, der durch die letzte, abgelegte Instruktion geliefert
ist. Dieser Anfangswert wird vorwärts durch die Temporär-Prozessor-Zustands-Register
propagiert, so daß irgendeine
Ausführungs-Instruktion
außerhalb
der Reihenfolge einen Zugriff auf den Wert in dem po sitionsmäßigen, entsprechenden
Temporär-Prozessor-Zustands-Register
besitzt. Die spezifische Art einer Instruktion definiert die Zustands-Code-Bits,
falls welche vorhanden sind, so, daß die Instruktion davon abhängig ist
oder sich ändern
kann. Dort, wo eine Instruktion ein Code ist, wie dies durch die
Register-Abhängigkeit-Prüfeinrichtungs-Einheit 494 und
die Übertragungs-Abhängigkeit-Prüfeinrichtung 492 bestimmt
ist, kann die Instruktion außerhalb
der Reihenfolge ausgeführt
werden. Irgendeine Modifikation der Zustands-Code-Bits des Prozessor-Zustands-Registers
wird zu dem logisch entsprechenden Temporär-Prozessor-Zustands-Register gerichtet.
Genauer gesagt werden nur solche Bits, die sich ändern können, auf den Wert in dem Temporär-Prozessor-Zustands-Register
angewandt und zu allen Temporär-Prozessor-Zustands-Registern
höherer
Ordnung propagiert. Demzufolge führt
jede außerhalb
der Reihenfolge ausgeführte
Instruktion ausgehend von einem Prozessor-Zustands-Register-Wert
aus, geeignet modifiziert durch irgendwelche intervenierenden PSR-Modifikations-Instruktionen.
Eine Ablage einer Instruktion überträgt nur den
Wert der entsprechenden Temporär-Prozessor-Zustands-Register
zu dem PSR-Register 569.
-
Die verbleibenden, speziellen Register
werden in Tabelle II beschrieben.
-
-
-
-
2) Detail des Integer-Datenpfads:
-
Der ganzzahlige bzw. Integer-Datenpfad
der IEU 104, aufgebaut entsprechend der bevorzugten Ausführungsform
der vorliegenden Erfindung, ist in 10 dargestellt.
Zu Zwecken der Deutlichkeit sind viele Steuerpfadverbindungen zu
dem Ganzzahl-Datenpfad 580 nicht dargestellt. Solche Verbindungen
sind in Bezug auf 5 definiert.
-
Eingangs-Daten für den Datenpfad 580 werden
von den Ausrichtungs-Einheiten 582, 584 und der Ganzzahl-Lade-Speicher-Einheit 586 erhalten.
Ganzzahl-Zwischen-Daten-Werte,
die ursprünglich
als ein in eine Instruktion eingebettetes Datenfeld geliefert sind,
werden von der Operanden-Einheit 470 über einen Bus 588 erhalten.
Die Ausrichtungs-Einheit 582 arbeitet
so, um den ganzzahligen Daten-Wert zu isolieren und den sich ergebenden
Wert auf dem Ausgangs-Bus 590 zu einem Multiplexer 592 zu
liefern. Ein zweiter Eingang zu dem Multiplexer 592 ist
die spezielle Register-Adresse und der Daten-Bus 354.
-
Zwischen-Operanden, die aus der Instruktions-Folge
erhalten sind, werden auch von der Operanden-Einheit 570 über den
Daten-Bus 594 erhalten. Diese Werte sind wiederum rechtsbündig durch
die Ausrichtungs-Einheit 584 vor der Weitergabe auf einem
Ausgangs-Bus 596 ausgerichtet.
-
Die Ganzzahl-Lade/Speicher-Einheit 586 kommuniziert
bidirektional über
den externen Daten-Bus 598 mit der CCU 106. Ankommende
Daten zu der IEU 104 werden über die Ganzzahl-Lade/Speicher-Einheit 586
auf dem Eingangs-Daten-Bus 600 zu einer Eingangsverriegelung 602 übertragen.
Der Daten-Ausgang von dem Multiplexer 592 und der Verriegelung 602 wird
auf die Multiplexer-Eingangs-Busse 604, 606 eines Multiplexers 608 gegeben.
Daten von dem Funktional-Einheit-Ausgangs-Bus 482' werden auch
durch den Multiplexer 608 empfangen. Dieser Multiplexer 608,
in den bevorzugten Ausführungsformen
der Architektur 100, ist für zwei simultane Datenpfade
zu den Ausgangs-Multiplexer-Bussen 610 vorgesehen.
Weiterhin kann die Übertragung
von Daten über
den Multiplexer 608 innerhalb jedes halben Zyklus des Systemtaktes
abgeschlossen werden. Da die meisten Instruktionen, die durch die
Architektur 100 ausgeführt
sind, ein einzelnes Bestimmungs-Register verwenden, kann ein Maximum
von vier Instruktionen Daten zu dem Temporär-Puffer 612 während jedes
Systemtaktzyklus liefern.
-
Daten von dem Temporär-Puffer 612 können zu
einem Ganzzahl-Register-Datei-Feld 614 übertragen werden, und zwar über Temporär-Register-Ausgangs-Busse 616,
oder zu einem Ausgangs-Multiplexer 620 über alternative Temporär-Puffer-Register-Busse 618.
Die Ganzzahl-Register-Feld-Ausgangs-Busse 622 ermöglichen
die Übertragung
von Ganzzahl-Register-Daten zu dem Multiplexer 620. Die
Ausgangs-Busse, die mit dem Temporär-Puffer 612 und dem
Ganzzahl-Register-Datei-Feld 614 verbunden sind, lassen
jeweils zu, daß fünf Register-Werte
simultan ausgegeben werden. Dies bedeutet, daß zwei Instruktionen, die auf
insgesamt bis zu fünf
Quellen-Register Bezug nehmen, gleichzeitig ausgegeben werden können. Der
Temporär-Puffer 612,
das Register-Datei-Feld 614 und der Multiplexer 620 ermöglichen,
daß abgehende
Register-Daten-Übertragungen
jeden halben Systemtaktzyklus auftreten. Deshalb können bis
zu vier Ganzzahl- und Fließkomma-Instruktionen
während
jedes Taktzyklus ausgegeben werden.
-
Der Multiplexer 620 arbeitet
so, um ausgehende Register-Daten-Werte von dem Register-Datei-Feld 614 oder
direkt von dem Temporär-Puffer 612 auszuwählen. Dies
ermöglicht,
daß außerhalb
der Reihenfolge ausgeführte
Instruktionen mit Abhängigkeiten
in Bezug auf die zuvor außerhalb
der Reihenfolge ausgeführten Instruktionen
durch die IEU 104 ausgeführt werden können. Dies
erleichtert die doppelten Ziele einer Maximierung der Ausführungs-Durchsatz-Fähigkeit
des IEU-Ganzzahl-Datenpfads durch die Ausführung außerhalb der Reihenfolge von
anhängigen
Instruktionen, während
präzise
Datenergebnisse außerhalb
der Reihenfolge von Datenergebnissen, die durch Instruktionen produziert
sind, die ausgeführt
und abgelegt worden sind, isoliert bzw. ausgesondert werden. Immer wenn
eine Unterbrechung oder ein anderer Ausnahme-Zustand auftritt, der
erfordert, daß der
präzise
Zustand der Maschine zurückgespeichert
wird, ermöglicht
die vorliegende Erfindung, daß die
Daten-Werte, die in dem Temporär-Puffer 612 vorhanden
sind, einfach gelöscht
werden. Das Register-Datei-Feld 614 wird deshalb so belassen,
um präzise
diese Daten-Werte zu enthalten, die nur durch die Ausführung von
Instruktionen produziert sind, die vor dem Auftreten der Unterbrechung
oder einem anderen Ausnahme-Zustand abgeschlossen oder abgelegt
sind.
-
Die bis zu fünf Register-Daten-Werte, die
während
jeder halben System-Taktzyklus-Operation
des Multiplexers 620 ausgewählt sind, werden über die
Multiplexer-Ausgangs-Busse 624 zu
einer Ganzzahl-Bypass-Einheit 626 geliefert. Diese Bypass-Einheit 626 ist,
ihrem Wesen nach, ein paralleles Feld aus Multiplexern, die zum
Führen
von Daten, die an irgendeinem derer Eingänge vorhanden sind, zu irgendeinem
deren Ausgänge
dient. Die Eingänge
der Bypass-Einheit 626 umfassen den auf das spezielle Register
adressierten Daten-Wert oder einen Zwischen-Ganzzahl-Wert über den
Ausgangs-Bus 604 von dem Multiplexer 592, die bis
zu fünf
Register-Daten-Werte, die auf den Bussen 624 zugeführt sind,
die Lade-Operanden-Daten von der Ganzzahl-Lade/Speicher-Einheit
586 über
den Doppel-Ganzzahl-Bus 600, den Zwischen-Operanden-Wert, der
von der Ausrichtungs-Einheit 584 über deren Ausgangs-Bus 526 erhalten
ist, und schließlich
einen Bypass-Datenpfad von dem Funktional-Einheit-Ausgangs-Bus 482.
Dieser Bypass-Datenpfad
und der Daten-Bus 682 dienen für die simultane Übertragung
von vier Register-Werten
pro System-Taktzyklus.
-
Daten werden über die Bypass-Einheit 626 auf
einen Ganzzahl-Bypass-Bus 628, der mit dem Fließkomma-Datenpfad
verbunden ist, zu zwei Operanden-Daten-Bussen, die für die Herausführung von
bis zu fünf Register-Daten-Werten
simultan vorgesehen sind, und einem Speicher-Daten-Bus 632,
der dazu verwendet wird, Daten zu der Ganzzahl-Lade/Speicher-Einheit 586 zu
liefern, ausgegeben.
-
Der Funktional-Einheit-Verteilungs-Bus 480 wird
durch die Operation einer Routenführungs-Einheit 634 ausgeführt. Wiederum
wird die Routenführungs-Einheit 634 durch
ein paralleles Feld aus Multiplexern ausgeführt, das ermöglicht,
daß fünf Register-Werte
an deren Eingängen
so aufgenommen werden, um zu den funktionalen Einheiten geführt zu werden,
die in dem Ganzzahl-Datenpfad vorgesehen sind. Genauer gesagt empfängt die
Routenführungs-Einheit 634 die
fünf Register-Daten-Werte,
die über
die Busse 630 von der Bypass-Einheit 626 geliefert
werden, den momentanen IF_PC Adressen-Wert über den Adressen-Bus 352 und den
Steuer-Fluß-Offset-Wert,
der durch die PC-Steuereinheit 362 bestimmt ist und wie
dies über
die Leitungen 378' geliefert
wird. Die Routenführungs-Einheit 634 kann
optional, über
den Daten-Bus 636, einen Operanden-Daten-Wert empfangen,
der quellenmäßig von
einer Bypass-Einheit erzeugt wird, die innerhalb des Fließkomma-Datenpfads
vorgesehen ist.
-
Die Register-Daten-Werte, die durch
die Routenführungs-Einheit 634 empfangen
sind, können
auf dem Spezial-Register-Adressen- und Daten-Bus 354 und
zu den funktionalen Einheiten 640, 642, 644 übertragen
werden. Genauer gesagt ist die Routenführungs-Einheit 634 geeignet, bis zu
drei Register-Operanden-Werte zu jeder der funktionalen Einheiten 640, 642, 644 über Routenführungs-Einrichtungs-Ausgangs-Busse 646, 648, 650 zu
liefern. Übereinstimmend
mit der allgemeinen Architektur bzw. dem Aufbau der Architektur 100 könnten bis
zu zwei Instruktionen simultan zu den funktionalen Einheiten 640, 642, 644 ausgegeben
werden. Die bevorzugte Ausführungsform
der vorliegenden Erfindung sieht drei zugeordnete Ganzzahl-Funktional-Einheiten
vor, die jeweils eine programmierbare Verschiebefunktion und zwei
arithmetische Logik-Einheit-Funktionen ausführen.
-
Eine ALU0-Funktional-Einheit 644,
eine ALU1-Funktional-Einheit 642 und eine Verschiebeeinrichtungs-Funktional-Einheit 640 liefern
jeweilige Ausgangs-Register-Daten auf dem Funktional-Einheit-Bus 482'. Die Ausgangs-Daten,
die durch die ALU0 und die Verschiebeeinrichtungs-Funktional-Einheit 644, 640 erzeugt sind,
werden auch auf einem gemeinsam geteilten Ganzzahl-Funktional-Einheit-Bus 650 zugeführt, der
in den Fließkomma-Datenpfad
eingebunden ist. Ein ähnlicher
Fließkomma-Funktional-Einheit-Ausgangs-Wert-Daten-Bus 652 wird
auch von dem Fließkomma-Datenpfad
zu dem Funktional-Einheit-Ausgangs-Bus 482' zugeführt.
-
Die ALU0-Funktional-Einheit 644 wird
auch bei der Erzeugung von virtuellen Adressen-Werten beim Unterstützen sowohl der Vorababruf-Operationen
der IFU 102 als auch der Daten-Operationen der Ganzzahl-Lade/Speicher-Einheit
586 verwendet. Der virtuelle Adressen-Wert, der durch die ALU0-Funktional-Einheit 644 berechnet
ist, wird auf einen Ausgangs-Bus 654 gegeben, der sich
mit sowohl dem Ziel-Adressen-Bus 346, der IFU 102 als
auch mit der CCU 106 verbindet, um die physikalische Adresse
der Ausführungs-Einheit (EX PADDR)
zu liefern. Eine Verriegelung 656 ist vorgesehen, um den
virtualisie renden Teil der Adresse zu speichern, der durch die ALU0-Funktional-Einheit 644 erzeugt
ist. Dieser virtualisierende Teil der Adresse wird auf einem Ausgangs-Bus 658 zu
der VMU 108 geliefert.
-
3) Detail des Fließkomma-Datenpfads:
-
In 11 ist
nun der Fließkomma-Datenpfad 660 dargestellt.
Anfangs-Daten werden wieder von einer Anzahl von Quellen aufgenommen,
die den unmittelbaren Ganzzahl-Operanden-Bus 588,
den unmittelbaren Operanden-Bus 594 und den Adressen-Daten-Bus 354 des
speziellen Registers umfassen. Die Endquelle von externen Daten
ist eine Fließkomma-Lade/Speicher-Einheit 622,
die mit der CCU 106 über
den externen Daten-Bus 598 verbunden
ist.
-
Der unmittelbare ganzzahlige Operand
wird durch eine Ausrichtungs-Einheit 664 empfangen, die
so funktioniert, um das Ganzzahl-Daten-Feld vor einer Übergabe
zu einem Multiplexer 666 über einen Ausrichtungs-Ausgangs-Daten-Bus 668 rechtsbündig auszurichten.
Der Multiplexer 666 empfängt auch den Adressen-Daten-Bus 354 des
speziellen Registers. Unmittelbare Operanden werden zu einer zweiten
Ausrichtungs-Einheit 670 für eine rechtsbündige Ausrichtung
geliefert, bevor sie auf einen Ausgangs-Bus 672 geführt werden.
Ankommende Daten von der Fließkomma-Lade/Speicher-Einheit 662 werden
durch eine Verriegelung 674 von einem Lade-Daten-Bus 676 empfangen.
Daten von dem Multiplexer 666, der Verriegelung 674 und einem
Funktional-Einheit-Daten-Rückführbus 482'' werden auf den Eingängen eines
Multiplexers 678 empfangen. Der Multiplexer 678 dient
für auswählbare Datenpfade,
die ausreichend sind, um zu ermöglichen,
daß zwei
Register-Daten-Werte in einen temporären Puffer 680 eingeschrieben
werden, und zwar über
die Multiplexer-Ausgangs-Busse 682, jeden halben Zyklus
des Systemtaktes. Der temporäre
Puffer 680 umfaßt
einen Register-Satz logisch identisch zu dem temporären Puffer 552', wie dies in 6b dargestellt ist. Der
temporäre
Puffer 680 liefert weiterhin bis zu fünf Register-Daten-Werte, damit
sie von dem temporären
Puffer 680 gelesen werden, zu einem Fließkomma-Register-Datei-Feld 684,
und zwar über
Daten-Busse 686, und zu einem Ausgangs-Multiplexer 688 über Ausgangs-Daten-Busse 690.
Der Multiplexer 688 empfängt auch, über Daten-Busse 692,
bis zu fünf
Register-Daten-Werte
von dem Fließkomma-Register-Datei-Feld 684 simultan. Der
Multiplexer 688 funktioniert so, um bis zu fünf Register-Daten-Werte
für eine
simultane Übertragung
zu einer Bypass-Einheit 694 über Daten-Busse 696 auszuwählen. Die
Bypass-Einheit 694 empfängt
auch den unmittelbaren Operanden-Wert, der durch die Ausrichtungs-Einheit 670 über den
Daten-Bus 672, den Ausgangs-Daten-Bus 698 von
dem Multiplexer 666, dem Lade-Daten-Bus 676 und
einer Daten-Bypass-Erweiterung des Funktional-Einheit-Daten-Rückführbusses 482'' geliefert ist. Die Bypass-Einheit 694 arbeitet
so, um bis zu fünf
simultane Register-Operanden-Daten-Werte zur Ausgabe auf den Bypass-Einheit-Ausgangs-Bussen 700,
einem Speicher-Daten-Bus 702, der mit der Fließkomma-Lade/Speicher-Einheit 662 verbunden
ist, und dem Fließkomma-Bypass-Bus 636,
der sich mit der Routenführungs-Einheit 634 des
Ganzzahl-Datenpfads 580 verbindet, auszuwählen.
-
Eine Fließkomma-Routenführungs-Einheit 704 dient
für simultane,
auswählbare
Datenpfade zwischen den Bypass-Einheit-Ausgangs-Bussen 700 und
dem Ganzzahl-Datenpfad-Bypass-Bus 628 und
den Funktional-Einheit-Eingangs-Bussen 706, 708, 710,
die mit den jeweiligen funktionalen Einheiten 712, 714, 716 verbunden
sind. Jeder der Eingangs-Busse 706, 708, 710 ermöglicht,
entsprechend der bevorzugten Ausführungsform der Architektur 100,
die simultane Übertragung
von bis zu drei Register-Operanden-Daten-Werten zu jeder der Funktional-Einheit 712, 714, 716.
Die Ausgangs-Busse dieser funktionalen Einheiten 712, 714, 716 sind
mit dem Funktional-Einheit-Daten-Rückführbus 482" zur Rückführung von
Daten zu dem Register-Datei-Eingangs-Multiplexer 678 verbunden.
Der Ganzzahl-Datenpfad-Funktional-Einheit-Ausgangs-Bus 650 kann
auch so vorgesehen sein, um sich mit dem Funktional-Einheit-Daten-Rückführbus 482'' zu verbinden. Die Architektur 100 dient
für eine
Verbindung der Funktional-Einheit-Ausgangs-Busse einer Multiplier-Funktional-Einheit 712 und
einer Fließkomma-ALU 714,
um über
den Fließkomma-Datenpfad-Funktional-Einheitsbus 652 mit
dem Funktional-Einheit-Daten-Rückführbus 482' des Ganzzahl-Datenpfads 580 verbunden
zu werden.
-
4) Detail des Boolschen
Register-Datenpfads:
-
Der Boolsche Operations-Datenpfad 720 ist
in 12 dargestellt.
Dieser Datenpfad 720 wird beim Unterstützen der Ausführung von
im wesentlichen zwei Typen von Instruktionen verwendet. Der erste
Typ ist eine Operanden-Vergleichs-Instruktion, wo zwei Operanden,
ausgewählt
aus den Ganzzahl-Registersätzen,
den Fließkomma-Registersätzen oder
als unmittelbare Operanden zugeführt,
Subtraktion einer der ALU-Funktional-Einheiten
der Ganzzahl- und Fließkomma-Datenpfade
verglichen. Ein Vergleich wird durch eine Subtraktions-Operation
durch irgendeine der ALU-Funktional- Einheiten 642, 644, 714, 716 mit
den sich ergebenden Vorzeichen- und Null-Status-Bits, die zu einer
kombinierten Eingangs-Selektor- und Vergleichs-Operator-Einheit 722 zugeführt werden,
durchgeführt.
Diese Einheit 722 wählt,
in Abhängigkeit
von Instruktions-Identifizierungs-Steuersignalen,
die von der EDecodiereinheit 490 empfangen sind, den Ausgang
einer ALU-Funktional-Einheit 642, 644, 714, 716 aus
und kombiniert die Vorzeichen- und Null-Bits, um einen Boolschen
Vergleichs-Ergebnis-Wert zu extrahieren. Ein Ausgangs-Bus 723 ermöglicht,
daß die
Ergebnisse der Vergleichs-Operation simultan zu einem Eingangs-Multiplexer 726 und
einer Bypass-Einheit 742 übertragen werden. Wie in den
Ganzzahl- und Fließkomma-Datenpfaden
wird die Bypass-Einheit 742 als ein paralleles Feld aus
Multiplexern ausgeführt,
die mehrfache, auswählbare
Datenpfade zwischen den Eingängen
der Bypass-Einheit 742 zu mehrfachen Ausgängen bilden.
Die anderen Eingänge
der Bypass-Einheit 742 umfassen einen Boolschen Operations-Ergebnis-Rückführ-Daten-Bus 724 und
zwei Boolsche Operanden auf Daten-Bussen 744. Die Bypass-Einheit 742 ermöglicht,
daß Boolsche
Operanden, die bis zu zwei simultane Boolsche Ausführungs-Instruktionen
darstellen, zu einer Boolschen Operations-Funktional-Einheit 746,
und zwar über
Operanden-Busse 748, übertragen
werden. Die Bypass-Einheit 746 ermöglicht auch
eine Übertragung von
bis zu zwei Boolschen Einzel-Bit-Operanden-Bits
(CF0, CF1), so daß sie
simultan auf den Steuerfluß-Ergebnis-Steuerleitungen 750, 752 geliefert
werden.
-
Der Rest des Boolschen Operations-Datenpfads 720 umfaßt den Eingangs-Multiplexer 726,
der, als seine Eingänge,
die Vergleichs- und Boolschen Operations-Ergebnis-Werte aufnimmt, die auf dem
Vergleichs-Ergebnisbus 723 und einem Boolschen Ergebnisbus 724 geliefert
werden. Der Bus 724 ermöglicht, daß bis zu
zwei simultane, Boolsche Ergebnis-Bits zu dem Multiplexer 726 übertragen
werden können.
Zusätzlich
können
bis zu zwei Vergleichs-Ergebnis-Bits über den Bus 723 zu
dem Multiplexer 726 übertragen
werden. Der Multiplexer 726 ermöglicht, daß irgendwelche zwei einzelne
Bits, die an den Multiplexer-Eingängen auftreten, über die
Multiplexer-Ausgangs-Busse 730 zu einem Boolschen Operations-Temporär-Puffer 728 während jedes
halben Zyklus des Systemtakts übertragen
werden. Der temporäre
Puffer 728 ist logisch äquivalent zu
dem temporären
Puffer 752',
wie dies in 6b dargestellt
ist, obwohl er sich in zwei wesentlichen Punkten unterscheidet.
Der erste Punkt ist derjenige, daß jeder Register-Eintritt in
dem temporären
Puffer 728 aus einem einzelnen Bit besteht. Die zweite
Unterscheidung ist diejenige, daß nur ein einzelnes Register
für jeden der
acht anhängigen
Instruktions-Schlitze
vorgesehen ist, da das Ergebnis einer Boolschen Operation, per Definition,
vollständig
durch ein einzelnes Ergebnis-Bit definiert ist.
-
Der temporäre Puffer 728 liefert
bis zu vier Ausgangs-Operanden-Werte simultan. Dies ermöglicht die simultane
Ausführung
von zwei Boolschen Instruktionen, wobei jede einen Zugriff auf zwei
Quellen-Register erfordert. Die vier Boolschen Register-Werte können während jedes
halben Zyklus des Systemtakts auf den Operanden-Bussen 736 zu
einem Multiplexer 738 oder zu einem Boolschen Register-Datei-Feld 732 über die Bool-schen Operanden-Daten-Busse 734 übertragen
werden. Das Boolsche Register-Datei-Feld 732 ist, wie es logisch
in 9 dargestellt ist,
ein einzelnes, 32-Bit breites Daten-Register, das ermöglicht, daß irgendeine separate Kombination
von bis zu vier einzelnen Bit-Stellen mit Daten von dem temporären Puffer 728 modifiziert
und von dem Boolschen Register-Datei-Feld 732 auf den Ausgangs-Bussen 740 während jedes
halben Zyklus des Systemtakts gelesen werden. Der Multiplexer 738 dient
für irgendwelche
zwei Paare von Boolschen Operanden, die an deren Eingängen über die
Busse 736, 740 empfangen werden, daß sie auf
den Operanden-Ausgangs-Bussen 744 zu der Bypass-Einheit 742 übertragen
werden.
-
Die Boolsche Operations-Funktional-Einheit 746 ist
zum Durchführen
eines weiten Bereichs von Boolschen Operationen in Bezug auf zwei
Quellen-Werte geeignet. In dem Fall von Vergleichs-Instruktionen
sind die Quellen-Werte ein Paar von Operanden, die von irgendeinem
der Ganzzahl- und Fließkomma-Registersätzen und
irgendeinem unmittelbaren Operanden, der zu der IEU 104 geliefert
wird, und, für
eine Boolsche Instruktion, irgendwelcher der zwei Boolschen Register-Operanden
erhalten sind. Die Tabellen III und IV identifizieren die logischen
Vergleichs-Operationen, die durch die bevorzugte Ausführungsform
der Architektur 100 geliefert werden. Die Instruktions-Zustands-Code
und Funktions-Code, die in den Tabellen III–V spezifiziert sind, stellen
ein Segment der entsprechenden Instruktionen dar. Die Instruktion
liefert auch eine Identifikation des Quellen-Paars von Operanden-Registern und die
Boolschen Bestimmungs-Register zur Speicherung des entsprechenden
Boolschen Operations-Ergebnisses.
-
-
-
-
B) Lade/Speicher-Steuereinheit:
-
Eine beispielhafte Lade/Speicher-Einheit 760 ist
in 13 dargestellt.
Obwohl die Lade/Speicher-Einheiten 586, 662 separat
in den Datenpfaden 580, 660 dargestellt sind,
werden sie vorzugsweise als ein einzelne, gemeinsam geteilte Lade/Speicher-Einheit 760 ausgeführt. Die
Schnittstelle von einem jeweiligen Datenpfad 580, 660 erfolgt über einen
Adressen-Bus 762 und Lade- und Speicher-Daten-Busse 764 (600, 676), 766 (632, 702).
-
Die Adresse, die durch die Lade/Speicher-Einheit 760 verwendet
ist, ist eine physikalische Adresse, im Gegensatz zu der virtuellen
Adresse, die durch die IFU 102 und den Rest der IEU 104 verwendet
wird. Während
die IFU 102 auf virtuellen Adressen arbeitet, die sich
auf Koordination zwischen der CCU 106 und der VMU 108 beziehen,
um eine physikalische Adresse zu produzieren, erfordert die IEU 104,
daß die
Lade/Speicher-Einheit 760 direkt
in einem physikalischen Adressen-Modus arbeitet. Dieses Erfordernis
ist notwendig, um eine Daten-Integrität beim Vorhandensein von außerhalb
der Reihenfolge ausgeführten
Instruktionen sicherzustellen, die ein Überlappen von physikalischen
Adres sen-Daten-Lade- und Speicher-Operationen umfassen können, und
bei dem Vorhandensein von Daten-Rückführungen außerhalb der Reihenfolge von
der CCU 106 zu der Lade/Speicher-Einheit 760.
Um eine Daten-Integrität
sicherzustellen, puffert die Lade/Speicher-Einheit 760 Daten,
die durch Speicher-Instruktionen geliefert werden, bis die Speicher-Instruktion
durch die IEU 104 abgelegt ist. Demzufolge können Speicher-Daten,
die durch die Lade/Speicher-Einheit 760 gepuffert sind,
einzigartig nur in der Lade/Speicher-Einheit 760 vorhanden
sein. Lade-Instruktionen, die sich auf dieselbe physikalische Adresse
beziehen, wie sie ausgeführt
ist, allerdings nicht auf abgelegten Speicher-Instruktionen, werden
verzögert,
bis die Speicher-Instruktion tatsächlich abgelegt ist. An diesem
Punkt können
die Speicher-Daten zu der CCU 106 durch die Lade/Speicher-Einheit 760 übertragen
werden und dann unmittelbar zurück
durch die Ausführung
einer CCU-Daten-Lade-Operation geladen werden.
-
Genauer gesagt werden volle, physikalische
Adressen von der VMU 108 auf dem Lade/Speicher-Adressen-Bus 762 geliefert.
Lade-Adressen werden allgemein in Lade-Adressen-Registern 7680–3 gespeichert.
Speicher-Adressen werden in Speicher-Adressen-Registern 7703–0 hinein
verriegelt. Eine Lade/Speicher-Steuereinheit 774 arbeitet
in Abhängigkeit
von Steuersignalen, die von der Instruktions-Ausgabe-Einheit 498 empfangen
sind, um eine Verriegelung von Lade- und Speicher-Adressen in die
Register 7683–0 , 7703–0 hinein
zu koordinieren. Die Lade/Speicher-Steuereinheit 774 liefert
Steuersignale auf Steuerleitungen 778 zur Verriegelung
von Lade-Adressen und auf Steuerleitungen 780 zum Verriegeln
von Speicher-Adressen. Speicher-Daten werden simultan mit der Verriegelung
von Speicher-Adressen in logisch entsprechenden Schlitzen des Speicher-Daten-Register-Satzes 7823–0 verriegelt.
Eine 4 × 4
32 Bit breite Adressen-Komparator-Einheit 772 wird simultan
mit jeder der Adressen in den Lade- und Speicher-Adressen-Registern 7683–0 , 7703–0 geliefert.
Die Ausführung
eines Voll-Matrix-Adressen-Vergleichs während jedes halben Zyklus des
Systemtakts wird durch die Lade/Speicher-Steuereinheit 774 über Steuerleitungen 776 kontrolliert.
Die Existenz und logische Stelle einer Lade-Adresse, die eine Speicher-Adresse
anpaßt,
wird über
Steuersignale geliefert, die zu der Lade-Speicher-Steuereinheit 774 über Steuerleitungen 776 zurückgeführt sind.
-
Dort, wo eine Lade-Adresse von der
VMU 108 geliefert wird und dort keine anhängigen Speicherungen vorhanden
sind, wird die Lade-Adresse im Bypass direkt von dem Bus 762 zu
einem Adressen-Selektor 786 gleichzeitig mit der Initiierung
einer CCU-Lade-Operation vorbeigeführt. Allerdings wird dort,
wo Speicher-Daten anhängig
sind, die Lade-Adresse in einer verfügbaren Lade-Adressen-Verriegelung 7680–3 verriegelt
werden. Unter Empfangen eines Steuersignals von der Ablage-Steuereinheit 500,
das anzeigt, daß die
entsprechende Speicher-Daten-Instruktion abgelegt wird, initiiert
die Lade/Speicher-Steuereinheit 774 eine CCU-Daten-Übertragungs-Operation
durch Entscheidung, und zwar über
Steuerleitungen 784, für
einen Zugriff zu der CCU 106. Wenn die CCU 106 Bereitschaft
signalisiert, führt
die Lade/Speicher-Steuereinheit 774 den Selektor 786 so,
um eine physikalische CCU-Adresse auf dem CCU PADDR Adressen-Bus 788 zu
liefern. Diese Adresse wird von dem entsprechenden Speicher-Register 7703–0 über den
Adressen-Bus 790 erhalten. Daten von dem entsprechenden
Speicher-Daten-Register 7823–0 werden
auf dem CCU-Daten-Bus 792 geliefert.
-
Unter Ausgabe einer Lade-Instruktion
durch die Instruktions-Ausgabe-Einrichtung 498 gibt die
Lade-Speicher-Steuereinheit 747 eine der Lade-Adressen-Verriegelungen 7683–0 frei,
um die angeforderte Lade-Adresse zu verriegeln. Die spezifische
Verriegelung 7680–3 , die ausgewählt ist,
entspricht logisch der Position der Lade-Instruktion in dem relevanten
Instruktions-Satz. Die Instruktions-Ausgabe-Einrichtung 498 liefert zu
der Lade-Speicher-Steuereinheit 774 einen
Fünf-Bit-Vektor,
der die Lade-Instruktion innerhalb jeder der zwei möglichen,
anhängigen
Instruktions-Sätze
identifiziert. Dort, wo der Komparator 772 nicht eine passende Speicher-Adresse
identifiziert, wird die Lade-Adresse über einen Adressen-Bus 794 zu
dem Selektor bzw. der Auswahl-Einrichtung 786 für eine Ausgabe
auf den CCU PADDR Adressen-Bus 788 geführt. Die Vorsehung der Adresse
wird im Hinblick auf die CCU-Anforderungs- und Bereitschafts-Steuersignale
durchgeführt,
die zwischen der Lade/Speicher-Steuereinheit 774 und der
CCU 106 ausgetauscht werden sollen. Ein Ausführungs-ID-Wert
(ExID) wird auch präpariert
und durch die Lade/Speicher-Steuereinheit 774 zu
der CCU 106 ausgegeben, um die Lade-Anforderung zu identifizieren,
wenn die CCU 106 darauffolgend die angeforderten Daten,
einschließlich
des ExID-Werts,
zurückführt. Dieser
ID-Wert besteht aus einem Vier-Bit-Vektor, der einzigartige Bits
verwendet, um die jeweilige Lade-Adressen-Verriegelung 7680–3 zu
identifizieren, von der die momentane Lade-Anforderung erzeugt ist.
Ein fünftes
Bit wird dazu verwendet, den Instruktions-Satz zu identifizieren,
der die Lade-Instruktion enthält.
Der ID-Wert ist demzufolge derselbe wie der Bit-Vektor, der mit
der Lade-Anforderung von der Instruktions-Ausgabeeinrichtungs-Einheit 498 geliefert
ist.
-
Bei einem darauffolgende Signal von
der CCU 106 zu der Lade/Speicher-Steuereinheit 774 über die Verfügbarkeit
von zuvor angeforderten Lade-Daten gibt die Lade/Speicher-Steuereinheit 774 eine
Ausrichtungs-Einheit frei, um die Daten zu empfangen, und führt sie
auf den Lade-Daten-Bus 764. Eine Ausrichtungs-Einheit 798 arbeitet
so, um die Lade-Daten
rechtsbündig
auszurichten.
-
Gleichzeitig mit der Rückführung der
Daten von der CCU 106 empfängt die Lade/Speicher-Steuereinheit 774 den
ExID-Wert von der CCU 106. Die Lade/Speicher-Steuereinheit 774 führt wiederum
ein Steuersignal zu der Instruktions-Ausgabeeinrichtungs-Einheit 498 zu,
das identifiziert, daß Lade-Daten
auf dem Lade-Daten-Bus 764 geliefert
werden sollen, und führt
weiterhin einen Bit-Vektor zurück,
der die Lade-Instruktion identifiziert, für die die Lade-Daten zurückgeführt werden
sollen.
-
C) Detail des IEU-Steuerpfads:
-
Unter Bezugnahme wiederum auf 5 wird die Operation des
IEU-Steuerpfads nun im Detail unter Bezugnahme auf das Zeitabstimmungsdiagramm
beschrieben werden, das in 14 angegeben
ist. Die Zeitabstimmung der Ausführung
von Instruktionen, dargestellt in 14,
ist exemplarisch für
die Operation der vorliegenden Erfindung und nicht erschöpfend für die Ausführung von
Zeitabstimmungspermutationen.
-
Das Zeitabstimmungsdiagramm der 14 stellt eine Sequenz
von Prozessor-Systemtaktzyklen, P0–6,
dar. Jeder Prozessor-Zyklus beginnt mit einem internen T-Zyklus
T0. Dabei sind zwei T-Zyklen pro Prozessor-Zyklus
in einer bevorzugten Ausführungsform
der vorliegenden Ausführungsform
der Erfindung vorhanden, wie dies durch die Architektur 100 vorgesehen
ist.
-
In einem Prozessor-Zyklus Null arbeiten
die IFU 102 und die VMU 108 so, um eine physikalische Adresse
zu erzeugen. Die physikalische Adresse wird zu der CCU 106 zugeführt und
ein Instruktions-Cache-Zugriffs-Vorgang wird initiiert. Dort, wo
der angeforderte Instruktions-Satz in dem Instruktions-Cache 132 vorhanden
ist, wird ein Instruktions-Satz
zu der IFU 102 bei ungefähr dem Mittelpunkt des Prozessor-Zyklus eins
zurückgeführt. Die
IFU 102 managt dann die Übertragung des Insstruktionssatzes
durch die Vorababruf-Einheit 260 und den IFIFO 264,
woraufhin der Instruktions-Satz zuerst der IEU 104 zur
Ausführung
präsentiert
wird.
-
1) Detail der EDecodiereinheit:
-
Die EDecodiereinheit 490 empfängt den
vollen Instruktiossatz parallel zu einer Decodierung vor der Schlußfolgerung
bzw. dem Abschluß des
Prozessor-Zyklus eins. Die EDecodiereinheit 490 ist, in
der bevorzugten Architektur 100, als ein reiner kombinatorischer,
logischer Block ausgeführt,
der für
die direkte parallele Decodierung aller gültigen Instruktionen dient,
die über
den Bus 124 empfangen sind. Jeder Typ einer Instruktion,
der durch die Architektur 100 erkannt ist, umfaßt die Spezifikation
der Instruktion, der Register-Erfordernisse
und der Ressourcen-Bedürfnisse,
die in Tabelle VI identifiziert sind.
-
-
-
Die EDecodiereinheit 490d decodiert
jede Instruktion eines Instruktions-Satzes parallel. Die sich ergebende
Identifikation von Instruktionen, Instruktions-Funktionen, Register-Referenzen und Funktions-Erfordernisse
werden an den Ausgängen
der EDecodiereinheit 490 verfügbar gemacht. Diese Informationen
werden durch die EDecodiereinheit 490 während jedes halben Prozessor-Zykluses
regeneriert und verriegelt, bis alle Instruktionen in dem Instruktions-Satz
abgelegt sind. Demzufolge werden Informationen, die sich auf alle acht anhängigen Instruktionen
beziehen, konstant an dem Ausgang der EDecodiereinheit 490 beibehalten.
Diese Informationen werden in der Form von acht Element-Bit-Vektoren
präsentiert,
wobei die Bits oder Unterfelder jedes Vektors logisch der physikalischen
Stelle der entsprechenden Instruktion innerhalb der zwei anhängigen Instruktions-Sätze entsprechen.
Demzufolge werden acht Vektoren über
die Steuerleitungen 502 zu der Übertragungs-Prüfeinrichtung 492 zugeführt, wo
jeder Vektor spezifiziert, ob die entsprechende Instruktion das Übertragungs-Bit
des Prozessor-Status-Worts beeinflußt oder davon abhängig ist.
Acht Vektoren werden über die
Steuerleitungen 510 geführt,
um die spezifische Art jeder Instruktion und die Funktions-Einheit-Erfordernisse
zu identifizieren. Acht Vektoren werden über Steuerleitungen 506 geführt, um
die Register-Referenzen zu spezifizieren, die durch jede der acht
anhängigen
Instruktionen verwendet werden. Diese Vektoren werden vor dem Ende
des Prozessor-Zyklus eins zugeführt.
-
2) Detail der Übertragungs-Prüfungs-Einheit:
-
Die Übertragungs-Prüfungs-Einheit 492 arbeitet
parallel zu der Abhängigkeits-Prüfungs-Einheit 494 während der
Daten-Abhängigkeits-Phase
der Operation, dargestellt in 14.
Die Übertragungs-Prüfungs-Einheit 492 wird
in der bevorzugten Architektur 100 als reine, kombinatorische
Logik ausgeführt.
Demzufolge werden während
jeder Iteration der Operation durch die Übertragungs-Prüfungs-Einheit 492 alle
acht Instruktionen in Bezug darauf berücksichtigt, ob sie das Übertragungs-Zeichen
des Prozessor-Zustands-Registers
modifizieren. Dies ist notwendig, um die Ausführung außerhalb der Reihenfolge der
Instruktion zu ermöglichen,
die von dem Zustand des Übertragungs-Bits
abhängig
ist, wie es durch die frühere
Instruktion eingestellt ist. Steuersignale, die auf den Steuerleitungen 504 geführt werden,
ermöglichen,
daß die Übertragungs-Prüfungs-Einheit 492 die
spezifischen Instruktionen zuläßt, die
von der Ausführung
vorheriger Instruktionen in Bezug auf das Übertragungs-Zeichen abhängig sind.
-
Zusätzlich hält die Übertragungs-Prüfungs-Einheit 492 eine
temporäre
Kopie der Übertragungs-Bits für jede der
acht anhängigen
Instruktionen aufrecht. Für
solche Instruktionen, die nicht das Übertragungs-Bit modifizieren,
propagiert die Übertragungs-Prüfungs-Einheit 492 das Übertragungs-Bit
zu der nächsten
Instruktion weiter in der Reihenfolge der Programm-Insruktionsfolge.
Demzufolge kann eine außerhalb
der Reihenfolge ausgeführte
Instruktion, die das Übertragungs-Bit
modifiziert, ausgeführt
werden, und weiterhin kann auch ermöglicht werden, eine darauffolgende
Instruktion, die von einer solchen au ßerhalb der Reihenfolge ausgeführten Instruktion
abhängig
ist, auszuführen,
und zwar auf die Instruktion folgend, die das Übertragungs-Bit modifiziert.
Weiterhin erleichtert die Beibehaltung des Übertragungs-Bits durch die Übertragungs-Prüfungs-Einheit 492 eine
Ausführung
außerhalb
der Reihenfolge dahingehend, daß irgendeine
Ausnahme, die vor der Ablage solcher Instruktionen auftritt, nur
erfordert, daß die Übertragungs-Prüfungs-Einheit 492 das
interne, temporäre Übertragungs-Bit-Register
löscht.
Demzufolge ist das Prozessor-Status-Register durch die Ausführung von
Instruktionen, die außerhalb
der Reihenfolge ausgeführt
sind, unbeeinflußt.
Das Temporär-Bit-Übertragungs-Register,
das durch die Übertragungs-Prüfungs-Einheit 492 aufrechterhalten
wird, wird unter Abschluß jeder
außerhalb
der Reihenfolge ausgeführten
Instruktion aktualisiert. Unter Ablage von außerhalb der Reihenfolge ausgeführten Instruktionen
wird das Übertragungs-Bit
entsprechend der letzten, abgelegten Instruktion in der Programm-Instruktions-Folge
zu der Übertragungs-Bit-Stelle des Prozessor-Status-Registers übertragen.
-
3) Detail der Daten-Abhängigkeits-Prüfungs-Einheit:
-
Die Daten-Abhängigkeits-Prüfungs-Einheit 494 empfängt die
acht Register-Referenz-Identifikations-Vektoren
von der EDecodiereinheit 490 über die Steuerleitungen 506.
Jede Register-Referenz wird durch einen Fünf-Bit-Wert angezeigt, der
zum Identifizieren eines der 32 Register zu einem Zeitpunkt geeignet
ist, und einem Zwei-Bit-Wert, der die Register-Bank identifiziert,
wie sie innerhalb der "A", "B" oder Boolschen Registersätze angeordnet
sind. Der Fließkomma-Register-Satz
ist äquivalent
identifiziert als der "B" Register-Satz. Jede Instruktion
kann bis zu drei Register-Referenz-Felder haben; zwei Source- bzw. Quellen-Register-Felder
und eine Bestimmung. Obwohl einige Instruktionen, wobei besonders
die Instruktionen der Bewegung von Register zu Register anzuführen sind,
ein Bestimmungs-Register identifizieren können, kann ein Instruktions-Bit-Feld,
das durch die EDecodiereinheit 490 erkannt ist, signalisieren,
daß keine
aktuellen Ausgangs-Daten produziert werden sollen. Im Gegensatz
dazu dient eine Ausführung
der Instruktion nur zu dem Zweck einer Bestimmung einer Änderung
des Werts des Prozessor-Status-Registers.
-
Die Daten-Abhängigkeits-Prüfungs-Einheit 494,
ausgeführt
wiederum als reine, kombinatorische Logik in der bevorzugten Architektur 100,
arbeitet so, um simultan Abhängigkeiten
zwischen Quellen-Register-Referenzen der Instruktionen, in der Programm-Instruktions-Folge
folgend, und Bestimmung-Register-Referenzen von relativ früheren Instruktionen
zu bestimmen. Ein Bit-Feld wird durch die Daten-Abhängigkeits-Prüfungs- Einheit 494 erzeugt,
das nicht nur identifiziert, welche Instruktionen von anderen abhängig sind, sondern
auch die Register, von denen jede Abhängigkeit entsteht.
-
Die Übertragungs- und Register-Daten-Abhängigkeiten
werden kurz nach dem Beginn des zweiten Prozessor-Zyklus identifiziert.
-
4) Detail der Register-Umbenennungs-Einheit:
-
Die Register-Umbenennungs-Einheit 496 empfängt die
Identifikation der Register-Referenzen
aller acht anhängigen
Instruktionen über
die Steuerleitungen 506 und Register-Abhängigkeiten über die
Steuerleitungen 508. Eine Matrix aus acht Elementen wird
auch über
die Steuerleitungen 542 empfangen, die solche Instruktionen
innerhalb des momentanen Satzes von anhängigen Instruktionen identifizieren,
die ausgeführt worden
sind (erledigt sind). Aus diesen Informationen liefert die Register-Umbenennungs-Einheit 496 ein Acht-Element-Feld
aus Steuersignalen zu der Instruktions-Ausgabe-Einheit 498 über die
Steuerleitungen 512. Die Steuerinformationen, die so geliefert
sind, reflektieren die Bestimmung, die durch die Register-Umbenennungs-Einheit 496 vorgenommen
ist, dahingehend, welche momentan anhängigen Instruktionen, die bereits ausgeführt worden
sind, nun verfügbar
sind, um ausgeführt
zu werden, unter Vorgabe des momentanen Satzes von identifizierten
Daten-Abhängigkeiten.
Die Register-Umbenennungs-Einheit 496 empfängt ein
Auswahl-Steuersignal über
die Leitung 516, das bis zu sechs Instruktionen identifiziert,
die simultan zur Ausführung
ausgegeben werden sollen: zweimal ganzzahlige, zweimal Fließkomma und
zweimal Boolsche.
-
Die Register-Umbenennungs-Einheit 496 führt die
zusätzliche
Funktion einer Auswahl, über
Steuersignale durch, die auf dem Bus 518 zu dem Register-Datei-Feld 472,
dem Source-Register zum Zugriff bei der Ausführung der identifizierten Instruktionen,
geliefert sind. Bestimmungs-Register für außerhalb der Reihenfolge ausgeführte Instruktionen
werden so ausgewählt,
daß sie
in den temporären
Puffern 612, 680, 728 des entsprechenden
Datenpfads vorhanden sind. Die außerhalb der Reihenfolge ausgeführten Instruktionen
werden beim Abschluß abgelegt,
wobei die Ergebnis-Daten über
die Register-Dateien 614, 684, 732 gespeichert
werden. Die Auswahl von Quellen-Registern hängt davon ab, ob das Register
zuvor als eine Bestimmung ausgeführt
worden ist und die entsprechende frühere Instruktion bis jetzt
nicht abgelegt worden ist. In einem solchen Fall wird das Source-Register
von dem entsprechenden, temporären
Puffer 612, 684, 728 ausgewählt. Dort, wo
die frühere
Instruktion abgelegt worden ist, wird dann das Register der entsprechenden Register-Datei 614, 684, 732 ausgewählt. Demzufolge
arbeitet die Register-Umbenennungs-Einheit 496 so,
um effektiv temporäre Puffer-Register-Referenzen
für Register-Datei-Register-Referenzen
in dem Fall von außerhalb
der Reihenfolge ausgeführten
Instruktionen zu substituieren.
-
Die temporären Puffer 612, 680, 728,
wie sie in der Architektur 100 aufgeführt sind, sind keine Duplikat-Register-Strukturen
deren entsprechender Register-Datei-Felder. Im Gegensatz dazu wird
ein einzelner Bestimmungs-Register-Schlitz für jede der acht anhängigen Instruktionen
vorgesehen. Demzufolge wird die Substitution einer temporären Puffer-Bestimmungs-Register-Referenz
durch die Stelle der entsprechenden Instruktion innerhalb der anhängigen Registersätze bestimmt.
Eine darauffolgende Quellen-Register-Referenz wird durch die Daten-Abhängigkeits-Prüfeinrichtung 494 in
Bezug auf die Instruktion identifiziert, von der die Quellen-Abhängigkeit
auftritt. Deshalb ist ein Bestimmungs-Schlitz in dem temporären Puffer-Register
leicht durch die Register-Umbenennungs-Einheit 496 bestimmbar.
-
5) Detail der Instruktions-Ausgabeeinrichtungs-Einheit:
-
Die Instruktions-Ausgabeeinrichtungs-Einheit 498 bestimmt
den Satz von Instruktionen, die ausgegeben werden können, basierend
auf dem Ausgang der Register-Umbenennungs-Einheit 496 und
den Funktions-Erfordernissen der Instruktionen, wie sie durch die
EDecodiereinheit 490 identifiziert sind. Die Instruktions-Ausgabeeinrichtungs-Einheit 498 nimmt
diese Bestimmung basierend auf dem Status jeder der funktionalen
Einheiten 4780–n vor, wie dies über die
Leitungen 514 berichtet wird. Demzufolge beginnt die Instruktions-Ausgabeeinrichtungs-Einheit 498 eine
Operation unter Empfang des verfügbaren
Satzes von Instruktionen, um von der Register-Umbenennungs-Einheit 496 aus
auszugeben. Unter der Annahme, daß ein Register-Datei-Zugriff
für die
Ausführung
jeder Instruktion erforderlich ist, erkennt die Instruktions-Ausgabeeinrichtungs-Einheit 498 die
Verfügbarkeit
einer funktionalen Einheit 4780–n ,
die momentan eine Instruktion ausführen kann. Um die Verzögerung beim
Identifizieren der Instruktionen, die zu der Register-Umbenennungs-Einheit 496 ausgegeben
werden sollen, zu minimieren, wird die Instruktions-Ausgabeeinrichtungs-Einheit 498 in
einer zugeordneten, kombinatorischen Logik ausgeführt.
-
Unter Identifikation der Instruktionen,
um sie auszugeben, initiiert die Register-Umbenennungs-Einheit 496 einen
Register-Datei-Zugriff, der an dem Ende des dritten Prozessor-Zyklus,
P2, fortfährt. Zu Beginn des Prozessor-Zyklus
P3 initiiert die Instruktions-Ausgabeeinrichtungs-Einheit 498 eine
Operation durch eine oder mehrere der funktionalen Einheiten 4780–n ,
wie dies beispielsweise als "Führe 0 aus" ( "Execute 0") dargestellt ist,
um Quellen-Daten zu empfangen und zu verarbeiten, die von dem Register-Datei-Feld 472 geliefert
sind.
-
Typischerweise werden die meisten
Instruktionen, die durch die Architektur 100 verarbeitet
sind, über eine
funktionale Einheit in einem einzelnen Prozessor-Zyklus ausgeführt. Allerdings
erfordern mehrfache Prozessor-Zyklen, wie dies beispielsweise als "Führe 1 aus" ("Execute
1") dargestellt
ist, eine simultan ausgegebene Instruktion. Die Ausführung-Null-
und Ausführung-1-Instruktionen
können
zum Beispiel durch eine ALU und Fließkomma-Multiplier-Funktional-Einheiten
jeweils ausgeführt
werden. Die ALU-Funktional-Einheit
erzeugt, wie in 14 dargestellt
ist, Ausgangs-Daten innerhalb eines Prozessor-Zyklus und durch einfaches Vorsehen
einer Ausgangs-Verriegelung, wie dies zur Verwendung beim Ausführen einer
anderen Instruktion während
des fünften
Prozessor-Zyklus, P4, verfügbar ist.
Die Fließkomma-Multiplizier-Funktional-Einheit
ist vorzugsweise eine intern im Pipeline-System verarbeitende Funktional-Einheit.
Deshalb kann eine andere, zusätzliche
Fließkomma-Multiplizier-Instruktion
in dem nächsten
Prozessor-Zyklus ausgegeben werden. Allerdings wird das Ergebnis
der ersten Instruktion nicht für
eine datenabhängige
Anzahl von Prozessor-Zyklen verfügbar
sein; die Instruktion, die in 14 dargestellt
ist, erfordert drei Prozessor-Zyklen, um die Verarbeitung durch
die Funktional-Einheit
abzuschließen.
-
Während
jedes Prozessor-Zyklus wird die Funktion der Instruktions-Ausgabeeinrichtungs-Einheit 498 wiederholt.
Demzufolge werden der Status des momentanen Satzes von anhängigen Instruktionen
ebenso wie der verfügbare
Zustand des vollen Satzes von Funktional-Einheiten 4780–n erneut
während
jedes Prozessor-Zyklus evaluiert. Unter optimalen Bedingungen ist
die bevorzugte Architektur 100 deshalb in der Lage, bis zu
sechs Instruktionen pro Prozessor-Zyklus auszuführen. Allerdings wird sich
ein typischer Instruktions-Mix in einer gesamten, durchschnittlichen
Ausführung
von 1,5 bis 2,0 Instruktionen pro Prozessor-Zyklus ergeben.
-
Eine abschließende Betrachtung in der Funktion
der Instruktions-Ausgabe-Einrichtung 498 ist
deren Partizipierung bei der Handhabung von Trap-Zuständen und
der Ausführung
spezifischer Instruktionen. Das Auftreten eines Trap-Zustands erfordert,
daß die
IEU 104 von allen Instruktionen gelöscht wird, die nicht bis jetzt
abgelegt worden sind. Ein solcher Umstand kann in Abhängigkeit
einer extern empfangenen Unterbrechung entstehen, die zu der IEU 104 in
Bezug gesetzt ist, über
die Unterbrechungs-Anforderungs/Kenntnis-Steuerleitung 340 von
irgendeiner der Funktional-Einheiten 4780–n in
Abhängigkeit
eines arithmetischen Fehlers, oder, zum Beispiel, der EDecodiereinheit 490 beim
Decodieren einer illegalen Instruktion überträgt. Bei dem Auftreten des Trap-Zustands ist die
Instruktions-Ausgabeeinrichtungs-Einheit 498 für ein Halten
oder Leeren aller nicht abgelegter Instruktionen, die momentan in
der IEU 104 anhängig
sind, verantwortlich. Alle Instruktionen, die nicht simultan abgelegt
werden können,
werden geleert. Dieses Ergebnis ist wesentlich, um die Präzision des
Auftretens der Unterbrechung hinsichtlich der herkömmlichen
Ausführung
in Reihenfolge einer Programm-Instruktions-Folge beizubehalten. Wenn einmal die
IEU 104 bereit ist, eine Ausführung des Trap-Handhabungs-Programms
zu beginnen, bestätigt
die Instruktions-Ausgabe-Einrichtung 498 die Unterbrechung über ein
Rückführ-Steuersignal
entlang der Steuerleitungen 340. Auch kann, um die Möglichkeit
zu vermeiden, daß ein
Ausnahme-Zustand relativ zu einer Instruktion basierend auf einem
Prozessor-Status-Bit erkannt werden kann, das geändert worden wäre, bevor
die Instruktion in dem klassischen, reine Programm in Reihenfolge
ausgeführt
worden wäre,
die Instruktions-Ausgabe-Einrichtung 498 dafür verantwortlich
sein, sicherzustellen, daß alle
Instruktionen, die das PSR ändern
können
(wie beispielsweise ein spezielles Bewegen und Rückführen von einer Trap) strikt
in Reihenfolge ausgeführt
werden.
-
Bestimmte Instruktionen, die einen
Programm-Steuerfluß ändern, werden
nicht durch die IDecodiereinheit 262 identifiziert. Instruktionen
dieses Typs umfassen Unterprogramm-Rückführungen,
Rückführungen von
prozeduralen Instruktionen und Rückführungen
von Traps. Die Instruktions-Ausgabeeinrichtungs-Einheit 498 liefert
identifizierende Steuersignale über
die IEU-Rückführungs-Steuerleitung 350 zu
der IFI 102. Ein entsprechendes eine der speziellen Register 412 wird
ausgewählt,
um die IF_PC Ausführungs-Adresse,
die an dem Punkt zum Zeitpunkt der Aufruf-Instruktion existiert,
dem Auftreten der Trap oder dem Vorfinden einer prozeduralen Instruktion
existiert.
-
6) Detail der Erledigt-Steuereinheit:
-
Die Erledigt-Steuereinheit 540 überwacht
die funktionalen Einheiten 4780–n hinsichtlich
des Abschluß-Status
deren momentaner Operation. In der bevorzugten Architektur 100 erwartet
die Erledigt-Steuereinheit 540 den Abschluß von Operationen
durch jede funktionale Einheit, die ausreichend sind, um einen Abschluß-Vektor
zu liefern, der den Status der Ausführung jeder Instruktion in
dem momentan anhängigen
Satz von Instruktionen reflektiert, und zwar zu der Register-Umbenennungs-Einheit 496,
der Bypass-Steuereinheit 520 und
der Ablage-Steuereinheit 500, und zwar ungefähr einen
halben Prozessor-Zyklus vor dem Ausführungs-Abschluß einer
Instruktion durch eine funktionale Einheit 4780–n .
Dies ermöglicht,
daß die
Instruktions-Ausgabeeinrichtungs-Einheit 498, über die
Register-Umbenennungs-Einheit 496, die Instruktions-Abschluß-Funktional-Einheiten als verfügbare Ressourcen
für den
nächsten
Instruktions-Ausgabe-Zyklus berücksichtigt.
Die Bypass-Steuereinheit 520 ermöglicht, eine Daten-Ausgabe
durch die Funktional-Einheit über die
Bypass-Einheit 474 im Bypass zu präparieren. Abschließend kann
die Ablage-Steuereinheit 500 so arbeiten, um die entsprechende
Instruktion simultan zu der Übertragung
von Daten in der Funktional-Einheit 4780–n zu
dem Register-Datei-Feld 472 abzulegen.
-
7) Detail der Ablage-Steuereinheit:
-
Zusätzlich zu dem Instruktions-Erledigt-Vektor,
der von der Erledigt-Steuereinheit 540 geliefert wird, überwacht
die Ablage-Steuereinheit 500 den ältesten Instruktions-Satz,
der von dem EDecodier-Ausgang 490 ausgegeben ist. Da jede
Instruktion in der Instruktions-Folge-Reihenfolge
als erledigt durch die Erledigt-Steuereinheit 540 markiert
wird, richtet die Ablage-Steuereinheit 500, über Steuersignale,
die auf den Steuerleitungen 534 geliefert werden, die Übertragung
von Daten von dem Temporär-Puffer-Schlitz
zu der entsprechenden, durch die Instruktion spezifizierten Register-Datei-Register-Stelle
innerhalb des Register-Datei-Felds 472. Die PC-Inc/Size-Steuersignale
werden auf den Steuersignalen 344 für jede eine oder mehrere Instruktionen)
geliefert, die simultan abgelegt sind. Bis zu vier Instruktionen
können
pro Prozessor-Zyklus abgelegt werden. Wenn ein gesamter Instruktions-Satz
abgelegt worden ist, wird ein IFIFO-Lese-Daten-Signale auf der Steuerleitung 342 geliefert,
um es zu der IFIFO 264 weiterzuleiten.
-
8) Detail der Steuerfluß-Steuereinheit:
-
Die Steuerfluß-Steuereinheit 528 arbeitet
so, um kontinuierlich die IFO 102 mit Informationen zu
versorgen, die spezifizieren, ob irgendeine Steuer-Instruktion innerhalb
des momentanen Satzes von anhängigen Instruktionen
aufgelöst
worden ist, und weiterhin, ob das Verzweigungs-Ergebnis genommen
ist oder nicht genommen ist. Die Steuerfluß- Steuereinheit 528 erhält, über Steuerleitungen 510,
eine Identifikation der Steuerfluß-Verzweigungs-Instruktionen durch die
EDecodiereinheit 490. Der momentane Satz von Register-Abhängigkeiten
wird über
Steuerleitungen 536 von der Daten-Abhängigkeits-Prüfeinrichtungs-Einheit 494 zu
der Steuerfluß-Steuereinheit 528 zugeführt, um
zu ermöglichen,
daß die
Steuerfluß-Steuereinheit 528 bestimmt, ob
die Ausgabe einer Verzweigungs-Instruktion durch Abhängigkeiten
eingeschränkt
ist oder nun bekannt ist. Die Register-Referenzen, die über den
Bus 518 von der Register-Umbenennungs-Einheit 496 geliefert
werden, werden durch die Steuerfluß-Steuereinheit 528 überwacht,
um das Boolsche Register zu identifizieren, das die Verzweigungs-Entscheidung
definieren wird. Demzufolge kann die Verzweigungs-Entscheidung sogar vor
der Ausführung
außerhalb
der Reihenfolge der Steuerfluß-Instruktion
bestimmt werden.
-
Simultan mit der Ausführung einer
Steuerfluß-Instruktion
wird die Bypass-Einheit 472 durch die Bypass-Steuereinheit 520 so
geführt,
um die Steuerfluß-Ergebnisse
auf Steuerleitungen 530, die aus den Steuerfluß-Null-
und Steuerfluß-Eins-Steuerleitungen 750, 752 bestehen,
zu der Steuerfluß-Steuereinheit 528 zuzuführen. Abschließend liefert
die Steuerfluß-Steuereinheit 528 kontinuierlich
zwei Vektoren von acht Bits jeweils zu der IEU 102 über Steuerleitungen 348.
Diese Vektoren definieren, ob eine Verzweigungs-Instruktion an der
entsprechenden logischen Stelle entsprechend zu den Bits innerhalb
der Vektoren aufgelöst
worden sind, und ob das Verzweigungs-Ergebnis herangezogen ist oder
nicht herangezogen ist.
-
In der bevorzugten Architektur 100 wird
die Steuerfluß-Steuereinheit 528 als
reine kombinatorische Logik ausgeführt, die kontinuierlich in
Abhängigkeit
der Eingangs-Steuersignale
arbeitet, und zwar zu der Steuereinheit 528.
-
9) Detail der Bypass-Steuereinheit:
-
Die Instuktions-Ausgabeeinrichtungs-Einheit 498 arbeitet
eng in Verbindung mit der Bypass-Steuereinheit 520 um die
Führung
von Daten zwischen dem Register-Datei-Feld 472 und den
funktionalen Einheiten 4780–n zu
steuern. Die Bypass-Steuereinheit 520 arbeitet in Verbindung
mit dem Register-Datei-Zugriff, der Ausgabe und den Speicherpfaden
der Operation, dargestellt in 14.
Während
eines Register-Datei-Zugriffs kann die Bypass-Steuereinheit 520, über Steuerleitungen 522,
einen Zugriff eines Bestimmungs-Registers
innerhalb des Register-Datei-Felds 472 erkennen, das sich
in dem Vorgang befindet, während
der Ausgabephase der Ausführung
einer Instruktion geschrieben zu wer den. In diesem Fall richtet
die Bypass-Steuereinheit 520 die Auswahl von Daten, die
auf dem Funktional-Einheit-Ausgangs-Bus 482 geliefert sind,
so, daß sie
im Bypass zurück
zu dem Funktional-Einheit-Verteilungsbus 480 geführt werden.
Eine Steuerung über
die Bypass-Steuereinheit 520 wird durch die Instruktions-Ausgabeeinrichtungs-Einheit 498 über Steuerleitungen 542 geliefert.
-
IV. Steuereinheit des
virtuellen Speichers:
-
Eine Schnittstellen-Definition für die VMU 108 ist
in 15 angegeben. Die
VMU 108 besteht prinzipiell aus einer VMU-Steuer-Logik-Einheit 800 und
einem bezüglich
des Inhalts adressierbaren Speicher (CAM) 802. Die allgemeine
Funktion der VMU 108 ist graphisch in 16 dargestellt. Dort ist eine Darstellung
einer virtuellen Adresse dargestellt, die in einen Raum-Identifizierer
(SID[31:28]), eine virtuelle Seiten-Zahl (VADDR[27:14]), einen Seiten-Offset
(PADDR[13:4]), und eine Anforderungs-ID (rID[3:0]) darstellt. Der
Algorithmus zum Erzeugen einer physikalischen Adresse ist derjenige,
den Raum-ID zu verwenden, um eines von 16 Registern innerhalb einer
Raum-Tabelle 842 auszuwählen.
Die Inhalte des Registers des ausgewählten Raums in Kombination
mit einer virtuellen Seiten-Zahl werden als eine Adresse zum Zugreifen
auf einen Tabellen-Durchsichts-Neben-Puffer
(TLB) 844 verwendet. Die 32-Bit-Adresse arbeitet als ein
Inhalt-Adressen-Zeichen,
das dazu verwendet wird, ein entsprechendes Puffer-Register innerhalb
des Puffers 844 zu identifizieren. Bei dem Auftreten einer
Zeichen-Anpassung wird ein 18-Bit breiter Register-Wert als die
18 Bits hoher Ordnung einer physikalischen Adresse 846 geliefert.
Die Seiten-Offset- und Anforderungs-ID wird als die 14 Bits niedriger
Ordnung der physikalischen Adresse 846 geliefert.
-
Dort, wo ein Zeichen-Fehlen in dem
Tabellen-Durchsichts-Neben-Puffer 844 vorhanden ist, wird
ein Fehlen einer VMU signalisiert. Dies erfordert die Ausführung eines
VMU-Schnell-Trap-Handhabungs-Programms, das einen herkömmlichen
Hash-Algorithmus 848 ausführt, der
auf eine vollständige
Seiten-Tabellen-Daten-Struktur zugreift, die in der MAU 112 beibehalten
wird. Diese Seiten-Tabelle 850 enthält Eintritte für alle Speicher-Seiten,
die momentan durch die Architektur 100 in Verwendung sind.
Der Hash-Algorithmus 848 identifiziert solche Eintritte
in die Seiten-Tabelle 850, die notwendig sind, um die momentane,
virtuelle Seiten-Translation-Operation zufriedenzustellen. Diese
Seiten-Tabellen- Eintritte werden von der MAU 112 zu den Trap-Registern
einer Register-Satzes "A" geladen und dann durch spezielle Register-Bewegungs-Instruktionen
zu dem Tabellen-Durchsichts-Neben-Puffer 844 übertragen.
Unter Rückkehr
von dem Ausführungs-Handhabungs-Programm
wird die Instruktion, die Anlaß zu
der VMU-Fehl-Ausnahme
gibt, erneut durch die IEU 104 ausgeführt. Die Translations-Operation
von der virtuellen zu der physikalischen Adresse sollte dann ohne
Ausnahme abschließen.
-
Die VMU-Steuer-Logik 800 liefert
eine Dual-Schnittstelle zu sowohl der IFU 102 als auch
der IEU 104. Ein Bereitschafts-Signal wird auf Steuerleitungen 822 zu
der IEU 104 zugeführt,
um anzuzeigen, daß die
VMU 108 für
eine Adressen-Translation verfügbar
ist. In der bevorzugten Ausführungsform
ist die VMU 108 immer bereit, Translations-Anforderungen der
IFU 120 zu akzptieren. Sowohl die IFU als auch die IEU 102, 104 können Anforderungen über Stuerleitungen 328, 804 ausgeben.
In der bevorzugten Architektur 100 besitzt die IFU 102 eine
Prioritäts-Zugriff
auf die VMU 108. Demzufolge wird nur eine einzelne Belegt-Steuerleitung 820 zu der
IEU 104 vorgesehen.
-
Sowohl die IFU als auch die IEU 102, 104 liefern
die Raum-ID und die virtuellen Seiten-Zahl-Felder zu der VMU-Steuer-Logik 800 über Steurleitungen 326, 808 jeweils.
Zusätzlich
liefert die IEU 104 ein Lese/Schreib-Steuersignal über das
Steuersignal 806, um zu definieren, ob die Adresse für einen
Lade- oder Speicher-Vorgang verwendet werden soll, wie dies notwendig
ist, um Speicher-Zugriff-Schutz-Attribute des virtuellen Speichers,
auf den Bezug genommen ist, zu modifizieren. Die Raum-ID- und virtuellen
Seiten-Felder der
virtuellen Adresse werden zu der CAM-Einheit 802 zugeführt, um
den tatsächlichen
Translations-Vorgang durchzuführen.
Die Seiten-Offset- und ExID-Felder werden letztendlich durch die
IEU 104 direkt zu der CCU 106 geführt. Die
physikalischen Seiten- und
Anforderungs-ID-Felder werden auf den Adress-Leitungen 836 zu der
CAM-Einheit 802 zugeführt.
Das Auftreten einer Tabellen-Durchsichts-Neben-Puffer-Anpassung
wird über die
Treffer-Leitung und die Steuer-Ausgangs-Leitungen 830 zu
der VMU-Steuer-Logik-Einheit 800 signalisiert. Die
sich ergebende physikalische Adresse, 18 Bits in der Länge, wird
auf den Adressen-Ausgangsleitungen 824 zugeführt.
-
Die VMU-Steuer-Logik-Einheit 800 erzeugt
die virtuellen Speicher-Fehl- und virtuellen Speicher-Ausnahme-Steuersignale
auf Leitungen 334, 332 in Abhängigkeit der Treffer- und Steuer-Ausgangs-Steuersignale auf
den Leitungen 830. Ein virtuelles Speicher-Translations-Fehlen
wird als der Fehler definiert, einen Seiten-Tabellen-Identifizierer
in dem Tabellen-Durchsichts-Neben-Puffer 844 anzupassen.
Alle anderen Translations-Fehler
werden als virtuelle Speicher-Ausnahmen berichtet.
-
Abschließend können die Daten-Tabellen innerhalb
der CAM-Einheit 802 über
die Ausführung
von Bewegungs-Instruktionen von einem speziellen Register zu einem
Register durch die IEU 104 modifiziert werden. Lese/Schreib-,
Register-Auswahl-, Rücksetz- bzw. Reset-, Lade-
und Lösch-Steuersignale
werden durch die IEU 104 über Steuerleitungen 810, 812, 814, 816, 818 zugeführt. Daten,
die zu den CAM-Einheit-Registern hin geschrieben werden sollen,
werden durch die VMU-Steuer-Logik-Einheit 800 über den Adressen-Bus 808,
der mit dem speziellen Adressen-Daten-Bus 354 verbunden
ist, von den IEU 104 erhalten. Diese Daten werden über den
Bus 836 zu der CAM-Einheit 802 simultan zu Steuersignalen 828,
die die Initialisierung, eine Register-Auswahl und ein Lese- oder
Schreib-Steuersignal steuern, übertragen.
Demzufolge können
die Daten-Register
innerhalb der CAM-Einheit 802 leicht so beschrieben werden,
wie dies während
einer dynamischen Operation der Architektur 100 erforderlich
ist, einschließlich
eines Auslesens zur Speicherung, wie dies für die Handhabung von Kontext-Umschaltungen
erforderlich ist, die durch ein Operations-System eines höheren Niveaus
definiert sind.
-
V. Cache-Steuereinheit:
-
Die Steuerung an einer Daten-Schnittstelle
für die
CCU 106 ist in 17 dargestellt.
Wiederum sind separate Schnittstellen für die IFU 102 und
die IEU 104 vorgesehen. Weiterhin sind logische, separate
Schnittstellen durch die CCU 106 zu der MCU 110 in
Bezug auf Instruktions- und Daten-Übertragungen vorgesehen.
-
Die IFU-Schnittstelle besteht aus
der physikalischen Seiten-Adresse, die auf Adressen-Leitungen 324 geliefert
werden, der durch die VMU konvertierten Seiten-Adresse, wie sie
auf den Adressenleitungen 824 geliefert wird, und Anforderungs-IDs,
wie sie separat auf Steuerleitungen 294, 296 übertragen
werden. Ein unidirektionaler Daten-Übertragungs-Bus 114 ist
vorgesehen, um den Eingangs-Instruktions-Satz parallel zu der IFU 102 zu übertragen.
Schließlich
sind Lese/Belegt- und Bereitschafts-Steuersignale zu der CCU 106 über Steuerleitungen 298, 300, 302 vorgesehen.
-
Ähnlich
ist eine vollständige,
physikalische Adresse durch die IEU 102 über den
physikalischen Adressen-Bus 388 vorgesehen. Die Anforderungs-ExIDs
werden separat von und zu der Lade/Speicher-Einheit der IEU 104 über Steuerleitungen 796 geführt. Ein
80 Bit breiter bidirektionaler Daten-Bus wird durch de CCU 106 zu
der IEU 104 zugeführt.
Allerdings werden in der derzeit bevorzugten Ausführung der
Architektur 100 nur die unteren 64 Bits durch die IEU 104 verwendet.
Die Verfügbarkeit
und die Übertragung
innerhalb der CCU 106 eines vollen 80 Bit Daten-Übertragungsbus
ist vorgesehen, um darauffolgende Ausführungen der Architektur 100 zu
unterstützen
bzw. zu tragen, und zwar über
Modifikationen eines Fließkomma-Datenpfads 660,
einer Fließkomma-Operation
entsprechend zu dem IEEE Standard 754.
-
Die IEU-Steuerschnittstelle, gerichtet über Anforderungs-Belegt-,
Bereitschafts-, Lese/Schreib- und mit Steuersignalen 784,
ist im wesentlichen dieselbe wie die entsprechenden Steuersignale,
die durch die IFU 102 verwendet sind. Die Ausnahme ist
die Vorsehung eines Lese/Schreib-Steuersignals, um zwischen Lade- und
Speicher-Vorgängen
zu differenzieren. Die breiten Steuersignale spezifizieren die Anzahl
vyn Bytes, die während
jedes Zugriffs der CCU 106 durch die IEU 104 übertragen
werden sollen; im Gegensatz dazu ist jeder Zugriff des Instruktions-Cache 134 ein
festgelegter 128 Bit breiter Daten-Abruf-Vorgang.
-
Die CCU 106 führt eine
im wesentlichen herkömmliche
Cache-Steuer-Einrichtungs-Funktion
in Bezug auf die separaten Instruktions- und Daten-Cache-Speicher 132, 134 aus.
In der bevorzugten Architektur 100 ist der Instruktions-Cache 132 ein
Hochgeschwindigkeitsspeicher, der für die Speicherung von 256 an
128 Bit breiten Speicher-Instruktions-Sätzen
dient. Der Daten-Cache 134 dient zur Speicherung von 1024
an 32 Bit breiten Worten aus Daten. Die Instruktions-Daten-Anforderung,
die nicht unmittelbar auf den Inhalten der Instruktions-Daten-Cache-Speichern 132, 134 erfüllt werden
können,
werden weiter zu der MCU 110 geführt. Für ein Instruktions-Cache-Fehlen
wird die 28 Bit breite physikalische Adresse zu der MCU 110 über den
Adressen-Bus 860 zugeführt.
Die Anforderungs-ID und zusätzliche
Steuersignale zur Koordination der Operation der CCU 106 und
der MCU 110 werden auf Steuerleitungen 862 zugeführt. Wenn
die MCU 110 einmal den notwendigen Lese-Zugriff der MAU 112 koordiniert
hat, werden die aufeinanderfolgenden 64 Bit breiten Daten-Übertragungen
direkt von der MAU 112 über
den Instruktions-Cache 132 durchgeführt. Zwei Übertragungen sind erforderlich,
unter der Maßgabe,
daß der
Daten-Bus 136, und zwar in der bevorzugten Architektur 100,
ein 64 Bit breiter Bus ist. Wenn die angeforderten Daten über die
MCU 110 zurückgeführt werden,
wird die Anforderungs-ID, die während
der Anhängigkeit
der Anforderungs-Operation zurückgeführt wird,
auch zu der CCU 106 über
die Steuerleitungen 862 zurückgeführt.
-
Die Daten-Transfer-Operationen zwischen
dem Daten-Cache 143 und der MCU 110 sind im wesentlichen
dieselben wie die Instruktions-Cache-Operation. Da Daten-Lade- und -Speicher-Operationen
auf ein einzelnes Byte Bezug nehmen können, wird eine volle, 32 Bit
breite, physikalische Adresse zu der MCU 110 über den
Adressen-Bus 864 zugeführt.
Schnittstellen-Steuersignale und die Anforderungs-ExID werden über Steuerleitungen 836 übertragen.
Bidirektionale, 64 Bit breite Daten-Übertragungen werden über den
Daten-Cachebus 138 zugeführt.
-
VI. Zusammenfassung/Schlußfolgerung:
-
Demzufolge ist eine auf einem Hochleistungs-RISC
basierende Mikroprozessor-Architektur
offenbart worden. Die Architektur führt effektiv eine Ausführung von
Instruktionen außerhalb
der Reihenfolge, separate Haupt- und Ziel-Instruktions-Folge-Vorababruf-Instruktions-Übertragungs-Pfade
und eine prozedurale Instruktions-Erkennung und einen zugeordneten
Vorababruf-Pfad aus. Die optimierte Instruktions-Ausführungs-Einheit
schafft mehrfache, optimierte Daten-Verarbeitungs-Pfade, die Ganzzahl-,
Fließkomma- und Boolsche Operationen
unterstützen,
und setzt jeweilige temporäre
Register-Dateien ein, die eine Ausführung und Instruktions-Aufhebung
außerhalb
der Reihenfolge erleichtern, während
ein leicht eingerichteter, präziser
Status über
den Zustand der Maschine beibehalten wird.
-
Es sollte deshalb verständlich werden,
dass, während
die vorstehende Offenbarung die bevorzugte Ausführungsform der vorliegenden
Erfindung beschreibt, andere Variationen und Modifikationen leicht
durch Fachleute auf dem betreffenden Fachgebiet innerhalb des Schutzumfangs
der vorliegenden Erfindung vorgenommen werden können.