-
Technisches
Gebiet
-
Diese
Erfindung betrifft Prozessoren und betrifft insbesondere die Steuerung
einer Befehlsausführung außerhalb
der Reihenfolge in einem Prozessor mit mehreren Ausführungseinheiten.
-
Hintergrund
der Erfindung
-
Computer
für Allgemeinzwecke
führen
Programme aus, die typischerweise in einer ausführbaren Form als geordnete
Sequenzen aus Maschinenbefehlen vorhanden sind. Für Menschen
lesbare Darstellungen eines Programms werden in Sequenzen aus Maschinenbefehlen
für eine
gewünschte
Zielarchitektur umgewandelt, beispielsweise in eine Objektkodierung
für einen
Prozessor entsprechend der x86-Prozessorarchitektur, wobei dies
in einem Prozess stattfindet, der als Kompilierung bekannt ist.
Typischerweise werden Computerprogramme mit der vereinfachenden
Annahme gestaltet, kodiert und kompiliert, dass die resultierende
Objektkodierung in einer bestimmten Reihenfolge ausgeführt wird.
Jedoch wird trotz dieser Annahme in modernen Prozessorgestaltungsverfahren
versucht, Möglichkeiten
einer gleichzeitigen Ausführung
von Maschinenbefehlen, d. h. einen Parallelismus für Befehle,
auszunutzen.
-
Um
den Rechendurchsatz zu maximieren, können „superskalare" Verfahren angewendet
werden, um parallele Befehle mehreren Ausführungseinheiten zuzuordnen.
Im Gegensatz dazu beinhalten Pipeline-Verfahren beziehungsweise überlappende
Verfahren das Ausnutzen der Parallelität von Befehlen innerhalb von Stufen
oder Schritten einer einzelnen Funktionseinheit oder eines Ausführungspfades.
Superskalare Verfahren, die auf dem Gebiet superskalarer Prozessoren
bekannt sind, beinhalten die Befehlsausgabe außerhalb der Reihenfolge, den
Befehlsabschluss außerhalb
der Reihenfolge und die spekulative Ausführung von Befehlen.
-
Die
Befehlsausgabe außerhalb
der Reihenfolge beinhaltet das Ausgeben von Befehlen zu Ausführungseinheiten
mit nur geringem Bezug zu der tatsächlichen Reihenfolge von Befehlen
in der Ausführungskodierung.
Ein superskalarer Prozessor, der die Ausgabe außerhalb der Reihenfolge ausnutzt,
ist lediglich durch Abhängigkeiten
zwischen der Ausgabe (Ergebnissen) eines gegebenen Befehls und den
Eingaben (Operanden) der nachfolgenden Befehle bei der Erstellung
seiner Befehlsausgabesequenz beschränkt. Die Vervollständigung
bzw. der Befehlsabschluss außerhalb
der Reihenfolge ist andererseits eine Technik, die es ermöglicht,
dass ein gegebener Befehl vor dem Ende eines Befehls abgeschlossen
wird (beispielsweise wird das Ergebnis gespeichert), der in der
Programmabfolge vorher angeordnet ist. Schließlich beinhaltet die spekulative Ausführung das
Ausführen
einer Befehlssequenz auf der Grundlage vorhergesagter Resultate
(beispielsweise einer Verzweigung). Die spekulative Ausführung (d.
h. die Ausführung
unter der Annahme, dass Verzweigungen korrekt vorhergesagt sind)
ermöglicht
es einem Prozessor, Befehle auszuführen, ohne dass auf die tatsächliche
Bewertung der Verzweigungsbedingungen gewartet werden muss. Unter
der Annahme, dass Verzweigungen häufiger korrekt als falsch vorhergesagt
werden und unter der Annahme, dass ein vernünftiges, effizientes Verfahren
zum Rückgängigmachen
der Ergebnisse einer nicht korrekten Vorhersage verfügbar ist, kann
die Befehlsparallelität
(d. h. die Anzahl an für
die parallele Ausführung
verfügbaren
Befehlen) typischerweise durch die spekulative Ausführung erhöht werden
(siehe Johnson, superskalare Prozessorgestaltung, Prentice-Hall, Inc., New Jersey,
1991, Seiten 63 bis 77 für
Analysezwecke).
-
Das
Ausführen
von Befehlen außerhalb
der Reihenfolge, d. h. das Ausgeben und Abschließen von Befehlen außerhalb
der Sequenzreihenfolge, kann das Leistungsverhalten eines superskalaren
Prozessors erhöhen,
indem es dem superskalaren Prozessor möglich ist, mehrere Ausführungseinheiten
zu unterhalten, die parallel arbeiten, wodurch der Durchsatz verbessert
wird. Folglich kann eine Ablauforganisationseinheit beziehungsweise
eine Disponiereinheit für
einen superskalaren Prozessor das Gesamtleistungsverhalten verbessern,
indem diese bestimmt, welche Befehle außerhalb der Reihenfolge ausgeführt werden
können
und indem diese Befehle zu geeigneten Ausführungseinheiten zugeführt oder
ausgegeben werden. Eine Ablauforganisationseinheit beziehungsweise
eine Disponiereinheit für
einen superskalaren Prozessor muss auch Interrupt- und Einfangbefehle
handhaben. In vielen Prozessorarchitekturen einschließlich der
x86-Prozessorarchitektur ist
es erforderlich, dass ein Systemzustand bekannt ist, unmittelbar
bevor oder nachdem ein Befehl einen Fehler, einen Interrupt- oder
einen Einfangbefehl erzeugt. Dies führt zu einem Problem, wenn
Befehle außerhalb der
Reihenfolge auszuführen
sind. Daher muss die Disponiereinheit in der Lage sein, Befehle
ungeschehen zu machen und den Systemzustand so zu rekonstruieren,
als ob Befehle in der Reihenfolge ausgeführt werden.
-
Systemarchitekturen
zum Ausnutzen der Befehlsparallelität, die mit jedem dieser Verfahren
verknüpft ist,
wurden in einer Vielzahl von Artikeln und Schriften vorgeschlagen.
Für eine
Erläuterung
siehe beispielsweise Johnson, Seiten 127 bis 146 (Ausgabe außerhalb
der Reihenfolge), Seiten 103 bis 126 (Befehlabschluss außerhalb
der Reihenfolge und Abhängigkeit),
Seiten 87 bis 102 (Rekonstruktion nach Verzweigungsfehlvorhersage).
WO-A-94/08287 beschreibt ein System und ein Verfahren zum Handhaben
von Lade- und/oder Speicher-
beziehungsweise Schreiboperationen in einem superskalaren Mikroprozessor.
Eine Lade/Speicher- beziehungsweise Schreibeinheit behandelt Cache-Speicheranforderungen
außerhalb
der Reihenfolge, erkennt Adressenkollisionen und ordnet Daten an.
-
Überblick über die
Erfindung
-
Es
wurde herausgefunden, dass Lade bzw. Lese- und Schreiboperationen
im Allgemeinen unabhängig
und außerhalb
der Reihenfolge im Bezug zueinander in einem Prozessor ausgeführt werden
können,
der ein Lade/Speicher- bzw. Schreibausführungssteuerungssystem für außerhalb
der Reihe auszuführende
Befehle bereitstellt. Eine Abtastlogik bzw. eine Suchlogik, die
das relative Alter von Schreiboperationen in Bezug auf eine spezielle
Lade- bzw. Leseoperation (und von Ladeoperationen in Bezug auf eine
spezielle Schreiboperation) überwacht,
ermöglicht
ein Lade/Schreib-Ausführungssteuerungssystem,
das gemäß der vorliegenden
Erfindung aufgebaut ist, um jüngere
Schreiboperationen zu halten, bis ältere Ladeoperationen abgeschlossen
sind (und um jüngere
Ladeoperationen zu halten, bis ältere
Schreiboperationen abgeschlossen sind). Insbesondere sorgen diverse
Ausführungsformen
einer hierarchisch organisierten Suchlogik beziehungsweise Abtastlogik
in Baumstruktur, die gemäß der vorliegenden
Erfindung aufgebaut ist, dafür,
dass Anzeigen bzw. Indikationen für ältere Schreiboperationen und ältere Ladeoperationen
mit sehr wenigen Gatter-Verzögerungen
bereitgestellt werden, selbst in Prozessorausführungsformen, die zum gleichzeitigen
Bewerten einer großen
Anzahl von Operationen ausgebildet sind. Die in Verbindung mit der
Suchlogik arbeitende Adressenübereinstimmungslogik
erlaubt, dass das Lade-Schreib-Ausführungssteuerungssystem
Lade-, Schreib- (und Schreib-, Lade-,) Abhängigkeiten vermeiden kann.
In einem Prozessor mit einer Ladeeinheit und einer Schreibeinheit
ermöglicht
ein derartiges Lade/Schreibausführungssteuerungssystem
Befehle zu laden und zu speichern, die allgemein im Bezug zueinander
außerhalb
der Reihenfolge aus geführt
werden, wobei Datenabhängigkeiten
zwischen den Lade- und Schreibbefehlen hervorgerufen werden.
-
Kurze Beschreibung
der Zeichnungen
-
Die
vorliegende Erfindung kann besser verstanden werden und die zahlreichen
Aufgaben, Merkmale und Vorteile werden für den Fachmann offenkundig,
indem auf die begleitenden Zeichnungen Bezug genommen wird.
-
1 ist
eine Blockansicht eines superskalaren Computerprozessors, der eine
Steuerung der Ausführung
bzw. der Abarbeitung außerhalb
der Reihenfolge gemäß einer
Ausführungsform
der vorliegenden Erfindung bereitstellt.
-
2 ist
eine Blockansicht, die eine Disponiereinheit zeigt, die gemäß einer
Ausführungsform
der vorliegenden Erfindung aufgebaut ist.
-
3 ist
eine Ansicht einer Pipelinestufenverarbeitung, in der Systemstufen
beim Ausführen
von Befehlen gemäß einer
Ausführungsform
der vorliegenden Erfindung gezeigt sind.
-
4 ist
eine Blockansicht von Ausführungssteuerungskomponenten
für Lade-
und Schreiboperationen außerhalb
der Reihenfolge gemäß einer
Ausführungsform
der vorliegenden Erfindung.
-
5 ist
ein Schaltbild einer Ladehaltelogik gemäß einer Ausführungsform
der vorliegenden Erfindung.
-
6 ist
ein Schaltbild einer Schreibhaltelogik gemäß einer Ausführungsform
der vorliegenden Erfindung.
-
7 ist
eine Blockansicht, die die Suchlogik gemäß einer Ausführungsform
der vorliegenden Erfindung zeigt.
-
8 ist
ein Logikdiagramm, das eine gruppeninterne Logik für die Suchlogik
gemäß einer
beispielhaften Ausführungsform
der vorliegenden Erfindung zeigt.
-
9 ist
ein Logikdiagramm, das eine gruppenüberspannende Logik der ersten
und der zweiten Ebene für
eine Suchlogik gemäß einer
Ausführungsform
der vorliegenden Erfindung zeigt.
-
10 ist
ein Logikdiagramm, das eine gruppenüberspannende Logik der dritten
Ebene für
die Suchlogik gemäß einer
Ausführungsform
der vorliegenden Erfindung zeigt.
-
11 ist
eine Blockansicht eines Computersystems mit einem Prozessor, der
eine Lade/Schreibausführungssteuerung
außer
der Reihenfolge gemäß einer
Ausführungsform
der vorliegenden Erfindung bereitstellt
-
12 ist
ein Logikdiagramm, das eine alternative Such- und Kombinierlogik
zur Verbesserung des Verhaltens von Geschwindigkeitspfaden von Op-quad-0
abhängigen
Bereichen der Suchlogik zeigt.
-
Die
Verwendung gleicher Bezugszeichen in unterschiedlichen Zeichnungen
soll ähnliche
oder identische Komponenten betreffen.
-
Art beziehungsweise
Arten zum Ausführen
der Erfindung
-
2 zeigt
eine beispielhafte Ausführungsform
einer Ablauforganisationseinheit bzw. Disponiereinheit 180 mit
24 Einträgen
(die als Zeilen gezeigt sind), wobei jeder Eintrag mit einer anhängigen Op
bzw. Operation verknüpft
ist. Jeder Eintrag umfasst eine Reihe von Feldern, die gemeinsam
als Disponierreservoir 240 dargestellt sind, um statische
und dynamische Daten, die mit einer anhängigen Operation verknüpft sind,
zu repräsentieren.
Des weiteren stellt die Disponiereinheit 180 eine Reihe
von spezialisierten Logikblöcken
bereit, die kollektiv als Steuerlogik 230 gezeigt sind
und die mit den Einträgen
des Disponierreservoirs 240 verbunden sind, um mit anhängigen Operationen
verknüpfte
Daten zu empfangen. Die spezialisierten Logikblöcke (die als Spalten 231, 232, 233, 235 und 236 gezeigt
sind) der Steuerlogik 230 tiefem Signale, die die Aneinanderreihung
der Operations-(Op)ausführung
steuern und das Zuführen
von Operanden zu und das Verteilen von Ergebnissen von den Ausführungseinheiten
steuern. Die Steuerlogik 230 umfasst eine Ausgabeauswahllogik 231,
eine Operandenauswahllogik 232, eine Lade-, Schreibsortierlogik 234,
eine Statusflaggenhandhabungslogik 235 und eine selbst
modifizierende Kodierungsunterstützungslogik 536.
-
Die
Ausgabeauswahllogik 231 steuert die Ausgabe von Operationen
aus dem Disponierreservoir 240 zur Ausgabe an verfügbare Ausführungseinheiten
während
jedes Zyklus. Die Operandenauswahllogik 232 ermittelt eine
geeignete Quelle für
Operandendaten, die von den Operationen gefordert werden, die zu
den Ausführungseinheiten
ausgegeben wurden. Abhängig
von Datenabhängigkeiten
und der Anordnung von Operationen innerhalb der Ausführungsmaschine 150,
kann die geeignete Quelle eine Registerdatei 190, ein Zielwertefeld,
das mit einem weiteren anhängigen
Operations-Eintrag (Zielwertefelder für Disponiereinheiteneinträge sind
kollektiv als 250 dargestellt) verknüpf ist, oder das Ergebnis einer
abgeschlossenen Operation sein, das auf einem der Ergebnisbusse
(die gemeinsam als Ergebnisbusse 272 gezeigt sind) geliefert
wird. Steuersignale, die von der Ausgabeauswahllogik 231 und
der Operandenauswahllogik 232 bereit gestellt werden, ermöglichen
es der Disponiereinheit 180, Operationen von dem Disponierreservoir 240 an
verfügbare
Ausführungseinheiten
auszugeben und die geeignete Operandenquelle für jede ausgegebene Operation
auszuwählen.
-
Die
Disponiereinheit 180 enthält ein Zielwertfeld, das mit
jedem Disponiereinheitseintrag verknüpft ist. Kollektiv sind diese
Zielwertfelder als 250 gezeigt. Zusammen mit der Operandenauswahllogik 232 ergeben die
Zielwertfelder 250 einen Umordnungspuffer und eine Umbenennung
impliziter Register. Operandenwerte, die mit Systemregistern der
Registerdatei 190 verknüpft
sind, sind in den Zielwertfeldern 250 repräsentiert
und werden typischerweise den Ausführungseinheiten als Registeroperandenwerte über Operandenbusse 271 zugeführt. Jedoch
können
Operandenwerte stattdessen von der Registerdatei 190 geliefert
werden, wenn keines der Zielwertfelder 250 einen aktuelleren
Registerzustand repräsentiert
(d. h. einen bisher nicht zugewiesenen Registerzustand). Ergebnisse
abgeschlossener Operationen werden über Ergebnisbusse 272 dem
Zielwertfeld des Disponiereinheitseintrages zugeführt, der
mit der abgeschlossenen Operation verknüpft ist. Des weiteren können diese
Ergebnisse auch den Ausführungseinheiten
als Operanden für
anhängige
Operationen zugeführt
werden. Ergebnisse werden über
die Ergebnisbusse 272 weitergeleitet.
-
Die
Felder eines Disponierreservoireintrages (die anschaulich als Disponierreservoireintrag 240.1 gezeigt
sind) enthalten Informationen im Hinblick auf eine Operation (Op),
die auf die Ausführung
wartet, die gerade ausgeführt
wird oder die abgeschlossen ist. Die meisten der Felder eines Disponierreservoireintrages werden
initialisiert, wenn ein Befehlsdekodierer 130 eine neue
Operation in das Disponierreservoir 240 einlädt. Jedoch können andere
Felder später
eingeladen oder aktualisiert werden. Beispielsweise wird ein Zustandsfeld
(das für
jeden Eintrag als Feld 242 gezeigt ist) aktualisiert, wenn
die entsprechende Operation die Stufen einer Ausführungs-Pipeline
durchläuft.
Speicherfelder, die einen Wert ab dem Einladen einer Operation in
das Disponierreservoir 240 bis zur Rücknahme aus der Disponiereinheit 180 halten,
werden als "statische
Felder" bezeichnet.
Felder, die mit neuen Werten aktualisiert werden können, werden
als „dynamische
Felder" bezeichnet.
Im Rahmen der Lade/Schreib-Ausführungssteuerung
werden zwei Felder, das Typenfeld 241 und das Zustandsfeld 242 weiter
erläutert.
-
Ein
3-bit-Feld „Typ" [2:0] jedes Disponierreservoireintrages
(in 2 als Typenfeld 241 gezeigt) spezifiziert
die Operationsart, bzw. den Operationstyp, der dem Disponierreservoireintrag
zugeordnet ist. Die Operationsart ist insbesondere für Ausgabeauswahlzwecke
wichtig (beispielsweise sollten Ladeoperationen an eine Ladeeinheit,
etwa 150, ausgegeben werden); jedoch kann die Steuerung
der Reihenfolge der Lade/Schreiboperationen auch das Typenfeld 241 benutzen.
Die folgenden Signale werden aus dem Typenfeld 241 heraus
dekodiert:
000= eine spezielle Operation, die tatsächlich nicht
ausgeführt
ist.
010=LU eine Ladeoperation, die von der Ladeeinheit 152 ausgeführt wird.
10x=SU
eine Schreiboperation, die von der Schreib- bzw. Speichereinheit 153 ausgeführt wird.
101=ST
eine Schreiboperation, die den Speicher anspricht oder zumindest
eine fehlbare Adresse erzeugt (d. h. nicht eine LEA-Operation).
11x=RU
eine Registeroperation, die von der Registereinheit X 154 oder
möglicherweise
von der Registereinheit Y 155 ausgeführt wird.
110=RUX eine
Registeroperation, die nur von der Registereinheit X 154 ausgeführt werden
kann.
111=RUY eine Registeroperation, die von der Registereinhit
X 154 oder der Registereinheit Y 155 ausführbar ist.
-
Ein
4-bit-Feld "Zustand" [3:0] jedes Disponierreservoireintrages
(das in
2 als Typenzustand
242 gezeigt
ist) gibt den aktuellen Ausführungszustand
einer Operation an (S3, S2, S1 und S0 sind alternative Signalnamen
für „Zustand" [3:0]). Fünf mögliche Zustände des
Typenfeldes
242 werden durch Verschieben eines Feldes aus
Einsen wie folgt kodiert:
0000 | nicht
ausgegeben |
0001 | Stufe
0 |
0011 | Stufe
1 |
0111 | Stufe
2 |
1111 | abgeschlossen |
-
Zwischenzustände entsprechen
der aktuellen Ausführungsstufe
einer Operation gemäß dem Eintrag, in
welchem das Typenfeld auftritt. Die Bits werden aktualisiert (durch
Verschieben nach links), wenn die Operation erfolgreich ausgegeben
wurde und die Stufe verlässt.
Zustand [3:0] wird auch während
irgendwelcher Abbruchzyklen auf 1111 gesetzt.
-
Einteilung der Disponiereinheit
in Vierer-Operationen (quad-Operationen)
-
Die
Disponiereinhit 180 umfasst 24 Einträge in dem Disponierreservoir 240 und
Zielwertfelder 250, die als ein FIFO verwaltet sind. Daten,
die neuen Operationen entsprechen, werden „eingeladen bzw. eingelesen" und im Verlaufe
der Ausführung
nach „unten" verschoben und werden
aus der Unterseite des Speicherreservoirs 240 als abgeschlossen
zurückgenommen.
Um die Steuerung zu vereinfachen, verwaltet die Disponiereinheit 180 das
Disponierreservoir 240 und die Zielwertfelder 250 auf
einer Op-Quad-Basis bzw. auf Basis von Vierer-Operationen. Operationen
werden in das Disponierreservoir 240 in Gruppen aus vier
eingeladen, durch dieses hindurch geschoben und daraus zurückgenommen.
Auf diese Weise stimmt die „Granularität" der Disponiereinheit
mit der Dekodierbandbreite des em-Kodierungs-ROM 142 und
MacDec 141 des Befehlsdekodierers 140 überein.
Die Disponiereinheit 180 verwaltet daher 24 Operationseinträge als sechs
Vierer-Operations-Einträge
in einem FIFO mit der Tiefe sechs und der Breite vier.
-
Trotz
der Organisation mit Vierer-Operationen der Disponiereinheit 180 können viele
Aspekte der Funktionsweise der Disponiereinheit am Besten erstanden
werden, indem das Disponierreservoir 240, die Zielwertfelder 250 und
die Steuerlogik 230 im Zusammenhang mit einer Granularität bzw. Unterteilung
von 24 Einträgen
betrachtet werden. Für
anschauliche Zwecke wird die folgende Erläuterung im Hinblick auf eine
Disponiereinheit 180 mit 24 Einträgen angegeben.
-
Operations-(Op)zeitablauf-
und ausführungsstufen
-
Jeder
Eintrag des Disponierreservoirs 240 umfasst Felder, die
anhängige
Operationen beschreiben. Diese Felder speichern statische Informationen,
die ursprünglich
aus den Operationen abgeleitet sind, die von dem Befehlsdekodierer 140 abgeholt
oder dekodiert wurden, und speichern ebenso dynamische Zustandsinfonnationen,
die sich aus der Operationsausführung
ergeben oder die den Ausführungspipeline-Status
einer gegebenen Operation kennzeichnen.
-
Aus
Sicht der Prozessorsteuerung ist die Disponiereinheit 180 eine
nach Reihenfolge geordnete Serie aus Befehlen aus Operations-Zustandsinformation
(Disponierreservoir 240) mit einer zugeordneten Steuerlogik 230,
die für
das Ausgegeben von Operationen an entsprechende Ausführungseinheiten
Steuersignale erzeugen, um die Operationsausführung durch Sequenzen aus Pipelinestufen
zu steuern und um schließlich
die Operationen aus der Disponiereinheit abgeschlossen zurückzunehmen.
Wie in 2 gezeigt ist, umfasst die Steuerlogik 230 fünf spezialisierte
Blöcke
einer Steuerlogik (die Ausgabeauswahllogik 231, die Operandenauswahllogik 232,
die Lade-Schreibsortierlogik 234, die Statusflaggenhandhabungslogik 235 und
die selbst-modifizierende Kodierungsunterstützungslogik 236),
wovon jede Bereiche (anschaulich als Bereiche 234.3 der
Lade-, Schreib-Sortierlogik 234 gezeigt) zum Empfangen
von Information von entsprechenden Einträgen des Disponierreservoir 240 aufweist.
Steuerlogikblöcke
tiefem Steuersignale zu den Ausführungseinheiten.
Beispielsweise liefert die Lade-Schreib-Sortierlogik 234 Steuersignale
zu der Ladeeinheit 152 und der Schreibeinheit 153 über Steuerleitungen,
die gemeinsam als 273 dargestellt sind.
-
Die
speziellen Steuersignale, die von den Steuerlogikblöcken des
Disponierreservoirs 240 bereitgestellt werden, hängen von
dem Zustand der Felder in den Operationseinträgen ab. Insbesondere bezeichnet das
Zustandsfeld [3:0] den Vorgang des Ausführens zugeordneter Operationen.
Aus Sicht der Logikstruktur basiert die gesamte sequentielle Verarbeitung
innerhalb der Disponiereinheit auf einzelnen Zyklen. Entscheidungen über Zustandsübergänge werden
bei jedem Taktzyklus auf der Grundlage des Maschinenzustandes während des
Taktzyklus getroffen. Der Aufbau der Disponiereinheit 180 gibt
die Pipeline-Natur der Operationsausführung wieder. Die Disponiereinheit 180 (und
entsprechend jeder Eintrag) kann in viele unterschiedliche aber
unabhängige
Logikbereiche unterteilt werden, wovon jeder direkt einer speziellen
Verarbeitungsstufe einer gegebenen Art einer Operation oder Ausführungspipeline
zugeordnet ist.
-
Es
wird nun mit Bezug zu 3 die Pipeline-Stufenverarbeitung
in der Ausführungsmaschine 150 beschrieben.
Sobald eine Operation in die Ausführungsmaschine 150 eingeladen
ist, durchläuft
die Operation drei oder vier Pipeline-Stufen und entsprechende Übergänge zwischen
vier oder fünf
Zuständen,
die durch das Feld „Zustand" [3:0] innerhalb
des Disponiereinheitseintrages repräsentiert sind, der der Operation
zugeordnet ist. Die Befehlsabholung und Befehlsdekodierung werden
vor der Ausführungsmaschine 150 ausgeführt, daher
ist die erste Pipeline-Stufe in Bezug auf die Disponiereinheit die
Ausgabestufe. 3 zeigt die Pipeline-Stufenbearbeitung
für Registeroperationen
(RegOp) und Lade/Schreiboperationen (LdStOp).
-
Die
Disponiereinheit 180 übt
die primäre
Steuerung für
das Ausführen
der Pipeline während
der Ausgabe- und Operandenabholstufen 330 und 340 aus.
Die Verarbeitung innerhalb der Ausgabestufe 330 und in der
Operandenabholstufe 340 kann in zwei Phasen pro Stufe aufgeteilt
werden, wobei jede Phase normalerweise einen halben Taktzyklus in
Anspruch nimmt. Die Ausgabestufe 330 umfasst eine Ausgabeauswahlphase und
eine Rundfunkphase, während
die Operandenabholstufe 340 eine Operandenauswahlphase
und eine Operandenweiterieitungsphase enthält.
-
Ausgabestufe
-
Während der
Ausgabeauswahlphase 330.1 der Ausgabestufe 330 wählt die
Disponiereinheit 180 die nächsten Operationen aus, die
in die Pipelines einzuladen sind, die mit der Ladeeinheit 152,
der Schreibeinheit 153, der Registereinheit X 154 und
der Registereinheit Y 155 verknüpft sind (die Auswahl von vier
Operationen findet gleichzeitig statt). Während der Rundfunkphase 330.2 der
Ausgabestufe 330 wird Information über jeden der Registeroperanden
für jede
ausgewählte
Operation an alle Disponiereinträge
und zu einer externen Logik (einschließlich der Registerdatei 190 und
den Ausführungseinheiten)
gesendet. Auf diese Weise initialisiert die Rundfunkphase 330.2 die
Erkennung von Operandenwerte, die in einem der Zielwertfelder 250 der
Disponiereinheit 180 oder in der Registerdatei 190 vorhanden
sind, oder die den Ergebnissen entsprechen, die auf den Ergebnisbussen 272 einer
der Ausführungseinheiten
zu erzeugen sind (beispielsweise der Ladeeinheit 152, der
Schreibeinheit 153 oder den Registereinheiten 154 und 155).
-
Operandenabholstufe
-
Während der
Operandenauswahlphase 340.1 der Operandenabholstufe 340 bestimmt
die Disponiereinheit 180 bis zu acht Operandenwerten (vier
Operationen·zwei
Operanden/Operation) und bestimmt den Status jedes Operandenwertes,
d. h., ob ein gültiger
Wert tatsächlich
aus der bezeichneten Quelle verfügbar ist.
Auf der Grundlage dieser Information bestimmt die Disponiereinheit 180,
welche Operationen in der Operandenabholstufe 0 (Stufe 340)
in ihre entsprechenden Ausführungspfade
weitergehen, d. h. in die Stufe 1 (Stufe 350) nach der
Operandenweiterleitungsphase. Entscheidungen über das Weiterleiten werden
unabhängig
für jede
Operation getroffen und lediglich Operandenabhängigkeiten beschränken die
Reihenfolge, mit der die Operationen tatsächlich ausgeführt werden.
Beim Fehlen derartiger Datenabhängigkeiten
werden Operationen, die an unterschiedliche Ausführungseinheiten ausgegeben
werden, im Allgemeinen über
ihre entsprechenden Pipelines in beliebiger Reihenfolge in Bezug
auf jene Operationen ausgeführt,
die anderen Ausführungseinheiten
zugeordnet sind. Eine Ausnahme für
diese allgemeine Regel betrifft die entsprechende Reihenfolge von
Ladeoperationen und Schreiboperationen (d. h. LdOp und StOp) und
wird nachfolgend detaillierter erläutert.
-
Ausführungsstufen
für LdStOp
-
Die
ersten beiden Stufen in Bezug auf die Disponiereinheit, d. h. die „Operandenausgabe"-Stufe 330 und
die „Operandenabhol"- Stufe 340 sind
für Registeroperationen
(RegOp) und Lade/Schreiboperationen (LdStOps) üblich. Nachfolgende Stufen
sind die Ausführungsstufen.
Zu den Registeroperationen gehören
eine einzelne Ausführungsstufe 350,
da alle Registeroperationen in einem einzelnen Taktzyklus ausgeführt werden. Sobald
eine Registeroperation in die Ausführungsstufe eintritt, wird
sie stets erfolgreich abgeschlossen und verlässt die Stufe 350 am
Ende dieses Taktzyklus. Lade/Schreiboperationen besitzen andererseits
zwei Ausführungsstufen 352 und 360,
während
welchen eine Adressenberechnung, eine Segment- und Seitenübersetzung
(und Schutzüberprüfung) und
eine Daten-Cache-Speicherzugriffsoperation (im Falle von Ladeoperationen)
jeweils stattfinden. Anders als Registeroperationen könne Lade/Schreiboperationen
für beliebige
Zeitdauern in der jeweiligen Stufe 360 oder 370 gehalten
werde. Die meisten Halteereignisse treten in der zweiten Stufe 370 auf.
Sehr häufig
ergeben sich Halteereignisse in der Stufe 370 aus Nichttreffern
für den
Daten- Cachespeicher 170,
aus Nichttreffern der Daten-TLB 171 und aus Seitenfehlern.
Halteereignisse in der Stufe 360 ergeben sich aus falsch
zugeordneten Speicherreferenzen und aus der Stufe 370,
wenn diese von einer Lade/Schreiboperation, die nicht bis zum Abschluss
weitergeht, besetzt und blockiert ist.
-
Während der
Operandenweiterleitungsphase 340.2 der Operandenabholstufe 340 überträgt die Disponiereinheit 180 Operandenwerte
von den zugeordneten Quellen über
Operandenbusse und/oder Ergebnisbusse, die in 2 kollektiv
als Busse 271 und 272 gezeigt sind, zu den Ausführungseinheiten,
etwa die Ladeeinheit 152, die Schriebeinheit 153,
die Registereinheit X 154 und die Registereinheit Y 155.
Die beispielhafte Ausführungsform
beinhaltet neun Operandenbusse 271, von denen acht Operandenwerte
für Operationen
in der Stufe 0 bereitstellen. Ferner treten in der anschaulichen
Ausführungsform
Operandenübertragungen auf,
unabhängig
davon, ob Werte gültig
sind, wodurch die Steuerlogik vereinfacht wird. Wenn ein Operandenwert
nicht gültig
ist, wird dieser von der entsprechenden Ausführungseinheit ignoriert, da
die Disponiereinheit 180 die zugeordnete Operation nicht
an die Stufe 1 weiterleitet. Unmittelbare Werte für Registeroperationen werden
als ein Teil des zuvor beschriebenen Registeroperandenweiterleitungsmechanismus
behandelt. In derartigen Fällen
wird der unmittelbare Wert direkt von dem speziellen Zielwertfeld 250 zu
den Einträgen
der Disponiereinheit 180 weitergeleitet, die der Operation
zugeordnet sind.
-
Verschiebewerte
werden ebenso während
der Operandenweiterleitungsphase 340.2 über Verschiebebusse 189.4 zu
der Ladeeinheit 152 und der Schreibeinheit 153 (unabhängige Werte
für jede
Einheit) übertragen.
Diese Verschiebungen sind 32-Bit-Werte und stammen stets von Einträgen der
Disponiereinheit 180. Die Auswahl des Eintrags geschieht
während
der Operandenauswahlphase 340.1. Wenn eine Ladeoperation
oder eine Schreiboperation in die Stufe 1 eintritt, speichern die
Ladeeinheit 152 und die Schreibeinheit 153 zugeordnete
Verschiebe- und Operandenwerte.
-
Die
Disponiereinheit 180 richtet einen Vier-Phasen-Steuermechanismus
(wie er zuvor beschrieben ist) ein, um die Adressenoperanden und
die Verschiebung bereitzustellen; jedoch erfordern Schreiboperationen einen
Schreibdatenoperanden zusätzlich
zu den Adressenoperanden und den Verschiebewerten. Die Disponiereinheit 180 führt einen
Vier-Phasen-Prozess zum Erhalten der Speicherdaten für eine Schreiboperation aus.
Der Vorgang zum Erhalten der Schreiboperationsdaten ist ähnlich zu
dem zuvor be schriebenen Prozess; jedoch werden die Schreibdaten
während
der Ausführungsstufe
2 (370) der Schreibpipeline ermittelt. Der Prozess zum
Bereitstellen der Schreibdaten wird mit den Stufen 1 und 2 der Schreiboperation
synchronisiert und enthält
eine Auswahlphase 390.1, die die Schreiboperation in der
Ausführungsstufe
1 kennzeichnet, eine Rundfunkphase 390.2, in der die Quelle
eines Datenoperanden beschreibende Information gesendet wird, eine
Datenoperandenauswahlphase 390.3 und eine Datenoperandenweiterleitungsphase 390.4.
Im Wesentlichen werden die Schreibdaten parallel zur Schreiboperationsausführung abgeholt;
und der eigentliche Datenwert wird erhalten und der Schreibwarteschlange 159 beim
Abschluss der Schreiboperationsverarbeitung zugeführt. Wenn
ein gültiger
Schreibdatenwert nicht verfügbar
ist, wird die Schreiboperation in der Stufe 2 gehalten.
-
Bedingungen
für die
Lade-Schreib-Reihenfolge
-
Ebenso
wie ein gewisses Maß an
Ausführungsreihenfolge
zwischen Operationen, die tatsächliche
Datenabhängigkeiten
aufweisen (im Gegensatz zu lediglich einer Berücksichtigung einer Registerarchitektur,
die von der Disponiereinheit 180 durch Anwendung der Registerumbenennung
vermieden wird), beibehalten werden muss, muss auch die Ausführungsreihenfolge
zwischen Ladeoperationen und Schreiboperationen, die von der gleichen
Speicherstelle auslesen (oder in diese schreiben) beibehalten werden.
-
Im
Allgemeinen können
Ladeoperationen und Schreiboperationen außerhalb der Reihenfolge zueinander
ausgeführt
werden; wenn jedoch eine jüngere
Ladeoperation und eine ältere
Schreiboperation auf die gleiche Speicherstelle zugreifen, sollte
die ältere
Schreiboperation die Daten für
die jüngere
Ladeoperation (d. h. die jüngere
Ladeoperation sollte auf die ältere
Schreiboperation warten) bereitstellen. In einem derartigen Falle
werden die Schreibdaten der jüngeren
Ladeoperation über
den Daten-Cache-Speicher 170 bereitgestellt. In ähnlicher
Weise muss eine ältere
Ladeoperation abgeschlossen sein, bevor ein jüngerer Schreibvorgang auf die
gleiche Speicherstelle zugreifen darf. In einem derartigen Falle
muss die ältere
Schreiboperation warten. Eine Kombination der Steuerlogik in der
Disponiereinheit 180 und den Lade- und Schreibeinheit 152 und 153 erzwingt
derartige Bedingungen für
die Reihenfolge der Lade- und Schreiboperationen.
-
Steuerung der Lade-Schreib-Reihenfolge
-
Zusätzlich zu
der Disponierlogik, die mit der Operationsausgabe und der Operandenabholung
verknüpft
ist, enthalten Einträge
der Disponiereinheit 180 eine Lade/Schreib-Sortierlogik 234 zum
Bereitstellen einer Ausführungssteuerung
für Lade-Schreiboperationen
außerhalb
der Reihenfolge. Zwei Bereiche der Lade-Schreib-Sortierlogik 234, die der Ladeeinheit 152,
bzw. der Schreibeinheit 153 zugeordnet sind, sind in 4 als
Ladereihenfolgelogik 434a und Schreibreihenfolgelogik 434b gezeigt.
Zusammen mit der Ladehaltelogik 403 und der Schreibhaltelogik 413 in
den entsprechenden Ausführungseinheiten
erzwingt die Lade-Schreib-Sortierlogik 234 entsprechende
Reihenfolgebedingungen für
die Ausführungen
der Lade- und Schreiboperationen.
-
Ladehaltelogik
-
Es
sei der Anschauung halber auf die Ladeeinheit 152 verwiesen;
die Ladehaltelogik 403 prüft im Hinblick auf Schreiboperationen
in diversen Pipelinestufen, die älter
sind als die Ladeoperation in der Stufe 2 (LU2 402) der
Ladeeinheit 152. Insbesondere prüft die Ladehaltelogik 403 im
Hinblick auf ältere
Schreiboperationen in der Stufe 0, der Stufe 1 (SU1 411)
und der Stufe 2 (SU2 412), d. h. die Stufen 340, 352 und 360 aus 3. Drei
Signale (SC_SU2OLDER, SC_SU1OLDER und SC_SU0OLDER), die der Ladehaltelogik 403 von
der Ordnungslogik 434a zugeführt werden, geben eine ältere Schreiboperation
in den Stufen 2, 1 oder 0 an. Genauer gesagt, SC_SU0OLDER gibt das
Vorhandensein einer älteren
Schreiboperation in den Bearbeitungsstufen vor den Ausführungsstufen
1 und 2 (beispielsweise Operandenabholstufe 0 340 oder
Ausgabestufe 330) an. Die Ladehaltelogik 403 empfängt ferner
eine Speicherteiladresse für
die Ladeoperation in der Stufe 2 (LU2 402) der Ladeeinheit 152 und
stellt selektiv ein Haltesignal (LU2_Hold) für LU2 402 unter der
nunmehr beschriebenen Bedingungen bereit.
-
Eine ältere Schreiboperation
in der Stufe 0 (oder in einer früheren
Stufe) bewirkt, dass die Ladehaltelogik
403 die aktuelle
Ladaoperation in der Stufe 2 der Ladeeinheit
152 bedingungslos
hält. Andererseits
hält eine ältere Schreiboperation
in der Stufe 2 oder in der Stufe 1 die aktuelle Ladeoperation nur,
wenn es auch eine Übereinstimmung
zwischen den Speicheradressen für
die Ladeoperation in der Stufe 2 und der älteren Schreiboperation gibt.
Die folgende RTL beschreibt die Gestalt und die Funktionsweise der
Ladehaltelogik
403:
-
Die
Ladehaltelogik 403 liefert das LU2_Hold- Signal zu LU2 402,
um eine Ausführung
einer Stufe 2-Ladeoperation zu verhindern, wenn eine beliebige der
oben genannten Kombinationen von Teiladressen übereinstimmt (AddrMatch1 oder
AddMatch2) und relative Altersangaben (SC_SU2OLDER, SC_SU1OLDER
und SC_SU0OLDER) auf der Disponiereinheit 180 vorhanden
sind. Wenn bisher noch eine lineare Adresse für eine Schreiboperation in
der Stufe 0 berechnet ist, wird eine jüngere Ladeoperation in der
Stufe 2 bedingungslos für
eine ältere
Stufe 0-Schreiboperation angehalten. Wenn die ältere Schreiboperation zu den
Stufen 1 und 2 weitergeht, kann eine Teiladressenfehlanpassung entstehen,
so dass keine Bedingungen hinsichtlich der Reihenfolge durch das
Abschließen
außerhalb
der Reihenfolge der jüngeren
Ladeoperation und die ältere
Schreiboperation verletzt werden, und die Ladehaltelogik 403 deaktiviert
das Halten gemäß der LU2_Hold-Gleichung.
-
In
der hierin beschriebenen beispielhaften Ausführungsform wird eine Teiladressenangleichung
auf der Grundlage eines unteren Anteils der linearen Adressen für die möglicherweise übereinstimmende
Ladeoperation und Schreiboperation ausgeführt. Die Teilübereinstimmung
ist so gestaltet, dass ein ausreichend großer Satz an Bits ausgewählt wird,
um die Anzahl falscher Übereinstimmungen
zu begrenzen, während
die Geschwindigkeit und der Einfluss auf den kritischen Pfad der
Adressenübereinstimmungsschaltung
berücksichtigt wird.
In der beispielhaften Ausführungsform
beruht die teilweise Übereinstimmung
der linearen Adresse auf den unteren Bits entsprechender linearer
Adressen (d. h. LinAddr (9,3), SU2_PageOffset (9,3) und SU1_LinAddr
(9,3)) und gleicht einen akzeptablen Pegel an falschen Übereinstimmungen
mit einer gewünschten Schnelligkeit
der Übereinstimmung
aus, obwohl alternative Ausführungsformen
eine höhere
oder geringere Anzahl an Adressenbits für die Übereinstimmung verwenden und
die Übereinstimmungsuntersuchungen
auf der Grundlage virtueller, logischer, linearer oder physikalischer
Adressen ausführen
können.
-
Es
sind auch acht-bit-Bytemarkierungen (ByteMark, SU1_ByteMark und
SU2_ByteMark) in der Teiladressenübereinstimmung beteiligt. Diese
Bytemarkierungen sind erweiterte Varianten entsprechender Adressenbits
0, 1 und 2, die die speziellen Bytes kennzeichnen, auf denen Ladeoperationen
oder Schreiboperationen operieren, da in der beispielhaften Ausführungsform
(eine Prozessorimplementierung gemäß der x86 Prozessorarchitektur)
1-Byte, 2-Byte, 4-Byte und 8-Byte Ladeoperationen und Schreiboperationen
unterstützt werden.
In der beispielhaften Ausführungsform
werden diese Bytemarkierungen verglichen, um eine Überlappung
und damit Abhängigkeiten
zwischen den speziellen Bytes zu erkennen, aus denen eine Ladeoperation liest
und in die eine Schreiboperation schreibt.
-
Es
sind weitere Terme in der RTL enthalten, die die Ladehaltelogik 403 beschreiben.
Beispielsweise verhindert die Ladehaltelogik 403 ferner
das Ausführen
nicht spekulativer Ladeoperationen, d. h. solcher Ladeoperationen,
die nicht in der Nähe
einer älteren
Speichertransaktion auslesen können,
wie dies durch DTB_InhSptivLd angegeben ist. Nicht spekulative Ladeoperationen
behalten strikt die Reihenfolge in Bezug auf alle älteren Lade/Schreiboperationen
und nicht nur für ältere Schreiboperationen
bei. Für
nicht spekulative Ladeoperationen stellt die Ladehaltelogik 403 sicher,
dass keine älteren
Speichertrankaktionen anhängig
sind. Da die Disponiereinheit 180 Ladeoperationen geordnet
zueinander ausgibt, was darauf hinausläuft, dass sichergestellt wird,
dass es keine älteren
Schreiboperationen gibt, die noch an den Datencache-Speicher 170 zu übergeben
sind. Die Disponiereinheit 180 überwacht den Status der Schreiboperationen über die
Schreibwarteschlange 159 für den Datencache-Speicher 170 und
liefert ein SC_LdOldest-Signal, das angibt, dass keine älteren zugeordneten
Schreiboperationen vorhanden sind.
-
Gemäß 4 empfängt die
Ladehaltelogik 403 Angaben über das relativer Alter der
Ladeoperationen in der LU2 402 der Ladeeinheit 152 von
der Ladereihenfolgelogik 434a. Insbesondere empfängt die
Ladehaltelogik 403 eine SC_SU2OLDER-Angabe, eine SC_SU1OLDER-Angabe
und eine SC_SU0OLDER-Angabe aus der entsprechenden Suchlogik (SU2-älter-Suchlogik 434a.1,
SU1-älter-Suchlogik 434a.2 und
SU0-älter-Suchlogik 434a.3)
der Ladereihenfolgenlogik 434a. Die Ladehaltelogik 403 empfängt ferner
Teiladressensignale für
die Schreiboperationen in Stufen SU1 411 und SU2 412 der
Schreibeinheit 153 und für die Ladeoperation in LU2 402 der
Ladeeinheit 152. Auf der Grundlage dieser Eingangssignale
setzt die Ladehaltelogik 403 selektiv ein Haltesignal (LU2_Hold),
das die Ladeoperationen LU2 402 (und auch für nachfolgende
Ladeoperationen) gemäß der obigen
RTL-Beschreibung unterbricht.
-
Ladeoperationen
(einschließlich
Operationen, Operanden, Verschiebungswerten und gewissen Steuersignalen)
treffen bei LU1 401 über
entsprechende Busse und Leitungen ein, die anschaulich als kollektiver Bus 189 gezeigt
sind. Speicherstellen, die durch die Ladeoperationen in LU2 402 adressiert
sind, werden über den
Datencache-Speicher 170 angesprochen, wenn LU2_Hold nicht
gesetzt (oder freigegeben) ist und werden den Ausführungseinheiten
und der Disponiereinheit 180 über einen Ergebnisbus 189.2 (nicht
gezeigt) des kollektiven Busses 189 zugeführt. Beide
Stufen der Ladeeinheit 152 (LU1 401 und LU2 402)
kommunizieren mit der Daten-TLB 171 und mit anderen Speicherverwaltungsdatenstrukturen,
die in den diversen Ebenen der Speicherhierarchie vorhanden sind
(L1-Datencache 170, L2 Cache 110, Hauptspeicher,
etc.), um virtuelle (oder lineare) Adressen in physikalische Adressen
umzuwandeln.
-
Der
Fachmann erkennt, dass eine Vielzahl geeigneter Implementierungen
der Ladehaltelogik 403 entsprechend der oben beschriebenen
RTL möglich
sind. Die Ladahaltelogik 403 ist eine beliebige geeignete
Implementierung. 5 zeigt eine derartige geeignete
Ausführung
in Form einer kombinatorischen Logik.
-
Schreibhaltelogik
-
Die
Schreibeinheit 153 umfasst eine analoge Haltelogik in Form
einer Schreibhaltelogik 413, die im Hinblick auf Ladeoperationen
in diversen Pipelinestufen prüft,
die älter
als die Schreiboperation in der Stufe 2 (SU2 412) der Schreibeinheit 153 sind.
Obwohl die Gestaltung der Schreibhaltelogik 413 analog
zur Ladehaltelogik 403 ist, sind die beiden nicht symmetrisch.
Die Schreibhaltelogik 413 führt eine Prüfung im Bezug auf ältere Ladeoperationen
in der Stufe 1 (LU1 401) und der Stufe 2 (LU2 402)
durch, d. h. in Bezug auf die Stufen 352 und 360 aus 3.
Zwei Signale (SC_LU2OLDER und SC_LU1OLDER), die der Schreibhaltelogik 413 von
der Schreibreihenfolgelogik 434b zugeführt werden, zei gen eine ältere Ladeoperation
in den Stufen 2 bzw. 1 an. Genauer gesagt, SC_LU1OLDER gibt das
Vorhandensein einer älteren
Ladeoperation in Stufen der Verarbeitung vor der Ausführungsstufe
2 (beispielsweise Ausführungsstufe
1 352, Operandenabholstufe 0 340 oder Ausgabestufe 330)
an. Die Schreibhaltelogik 413 empfängt ferner Speicherteiladressen
für die
Schreiboperationen in der Stufe 2 (SU2 412) der Schreibeinheit 153 und
setzt selektiv ein Haltesignal (SU2_Hold) für SU2 412 unter Bedingungen,
die nunmehr beschrieben werden.
-
Eine ältere Ladeoperation
in der Stufe 1 (oder in einer früheren
Stufe) bewirkt, dass die Schreibhaltelogik
413 bedingungslos
die aktuelle Schreiboperationen der Stufe 2 der Schreibeinheit
153 anhält. Andererseits
hält eine ältere Ladeoperation
in der Stufe 2 die aktuelle Schreiboperationen nur dann, wenn es
eine Übereinstimmung
zwischen den Speicheradressen für
die Schreiboperationen in der Stufe 2 und der älteren Ladeoperation gibt.
Die folgende RTL beschreibt den Aufbau und die Funktionsweise der
Schreibhaltelogik
413:
-
Die
Schreibhaltelogik 413 liefert das SU2_Hold-Signal zu SU2 412,
um das Ausführen
einer Schreiboperation der Stufe 2 zu verhindern, wenn
eine der oben spezifizierten Kombinationen aus Übereinstimmungen von Teiladressen
(AddrMatch2) und relativen Altersangaben (SC_LU2OLDER und SC_LU1OLDER)
aus der Disponiereinheit 180 vorhanden ist. Eine jüngere Schreiboperation
in der Stufe 2 wird unbedingt im Hinblick auf eine ältere Ladeoperation
der Stufe 1 (oder früher)
angehalten. Wenn die ältere
Ladeoperation zur Stufe 2 weitergeht, kann eine auftretende Teiladressenfehlübereinstimmung
ergeben, dass keine Anforderungen hinsichtlich der Reihenfolge durch
den Abschluss außerhalb
der Reihenfolge der jungem Schreiboperation und der älteren Ladeoperation
verletzt werden und die Schreibhaltelogik 413 gibt das
Halten gemäß der SU2_Hold-Gleichung
frei.
-
Wie
bei der Ladehaltelogik 403 führt die Schreibhaltelogik 413 eine
Adressenteilübereinstimmung
auf der Grundlage der unteren Bereiche (d. h. LinAddr (9,3) und
LU2_PageOffset (9,3)) linearer Adressen für Schreiboperationen und Ladeoperationen
durch. Bytemarkierungen (ByteMark und LU2_ByteMark) sind ebenso
in der Adressenteilübereinstimmung
enthalten.
-
In
der beispielhaften Ausführungsform
ist die Schreibhaltelogik 413 ebenso wie die Ladehaltelogik 403 überbestimmt
in dem Satz der Bedingungen, die ein Halten bewirken können. Jedoch
ist der Aufbau der Schreibhaltelogik 413 noch stärker einschließend als
der Aufbau der Ladehaltelogik 403. Beispielsweise hält die Schreibhaltelogik 413 eine
jüngere
Schreiboperation der Stufe 2 auf Kosten einer älteren Ladeoperation der Stufe
1, die gerade eine Adressenübereinstimmung
prüft.
In alternativen Ausführungsformen
kann die Menge an Bedingungen präziser
(oder weniger präzise)
abgegrenzt werden, die ein Halten in der Schreibhaltelogik 413 und/oder
der Ladehaltelogik 403 hervorrufen. In der anschaulichen
Ausführungsform
wird jedoch die Bedingung für
das Halten von der Schreibhaltelogik 413 weniger präzise auf
der Grundlage einer Abschätzung
abgegrenzt, dass in einem typischen Befehlsprofil Ladeoperationen
häufiger
von Schreiboperationen als umgekehrt abhängig sind.
-
Gemäß 4 erhält die Schreibhaltelogik 413 Angaben über das
relative Alter der Ladeoperation in SU2 412 der Schreibeinheit 153 von
der Schreibreihenfolgelogik 434b. Insbesondere empfängt die
Schreibhaltelogik 413 eine SC_LU2OLDER-Angabe und eine
SC_LU1OLDER-Angabe von der entsprechenden Suchlogik (LU2-älter-Suchlogik 434b.1 und
LU1-älter-Suchlogik 434b.2)
der Schreibreihenfolgenlogik 434b. Die Schreibhaltelogik 413 empfängt ferner
Teiladressensignale für
die Ladeoperationen in der LU2 402 Stufe der Ladeeinheit 152 und
für die
Schreiboperation SU2 412 der Schreibeinheit 153.
Auf der Grundlage dieser Eingangssignale setzt die Schreibhaltelogik 413 selektiv
ein Haltesignal (SU2_Hold), das die Schreiboperationen SU2 412 (und
auch nachfolgende Schreiboperationen) gemäß der obigen RTL-Beschreibung
unterbricht.
-
Schreiboperationen
(einschließlich
Operationen, Operanden, Verschiebungswerten und gewissen Steuersignalen)
treffen bei SU1 411 über
entsprechende Busse und Leitungen ein, die anschaulich zusammen als
kollektiver Bus 189 gezeigt sind. Speicheradressen und
Schreiboperanden für
die Schreiboperationen in SU2 412 werden der Schreibwarte schlange 159 zugeführt, wenn
SU2_Hold nicht gesetzt (oder deaktiviert) ist. Die Schreibwarteschlange 159 schreibt
wiederum Schreiboperanden in den Adressenraum über den Datencache-Speicher 170.
Beide Stufen der Schreibeinheit 153 (SU2 411 und
SU2 412) kommunizieren mit dem Daten-TLB 171 und
mit anderen Speicherverwaltungsdatenstrukturen, die in den diversen
Ebenen der Speicherhierarchie vorhanden sind (L1-Datencache-Speicher 170,
L2-Cache-Speicher 110, Hauptspeicher, etc.), um virtuelle
(oder lineare) Adresse in physikalische Adressen umzuwandeln.
-
Der
Fachmann erkennt eine Vielzahl geeigneter Implementierungen für die Schreibhaltelogik 413,
die mit der oben beschriebenen RTL im Einklang sind. Die Schreibhaltelogik 413 ist
eine beliebige geeignete Einrichtung. 6 zeigt
eine derartige geeignete Einrichtung in kombinatorischer Logik.
-
Disponiereinheitslogik
mit Suchlogik
-
Die
Disponiereinheit 180 unterstützt ferner das Beibehalten
einer ausreichenden Ausführungsordnung zwischen
Ladeoperationen und Speicheroperationen. In der anschaulichen Ausführungsform
tritt diese Unterstützung
in Form von Suchlogikinstanzen auf, die Angaben über das relative Alter für die Ladehaltelogik 403 und
die Schreibhaltelogik 413 bereitstellen. Wie zuvor beschrieben
ist, wird die Reihenfolge beibehalten, indem Operationen in der
Stufe 2 der Lade- und Schreibpipelines gehalten werden (d. h. bei
LU2 402 und SU2 412). Die Reihenfolge der Ausführung wird
für die
Schreiboperationen beibehalten, die Speicherplätze betreffen. In der anschaulichen
Ausführungsform
wird keine Reihenfolge für
LEA-Schreiboperationen (Laden effektiver Adresse) erzwungen, die
nicht tatsächlich
den Speicher ansprechen, obwohl CDA- und CIA-Schreiboperationen
(prüfe
dateneffektive Adresse und prüfe
befehlseffektive Adresse), die fehlerhafte Adressen erzeugen, in
dem Ordnungsschema enthalten sind, um damit die Schaltungsgestaltung
zu vereinfachen. Es werden keine Ladeoperationen von dem Ordnungsschema
ausgeschlossen, da alle Ladeoperationen den Speicher ansprechen.
Alternative Ausführungsformen
können
Operationen, etwa LEA, CDA und CIA-Schreiboperationen nach Bedarf
enthalten oder ausschließen.
-
Es
sei wiederum auf 2 verwiesen; die Lade- Schreib-
Sortierlogik 234 in der Disponiereinheit 180 liefert
Angaben über
das relative Alter von Lade/Schreiboperationen in Bezug auf die
speziellen Ladeoperationen und Schreiboperationen in der Stufe 2
der entsprechenden Lade- und Schreibausführungseinheiten. Die Lade-Schreib-Sortierlogik 234 greift
auf Typenfelder 241 [2:0] und Zustandsfelder 242 [3:0]
jedes Operationseintrages (als anschauliches Beispiel sei der Operationseintrag 240.1 genannt)
in dem Disponierreservoir 240 zu und liefert die Angaben über das
relative Alter (beispielsweise SC_SU2OLDER, SC_SU1OLDER und SC_SU0OLDER)
an die Ladeeinheit 152 und liefert Angaben über das
relative Ladealter (beispielsweise SC_LU2OLDER und SC_LU1OLDER)
an die Schreibeinheit 153 über Leitungen, die gemeinsam
als 189.5 gezeigt sind.
-
In 4 ist
die Lade-Schreib-Sortierlogik 234 als Ladereihenfolgelogik 434a und
Schreibreihenfolgelogik 434b in Form von entsprechenden
Bereichen gezeigt. Für
Ladeoperationen bestimmt die Ladereihenfolgelogik 434a das
relative Alter der Ladeoperation in LU2 402 in Bezug auf
die Schreiboperation (wenn eine vorhanden ist) in SU2 412,
in Bezug auf die Schreiboperation (wenn eine vorhanden ist) in SU1 411 und
in Bezug auf andere Schreiboperationen in vorhergehenden Stufen
der Verarbeitung. Für
Schreiboperationen bestimmt die Schreibreihenfolgelogik 434b das
relative Alter der Schreiboperationen in SU2 412 in Bezug
auf die Ladeoperation (falls eine vorhanden ist) in LU2 402 und
in Bezug auf andere Ladeoperationen in vorhergehenden Verarbeitungsstufen.
-
4 zeigt
die Ladereihenfolgelogik 434a mit drei Komponenteninstanzen
der Suchlogik, d.h., SU2-älter-Suchlogik 434a.1,
SU1-älter-Suchlogik 434a.2 und
SU0-älter-Suchlogik 434a.3.
Jede Suchlogikinstanz verwendet die Typenfelder 241 [2:0]
und die Zustandsfelder 242 [3:0] (nicht gezeigt) der Operationseinträge in dem
Disponierreservoir 240, um entsprechende Angaben über das
relative Alter bereitzustellen. Die SU2-älter-Suchlogik 434a.1 liefert
SC_SU2OLDER; SU1-älter-Suchlogik 434a.2 stellt
SC_SU1OLDER bereit; und SU0-älter-Suchlogik 434a.3 liefert
SC_SU0OLDER.
-
Die
Gestaltung der Schreibreihenfolgelogik 434b ist analog
aber nicht symmetrisch zu dem Aufbau der Ladereihenfolgelogik 434a.
Insbesondere beinhaltet die Schreibreihenfolgelogik 434b zwei
Komponenteninstanzen an Suchlogik, d. h. die LU2-älter-Suchlogik 434b.1 und
die LU1-älter-Suuhlogik 434b.2.
Wie bei der Ladereihenfolgelogik 434a verwendet jede Suchlogikinstanz
der Schreibreihenfolgelogik 434b die Typenfelder 241 [2:0]
und die Zustandsfelder 242 [3:0], um entsprechende Angaben über das
relative Alter bereitzustellen. Die LU2-älter-Suchlogik 434b.1 liefert
SC-LU2OLDER und die LU1-älter-Suchlogik 434b.2 liefert SC_LU1OLDER.
Obwohl die Ladereihenfolgelogik 434a und die Schreibreihenfolgelogik 434b zum
Zwecke der Darstellung als unabhängige
Suchlogiken gezeigt sind, erkennt der Fachmann, dass diese eine
Logik gemeinsam aus den Komponenteninstanzen der Suchlogik benutzen
können,
beispielsweise eine Erkennungsschaltung für den Typ [2:0] und den Zustand
[3:0].
-
In
einer gegenwärtig
bevorzugten Ausführungsform
enthalten die Ladereihenfolgelogik 434a und die Schreibreihenfolgelogik 434b eine
Suchlogik mit hierarchischer Gestaltung (anstatt einer vorausschauenden Logik),
die nunmehr mit Bezug zu den 4 bis 10 beschrieben
wird. Während
einer ersten Phase der Stufe 2 für
eine Lade/Schreiboperation durchsuchen die Suchlogiken der Ladenreihenfolgelogik 434a und/oder der
Schreibreihenfolgelogik 434b die nach Alter geordneten
Operationseinträgen 240 der
Disponiereinheit 180 nach älteren Lade/Schreiboperationen
des entgegengesetzten Typs, d. h. die Ladenreihenfolgelogik 434a sucht
nach älteren
Schreiboperationen und die Schreibreihenfolgelogik 434b sucht
nach älteren
Ladeoperationen. In einer beispielhaften Ausführungsform enthalten jede von
drei Instanzen der Suchlogik der Ladereihenfolgelogik 434a und
jede von zwei Instanzen der Suchlogik der Schreibreihenfolgelogik 434b eine
hierarchisch organisierte Suchlogik zur Abtastung bzw. zum Durchsuchen
in der Gruppen der nach Alter geordneten Operationseinträgen 240 sowie
auch über
die Gruppen hinweg. 7 bis 10 zeigen
eine Suchlogik für eine
beispielhafte Disponiereinheit in einer Ausführungsform mit vierundzwanzig
(24) Operationseinträgen,
die in acht (8) Gruppen aus drei (3) Operationseinträgen angeordnet
sind. Der Fachmann erkennt auf der Grundlage der folgenden Beschreibung,
dass geeignete Variationen mit unterschiedlichen Anzahlen an Operationseinträgen und
Gruppenanordnungen möglich
sind.
-
Die
allgemeine Struktur der beispielhaften Suchlogik für eine Ausführungsform
mit 24 Operationseinträgen/8
Gruppen der Disponiereinheit 180 ist nunmehr mit Bezug
zur 7 beschrieben. Instanzen der Anwesenheitsindikationslogik 710 erkennen
Kombinationen aus Werten des Typenfeldes [2:0] und Zustandsfeldes
[3:0], die mit der speziellen eingerichteten Suchlogik verknüpft sind
(d. h. SU2-älter-Suchlogik 434a.1, SU1-älter-Suchlogik 434a.2,
SU0-älter-Suchlogik 434a.3,
LU2-älter-Suchlogik 434b.1 oder
LU1-älter-Suchlogik 434b.2).
Beispielweise erkennt die Anwesenheitsindikationslogik 710 für die SU1-älter-Suchlogik 434a.2, die
gemäß 7 eingerichtet
ist, ob der entsprechende Operationseintrag eine Schreiboperation
der Stufe 1 enthält.
Jede der 23 Instanzen der Anwesenheitsindikationslogik 710 liefert
entsprechende Anwesenheitsangaben (bei spielsweise P[1], P[2], ...
P[23]), die für
eine spezielle Instanz der Suchlogik zur Verwendung von der Innergruppenlogik 740 und/oder
gruppenüberspannenden
Logik geeignet sind (d. h., eine gruppenüberspannende Logik der ersten
Ebene 760, gruppenüberspannende
Logik der zweiten Ebene 750 und/oder gruppenüberspannende
Logik der dritten Ebene 730). In der Ausführungsform
aus 7 ist P[0] nicht verwendet.
-
Entsprechende
Instanzen einer Auswahlindikationslogik 720 erkennen ebenso
Kombinationen an Werten für
das Typenfeld [2:0] und das Zustandsfeld [3:0]; jedoch sind im Falle
der Instanzen der Auswahlindikationslogik 720 die Kombinationen
der Werte des Typenfeldes [2:0] und Zustandfeldes [3:0], die erkannt wurden,
kennzeichnend für
eine Ladeoperation der Stufe 2 (d. h. für eine Ladeoperation in LU2 402)
für Suchlogikinstanzen
der Ladereihenfolgelogik 434a und für eine Schreiboperation der
Stufe 2 (d. h. eine Schreiboperation in SU2 412) für die Suchlogikinstanzen
der Schreibreichenfolgelogik 434b. Jede der 23 Instanzen
der Auswahlindikationslogik 720 liefert entsprechende Auswahlindikationen
bzw. Angaben (beispielsweise SEL[0], SEL[1], ... SEL[22]), die für die Lade- oder Schreibreihenfolgenbildung
einer speziellen Suchlogikinstanz zur Verwendung in der gruppeninternen
Logik 740 und/oder der gruppenüberspannenden Logik geeignet
sind (d. h. die gruppenüberspannende
Logik der ersten Ebene 760, die gruppenüberspannende Logik der zweiten Ebene 750 und/oder
die gruppenüberspannende
Logik der dritten Ebene 730). In der Ausführungsform
aus 7 ist SEL[23] nicht
verwendet.
-
Die
gruppeninterne Logik 740 liefert Angaben, wobei jede für die Anwesenheit
einer Operation innerhalb einer entsprechenden Gruppe aus Operationen
kennzeichnend ist, die mit der Kombination des Typs [2:0] und des
Zustandes [3:0] übereinstimmt,
die von der Anwesenheitsindikationslogik 710 der speziellen
Suchlogik erkannt wurde, und die älter ist als ein ausgewählter Operationseintrag
innerhalb der gleichen Gruppe. Auswahlindikationen (beispielsweise SEL[0], SEL[1], ...SEL[22]),
die entsprechend mit Operationseinträgen des Disponierreservoirs 240 verknüpft sind,
sind kennzeichnend für
den ausgewählten
Opereinseintrag, auf dem das Absuchen nach einem älteren Operationseintrag
beruht. In hierin zum Einrichten der Suchlogik für die Ladereihenfolgelogik 434a und
die Schreibreihenfolgelogik 434b beschriebenen Ausführungsformen
wird eine einzelne Operationseintragsauswahlangabe jeder Instanz
einer Suchlogik, die gemäß 7 eingerichtet
ist, bereitgestellt. Die einzelne Operationseintragsauswahlangabe,
die auf diese Weise bereitgestellt wird, entspricht einer Lade/Schreiboperation
in der Stufe 2 der Ladeeinheit 152 oder der Schreibeinheit 153,
falls eine Operation vorhanden ist, d. h. diese entspricht einer
Ladeoperation der Stufe 2 für
SC_SUxOLDER-Suchlogik und entspricht einer Schreiboperation der
Stufe 2 für
SC_LUxOLDER-Suchlogik. In alternativen Ausführungsformen können unterschiedliche
Arten an Operationen in unterschiedlichen Stufen der Ausführung mit
geeigneten Modifizierungen an der Operationseintragsauswahlindikationslogik
ausgewählt
werden und ferner können
mehrere Auswahlindikationen für
Vergleiche des relativen Alters (oder einer anderen Priorität) den dadurch
gekennzeichneten mehreren Operationseinträgen zugeführt werden.
-
In
der anschauliche Ausführungsform
aus 8 beinhaltet die gruppeninterne Logik 740 eine
Logik für
jede Gruppe (anschaulich als „within-grp_2"- Logik 842),
die durch einen Oder-Nicht-Und-Gatterkomplex mit sechs Eingängen eingerichtet
ist. Selbstverständlich
erkennt der Fachmann, dass eine breite Fülle anderer geeigneter Logikkonfigurationen
zur Bereitstellung von Indikationen, die den ausgewählten Operationseintrag angeben,
und ein Erkennung einer ältern
Operation in einer speziellen Operationseintragsgruppe möglich sind. Gruppeninterne
Angaben für
jede Gruppe (d. h. SUM[0], SUM[1], ...SUM[7]) werden teilweise in der Kombinierlogik 770 kombiniert,
von der einige Gatter in 8 gezeigt sind.
-
9 zeigt
die gruppenüberspannende
Logik der ersten Ebene 760 und die gruppenüberspannende Logik
der zweiten Ebene 760, wobei diese gemeinsam überlappende
Logikbereiche benutzen. Die gruppenüberspannende Logik der ersten
Ebene 760 liefert Indikationen (SOP1_S2P3 und S4P5-S6P7),
die den ausgewählten
Operationseintrag in einer ersten Gruppe aus Operationseinträgen angeben
und die Erkennung einer älteren
Operation in einer benachbarten Gruppe aus älteren Operationseinträgen ermöglichen,
beispielsweise für
den ausgewählten
Operationseintrag in grp_0 und einer Erkennung einer älteren Operation
in grp_1, des ausgewählten
Operationseintrags in grp_2 und die Erkennung einer älteren Operation
in grp_3, etc.. In der anschaulichen Ausführungsform aus 9 ist
die gruppenüberspannende
Logik der ersten Ebene 760 durch erste Stufen von NAND-Gattern
bzw. Nicht-UND-Gattern und zweite Stufen von UND-Gattern eingerichtet.
Die UND-Gatterfunktion wird durch einen Bereich komplexer UND-Nicht-ODER-Gatter 772 und 773 mit
vier Eingängen
dargestellt, die Nicht-ODER-Funktion davon ist mit der Kombinierlogik 770 verknüpft. Der
Fachmann erkennt jedoch, dass eine Fülle von anderen geeigneten
Logikkonfigurationen zur Bereitstellung von Indikationen, die den
ausgewählten
Operationseintrag in einer ersten Gruppe der Operationseinträge und die
Erkennung einer älteren
Operation in einer zweiten Gruppe aus Operationseinträge angeben,
möglich
ist. Die gruppenüberspannenden
Angaben der ersten Ebene für
jedes Paar benachbarter Gruppen werden teilweise in der Kombinierlogik 770 kombiniert,
von der einige Gatter in 9 gezeigt sind.
-
Die
gruppenüberspannende
Logik der zweiten Ebene 750 liefert Angaben (S01P23 und
S45P67), die den ausgewählten
Operationseintrag in einer von zwei benachbarten Gruppen aus Operationseinträgen und die
Erkennung einer älteren
Operation in einer von zwei benachbarten Gruppen älterer Operationseinträge angeben,
beispielsweise sind diese kennzeichnend für den ausgewählten Operationseintrag
in der grp_0 oder grp_1 und für
eine Erkennung einer älteren
Operation in grp_2 oder grp_3, für
den ausgewählten
Operationseintrag in grp_4 oder grp_5 und die Erkennung einer älteren Operation
in der grp_6 oder grp_7, etc.. In der anschaulichen Ausführungsform
aus 9 ist die gruppenumspannende Logik der zweiten
Ebene 750 durch erste Stufen von NAND-Gattern, zweite Stufen komplexer ODER-Nicht-UND-Gatter
(951 und 952) mit vier Eingängen und dritten Stufen von
Invertern eingerichtet. Der Fachmann erkennt jedoch, dass eine Fülle anderer geeigneter
Logikkonfigurationen zur Bereitstellung der Indikationen möglich ist,
die den ausgewählten
Operationseintrag in einer von zwei Gruppen aus Operationseinträgen und
die Erkennung einer älteren
Operation in mindestens einer der beiden Gruppen aus älteren Operationseinträgen angeben.
-
10 zeigt
die gruppenüberspannende
Logik der dritten Ebene 730, die unmittelbare Angaben (Sgrp_0123
und Pgrp_4567) bereitstellt, die entsprechend den ausgewählten Operationseintrag,
der in einer der ersten vier Gruppen aus Operationseinträgen ist
und die Erkennung einer älteren
Operation in einer der vier Gruppen aus älteren Operationseinträgen angeben,
d. h. es wird der ausgewählte
Operationseintrag in grp_0, grp_1, grp_2 oder grp_3 und die Erkennung
einer älteren
Operation in grp_4, grp_5, grp_6 oder grp_7 angegeben. In der beispielhaften
Ausführungsform
der 7 und 10 werden unmittelbare Angaben Sgrp_0123
und Pgrp_4567 von den NAND-Gattern der ersten Stufe und den ODER-Gattern
der zweiten Stufe bereitgestellt und es wird eine Konjunktion der
unmittelbaren Angaben Sgrp_0123 und Pgrp_4567 von der UND-Funktion
des UND-Nicht-ODER-Gatters 771 mit drei Eingängen bereitgestellt.
Auf diese Weise werden Teile der gruppenumspannenden Funktion der
dritten Ebene und das Kombinieren der Logikfunktion durch den UND-Nicht-ODER-Gatterkomplex 771 bereitgestellt.
Der Fachmann erkennt jedoch, dass eine Fülle anderer geeigneter Logikkonfigurationen
zur Bereitstellung der Angaben verwendet werden können, die
den ausgewählten
Operationseintrag in einer aus vier Gruppen aus Operationseinträgen und
die Erkennung einer älteren Operation
in mindestens einer der vier anderen Gruppen aus älteren Operationseinträgen angeben.
-
Es
sei wieder auf 7 verwiesen; die Kombinierlogik 770 kombiniert
Angaben aus der gruppeninternen Logik 740 und der gruppenumspannenden
Logik (d. h. der gruppenumspannenden Logik der ersten Ebene 760,
der gruppenumspannenden Logik der zweiten Ebenen 750 und
der gruppenumspannenden Logik der dritten Ebene 730), um
eine Angabe des relativen Alters für die speziell eingerichtete
Suchlogik bereitzustellen. Zusammen bilden das ODER-Gatter, das
Nicht-ODER-Gatter und das Nicht-UND (NAND)-Gatter Stufen der Kombinierlogik 770,
die eine äquivalente
DeMorgan-Struktur einer ODER-Baumstruktur bilden. Der Fachmann erkennt
jedoch, dass eine Fülle
anderer geeigneter Logikkonfigurationen zum Kombinieren der gruppenumspannenden
und gruppeninternen Angaben möglich
sind, um eine zusammengesetzte Angabe des relativen Alters bereitzustellen.
Vorteilhafterweise benötigt
der Logikaufbau der Kombinierlogik 770, wenn diese in Verbindung
mit der gruppeninternen Logik 740, der gruppenumspannenden
Logik der ersten Ebene 760, der gruppenumspannenden Logik
der zweiten Ebene 750 und der gruppenumspannenden Logik
der dritten Ebene 730 betrachtet wird, nicht mehr als fünf invertierende
Gatterverzögerungen
entlang jedes Pfades.
-
Es
können
eine größere oder
geringere Anzahl an Operationseinträgen mit ähnlich vorteilhaften Anzahlen
an Gattenverzögerungen
berücksichtigt
werden. Beispielsweise erkennt der Fachmann, dass die Anzahl der
Operationseinträge
von 2x, 4x, etc. mit analogen gruppeninternen und gruppenumspannenden
Logiken und Kombinierlogiken verwaltet werden können, wobei eine zusätzliche
Verzögerung
durch invertierende Gatter für
jede binäre
Größenordnung
mit einer zunehmenden Anzahl an Operationseinträgen einhergeht. Eine kleinere
Anzahl an Operationseinträgen
kann in ähnlicher
Weise mit analogen Reduzierungen der Verzögerungen der invertierenden
Gatter berücksichtigt
werden. Allgemeiner gesagt, eine Familie aus Suchlogikimplementierungen
gemäß der vorliegenden
Erfindung benötigt
für eine
größere oder
kleinere Anzahl an Operationseinträgen (beispielsweise 3, 6, 12,
48, 96, ...), die als dreier-Gruppen durchsucht werden, eine Verzögerung invertierender
Gatter von log2 (N/3) + 2, wobei N die Anzahl
der Operationseinträge
ist. Ausführungsformen
gemäß einer
derartigen Familie aus Suchlogikimp lementierungen beinhalten log2 (N/3) aufeinaderfolgende Ebenen einer hierarchisch
organisierten gruppenumspannenden Logik.
-
Dreielementige
Gruppen sind vorteilhaft in der beispielhaften Ausführungsform
mit 24 Operationseinträgen,
die hierin beschrieben ist, aufgrund der ganzzahligen Vielfachen
von drei, die den 24 Operationseinträgen zugeordnet sind und aufgrund
der Fülle
von Logikzellenbibliotheken, die verfügbar sind. Nichtsdestotrotz
sind auch größere oder
kleinere Gruppen in jeder Ebene der gruppenumspannenden Hierarchie
möglich; der
Fachmann erkennt geeignete Gatter und komplexe Gatter. Obwohl ferner
Gruppen mit gleichförmiger
Größe gezeigt
sind und die gruppenumspannende Logik mit einer Operationseintragsabdeckung
dargestellt ist, die dem Doppelten bei jeder nachfolgenden Ebene
der gruppenumspannenden Hierarchie entspricht, sind aber auch alternative
Ausführungsformen
mit ungleichförmiger
Gruppengröße und einer
anderen Zunahme der Abdeckung der Operationseinträge in nachfolgenden
Ebenen der gruppenumspannenden Hierarchie möglich. Der Fachmann erkennt
geeignete Modifizierungen an den Suchlogikstrukturen.
-
Wie
der Fachmann erkennt, sind die Grenzen zwischen der gruppeninternen
Logik und der gruppenumspannenden Logik (beispielsweise die gruppeninterne
Logik 740, die gruppenumspannende Logik der ersten Ebene 760,
die gruppenumspannende Logik der zweiten Ebene 750 und
die gruppenumspannende Logik der dritten Ebene 730) und
der Kombinierlogik 770 in gewisser Weise willkürlich und
es sind eine Fülle
von Grenzdefinitionen geeignet. Fernen können gewisse Logikfunktionen
zwischen Logikblöcken,
die in den unterschiedlichen Zeichnungen dargestellt sind, gemeinsam
benutzt werden. Beispielsweise kann eine Logik, die in beiden 9 und 10 gezeigt
ist, um die Auswahlindikationen zu gruppieren (beispielsweise SELgrp[0], SELgrp[1],
SELgrp[2] und SELgrp[3]) und um Anwesenheitsindikationen zu gruppieren
(beispielsweise Pgrp[4], Pgrp[5], Pgrp[6] und Pgrp[7]), von der
gruppenumspannenden Logik der ersten Ebene 760, der gruppenumspannenden
Logik der zweiten Ebene 750 und der gruppenumspannenden
Logik der dritten Ebene 730 gemeinsam benutzt werden.
-
Es
sei eine einzelne Instanz der Suchlogik, d. h. SU2-älter-Duchlogik 434a.1,
näher betrachtet,
die gemäß den 7 bis 10 eingerichtet
ist; dieser beinhaltet die Anwesenheitsindikationslogik 710,
die ausgebildet ist, eine Anwesenheitsindikation in jenen Operationseinträgen der
Operationseinträge 240 bereitzustellen,
die mit einer Schreiboperation der Stufe 2 verknüpft sind. Die Auswahlindikationen
werden von Instanzen der Auswahlindikationslogik 720 bereitgestellt,
um einen speziellen Operationseintrag, falls einer vorhanden ist,
der Operationseinträge 240 zu
kennzeichnen, der mit einer Ladeoperation der Stufe 2 (d. h. einer
Ladeoperation LU2 402) verknüpft ist. Auf der Grundlage
der Anwesenheits- und Auswahlindikationen liefert die gruppeninterne
Logik 740 gruppeninterne Indikationen, die die Ladeoperation
der Stufe 2 in einer der Operationseinträge kennzeichnen, die mit einer
Gruppe verknüpft
sind und die für
das Vorhandensein einer Schreiboperation der Stufe 2 in einen älteren Operationseintrag
der gleichen Gruppenkennzeichnend sind. Die gruppenumspannende Logik
der ersten Ebene 760 liefert gruppenumspannende Indikationen
der ersten Gruppe, die die Ladeoperation der Stufe 2 in einen der
Operationseinträge
kennzeichnen, die mit einer speziellen Gruppe verknüpft sind
und kennzeichnet die Anwesenheit einer Schreiboperation der Stufe
2 in einem Operationseintrag, der mit einer benachbarten älteren Gruppe
verknüpft
ist. Analog liefert die gruppenumspannende Logik der zweiten Ebene 750 gruppenumspannende
Indikationen der zweiten Ebene, die die Ladeoperation der Stufe
2 in einem der Operationseinträge,
die mit einem Paar benachbarter Gruppen verknüpft sind und das Vorhandensein
einer Schreiboperation der Stufe 2 in einem Operationseintrag, der
mit einem benachbarten Paar aus älteren
Gruppen verknüpft
ist, kennzeichnen. Schließlich
liefert die gruppenumspannende Logik der dritten Ebene 730 gruppenumspannende
Indikationen der dritten Ebene, die die Ladeoperation der Stufe
2 in einen der Operationseinträge,
der mit einem Satz aus vier benachbarten Gruppen verknüpft ist
und das Vorhandensein einer Schreiboperation der Stufe 2 in einem
Operationseintrag, der mit einem benachbarten Satz aus vier älteren Gruppen
verknüpft
ist, kennzeichnen. Eine Indikation für eine ältere Schreiboperation der
Stufe 2 wird von der Kombinierlogik 770 (als das SC_SU2Older-Signal) geliefert,
wenn die gruppeninterne Logik oder die gruppenumspannende Logik
eine entsprechende Angabe für
eine ältere
Schreiboperation der Stufe 2 liefert.
-
Die
Gestaltung und die Betriebsweise der verbleibenden Suchlogik der
Ladereihenfolgelogik 434a ist ähnlich. Beispielsweise durchsuchen
die gruppeninterne Logik und gruppenumspannende Logik der SU1-älter-Suchlogik 434a.2 die
Einträge
der Disponiereinheit 180, und die Kombiniermultiplexlogik 434a.5 liefert
das SC_SU1Older-Signal an die Ladehaltelogik 403. In ähnlicher
Weise durchsucht die gruppeninterne Logik und die gruppenumspannende
Logik der SU0-älter-Suchlogik 434a.3 die
Einträge
der Disponiereinheit 180 und die zugeordnete Kombinierlogik 434a.6 liefert
das SC_SU0Older-Signal an die Ladehaltelogik 403. Angaben über das
relative Alter (SCSU2Older, SC_SU1Older und SC_SU0Older) werden
der Ladehaltelogik 403 zugeführt, die bestimmt, welche SU-Adressen
Komparatorsignale (AddrMatch1 oder AddrMatch2) zu untersuchen sind und
allgemeiner, ob die Ladeoperation der Stufe 2 zu halten ist.
-
Die
Suchlogikinstanzen für
die Schreibreihenfolgelogik 434b sind analog ausgestattet.
Für die
Anschaulichkeit sei eine einzelne Instanz der Suchlogik, d. h. die
LU2-älter-Scuhlogik 434b.1,
dargestellt, die gemäß den 7 bis 10 eingerichtet
ist; diese enthält
die Anwesenheitsindikationslogik 710, die ausgebildet ist,
eine Anwesenheitsindikation an jene Operationseinträgen der
Operationseinträge 240 zu
liefern, die mit einer Ladeoperation der Stufe 2 verknüpft sind.
Auswahlindikationen werden von Instanzen der Auswahlindikationslogik 720 bereitgestellt,
um den speziellen Operationseintrag, falls vorhanden, der Operationseinträge 240 anzugeben,
der mit einer Schreiboperation der Stufe 2 verknüpft ist (d. h. einer Schreiboperation
in SU2 412). Auf der Grundlage der Anwesenheits- und Auswahlindikationen
liefert die gruppeninterne Logik 740 gruppeninterne Indikationen,
die die Schreiboperation der Stufe 2 in einem der Operationseinträge, der
mit einer speziellen Gruppe verknüpft ist und die Anwesenheit
einer Ladeoperation der Stufe2 in einem älteren Operationseintrag der
gleichen Gruppe kennzeichnen. Die gruppenumspannende Logik der ersten
Ebene 760 liefert gruppenumspannende Indikationen der ersten
Ebene, die die Schreiboperationen der Stufe 2 in einem der Operationseinträge, die
mit einer speziellen Gruppe verknüpft sind und die Anwesenheit
einer Ladeoperation der Stufe 2 in einem Operationseintrag, der
mit einer benachbarten älteren
Gruppe verknüpft
ist, kennzeichnen. In analoger Weise liefert die gruppenumspannende
Logik der zweiten Ebene 750 gruppenumspannende Indikationen
der zweiten Ebene, die die Schreiboperationen der Stufe 2 in einem
der Operationseinträge,
der mit einem Paar benachbarter Gruppen verknüpft ist und die Anwesenheit
einer Ladeoperation der Stufe 2 in einem Operationseintrag, der
mit einem benachbarten Paar aus älteren
Gruppen verknüpft
ist, kennzeichnen. Schließlich
liefert die gruppenumspannende Logik der Ebene 3 730 gruppenumspannende
Indikationen der dritten Ebene, die eine Schreiboperation der Stufe
2 in einem der Operationseinträge,
der mit einem Satz aus vier benachbarten Gruppen verknüpft ist
und die Anwesenheit einer Ladeoperation der Stufe 2 in einem Operationseintrag,
der mit einem benachbarten Satz aus vier älteren Gruppen verknüpft ist,
kennzeichnen. Eine Indikation einer älteren Ladeoperation der Stufe
2 wird von der Kombinierlogik 770 bereitgestellt (als das SC_LU2Older-Signal),
wenn die gruppeninterne Logik oder eine gruppenumspannende Logik
eine entsprechende Indikation für
eine ältere
Ladeoperation der Stufe 2 bereitstellt.
-
Der
Aufbau und die Funktionsweise der verbleibenden Instanzen der Suchlogik
der Schreibreihenfolgelogik 434b sind ähnlich. Insbesondere durchsucht
die gruppeninterne Logik oder die gruppenumspannende Logik der LU1-älter-Suchlogik 434b.2 die
Einträge
der Disponiereinheit 180, und die Kombinierlogik 434b.5 liefert
das SC_LU1Older-Signal an die Schreibhaltelogik 413. Indikationen über das
relative Alter (SC_LU2Older und SC_LU1Older) werden der Schreibhaltelogik 413 zugeführt, die
bestimmt, ob der Adressenkomparator der LU Stufe 2 (AddrMatch2)
zu untersuchen ist und ob die Schreiboperation der Stufe 2 zu halten
ist.
-
Die
Anwesenheitsindikationen auf Operationseintragsebene P[x] beruhen
auf dem Zustandsfeld [3:0] (insbesondere den S1-, S2- und S3-Bits)
und dem Typenfeld [2:0] (ST oder LU) eines Eintrages. Für die drei Instanzen
der Ladeoperationssuchlogik wird das ST-Bit anstelle des SU-Bits
verwendet. Dies unterscheidet die Schreiboperationen, die tatsächlich den
Speicher ansprechen, von LEA-Operationen, die lediglich logische Adresse
erzeugen.
-
Die
folgenden Operationseintagsgleichungen, die als LUst2, LUst1 und
LUst0 bezeichnet sind, bezeichnen die P[x]-Terme, die einem Operationseintrag
x für die
Suchlogik entsprechen, die zuvor als SU2-älter-Suchlogik
434a.1,
SU1-älter-Suchlogik
434a.2 und
SU0-älter-Suchlogik
434a.3 bezeichnet
sind. In ähnlicher
Weise bezeichnen Eintragsgleichungen, die als SU1d2 und SU1d1 benannt
sind, die P[x]-Terme, die einem Operationseintrag x entsprechen,
für die
Suchlogik, die zuvor entsprechend als LU2-älter-Suchlogik
434b.1 und LU1-älter-Suchlogik
434b.2 benannt
ist. Operationseintragsgleichungen
-
In
der beispielhaften Ausführungsform
erweitern (S2 + S1 SU2_FirstAddrV) und (S2 + S1 LU2_FirstAddrV)-Terme
die Operationseintragsgleichungen, um das Unterbrechen von Lade/Schreiboperationen
der Stufe 1 zu handhaben, die die erste Hälfte eines fehljustierten Speicherzugriffes
ausführen.
-
Mit
Verweis auf 8 ist eine anschauliche Ausführungsform
einer Such- und Kombinierlogik 841 mit Gattern zeigt, die
SUM_01 bestimmen. Die Gestaltung der anschaulichen Ausführungsform
ist ähnlich
zu jener der Gatter, die SUM_234 und SUM_567 bestimmen, die ebenso
dargestellt sind. In einer Ausführungsform
zur Handhabung einer vergleichsweise langsamen Ausführung von
Eintragsindikationen für
Operationseinträge, die
mit einem ersten Operations-Quadrupel verknüpft sind, d. h. Operationseinträge 0, 1,
2 und 3 der grp_0 und grp_1, wird die alternative Logik zur Bestimmung
von SUM_01 841a gegenwärtig
bevorzugt. Eine derartige alternative Logik 841a zur Bestimmung
von SUM_01 ist in 12 gezeigt und umfasst die komplexen
Gatter 1201, 1202 und 1203. Vorteilhafterweise
benötigt
die alternative, die SUM_01 bestimmende Logik 841a lediglich
drei Verzögerungen
invertierender Gatter in den Signalwegen, die von den Operationseintragsfeldwerten
von Operations-Quadrupel 0 abhängen,
die von dem Befehlsdekodierer 140 geliefert werden. Insbesondere
stellt die alternative, die SUM_01 bestimmende Logik 841a einen
kürzeren
Signalweg für
Signale bereit, die von den Werten des Typfeldes [2:0] und des Zustandfeldes
[3:0] der Operationen 0, 1, 2 und 3 abhängen und ordnet ferner die
schnelleren Eingänge
der komplexen Gatter 1201, 1202 und 1203 diesen
Signalen zu. Auf diese Weise wird der Einfluss der Wartezeit des
Entreffens von Operationseinträgen
verringert.
-
Prozessor-
und Systemausführungsformen
-
1 zeigt
eine superskalare Prozessorausführungsform
der vorliegenden Erfindung. Der superskalare Prozessor 100 umfasst
eine Ausführungseinheit
bzw. Ausführungsmaschine 150,
die eine Architektur mit reduziertem Berechnungsbefehlssatz (RISC),
einen Befehlsdekodierer 140, Cache-Speicher und eine Systemschnittstelle 120 aufweist,
die Zugriff zu einem Adressenraum bietet, der in dem entsprechenden
Speichersubsystem 122 repräsentiert ist und Zugriff zu
Einrichtungen auf lokalen Bussen (nicht gezeigt) bietet.
-
Der
superskalare Prozessor 100 umfasst einen Cache-Speicher,
der in der hierin beschriebenen Ausführungsform mit einem separaten
Datenbereich und Befehlsbereich ausgebildet ist. Der Datencache-Speicher 170 und
der Befehlscache-Speicher 130 sind (über die Cachesteuerlogik 160 und
die Systemschnittstelle 120) mit dem Adressenraum verbunden,
der in dem Speichersubsystem 122 abgebildet ist, der einen
Hauptspeicher enthält
und optional zusätzliche
Cache-Speicherebenen aufweist, die anschaulich als ein L2-Cache-Speicher
gezeigt sind. Zugriff zu einer L2-Cache-Ebene, d. h. auf die L2-Cachesteuerlogik
und einen L2-Datenbereich (nicht gezeigt) kann über die Systemschnittstelle 120 erfolgen.
Alternativ kann die L2-Cachesteuerlogik zwischen der Cachesteuerlogik 160 (für L1) und
der Systemschnittstelle 120 angeordnet sein.
-
Cache-Speichersysteme
sind im Stand der Technik gut bekannt. Insbesondere sind geeignete
Formen mit einer Aufteilung einer „Harvard Architektur" für Befehls-
und Datencache-Speicher (etwa 170 und 130) und Mehrebenen-Cache-Hierarchien
im Stand der Technik für
Cache-Speicher gut bekannt. In vielerlei Hinsicht ist das Cache-Subsystem
des superskalare Prozessors 190 (d. h. der Datencache-Speicher 170,
der Befehlscache-Speicher 130, die Cachesteuerlogik 160 und
ein optionaler L2-Cache-Speicher) in einer derartigen Weise geeignet
aufgebaut. Jedoch ist aus anderen Gründen als dem Zwischenspeicherverhalten
der Befehlscache-Speicher 130 integral mit einer Vordekodierungslogik
(nicht gezeigt) versehen. Eine derartige integrierte Vordekodierungslogik
erkennt x86-Befehlsgrenzen in dem abgeholten Befehlsstrom und ermöglicht das
rasche Dekodieren von Befehlen mittels des Befehlsdekodierers 140.
-
Es
sei wieder auf 1 verwiesen; es werden Befehlssequenzen
von dem Speichersubsystem in den Befehlscache-Speicher 130 für eine vorweggenommene
Ausführung
mittels der Ausführungsmaschine 150 eingeladen.
Gemäß der Ausführungsform
des Prozessors 100, die in 1 gezeigt
ist, sind Befehle in dem Befehlscache-Speicher 130 CISC-Befehle,
die aus einem komplexen Befehlssatz ausgewählt sind, etwa dem x86-Befehissatz, der
in Prozessoren entsprechend der x86-Prozessorarchitektur eingerichtet
ist. Der Befehlsdekodierer 140 wandelt die CISC-Befehle,
die aus dem Befehlscache-Speicher 130 erhalten
werden, in Operationen für
die Ausführungsmaschine 150 um.
In der Ausführungsform
aus 1 sind diese Operationen RISC-artige Operationen
(im Weiteren als Operationen oder Op bezeichnet) und ein einzelner
x86-Befehl aus dem Befehlscache-Speicher 130 wird in eine
oder mehrere Operationen für
die Ausführungsmaschine 150 dekodiert.
Individuelle Operationen gehören
zu einer von mehreren Typengruppen mit Registeroperationen (RegOp),
Lade-Schreib- bzw. Speicheroperationen (LdStOp), Ladeoperationen
für unmittelbare
Werte (LIMMOp), Spezialoperationen (SpecOp) und Fließkomma-Operationen
(FpOp). In alternativen Ausführungsformen
können
andere Befehlssätze
dekodiert werden und können
unterschiedliche Operationsarten zur Ausführung bereitstellen.
-
Der
Befehlsdekodierer 140 umfasst zwei Befehlsübersetzungsbereiche,
einen Hardwareübersetzungsbereich
MacDec 141 und einen ROM-basierten Übersetzungsbereich 142 und
umfasst ferner eine Verzweigungsvorhersagelogik 143. Die
häufigsten
x86-Befehle werden in kurze Sequenzen aus einem bis vier Operationen
unter Anwendung mehrerer paralleler Hardwaredekodierer, die in dem
Hardwareübersetzungsbereich 141 enthalten
sind, übersetzt.
Der Hardwareübersetzungsbereich 141 dekodiert
diese üblichen x86-Befehle,
die aus dem Befehlscache-Speicher 130 erhalten werden,
in kurze Sequenzen aus Operationen, die dann der Disponiereinheit 180 zugeführt werden.
Weniger häufige
x86-Befehle und jene x86-Befehle, die in Operationssequenzen mit
mehr als vier Operationen übersetzt
werden, werden von einem ROM-basierten Übersetzungsbereich 142 übersetzt,
der eine übersetzte
Sequenz aus Operationen, die dem speziellen zu übersetzenden x86-Befehl entsprechen,
abholt (aus dem ROM). Übersetzte
Operationssequenzen von einer beliebigen Quelle, unabhängig davon,
ob diese durch Hardwaredekodierer erzeugt werden oder aus dem ROM
abgeholt werden, werden der Disponiereinheit 180 für die Ausführung mittels
der Ausführungsmaschine 150 zugeführt.
-
Es
sei wieder auf 1 verwiesen; die Ausführungsmaschine 150 umfasst
eine Disponiereinheit 180, eine Registerdatei 190 und
mehrere Ausführungseinheiten,
die von der Disponiereinheit 180 ausgegebene Operationen
empfangen und ausführen.
In der Ausführungsform
aus 1 umfasst die Ausführungsmaschine 150 sieben
Ausführungseinheiten:
die Ladeeinheit 152, die Schreibeinheit 153, die
Registereinheiten 154 und 155, die Fließkommaeinheit 156,
die Multimediaeinheit 157 und eine Verzweigungseinheit 158,
obwohl alternative Ausführungsformen
mehr oder weniger Ausführungseinheiten
aufweisen können.
In einer beispielhaften Ausführungsform
werden die Fließkommaeinheit 156 und
die Multimediaeinheit 157 weggelassen. Die Ausführungsmaschine 150 umfasst
ferner eine Schreibwarteschlange 159, die zwischen der
Schreibeinheit 153 und dem Datencache-Speicher 170 angeordnet
ist.
-
Die
Disponiereinheit 180 ist als ein geordnetes Array bzw.
Feld aus Speichereinträgen
und damit verbundenen Logikblöcken
aufgebaut, die zusammen eine Ausgabe außerhalb der Reihenfolge von
Operationen zu Ausführungseinheiten
und zur Weiterleitung von Operationsergebnissen zu einer oder mehreren
Ausführungseinheiten
unterstützen.
Das geordnete Array aus Speichereinträgen und Logikblöcken umfasst
ferner einen Umordnungspuffer und ermöglicht das Umbenennen der Architekturregister,
die in der Registerdatei 190 definiert sind und ermöglicht eine
spekulative Wiederherstellung der Aus führung. Der Befehlsdekodierer 140 versorgt
die Disponiereinheit 180 mit neuen Operationen, die aus
dem Befehlsstrom dekodiert wurden. Die Disponiereinheit 180 speichert
wiederum Daten, die mit jeder neuen empfangenen Operation verknüpft sind, (in
einem Speichereintrag) und bewahrt diese Daten. Auf diese Weise überwacht
die Disponiereinheit 180 den Status jeder Operation und
der zugeordneten Daten, wenn die Operation ausgegeben wird an eine
Ausführungseinheit
und von dieser ausgeführt
wird. Nachdem eine gewisse Operation vollständig ausgeführt ist und die Datenabhängigkeiten
aufgelöst
sind, wird diese zurückgenommen
bzw. abgeschlossen und der entsprechende Eintrag der Disponiereinheit
wird freigegeben.
-
Die
Disponiereinheit 180 ist mit Ausführungseinheiten (d. h. der
Ladeeinheit 152, der Schreibeinheit 153, den Registereinheiten 154 und 155,
der Fließkommaeinheit 156,
der Multimediaeinheit 157 und der Verzweigungseinheit 158) über eine
Gruppe aus Bussen und Steuerleitungen, die gemeinsam als ein Bus 189 gezeigt
sind, verbunden. Die Disponiereinheit 180 liefert Operationen,
Registeroperanden und Steuersignale zu den Ausführungseinheiten und empfängt Ergebniswerte
und Statusindikationen von den Ausführungseinheiten, über den
Bus 189, wie dies anschaulich dargestellt ist. Selbstverständlich müssen alle
Busse und Steuerleitungen vollständig
angeschlossen sein und der Bus 189 dient lediglich zur
Veranschaulichung einer bidirektionalen Anbindung der Disponiereinheit 180 an
die Ausführungseinheiten.
-
Die
Ladeeinheit 152 und die Schreibeinheit 153 führen Lade/Schreiboperationen
aus, wobei entsprechend Daten aus dem adressierbaren Speicher ausgelesen
oder in diesen geschrieben werden. Abhängig von dem Zwischenspeicherungszustand
einer speziellen Speicheradresse kann eine Lade/Schreiboperation
in dem L1-Datencache-Speicher 170, in einem L2-Cache-Speicher
(nicht gezeigt) oder in dem Hauptspeicher (ebenso nicht gezeigt)
abgeschlossen werden. Die Schreibwarteschlange 159 speichert
temporär
Daten aus der Schreibeinheit 153, so dass die Schreibeinheit 153 und
die Ladeeinheit 152 parallel arbeiten können, ohne dass konflikterzeugende
Zugriffe auf den Datencache-Speicher 170 erzeugt werden.
Die Registereinheiten 154 und 155 führen Registeroperationen
aus, die auf Daten operieren, die mit den Architekturregistern der
Registerdatei 190 verknüpft
sind.
-
Es
werden eine Vielzahl von Computersystemkonfigurationen berücksichtigt,
wobei jede erfindungsgemäß eine Ausführungssteuerung
für Lade/Schreiboperationen
außerhalb der
Reihenfolge ermöglicht.
Beispielsweise umfasst ein derartiges Computersystem (z. B. das
Computersystem 1000): einen Prozessor 100, der
eine Ausführungssteuerung
für Lade/Schreiboperationen
außerhalb
der Reihenfolge gemäß der vorliegenden
Erfindung bereitstellt, ein Speichersubsystem (beispielsweise RAM 1020),
einen Anzeigeadapter 1010, eine Diskettensteuerung/Adapter 1030,
diverse Eingabe/Ausgabeschnittstellen und Adapter (beispielsweise parallele
Schnittstelle 1009, serielle Schnittstelle 1008,
LAN-Adapter 1007, etc.) und entsprechende externe Geräte (beispielsweise
eine Anzeigeeinrichtung 1001, einen Drucker 1002,
ein Modem 1003, eine Tastatur 1006 und einen Datenspeicher).
Der Datenspeicher umfasst Einrichtungen, etwa eine Festplatte 1032,
ein Diskettenlaufwerk 1031, eine Magnetbandeinheit, ein
CD-ROM Laufwerk, eine Musikeinrichtung, ein redundantes Array aus
kostengünstigen
Speicherscheiben (RAID), einen Flashspeicher, etc..
-
Weitere Ausführungsformen
-
Das
Folgende zeigt weitere Ausführungsformen
gemäß der vorliegenden
Erfindung:
Eine Suchlogik für
das Anzeigen des Vorhandenseins von einem oder mehreren älteren Einträgen, die
ein Operationstypkriterium erfüllen,
in einem nach Alter geordnetem Array aus Operationseinträgen mit
einem ausgewählten
Eintrag. Die Suchlogik umfasst eine erste gruppeninterne Logik,
die angeschlossen ist, um eine Auswahlindikation und eine Operationstypkriteriumsindikation
für jeden
Eintrag in einer ersten Gruppe der Operationseinträge zu empfangen.
Jede derartige Auswahlindikation gibt entsprechend an, ob der entsprechende
Eintrag der ausgewählte
Eintrag ist oder nicht, wobei die erste gruppeninterne Logik eine
erste Verbindung des ausgewählten
Eintrags und einer älteren
Operation kennzeichnet, die das Operationstypkriterium in der ersten
Gruppe erfüllt.
Die Suchlogik umfasst ferner eine zweite gruppeninterne Logik, die
angeschlossen ist, eine Auswahlindikation und eine Operationstypkriteriumsindikation
für jeden
Eintrag in einer zweiten Gruppe der Operationseinträge zu empfangen.
Jede derartige Auswahlindikation gibt entsprechend an, ob der entsprechende
Eintrag der ausgewählte
Eintrag ist, wobei die zweite gruppeninterne Logik eine zweite Verbindung
des ausgewählten
Eintrags und einer älteren
Operation angibt, die das Operationstypkriterium in der zweiten
Gruppe erfüllt.
Die Suchlogik umfasst ferner eine erste gruppenumspannende Logik,
die angeschlossen ist, die Auswahlindikation für jeden Eintrag in der ersten
Gruppe der Operationseinträge
und die Operationstypkriteriumsindikation für jeden Eintrag in der zweiten Gruppe
der Operationseinträge
zu empfangen, wobei die erste gruppenumspannende Logik eine dritte
Verbindung des ausgewählten
Eintrags in der ersten Gruppe und einer älteren Operation angibt, die
das Operationstypkriterium in der zweiten Gruppe erfüllt; und eine
Kombinierlogik, die mit der ersten gruppeninternen Logik, der zweiten
gruppeninternen Logik und der ersten gruppenumspannenden Logik verbunden
ist, um Identifizierungssignale davon zu erhalten, wobei die Kombinierlogik
einen älteren
Eintrag, der durch das Signal gekennzeichnet ist, in Reaktion auf
eines der Identifizierungssignale bereitstellt.
-
Die
zuvor beschriebene Suchlogik kann ferner eine dritte und eine vierte
gruppeninterne Logik aufweisen, die entsprechend angeschlossen sind,
um Auswahlindikationen und Operationstypkriteriumsindikationen für jeden
Eintrag in einer entsprechenden dritten oder vierten Gruppe der
Operationseinträge
zu empfangen, wobei die dritte und vierte gruppeninterne Logik entsprechend
vierte und fünfte
Verbindungen bzw. Konjunktionen des ausgewählten Eintrages und einer älteren Operation
angeben, die das Operationstypkriterium in der entsprechenden dritten
bzw. vierten Gruppe erfüllt;
die Logik kann ferner eine zweite gruppenüberspannende Logik aufweisen,
die angeschlossen ist, die Auswahlindikation für jeden Eintrag in der dritten
Gruppe der Operationseinträge
und die Operationstypkriteriumsindikation für jeden Eintrag in der vierten
Gruppe der Operationseinträge
zu empfangen, wobei die zweite gruppenüberspannende Logik eine sechste
Verbindung des ausgewählten
Eintrags in der dritten Gruppe und einer älteren Operation angibt, die
das Operationstypkriterium in der vierten Gruppe erfüllt, wobei
die Kombinierlogik ferner mit der dritten gruppeninternen Logik,
der vierten gruppeninternen Logik und der zweiten gruppenüberspannenden
Logik verbunden ist, um vierte, fünfte und sechste Verbindungssignale
davon zu empfangen, wobei die Kombinierlogik einen älteren Eintrag,
der durch das Signal angegeben ist, in Reaktion auf das erste, das
zweite, das dritte, das vierte, das fünfte oder das sechste Verbindungssignal
angibt.
-
Alternativ
kann die Suchlogik ferner aufweisen: eine dritte und eine vierte
gruppeninterne Logik, die jeweils angeschlossen sind, Auswahlindikationen
und Operationstypkriteriumsindikationen für jeden Eintrag in einer entsprechenden
dritten bzw. vierten Gruppe der Operationseinträge zu empfangen, wobei die
dritte und die vierte gruppeninterne Logik entsprechend eine vierte
bzw. eine fünfte
Verbindung des ausgewählten
Eintrags und einer älteren
Operation angeben, die das Operationstypkriterium in der entsprechenden
dritte bzw. vierten Gruppe erfüllt;
eine zweite gruppenüberspannende
Logik, die ange schlossen ist, die Auswahlindikation für jeden
Eintrag in der dritten Gruppe der Operationseinträge und die
Operationstypkriteriumsindikation für jeden Eintrag in der vierten
Gruppe der Operationseinträge
zu empfangen, wobei die zweite gruppenüberspannende Logik eine sechste
Verbindung des ausgewählten
Eintrags in der dritten Gruppe und einer älteren Operation angibt, die
das Operationstypkriterium in der vierten Gruppe erfüllt, wobei
die Kombinierlogik ferner mit der dritten gruppeninternen Logik,
der vierten gruppeninternen Logik und der zweiten gruppenüberspannenden
Logik verbunden ist, um vierte, fünfte und sechste Verbindungssignale
davon zu erhalten, wobei die Kombinierlogik einen älteren Eintrag,
der durch das Signal gekennzeichnet ist, in Reaktion auf das erste,
zweite, dritte, vierte, fünfte
oder sechste Verbindungssignal bereitstellt.
-
Gemäß einer
weiteren Ausführungsform
wird ein Prozessor bereitgestellt mit einer Ladeeinheit und einer
Schreibeinheit, einer Lade/Schreibausführungssteuerung, die ausgebildet
ist, um Lade- und Speicherbefehle im Allgemeinen außerhalb
der Reihenfolge in Bezug zueinander ausführen zu können, um damit Datenabhängigkeiten
zwischen den Lade- und Schreibbefehlen zu erzwingen. Die Lade/Schreibausführungssteuerung
umfasst ein nach Alter geordnetes Array aus Disponiereinheitsoperationseinträgen, wobei
jeder Disponiereinheitsoperationseintrag eine entsprechende Operation
in einer Operationsabfolge kennzeichnet. Eine Ladehaltelogik ist
mit der Ladeeinheit verbunden, um in selektiver Weise das Ausführen einer
Ladeoperation in der Ladeeinheit beim Empfang einer Indikation für eine ältere Schreiboperation
zu verhindern; eine Abtastketten- bzw. Durchsuch- oder Suchkettenlogik
ist mit den Operationseinträgen
und der Ladahaltelogik verbunden, wobei die Suchkettenlogik Indikationen
für ältere Schreiboperationen
bereitstellt, die das Vorhandensein einer älteren Schreiboperation in
Bezug auf eine Ladeoperation in der Ladeeinheit angeben, wobei die
Suchlogik eine gruppeninterne Logik enthält, die angeschlossen ist,
entsprechende Auswahl- und erste Kriteriumssignale für jeden
Eintrag in entsprechenden Gruppen der ersten Ebene benachbarter
Einträge
zu empfangen und entsprechende Verbindungen des ausgewählten Eintrags
und eines Eintrags höherer
Ordnung in den entsprechenden Gruppen der ersten Ebene zu erkennen;
einer ersten gruppenüberspannenden
Logik der ersten Ebenen, die angeschlossen ist, entsprechende Auswahl-
und erste Kriteriumssignale entsprechend den Einträgen aus
benachbarten Gruppen der ersten Ebene höherer Ordnung und tieferer
Ordnung zu empfangen und entsprechende Verbindungen des ausgewählten Eintrags
in den Gruppen der ersten Eben mit geringerer Ordnung oder dem Eintrag
mit höherer
Ordnung in der entsprechenden Gruppe der ersten Ebene höherer Ordnung
zu erkennen; und eine Kombinier logik, die mit der gruppeninternen
Logik und der ersten gruppenüberspannenden
Logik der ersten Ebene verbunden ist, um davon Verbindungssignale
zu erhalten, wobei die Kombinierlogik ein Signal „Eintrag
höherer
Ordnung erkannt" in
Reaktion auf eines der Verbindungssignale bereitstellt.
-
Obwohl
die Erfindung mit Bezug zu diversen Ausführungsformen beschrieben ist,
erkennt man, dass diese Ausführungsformen
anschaulich sind und den Schutzbereich der Erfindung nicht beschränken. Es
können
viele Variationen, Modifizierungen, Hinzufügungen und Verbesserungen der
Ausführungsformen,
wie sie beschrieben sind, durchgeführt werden. Beispielsweise
ist die Organisation von Operationseinträgen in der Disponiereinheit 180 als
Vierer-Operationen lediglich anschaulich. Alternative Ausführungsformen
können
andere Strukturen und/oder Verfahren zur Darstellung der Natur und
des Zustandes von Operationen in einem Computer mit mehreren und/oder
in Pipeline-Struktur
vorgesehenen Ausführungseinheiten
verwenden. Die Suchlogik kann ausgebildet sein, eine größere oder
eine geringere Anzahl an Operationseinträgen, die in größeren oder
kleineren Gruppen zusammengefasst sind, zu verarbeiten. Des Weiteren
sind eine Vielzahl von Gatter-/Gatterkomplex-Ebenen als Logikgestaltungen
abwendbar, ohne von der hierin beschriebenen hierarchischen Organisation
abzuweichen. In alternativen Ausführungsformen kann eine unterschiedliche
Verteilung von Strukturen und Funktionen innerhalb der Ladeeinheit 152 und
der Schreibeinheit 153 vorgesehen sein. Beispielsweise
können
die Ladeeinheit 152 und die Schreibeinheit 153 unabhängig modifiziert
werden, um eine größere oder
geringere Anzahl an Ausführungsstufen
zu enthalten. Entsprechende Änderungen
an dem gewünschten
Satz an Suchlogikinstanzen sind für den Fachmann offensichtlich.
Strukturen für
den Adressenvergleich können
in unterschiedlicher Weise zwischen der Ladeeinheit 152 und
der Schreibeinheit 153 verteilt sein. Des Weiteren können in
alternativen Ausführungsformen
eine größere oder
geringere Anzahl an Suchlogikinstanzen zum Halten von Ladeoperationen
und Schreiboperationen vorgesehen sein. Der Adressenvergleich kann
zu Gunsten einer konservativeren Haltestrategie vermieden werden.
Des Weitem können
Strukturen und Funktionen, die hierin als Hardware in der anschaulichen
Ausführungsform
dargestellt sind, auch als Software, Firmware oder als Mikrokodierung
in alternativen Ausführungsformen
eingerichtet sein. Diese und weitere Variationen, Modifizierungen,
Hinzufügungen
und Verbesserungen liegen innerhalb des Schutzbereiches der Erfindung,
wie sie durch folgenden Patentansprüche definiert ist.