DE4429921A1 - Verfahren und Einrichtung zur Prozessorordnung für einen Befehle ausserhalb der Reihe ausführenden Prozessor - Google Patents
Verfahren und Einrichtung zur Prozessorordnung für einen Befehle ausserhalb der Reihe ausführenden ProzessorInfo
- Publication number
- DE4429921A1 DE4429921A1 DE19944429921 DE4429921A DE4429921A1 DE 4429921 A1 DE4429921 A1 DE 4429921A1 DE 19944429921 DE19944429921 DE 19944429921 DE 4429921 A DE4429921 A DE 4429921A DE 4429921 A1 DE4429921 A1 DE 4429921A1
- Authority
- DE
- Germany
- Prior art keywords
- memory
- load
- physical
- circuit
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 25
- 239000000872 buffer Substances 0.000 claims description 129
- 230000008030 elimination Effects 0.000 claims description 69
- 238000003379 elimination reaction Methods 0.000 claims description 69
- 230000008569 process Effects 0.000 claims description 9
- 238000001514 detection method Methods 0.000 claims description 7
- 238000012544 monitoring process Methods 0.000 claims 9
- 101100534231 Xenopus laevis src-b gene Proteins 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 6
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 5
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 5
- 101001080624 Homo sapiens Proline/serine-rich coiled-coil protein 1 Proteins 0.000 description 4
- 101000781952 Homo sapiens Zinc finger C3H1 domain-containing protein Proteins 0.000 description 4
- 102100027427 Proline/serine-rich coiled-coil protein 1 Human genes 0.000 description 4
- 102100036583 Zinc finger C3H1 domain-containing protein Human genes 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000029142 excretion Effects 0.000 description 3
- 230000028327 secretion Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000000704 physical effect Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 235000014459 Sorbus Nutrition 0.000 description 1
- 241001092391 Sorbus Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 150000001768 cations Chemical class 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000012160 loading buffer Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 229940036310 program Drugs 0.000 description 1
- 108090000623 proteins and genes Proteins 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
Description
Die vorliegende Erfindung betrifft ein Verfahren und eine
Einrichtung zur Aufrechterhaltung der sich auf die Prozessor-
Reihenfolge beziehenden Konsistenz für einen Prozessor in einem
Multiprozessor-Computersystem, der eine von der Reihenfolge ab
weichende Befehlsausführung (out of order instruction execu
tion) vornimmt.
Die zwischen den Prozessoren stattfindende Kommunikation in
einem typischen Mehrprozessor-Computersystem wird als Informa
tionsübertragung zwischen einem oder mehreren Produzenten- Pro
zessoren und einem oder mehreren Konsumenten-Prozessoren model
liert. Bei einem typischen Mehrprozessor-Computersystem über
trägt der Produzenten-Prozessor Informationen zu dem Konsumen
ten-Prozessor über Nachrichten, die in einem geteilten Spei
cher-Subsystem gespeichert sind.
Jeder Prozessor in einem solchen Mehrprozessorsystem muß
sich üblicherweise an ein allgemeines Prozessor-Ordnungsmodell
anpassen, um einen konsistenten Informationsfluß durch das
Speicher-Subsystem hindurch zu den Konsumenten-Prozessoren zu
sichern. Ein Prozessor-Ordnungsmodell erfordert es, daß jeder
Konsumenten-Prozessor Speicherungen von dem Produzenten-Prozes
sor in der gleichen Reihenfolge beobachtet bzw. überwacht.
Beispielsweise schreibt der Produzenten-Prozessor bei einer
allgemeinen Zwischen-Prozessor-Kommunikationstransaktion Nach
richtendaten in das Speicher-Subsystem und setzt dann ein Nach
richten-Flag in dem Speicher-Subsystem, um gültige Nachrichten
daten anzuzeigen. Jeder Konsumenten-Prozessor liest das Nach
richten-Flag und liest dann die Nachrichtendaten, sofern das
Nachrichten-Flag gültige Nachrichtendaten anzeigt. Ein Prozes
sor-Ordnungsmodell, das es erfordert, daß jeder Konsumenten-
Prozessor Speicherungen von dem Produzenten-Prozessor in der
gleichen Reihenfolge überwacht, sichert, daß jeder Konsumenten-
Prozessor die Speicherung der Nachrichtendaten vor der Speiche
rung des Nachrichten-Flags beobachtet. Ein solches Prozessor-
Ordnungsmodell veranlaßt jeden Konsumenten-Prozessor, gültige
Nachrichtendaten zu lesen, wenn die Speicherung der Nachrich
tendaten vor der Speicherung des Nachrichten-Flags auftritt.
Typische bekannte Prozessoren eines Mehrprozessorsystems
implementieren Pipelines für eine der Reihenfolge entsprechende
Befehlsausführung (in-order instruction execution pipelines)
Ein solcher in der Reihenfolge operierender Prozessor holt üb
licherweise einen Befehlsstrom heran, führt diesen Befehlsstrom
in einer sequentiellen Programmreihenfolge aus und erledigt die
Lade- und Speicher-Operationen in der sequentiellen Programm
reihenfolge. Eine solche in der Reihenfolge liegende Verarbei
tung eines Befehlsstroms sichert es, daß jeder Konsumenten-Pro
zessor in dem Mehrprozessorsystem Speicherungen von dem Produ
zenten-Prozessor in der gleichen Reihenfolge beobachtet bzw.
wahrnimmt, weil jeder Konsumenten-Prozessor Lade-Befehle zum
Lesen des Nachrichten-Flags und der Nachrichtendaten in der
gleichen Reihenfolge ausführt.
Ein Prozessor kann eine Außer-der-Reihe-Befehlsausführungs-
Pipeline implementieren, um die Leistungsfähigkeit der Befehls
ausführung zu verbessern. Ein solcher Außer-der-Reihenfolge
Prozessor (out of order processor) holt einen Befehlsstrom
heran und führt fertige Befehle in dem Befehlsstrom jenseits
von früheren Befehlen, die noch nicht fertig sind, aus. Ein
fertiger Befehl ist typischerweise ein Befehl, der vollständig
assemblierte Quelldaten und verfügbare Ausführungsressourcen
hat.
Eine solche Außerhalb-der-Reihenfolge-Ausführung verbessert
die Leistungsfähigkeit des Prozessors, weil die Befehlsausfüh
rungs-Pipeline des Prozessors nicht steckenbleibt, während
Quelldaten für einen nicht fertigen Befehl assembliert werden.
Beispielsweise hält ein nicht fertiger Befehl, der Quelldaten
aus einer Gleitkomma-Operation erwartet, nicht die Ausführung
späterer zur Ausführung bereiter Befehle in dem Befehlsstrom
an.
Ein Prozessor, der eine Außer-der-Reihe-Befehlsausführungs-
Pipeline implementiert, erzeugt Ergebnisdaten außerhalb der
Reihenfolge, weil die Befehle in dem Befehlsstrom außerhalb der
Reihenfolge ausgeführt werden. Ein solcher Prozessor kann eine
Umordnungs-Registerdatei (reorder register file) implementie
ren, um nach der Befehlsausführung die ursprüngliche Programm
reihenfolge bei den Ergebnisdaten zu schaffen.
Eine Befehlsausführung außerhalb der Reihenfolge durch ei
nen Prozessor in einem Mehrprozessorsystem kann Verletzungen
des Prozessor-Ordnungsmodells bewirken. Der Konsumenten-Prozes
sor, der Lade-Befehle außerhalb der Reihenfolge ausführt, kann
Speicherungen von dem Produzenten-Prozessor in einer abweichen
den Reihenfolge beobachten bzw. wahrnehmen.
Beispielsweise nimmt ein Konsumenten-Prozessor, der einen
Lade-Befehl für ein Nachrichten-Flag vor einem Ladebefehl für
die Nachrichtendaten ausführt, effektiv die Speicherungen des
Produzenten-Prozessors zu den Nachrichtendaten und zu dem Nach
richten-Flag in einer anderen Reihenfolge wahr, als ein Konsu
menten-Prozessor, der einen Lade-Befehl für die Nachrichtenda
ten vor einem Lade-Befehl für das Nachrichten-Flag ausführt.
Eine solche Verletzung des Prozessor-Ordnungsmodells kann
den Konsumenten-Prozessor veranlassen, unterschiedliche Nach
richtendaten zu lesen. Einer der Konsumenten-Prozessoren kann
die Nachrichtendaten laden, bevor der Produzenten-Prozessor die
Nachrichtendaten speichert, und das Nachrichten-Flag laden,
nachdem der Produzenten-Prozessor das Nachrichten-Flag spei
chert. In einem solchen Fall lädt der Konsumenten-Prozessor un
gültige Nachrichtendaten und ein Nachrichten-Flag, das gültige
Nachrichtendaten anzeigt. Demzufolge verarbeitet der Konsumen
ten-Prozessor fälschlicherweise ungültige Nachrichtendaten.
Aufgabe der Erfindung ist es, die Prozessorordnung bzw.
-reihenfolge in einem Mehrprozessor-Computersystem bei einem
Prozessor, der eine Außerhalb-der-Reihenfolge-Befehlsausfüh
rungs-Pipeline hat, aufrechtzuerhalten.
Dabei soll die Prozessor-Reihenfolge bei einem Prozessor
mit einer Befehle außerhalb der Reihenfolge ausführenden Pipe
line aufrechterhalten werden, wobei es für jeden Konsumenten-
Prozessor in einem Mehrprozessor-Computersystem erforderlich
ist, die Abspeicherungen von einem Produzenten-Prozessor in der
gleichen Reihenfolge zu überwachen bzw. zu beobachten.
Bei der Aufrechterhaltung der Prozessor-Reihenfolge in ei
nem Mehrprozessor-Computersystem werden externe Speicher-Opera
tionen erfaßt, die auf eine Speicheradresse gerichtet sind, die
einem ausgeführten und nicht ausgeschiedenen bzw. zur Ruhe ge
brachten (unretired) Speicher-Ladebefehl entsprechen.
Erfindungsgemäß wird die Aufgabe durch ein Verfahren zur
Prozessorordnung in einem Mehrprozessor-Computersystem gelöst.
Ein Prozessor mit einer Außerhalb-der-Reihenfolge-Befehlsaus
führungs-Pipeline holt einen Befehlsstrom von einem externen
Speicher in einer sequentiellen Programmreihenfolge heran. Der
Befehlsstrom enthält Speicher-Ladebefehle, wobei jeder Spei
cher-Ladebefehl eine Speicher-Lade-Operation aus einer Spei
cheradresse über einen Mehrprozessor-Bus des Mehrprozessor-Com
putersystems spezifiziert.
Der Prozessor assembliert zumindest einen Quelldatenwert
für jeden Speicher-Ladebefehl, so daß der Quelldatenwert die
Speicheradresse für den entsprechenden Speicher-Ladebefehl an
gibt. Der Prozessor führt unabhängig von der sequentiellen Pro
grammreihenfolge des Speicher-Ladebefehls jeden Speicher-Lade
befehl aus, nachdem der entsprechende Quelldatenwert assem
bliert ist. Jeder ausgeführte Speicher-Ladebefehl erzeugt einen
Ergebnisdatenwert.
Der Prozessor überwacht (snoops) den Mehrprozessor-Bus hin
sichtlich einer externen Speicheroperation zu der Speicher
adresse jedes ausgeführten Speicher-Ladebefehls. Der Prozessor
legt (commits) den Ergebnisdatenwert jedes ausgeführten Spei
cher-Ladebefehls in einen Architektur-Zustand in der sequenti
ellen Programmreihenfolge verbindlich fest, wenn keine externe
Speicheroperation zu der Speicheradresse des ausgeführten Spei
cher-Ladebefehls erfaßt wurde.
Der Prozessor verwirft den Ergebnisdatenwert jedes ausge
führten Speicher-Ladebefehls, wenn eine externe Speicheropera
tion zu der Speicheradresse des ausgeführten Speicher-Ladebe
fehls erfaßt wurde, bevor der Ergebnisdatenwert in dem Archi
tektur-Zustand verbindlich festgelegt worden ist. Der Prozessor
führt dann erneut den Befehlsstrom beginnend mit dem Speicher-
Ladebefehl aus, der dem verworfenen Ergebnisdatenwert ent
spricht. Andere Merkmale und Vorteile der Erfindung ergeben
sich aus der im folgenden näher beschriebenen Zeichnung, in
welcher gleiche Bezugszeichen gleiche Elemente anzeigen und in
welcher:
Fig. 1 ein Mehrprozessor-Computersystem mit einem Satz
von Prozessoren und einem Speicher-Subsystem
veranschaulicht;
Fig. 2 ein Block-Schaltbild eines Prozessors in dem
Mehrprozessor-Computersystem ist;
Fig. 3 die Funktionen der Register-Alias-Schaltung dar
stellt, welche die logischen Mikrobefehle in
entsprechende physikalische Mikrobefehle durch
Abbilden der logischen Quellen und Ziele in phy
sikalische Quellen und Ziele konvertiert;
Fig. 4 die Umordnungs-Schaltung darstellt, welche einen
Umordnungs-Puffer enthält, der einen Satz von
ROB-Einträgen (RE0 bis REn) aufweist und der
spekulative Ergebnisdaten von der außerhalb der
Reihenfolge erfolgenden spekulativen Ausführung
physikalischer Mikrobefehle puffert;
Fig. 5 die Reservierungs- und Abfertigungsschaltung
veranschaulicht, welche eine Reservierungs-Ab
fertigungs-Tabelle mit einem Satz von Reservie
rungsstationseinträgen RS0 bis RSx zum Assem
blieren und Erledigen von Mikrobefehlen enthält;
Fig. 6 die Real-Register-Schaltung veranschaulicht,
welche einen Satz von Verbindlicher-Zustandsre
gistern (commmitted state registers) enthält,
der verbindlich festgelegte Ergebnisdatenwerte
puffert;
Fig. 7 eine Speicher-Ladeschaltung veranschaulicht,
welche eine Adreßerzeugungsschaltung, eine Spei
cherordnungsschaltung, eine Daten-Übersetzungs-
Nachschlage-Puffer(DTLB)-Schaltung und eine Da
ten-Cache-Schaltung aufweist;
Fig. 8 die Speicherordnungsschaltung veranschaulicht,
welche einen Lade-Puffer enthält, der einen Satz
von Lade-Puffer-Einträgen LB0 bis LBn aufweist;
Fig. 9 die Überwachungs (Snoop)-Erfassungsschaltungsan
ordnung in der Speicherordnungsschaltung veran
schaulicht, welche eine Snoop-Erfassungsschal
tung enthält, die jedem Lade-Puffer-Eintrag LB0-
LBn entspricht;
Fig. 10 eine Melde-Schaltungsanordnung in der Speicher
ordnungsschaltung veranschaulicht, die die Spei
cherordnungs-Neustart-Signale erzeugt;
Fig. 11 die Verarbeitung eines Lade-Mikrobefehls 1d
0×100, EBX, EAX veranschaulicht, die von der Be
fehlsheranhol- und Mikrobefehlsausgabe-Schaltung
ausgegeben wurden; und
Fig. 12 das Abfertigen und das Ausscheiden (retirement)
des linearen Speicher-Lademikrobefehls ld 32100,
42, lbid = 4 veranschaulicht, der dem Lademikro
befehl ld 0×100, EBX, EAX entspricht.
Fig. 1 veranschaulicht ein Mehrprozessor-Computersystem 20.
Das Mehrprozessor-Computersystem 20 weist einen Satz von Pro
zessoren 22-24 und ein Speicher-Subsystem 26 auf. Die Prozes
soren 22-24 und das Speicher-Subsystem 26 kommunizieren über
einen Mehrprozessor-Bus 28.
Jeder Prozessor 22-24 holt einen Strom von Makrobefehlen
von dem Speicher-Subsystem 26 über den Mehrprozessor-Bus 28
heran. Jeder Prozessor 22-24 führt den entsprechenden Strom von
Makrobefehlen aus und sorgt für eine Datenspeicherung in dem
Speicher-Subsystem 26.
Fig. 2 veranschaulicht den Prozessor 22. Der Prozessor 22
weist einen Eingangsabschnitt mit einer Busschnittstellenschal
tung 30 und einer Befehlsheranhol- und Mikrobefehlsausgabe-
Schaltung 32 auf. Der Prozessor 22 weist ferner einen Register-
Umbenennungs-Abschnitt mit einer Register-Alias-Schaltung 34
und einer Zuweiser-Schaltung 36 auf. Außerdem weist der Prozes
sor 22 einen Außer-der-Reihe-Ausführungsabschnitt mit einer Re
servierungs- und Abfertigungs-Schaltung 38, einer Ausführungs
schaltung 40, einer Umordnungsschaltung 42 und einer Real-Regi
ster-Schaltung 44 auf.
Die Busschnittstellenschaltung 30 gestattet die Übertragung
von Adreß-, Daten- und Steuerinformationen über den Mehrprozes
sorbus 28. Die Befehlsheranhol- und Mikrobefehlsausgabe-Schal
tung 32 holt einen Strom von Makrobefehlen aus dem Speicher-
Subsystem 26 über den-Mehrprozessorbus 28 und die Busschnitt
stellenschaltung 30 heran. Die Befehlsheranhol- und Mikrobe
fehlsausgabe-Schaltung 32 implementiert eine spekulative Ver
zweigungsvorhersage, um den Durchsatz beim Heranholen der Ma
krobefehle zu maximieren.
Bei einem Ausführungsbeispiel enthält der über den Mehrpro
zessorbus 28 herangeholte Strom von Makrobefehlen einen Strom
von Makrobefehlen der Intel-Mikroprozessor-Architektur. Die Ma
krobefehle der Intel-Mikroprozessor-Architektur arbeiten auf
einem Satz von Architekturregistern, einschließlich einem EAX-
Register, einem EBX-Register, einem ECX-Register und einem EDX-
Register usw.
Die Befehlsheranhol- und Mikrobefehlsausgabe-Schaltung 32
konvertiert den Makrobefehl des eingehenden Stroms von Makrobe
fehlen in einen geordneten Strom von logischen Mikrooperatio
nen, im folgenden auch als logische Mikrobefehle bezeichnet.
Die Befehlsheranhol- und Mikrobefehlsausgabe-Schaltung 32 er
zeugt einen oder mehrere logische Mikrobefehle für jeden einge
henden Makrobefehl. Die dem jeweiligen Makrobefehl entsprechen
den logischen Mikrobefehle sind Mikrooperationen eines redu
zierten Befehlssatzes, die die Funktion des entsprechenden Ma
krobefehls ausführen. Die logischen Mikrobefehle spezifizieren
arithmetische und logische Operationen ebenso wie Lade- und
Speicher-Operationen des Speicher-Subsystems 26.
Die Befehlsheranhol- und Mikrobefehlsausgabe-Schaltung 32
überträgt den geordneten Strom logischer Mikrobefehle zu der
Register-Alias-Schaltung 34 und der Zuweiser-Schaltung 36 über
einen Mikrobefehlsbus 50 für logische Mikrobefehle. Bei einem
Ausführungsbeispiel gibt die Befehlsheranhol- und Mikrobefehls
ausgabe-Schaltung 32 bis zu vier geordnete logische Mikrobe
fehle während jedes Taktzyklus des Prozessors 22 aus. Alterna
tiv können die geordneten logischen Mikrobefehle auf drei wäh
rend jedes Taktzyklus begrenzt werden, um die Schaltkreisfläche
der integrierten Schaltung für den Prozessor 22 zu minimieren.
Die Befehlsheranhol- und Mikrobefehlsausgabe-Schaltung 32
enthält einen Mikrobefehls-Zuordner (micro instruction sequen
cer) und einen zugeordneten Steuerspeicher. Der Mikrobefehls-
Zuordner implementiert Mikroprogramme zum Ausführen einer Viel
zahl von Funktionen des Prozessors 22, einschließlich Wieder
herstellungsfunktionen bei Fehlern und Prozessorordnungsfunk
tionen.
Jeder von der Befehlsheranhol- und Mikrobefehlsausgabe-
Schaltung 32 erzeugte logische Mikrobefehl enthält einen Be
fehlscode, ein Paar logischer Quellen und ein logisches Ziel.
Jede logische Quelle kann ein Register spezifizieren oder einen
Direktdatenwert zur Verfügung stellen. Die logischen Register
quellen und die logischen Ziele der logischen Mikrobefehle spe
zifizieren Architekturregister der ursprünglichen Makrobefehle.
Darüber hinaus spezifizieren die logischen Registerquellen und
die logischen Ziele der logischen Mikrobefehle temporäre Regi
ster für Mikrocode, der von den Mikrobefehls-Zuordner der Be
fehlsheranhol- und Mikrobefehlsausgabe-Schaltung 32 implemen
tiert wird.
Die Register-Alias-Schaltung 34 empfängt die geordneten lo
gischen Mikrobefehle über den Mikrobefehlsbus 50 und erzeugt
einen entsprechenden Satz geordneter physikalischer Mikrobe
fehle durch Umbenennung der logischen Quellen und logischen
Ziele der logischen Mikrobefehle. Die Register-Alias-Schaltung
34 empfängt die geordneten logischen Mikrobefehle über den Bus
50 für logische Mikrobefehle, bildet die logischen Quellen und
das logische Ziel jedes logischen Mikrobefehls auf physikali
sche Quellen und ein physikalisches Ziel ab und überträgt die
geordneten physikalischen Mikrobefehle über einen Bus 52 für
physikalische Mikrobefehle.
Jeder physikalische Mikrobefehl weist den Befehlscode des
entsprechenden logischen Mikrobefehls, ein Paar physikalischer
Quellen und ein physikalisches Ziel auf. Jede physikalische
Quelle kann ein physikalisches Register spezifizieren oder ei
nen Direktdatenwert zur Verfügung stellen. Die physikalischen
Registerquellen des physikalischen Mikrobefehls spezifizieren
physikalische Register, die in der Umordnungsschaltung 42 ent
halten sind, und verbindliche Zustandsregister, die in der Re
al-Register-Schaltung 44 enthalten sind. Die physikalischen
Ziele der physikalischen Mikrobefehle spezifizieren physikali
sche Register, die in der Umordnungsschaltung 42 enthalten sind.
Die Register-Alias-Schaltung 34 überträgt die logischen
Ziele der logischen Mikrobefehle über einen Bus 54 für logische
Ziele. Die über den Logische-Ziele-Bus 54 übertragenen logi
schen Ziele identifizieren die Architekturregister, die den
physikalischen Zielen auf dem Mikrobefehlsbus 52 entsprechen.
Die Zuweiser-Schaltung 36 verfolgt die verfügbaren Ressour
cen in der Umordnungsschaltung 42, der Reservierungs- und Ab
fertigungs-Schaltung 38 und der Ausführungsschaltung 40. Die
Zuweiser-Schaltung 36 weist physikalische Ziele in der Umord
nungsschaltung 42 und Reservierungsstationseinträge in der Re
servierungs- und Abfertigungs-Schaltung 38 den physikalischen
Mikrobefehlen auf dem Mikrobefehlsbus 52 zu. Darüber hinaus
weist die Zuweiser-Schaltung 36 Ladepuffer-Einträge in einem
Speicherordnungspuffer in der Ausführungsschaltung 40 den phy
sikalischen Mikrobefehlen auf dem Mikrobefehlsbus 52 zu, die
einen eine Speicher-Ladeoperation spezifizierenden Befehlscode
haben.
Die Zuweiser-Schaltung 36 überträgt zugewiesene physikali
sche Ziele zu der Register-Alias-Schaltung 34 über einen Bus 56
für physikalische Ziele. Die zugewiesenen physikalischen Ziele
spezifizieren physikalische Register in der Umordnungsschaltung
42 zum Puffern von spekulativen Ergebnissen für die physikali
schen Mikrobefehle. Die zugewiesenen physikalischen Ziele wer
den von der Register-Alias-Schaltung 34 verwendet, um die logi
schen Ziele der logischen Mikrobefehle zu physikalischen Zielen
umzubenennen.
Die Zuweiser-Schaltung 36 weist die physikalischen Register
der Umordnungsschaltung 42 den physikalischen Mikrobefehlen in
der gleichen Reihenfolge zu, in der logische Mikrobefehle über
den Mikrobefehlsbus 50 empfangen werden. Die Zuweiser-Schaltung
36 verwaltet einen Zuweisungszeiger zum Zuweisen physikalischer
Register der Umordnungsschaltung 42. Der Zuweisungszeiger zeigt
auf einen nächsten Satz aufeinanderfolgender physikalischer Re
gister in der Umordnungsschaltung 42 für jeden Satz logischer
Mikrobefehle, der über den Mikrobefehlsbus 50 für logische Mi
krobefehle empfangen wurde. Die Reihenfolge der zu den physika
lischen Mikrobefehlen in der Umordnungsschaltung 42 zugewiese
nen physikalischen Register reflektiert die Reihenfolge der ur
sprünglichen logischen Mikrobefehle.
Die Zuweiser-Schaltung 36 spezifiziert die Reservierungs
stationseinträge für die physikalischen Mikrobefehle auf dem
Mikrobefehlsbus 52, indem sie Reservierungsstationseintragsaus
wahlsignale zu der Reservierungs- und Abfertigungs-Schaltung 38
über einen Reservierungsstationsauswahlbus 66 überträgt.
Die Zuweiser-Schaltung 36 weist jeweils einen Ladepuffer
eintrag jedem einen Speicher-Ladebefehlscode spezifizierenden
physikalischen Mikrobefehl auf dem Mikrobefehlsbus 52 zu. Die
Zuweiser-Schaltung 36 weist die Ladepuffereinträge zu, indem
sie Ladepuffer-Kennzeichner (ID) zur Reservierungs- und Abfer
tigungs-Schaltung 38 über einen Ladepuffer-ID-Bus 72 überträgt.
Die Reservierungs- und Abfertigungs-Schaltung 38 hält die
physikalischen Mikrobefehle, die auf ihre Ausführung durch die
Ausführungsschaltung 40 warten. Die Reservierungs- und Abferti
gungsschaltung 38 empfängt die geordneten physikalischen Mikro
befehle über den Mikrobefehlsbus 52, assembliert die Quelldaten
für die physikalischen Mikrobefehle und fertigt die physikali
schen Mikrobefehle zur Ausführungsschaltung 40 ab.
Die Reservierungs- und Abfertigungs-Schaltung 38 empfängt
die physikalischen Mikrobefehle über den Mikrobefehlsbus 50 und
speichert die physikalischen Mikrobefehle in verfügbaren Reser
vierungsstationseinträgen. Die Reservierungs- und Abfertigungs-
Schaltung 38 assembliert Quelldaten für die physikalischen Mi
krobefehle und fertigt die physikalischen Mikrobefehle zu ge
eigneten Ausführungseinheiten in der Ausführungsschaltung 40
ab, wenn die Quelldaten assembliert sind.
Die Reservierungs- und Abfertigungs-Schaltung 38 empfängt
die Quelldaten für die anhängigen physikalischen Mikrobefehle
von der Umordnungsschaltung 42 und der Real-Register-Schaltung
44 über einen Quelldatenbus 58. Die Reservierungs- und Abferti
gungs-Schaltung 38 empfängt außerdem Quelldaten für die anhän
gigen physikalischen Mikrobefehle von der Ausführungsschaltung
40 über einen Ergebnisbus 62 während eines Rückschreibens spe
kulativer Ergebnisse von der Ausführungsschaltung 40 zu der
Umordnungsschaltung 42.
Die Reservierungs- und Abfertigungs-Schaltung 38 ordnet die
physikalischen Mikrobefehle, die vollständig assemblierte
Quelldaten haben, zur Ausführung zeitlich ein. Die Reservie
rungs- und Abfertigungs-Schaltung 38 fertigt die bereiten phy
sikalischen Mikrobefehle für die Ausführungsschaltung 40 über
einen Mikrobefehls-Abfertigungsbus 60 ab. Die Reservierungs-
und Abfertigungs-Schaltung 38 plant die Ausführung physikali
scher Mikrobefehle außerhalb ihrer Reihenfolge entsprechend der
Verfügbarkeit der Quelldaten für die physikalischen Mikrobe
fehle und der Ressourcen der Ausführungseinheit in der Ausfüh
rungsschaltung 40 ein.
Die Ausführungsschaltung 40 schreibt die spekulativen Er
gebnisse von der außerhalb der Reihenfolge erfolgten Ausführung
der physikalischen Mikrobefehle zu der Umordnungsschaltung 42
über den Ergebnisbus 62 zurück. Die Rückschreiboperationen der
spekulativen Ergebnisse durch die Ausführungsschaltung 40 er
folgen außerhalb der Reihenfolge infolge der außer der Reihe
erfolgten Abfertigung physikalischer Mikrobefehle durch die Re
servierungs- und Abfertigungs-Schaltung 38 und der unterschied
lichen Anzahl von zur Ausführung der unterschiedlichen Arten
physikalischer Mikrobefehle erforderlichen Zyklen des Prozes
sors 22.
Bei einem Ausführungsbeispiel weist die Ausführungsschal
tung 40 einen Satz von fünf Ausführungseinheiten EU0-EU4 auf.
Die Reservierungs- und Abfertigungs-Schaltung 38 fertigt bis zu
fünf physikalische Mikrobefehle gleichzeitig zu den Ausfüh
rungseinheiten EU0-EU4 über den Mikrobefehls-Abfertigungsbus 60
ab.
Die Ausführungseinheit EU0 führt Funktionen einer arithme
tisch logischen Einheit (ALU) aus, die Mikrobefehle von Ganz
zahl-Multiplikation und -Division ebenso wie Gleitkomma-Additi
on, -Subtraktion, -Multiplikation und -Division einschließen.
Die Ausführungseinheit EU1 führt ALU-Ganzzahl-Funktionen und
Sprung-Operationen aus. Die Ausführungseinheit EU2 führt Ganz
zahl- und Gleitkomma-Ladeoperationen vom Speicher ebenso wie
Funktionen zum Laden linearer Adressen und Segmentregister-Ope
rationen aus. Die Ausführungseinheit EU3 führt Ganzzahl- und
Gleitkomma-Speicherungen und Segmentierungsregisteroperationen
aus. Die Ausführungseinheit EU4 führt Ganzzahl- und Gleitkomma-
Datenspeicher-Operationen aus.
Die Umordnungsschaltung 42 enthält die physikalischen Regi
ster, die spekulative Ergebnisse für die physikalischen Mikro
befehle puffern. Jedes physikalische Register in der Umord
nungsschaltung 42 kann Ganzzahldatenwerte und Gleitkomma-Daten
werte unterbringen.
Die Real-Register-Schaltung 44 enthält verbindliche Zu
standsregister (committed state register), die den Architektur
registern des ursprünglichen Stroms von Makrobefehlen entspre
chen. Jedes verbindliche Zustandsregister in der Real-Register-
Schaltung 44 kann Ganzzahl-Datenwerte und Gleitkomma-Datenwerte
unterbringen.
Bei einem Ausführungsbeispiel enthalten die verbindliche
Zustandsregister der Real-Register-Schaltung 44 die EAX-, EBX-,
ECX- und EDX-Register usw. der Intel-Mikroprozessorarchitektur
ebenso wie die Architektur-Flags der Intel-Mikroprozessorarchi
tektur. Die Real-Register-Schaltung 44 enthält außerdem ver
bindliche Zustandsregister für die Mikrocode-Register, die von
dem in der Befehlsheranhol- und Mikrobefehlsausgabe-Schaltung
32 ausgeführten Mikrocode verwendet werden.
Die Umordnungsschaltung 42 und die Real-Register-Schaltung
44 empfangen die physikalischen Mikrobefehle über den Mikrobe
fehlsbus 52. Die physikalischen Quellen der physikalischen Mi
krobefehle spezifizieren physikalische Register in der Umord
nungsschaltung 42 und verbindliche Zustandsregister in der Re
al-Register-Datei 44, die die Quelldaten für die physikalischen
Mikrobefehle halten.
Die Umordnungsschaltung 42 und die Real-Register-Schaltung
44 lesen die von den physikalischen Quellen spezifizierten
Quelldaten und übertragen die Quelldaten über einen Quelldaten
bus 58 zu der Reservierungs- und Abfertigungs-Schaltung 38. Je
de physikalische Quelle der physikalischen Mikrobefehle enthält
ein Real-Register-Datei-Gültig (RRFV)-Flag, das anzeigt, ob die
Quelldaten in einem physikalischen Register in der Umordnungs
schaltung 42 oder in einem verbindlichen Zustandsregister in
der Real-Register-Datei 44 enthalten sind.
Die physikalischen Ziele der physikalischen Mikrobefehle
auf dem Mikrobefehlsbus 52 spezifizieren physikalische Register
in der Umordnungsschaltung 42 zum Puffern der spekulativen Er
gebnisse der Außer-der-Reihe-Ausführung der physikalischen Mi
krobefehle. Die Umordnungsschaltung 42 empfängt die physikali
schen Ziele der physikalischen Mikrobefehle über dem Mikrobe
fehlsbus 52 und löscht die physikalischen Register, die von den
physikalischen Zielen spezifiziert wurden.
Die Umordnungsschaltung 42 empfängt die den physikalischen
Mikrobefehlen entsprechenden logischen Ziele über den Bus 54
für logische Ziele und speichert die logischen Ziele in die von
den physikalischen Zielen der physikalischen Mikrobefehle spe
zifizierten physikalischen Register. Die logischen Ziele in den
physikalischen Registern der Umordnungsschaltung 42 spezifizie
ren verbindliche Zustandsregister in der Real-Register-Schal
tung 44 zum Ausscheiden der physikalischen Mikrobefehle.
Eine Ausscheidelogik-Schaltung 46 ordnet die physikalischen
Mikrobefehle, indem sie die in den physikalischen Registern der
Umordnungsschaltung 42 gehaltenen spekulativen Ergebnisse in
einen Architekturzustand in der gleichen Reihenfolge festlegt,
wie die ursprünglichen logischen Mikrobefehle empfangen wurden.
Die Ausscheidelogik-Schaltung 46 veranlaßt eine Übertragung der
spekulativen Ergebnisdaten in der Umordnungsschaltung 42 zu
entsprechenden verbindlichen Zustandsregistern der Real-Regi
ster-Schaltung 44 über einen Ausscheidebus (retirement bus) 64.
Bei einem Ausführungsbeispiel scheidet die Ausscheidelogik-
Schaltung 46 bis zu vier physikalische Register während jedes
Zyklus des Prozessors 22 aus. Bei einem anderen Ausführungsbei
spiel scheidet die Ausscheidelogik-Schaltung 46 bis zu drei
physikalische Register während jedes Zyklus des Prozessors 22
aus, um die Chipfläche der integrierten Schaltung zu minimie
ren.
Die Ausscheidelogik-Schaltung 46 veranlaßt außerdem die
Umordnungsschaltung 42, während der Ausscheidung die Makrobe
fehlszeiger-Deltawerte für das Ausscheiden physikalischer Mi
krobefehle über einen Makrobefehlszeiger-Offset-Bus 120 zu
übertragen.
Die Neustart-Schaltung 48 empfängt Makrobefehlszeiger-Del
tawerte über den Makrobefehlszeiger-Offset-Bus 120. Die Neu
start-Schaltung 48 berechnet einen verbindlichen Befehlszeiger
wert entsprechend den Makrobefehlszeiger-Deltawerten für die
auszuscheidenden ROB-Einträge.
Die Ausscheidelogik-Schaltung 46 verwaltet einen Ausschei
dungszeiger auf die physikalischen Register in der Umordnungs
schaltung 42. Der Ausscheidungszeiger zeigt auf Sätze von auf
einanderfolgenden physikalischen Registern für eine Ausschei
dung. Der Ausscheidungszeiger folgt dem Zuweisungszeiger durch
die physikalischen Register in der Umordnungsschaltung 42 hin
durch in dem Maße, in dem die Ausscheidelogik die spekulativen
Ergebnisse der physikalischen Register in den verbindlichen Zu
stand ausscheidet. Die Ausscheidelogik-Schaltung 46 scheidet
die physikalischen Register in der richtigen Reihenfolge aus,
weil die physikalischen Register zu den physikalischen Mikrobe
fehlen in der richtigen Reihenfolge zugewiesen wurden.
Die Ausscheidelogik-Schaltung 46 sendet die physikalischen
Ausscheidungsziele, die von dem Ausscheidungszeiger spezifi
ziert sind, über einen Ausscheide-Mitteilungsbus 70 aus. Der
Speicherordnungspuffer in der Ausführungsschaltung 40 empfängt
die physikalischen Ausscheidungsziele und gibt einen Satz von
Speicherordnungs-Neustartsignalen 76 aus. Die Speicherordnungs-
Neustartsignale 76 zeigen an, ob eine einem der physikalischen
Ausscheideziele entsprechende Speicher-Ladeoperation eine mög
liche Verletzung der Prozessorordnung bewirkt hat. Die Speicher
ordnungs-Neustartsignale 76 zeigen an, welches der physikali
schen Ausscheidungsziele die mögliche Prozessorordnungsverlet
zung bewirkt hat.
Die Speicherordnungs-Neustartsignale 76 werden von der Neu
start-Schaltung 48 empfangen. Wenn die Speicherordnungs-Neu
startsignale 76 eine mögliche Prozessorordnungsverletzung an
zeigen, gibt die Neustart-Schaltung 48 ein Umordnungs-Löschsi
gnal 78 aus. Das Umordnungs-Löschsignal 78 veranlaßt die Umord
nungsschaltung 42, die spekulativen Ergebnisdaten für die nicht
verbindlichen physikalischen Mikrobefehle zu löschen. Das
Umordnungs-Löschsignal 78 veranlaßt die Reservierungs- und Ab
fertigungs-Schaltung 38, die anhängigen physikalischen Mikrobe
fehle zu löschen, die auf eine Abfertigung zu der Ausführungs
schaltung 40 warten. Das Umordnungs-Löschsignal 78 veranlaßt
ferner die Zuweiser-Schaltung 36, den Zuweisungszeiger zum Zu
weisen der physikalischen Register in der Umordnungsschaltung
42 zurückzusetzen, und die Ausscheidelogik-Schaltung 46, den
Ausscheidungszeiger zum Ausscheiden der physikalischen Register
zurückzusetzen.
Wenn die Speicherordnungs-Neustartsignale 76 eine mögliche
Prozessorordnungsverletzung anzeigen, verwendet die Neustart-
Schaltung 48 die Makrobefehlszeiger-Deltawerte, die über den
Makrobefehlszeiger-Offset-Bus 120 empfangen wurden, um einen
Neustart-Befehlszeigerwert zu berechnen. Der Neustart-Befehls
zeigerwert spezifiziert den Makrobefehl, der dem physikalischen
Mikrobefehl entspricht, der die mögliche Speicherordnungsver
letzung bewirkt hat. Die Neustart-Schaltung 48 überträgt den
Neustart-Befehlszeigerwert zu der Befehlsheranhol- und Mikrobe
fehlsausgabe-Schaltung 32 über einen Neustart-Vektor-Bus 122.
Die Befehlsheranhol- und Mikrobefehlsausgabe-Schaltung 32
empfängt den Neustart-Befehlszeigerwert über einen Neustart-
Vektor-Bus 122. Das Umordnungs-Löschsignal 78 veranlaßt den Mi
krobefehlszuordner der Befehlsheranhol- und Mikrobefehlsausga
be-Schaltung 32, den geordneten Strom der logische Mikrobe
fehle, die vor der Ausscheidung von der Umordnungsschaltung 42
gelöscht worden waren, erneut auszugeben. Die Befehlsheranhol-
und Mikrobefehlsausgabe-Schaltung 32 gibt erneut die logischen
Mikrobefehle aus, indem sie einen Makrobefehlsstrom beginnend
bei der Makrobefehlsadresse heranholt, die durch den Neustart-
Befehlszeigerwert spezifiziert ist, und indem sie den Makrobe
fehlsstrom in logische Mikrobefehle konvertiert und die logi
schen Mikrobefehle über den Mikrobefehlsbus 50 überträgt.
Wenn das Speicherordnungs-Neustartsignal 76 nicht eine mög
liche Prozessorordnungsverletzung anzeigt, dann wird das Aus
scheiden der durch die physikalischen Ausscheidungsziele spezi
fizierten physikalischen Register fortgesetzt. Die Umordnungs
schaltung 42 testet die Gültig-Flags für die ausscheidenden
physikalischen Ziele. Die Umordnungsschaltung 42 scheidet die
spekulativen Ergebnisdaten für jedes ausscheidende physikali
sche Register aus, sofern das Gültig-Flag des auszuscheidenden
physikalischen Registers gültige spekulative Daten anzeigt. Die
Umordnungsschaltung 42 scheidet ein physikalisches Register
aus, indem es die Übertragung der spekulativen Ergebnisdaten zu
den durch die logischen Ziele der physikalischen Register spe
zifizierten verbindlichen Zustandsregister in der Real-Regi
ster-Schaltung 44 veranlaßt.
Die Register-Alias-Schaltung 34 und die Zuweiser-Schaltung
36 empfangen die ausscheidenden physikalischen Ziele über den
Ausscheide-Mitteilungsbus 70. Die Register-Alias-Schaltung 34
aktualisiert dementsprechend die Register-Alias-Tabelle, um die
Ausscheidung zu reflektieren. Die Zuweiser-Schaltung 36 mar
kiert die ausgeschiedenen physikalischen Register in der Umord
nungsschaltung 42 als für eine Zuweisung verfügbar.
Fig. 3 ist eine die Funktion der Register-Alias-Schaltung
34 veranschaulichende Darstellung. Die Register-Alias-Schaltung
34 empfängt logische Mikrobefehle in geordneter Weise über den
Mikrobefehlsbus 50, konvertiert die logischen Mikrobefehle in
entsprechende physikalische Mikrobefehle durch Abbildung der
logischen Quellen und Ziele auf physikalische Quellen und Ziele
und überträgt dann die physikalischen Mikrobefehle in geordne
ter Form über den Mikrobefehlsbus 52 für physikalische Mikrobe
fehle.
Die Register-Alias-Schaltung 34 implementiert eine Regi
ster-Alias-Tabelle 80. Die Register-Alias-Tabelle 80 führt eine
Umbenennung logischer in physikalische Register aus, indem sie
die logischen Quellen und Ziele der logischen Mikrobefehle auf
physikalische Quellen und Ziele der entsprechenden physikali
schen Mikrobefehle abbildet. Die physikalischen Quellen und
Ziele der physikalischen Mikrobefehle spezifizieren physikali
sche Register in der Umordnungsschaltung 42 und verbindliche
Zustandsregister in der Real-Register-Schaltung 44.
Die Einträge in der Register-Alias-Tabelle 80 entsprechen
den Architektur-Registern des ursprünglichen Makrobefehlss
troms. Bei einem Ausführungsbeispiel entsprechen die EAX-, EBX-,
ECX- und EDX-Einträge der Register-Alias-Tabelle 80 den EAX-,
EBX-, ECX- und EDX-Registern der Intel-Mikroprozessor-Architek
tur.
Jeder Eintrag in der Register-Alias-Tabelle 80 enthält ei
nen Umordnungspuffer-Zeiger (ROB-Zeiger - reorder buffer poin
ter). Der ROB-Zeiger spezifiziert ein physikalisches Register
in der Umordnungsschaltung 42, das die spekulativen Ergebnisda
ten für das entsprechende Architekturregister hält. Jeder Ein
trag in der Register-Alias-Tabelle 80 enthält außerdem ein Re
al-Register-Datei-Gültig-Flag (RRFV-Flag = real register file
valid), das anzeigt, ob die spekulativen Ergebnisdaten für das
entsprechende Architekturregister in das geeignete verbindliche
Zustandsregister in der Real-Register-Schaltung 44 ausgeschie
den worden sind.
Die Register-Alias-Schaltung 44 empfängt einen Satz geord
neter logischer Mikrobefehle (lmop_0 bis lmop_3) über den logi
schen Mikrobefehlsbus 50. Jeder logische Mikrobefehl weist ei
nen Befehlscode, ein Paar logischer Quellen lsrc1 und lsrc2
(lsrc - logical source), ein logisches Ziel ldst (ldst - logi
cal destination) und ein Makrobefehlszeiger-Delta mipd (mipd -
macro instruction pointer delta) . Die logischen Quellen lsrc1
und lsrc2 und das logische Ziel ldst spezifizieren jeweils ein
Architekturregister des ursprünglichen Stroms von Makrobefeh
len.
Die Register-Alias-Schaltung 34 empfängt außerdem einen
Satz zugewiesener physikalischer Ziele alloc_pdst_0 bis al
loc_pdst_3 (alloc_pdst - allocated physical destination) von
der Zuweiser-Schaltung 36 über den physikalischen Zielbus 56.
Die physikalischen Ziele alloc_pdst_0 bis alloc_pdst_3 spezifi
zieren neu zugewiesene physikalische Register in der Umord
nungsschaltung 42 für die logischen Mikrobefehle lmop_0 bis
lmop_3. Die von den physikalischen Zielen alloc_pdst_0 bis al
loc_pdst_3 spezifizierten physikalischen Register in der Umord
nungsschaltung 42 halten die spekulativen Ergebnisdaten für die
physikalischen Mikrobefehle, die den logischen Mikrobefehlen
lmop_0 bis lmop_3 entsprechen.
Die Register-Alias-Schaltung 34 überträgt einen Satz geord
neter physikalischer Mikrobefehle pmop_0 bis pmop_3 (pmop -
physical micro operation) über den Mikrobefehlsbus 52. Jeder
physikalische Mikrobefehl weist einen Befehlscode, ein Paar
physikalischer Quellen psrc1 und psrc2 (psrc - physical source)
und ein physikalisches Ziel pdst (physical destination) auf.
Die physikalischen Quellen psrc1 und psrc2 spezifizieren je
weils ein physikalisches Register in der Umordnungsschaltung 42
oder ein verbindliches Zustandsregister in der Real-Register-
Schaltung 44. Das physikalische Ziel pdst spezifiziert ein phy
sikalisches Register in der Umordnungsschaltung 42, das speku
lative Ergebnisdaten für den entsprechenden physikalischen Mi
krobefehl halten soll.
Die Register-Alias-Schaltung 34 erzeugt die physikalischen
Mikrobefehle pmop_0 bis pmop_3 durch Abbildung der logischen
Quellen der logischen Mikrobefehle lmop_0 bis lmop_3 auf die
physikalischen Register der Umordnungsschaltung 42 und die ver
bindlichen Zustandsregister der Real-Register-Schaltung 44, wie
sie von der Register-Alias-Tabelle 80 spezifiziert sind. Die
Register-Alias-Schaltung 34 bringt die physikalischen Ziele al
loc_pdst_0 bis alloc_pdst_3 in die physikalischen Mikrobefehle
pmop_0 bis pmop_3 ein.
Die Befehlscodes der physikalischen Mikrobefehle pmop_0 bis
pmop_3 sind die gleichen, wie die der entsprechenden Befehls
codes der logischen Mikrobefehle lmop_0 bis lmop_3. Beispiels
weise erzeugt die Register-Alias-Schaltung 34 pmop_0 so, daß
der Befehlscode von pmop_0 gleich dem Befehlscode von lmop_0
ist.
Die Register-Alias-Schaltung 34 erzeugt beispielsweise die
physikalische Quelle psrc1 für den physikalischen Mikrobefehl
pmop_0 durch Lesen des von der logischen Quelle lsrc1 des
lmop_0 spezifizierten Eintrags der Register-Alias-Tabelle 80.
Wenn das RRFV-Flag des spezifizierten Eintrags der Register-
Alias-Tabelle 80 nicht gesetzt ist, dann überträgt die Regi
ster-Alias-Schaltung 34 den ROB-Zeiger von dem spezifizierten
Register-Alias-Tabelleneintrag gemeinsam mit dem RRFV-Flag über
den Mikrobefehlsbus 52 als physikalische Quelle psrc1 für den
pmop_0. Wenn das RRFV-Bit gesetzt ist, dann überträgt die Regi
ster-Alias-Schaltung 34 einen Zeiger auf das der logischen
Quelle lsrc1 entsprechende verbindliche Zustandsregister in der
Real-Register-Schaltung 44 gemeinsam mit dem RRFV-Flag über den
Mikrobefehlsbus 52 als physikalische Quelle psrc1 für den
pmop_0.
Die Register-Alias-Schaltung 34 erzeugt die physikalische
Quelle psrc2 für den physikalischen Mikrobefehl pmop_0, indem
sie den Register-Alias-Tabelleneintrag liest, der der logischen
Quelle lsrc2 des lmop_0 entspricht. Wenn das RRFV-Flag nicht
gesetzt ist, dann überträgt die Register-Alias-Schaltung 34 den
ROB-Zeiger von dem spezifizierten Eintrag der Register-Alias-
Tabelle 80 gemeinsam mit dem RRFV-Flag über den Mikrobefehlsbus
52 als physikalische Quelle psrc2 für den pmop_0. Wenn das RRF-
V-Bit gesetzt ist, dann überträgt die Register-Alias-Schaltung
34 einen Zeiger auf das der logischen Quelle lsrc2 entspre
chende verbindliche Zustandsregister in der Real-Register-Sc
haltung 44 gemeinsam mit dem RRFV-Flag über den Mikrobefehlsbus
52 als physikalische Quelle psrc2 für den pmop_0.
Die Register-Alias-Schaltung 34 speichert das physikalische
Ziel alloc_pdst_0 in dem durch das logische Ziel ldst des
lmop_0 spezifizierte ROB-Zeigerfeld des Eintrags in der Regi
ster-Alias-Tabelle 80 und löscht das entsprechende RRFV-Bit.
Das gelöschte RRFV-Bit zeigt an, daß der aktuelle Zustand des
entsprechenden Architekturregisters spekulativ in dem von dem
entsprechenden ROB-Zeiger spezifizierten physikalischen Regi
ster der Umordnungsschaltung 42 gehalten wird.
Die Register-Alias-Schaltung 34 überträgt einen Satz logi
scher Ziele ldst_0 bis ldst_3 und entsprechender Makrobefehls
zeiger-Deltas mipd_0 bis mipd_3 über den Zielbus 54 für logi
sche Ziele. Die logischen Ziele ldst_0 bis ldst_3 sind die
Ziele der logischen Mikrobefehle lmop_0 bis lmop_3.
Die Makrobefehlszeiger-Deltas mipd_0 bis mipd_3 sind die
Makrobefehlszeiger-Deltas der logischen Mikrobefehle lmop_0 bis
lmop_3. Das Makrobefehlszeiger-Delta mipd_0 ist das logische
Ziel ldst des lmop_0, das Makrobefehlszeiger-Delta mipd_1 das
logische Ziel ldst des lmop_1 usw. Die Makrobefehlszeiger-Del
tas mipd_0 bis mipd_3 identifizieren die ursprünglichen Makro
befehle, die den physikalischen Mikrobefehlen pmop_0 bis pmop_3
entsprechen.
Fig. 4 veranschaulicht die Umordnungsschaltung 42. Die
Umordnungsschaltung 42 implementiert einen Umordnungspuffer 82,
der einen Satz von ROB-Einträgen (RE0 bis REn) aufweist. Die
ROB-Einträge RE0 bis REn sind physikalische Register, die spe
kulative Ergebnisdaten von der ungeordneten bzw. außer der
Reihe erfolgenden Ausführung der physikalischen Mikrobefehle
puffern. Bei einem Ausführungsbeispiel weisen die ROB-Einträge
RE0 bis REn einen Satz von 64 physikalischen Registern auf. Bei
einem anderen Ausführungsbeispiel weisen die ROB-Einträge RE0
bis REn einen Satz von 40 physikalischen Registern auf.
Jeder ROB-Eintrag weist ein Gültig-Flag (V=Valid), einen
Ergebnisdatenwert, einen Satz von Flags, eine Flag-Maske, ein
logisches Ziel (LDST), Fehlerdaten und ein Befehlszeiger-Delta
(IPDELTA) auf.
Das Gültig-Flag V zeigt an, ob der Ergebnisdatenwert für
den entsprechenden ROB-Eintrag gültig ist. Die Umordnungsschal
tung 42 löscht das Gültig-Flag für jeden neu zugewiesenen ROB-
Eintrag, um einen ungültigen Ergebnisdatenwert anzuzeigen. Die
Umordnungsschaltung 42 setzt das Gültig-Flag, wenn spekulative
Ergebnisdaten von der Ausführungsschaltung 40 zu dem ROB-Ein
trag zurückgeschrieben sind.
Der Ergebnisdatenwert ist ein spekulatives Ergebnis von der
außer der Reihe erfolgenden Ausführung des entsprechenden phy
sikalischen Mikrobefehls. Der Ergebnisdatenwert kann entweder
ein Ganzzahl-Datenwert oder ein Gleitkomma-Datenwert sein. Bei
einem Ausführungsbeispiel weist das Ergebnisdatenwertfeld jedes
ROB-Eintrags RE0 bis REn 86 Bits auf, um sowohl Ganzzahl- als
auch Gleitkomma-Datenwerte unterzubringen.
Die Flags und die Flag-Maske stellen spekulative Architek
tur-Flag-Informationen zur Verfügung. Die spekulativen Archi
tektur-Flag-Informationen werden bei der Ausscheidung bzw. Aus
sonderung der entsprechenden ROB-Einträge zu den Architektur-
Flags der Real-Register-Schaltung 44 übertragen.
Das logische Ziel LDST spezifiziert ein verbindliches Zu
standsregister in der Real-Register-Schaltung 44. Der Ergebnis
datenwert des entsprechenden ROB-Eintrags wird während der Aus
scheidung des ROB-Eintrags zu den durch LDST spezifizierten
verbindlichen Zustandsregistern übertragen.
Die Fehlerdaten enthalten Fehlerinformationen für die feh
lerhafte Verarbeitung bei der Mikrobefehlsausführung in der Be
fehlsheranhol- und Mikrobefehlsausgabe-Schaltung 32. Wenn ein
Fehler auftritt, liest der den Fehler behandelnde Mikrocode die
Fehlerdaten, um die Ursache des Fehlers festzustellen.
Das IPDELTA ist ein Makrobefehlszeiger-Deltawert, der den
dem physikalischen Register entsprechenden Makrobefehl identi
fiziert.
Die Umordnungsschaltung 42 empfängt die physikalischen Mi
krobefehle pmop_0 bis pmop_3 über den Mikrobefehlsbus 52. Die
Umordnungsschaltung 42 liest die von den physikalischen Mikro
befehlen pmop_0 bis pmop_3 spezifizierten Quelldaten von dem
Umordnungspuffer 82. Die Umordnungsschaltung 42 überträgt die
Ergebnisdatenwerte und die Gültig-Flags aus den von den physi
kalischen Quellen psrc1 und psrc2 der physikalischen Mikrobe
fehle spezifizierten ROB-einträgen zu der Reservierungs- und
Abfertigungs-Schaltung 38 über den Quelldatenbus 58.
Beispielsweise werden die Ergebnisdatenwerte und Gültig-
Flags aus den durch die physikalischen Quellen prsc1 und prsc2
der pmop_0 spezifizierten ROB-Einträgen als Quelldaten
src1/src2 data_0 über den Quelldatenbus 58 übertragen. Die
Quelldaten src1/src2 data_0 stellen die von den physikalischen
Quellen psrc1 und psrc2 des pmop_0 spezifizierten Quelldaten
zur Verfügung, wenn die entsprechenden Gültig-Flags gültige
Quelldaten anzeigen.
In ähnlicher Weise überträgt die Umordnungsschaltung 42 die
Ergebnisdatenwerte und Gültig-Flags von den geeigneten ROB-ein
trägen als Quelldaten src1/src2 data_1 bis src1/src2 data_3
über den Quelldatenbus 58 für die physikalischen Mikrobefehle
pmop_1 bis pmop_3.
Die Umordnungsschaltung 42 löscht die Gültig-Bits der von
den physikalischen Zielen pdst der über den Mikrobefehlsbus 52
empfangenen physikalischen Mikrobefehle pmop_0 bis pmop_3 spe
zifizierten ROB-Einträge. Die Umordnungsschaltung 42 löscht die
Gültig-Bits, um anzuzeigen, daß der entsprechende Ergebnisda
tenwert nicht gültig ist, weil die den Ergebnisdatenwert erzeu
genden physikalischen Mikrobefehle pmop_0 bis pmop_3 gerade in
der Reservierungs- und Abfertigungs-Schaltung 38 assembliert
werden.
Die Umordnungsschaltung 42 empfängt die logischen Ziele ld_
st_0 bis ldst_3 und die Makrobefehlszeiger-Deltas mipd_0 bis
mipd_3 über den Zielbus 54. Die Umordnungsschaltung 42 spei
chert die logischen Ziele ldst_0 bis ldst_3 in dem LDST-Feld
des ROB-Eintrags, der durch die physikalischen Ziele pdst der
physikalischen Mikrobefehle pmop_0 bis pmop_3 spezifiziert ist.
Die Umordnungsschaltung 42 speichert die Makrobefehlszeiger-
Deltas mipd_0 bis mipd_3 in den IPDELTA-Feldern der ROB-Einträ
ge, die von den physikalischen Zielen pdst der physikalischen
Mikrobefehle pmop_0 bis pmop_3 spezifiziert sind.
Beispielsweise speichert die Umordnungsschaltung 42 ldst_0
und mipd_0 in LDST und IPDELTA des ROB-Eintrags, der von dem
physikalischen Ziel pdst des pmop_0 spezifiziert ist. Das logi
sche Ziel in dem LDST-Feld eines ROB-Eintrags spezifiziert ein
verbindliches Zustandsregister in der Real-Register-Schaltung
44 für eine Ausscheidung des entsprechenden ROB-Eintrags. Das
Makrobefehlszeiger-Delta in dem IPDELTA-Feld eines ROB-Eintrags
spezifiziert den ursprünglichen Makrobefehl des entsprechenden
ROB-Eintrags.
Die Umordnungsschaltung 42 empfängt spekulative Rück
schreib-Ergebnisinformationen von der Ausführungseinheit 40
über den Ergebnisbus 62. Die spekulativen Rückschreib-Ergebnis
informationen von den Ausführungseinheiten EU0 bis EU4 weisen
Ergebnisdatenwerte, physikalische Ziele pdst und Fehlerdaten
auf.
Die Umordnungsschaltung 42 speichert die zurückgeschriebe
nen spekulativen Ergebnisinformationen von den Ausführungsein
heiten EU0 bis EU4 in die ROB-Einträge, die von den physikali
schen Zielen pdst auf dem Ergebnisbus 62 spezifiziert sind. Für
jede Ausführungseinheit EU0 bis EU4 speichert die Umordnungs
schaltung 42 den Ergebnisdatenwert in das Ergebnisdatenwertfeld
und die Fehlerdaten in das Fehlerdatenfeld des ROB-Eintrags,
der durch das physikalische Ziel pdst spezifiziert wurde.
Die Ergebnisdatenwerte von der Ausführungsschaltung 40 ent
halten jeweils ein Gültig-Flag. Jedes Gültig-Flag wird in dem
Gültig-Flag-Feld des durch das physikalische Ziel pdst spezifi
zierten ROB-Eintrags gespeichert. Die Ausführungseinheiten EU0
bis EU4 setzen die Gültig-Flags, um anzuzeigen, ob die entspre
chenden Ergebnisdatenwerte gültig sind.
Die Umordnungsschaltung 42 empfängt die physikalischen
Ziele der Ausscheidung über den Ausscheide-Mitteilungsbus 70.
Die physikalischen Ziele der Ausscheidung veranlassen die
Umordnungsschaltung 42, die spekulativen Ergebnisdatenwerte in
den ROB-Einträgen RE0 bis REn in den Architekturzustand ver
bindlich festzulegen, indem die spekulativen Ergebnisdatenwerte
über den Ausscheidungsbus 64 zu der Real-Register-Schaltung 44
übertragen werden.
Der Ausscheidungsbus 64 trägt die spekulativen Ergebnisse
für einen Satz von Ausscheidungs-Mikrobefehlen rm_0 bis rm_4.
Jeder Ausscheidungs-Mikrobefehl rm_0 bis rm_4 weist einen Er
gebnisdatenwert und ein logisches Ziel ldst von einem der ROB-
Einträge RE0 bis REn auf.
Die physikalischen Ausscheidungsziele von der Ausscheidelo
gik-Schaltung 46 veranlassen außerdem die Umordnungsschaltung
42, die Makrobefehlszeiger-Deltas für die auszuscheidenden ROB-
Einträge über den Makrobefehlszeiger-Offset-Bus 120 zu der Neu
start-Schaltung 48 zu übertragen.
Die Umordnungsschaltung 42 empfängt das Umordnungs-Löschsi
gnal 78 von der Neustart-Schaltung 48. Das Umordnungs-Löschsi
gnal 78 veranlaßt die Umordnungsschaltung 42, sämtliche ROB-
Einträge zu löschen.
Fig. 5 veranschaulicht die Reservierungs- und Abfertigungs
schaltung 38. Die Reservierungs- und Abfertigungs-Schaltung 38
implementiert eine Reservierungs-Abfertigungs-Tabelle 84, die
einen Satz von Reservierungsstationseinträgen RS0 bis RSx auf
weist. Die Reservierungs- und Abfertigungs-Schaltung 38 emp
fängt und speichert die physikalischen Mikrobefehle pmop_0 bis
pmop_3 in verfügbare Reservierungsstationseinträge RS0 bis RSx,
assembliert die Quelldaten für die physikalischen Mikrobefehle
in die Reservierungsstationseinträge RS0 bis RSx und fertigt
die fertigen physikalischen Mikrobefehle zur Ausführungsschal
tung 40 ab. Ein physikalischer Mikrobefehl ist fertig, wenn die
Quelldaten vollständig assembliert in einem Reservierungsstati
onseintrag RS0 bis RSx vorliegen.
Jeder Reservierungsstationseintrag RS0 bis RSx weist ein
Eintrag-Gültig-Flag, einen Befehlscode, ein Paar Quelldatenwer
te (SRC1/SRC2 DATA) und entsprechende Gültig-Flags (V), ein
Paar physikalischer Quellen (PSRC1/PSRC2), ein physikalisches
Ziel (PDST) und einen Ladepuffer-Kennzeichner (LBID) auf.
Das Eintrag-Gültig-Flag zeigt an, ob der entsprechende Re
servierungsstationseintrag RS0 bis RSx einen die Abfertigung
abwartenden physikalischen Mikrobefehl enthält.
Der Befehlscode spezifiziert eine Operation der Ausfüh
rungsschaltung 40 für den physikalischen Mikrobefehl in dem
entsprechenden Reservierungsstationseintrag RS0 bis RSx.
Die SRC1/SRC2 DATA-Felder der Reservierungsstationseinträge
RS0 bis RSx halten die Quelldatenwerte für die entsprechenden
physikalischen Mikrobefehle. Die entsprechenden Gültig-Flags
zeigen an, ob die Quelldatenwerte gültig sind.
Die physikalischen Quellen PSRC1/PSRC2 jedes Reservierungs
stationseintrags RS0 bis RSx spezifizieren die physikalischen
Ziele in der Umordnungsschaltung 42, die die Quelldaten für den
entsprechenden physikalischen Mikrobefehl halten. Die Reservie
rungs- und Abfertigungsschaltung 38 verwendet die physikali
schen Quellen PSRC1/PSRC2, um ein Rückschreiben der anhängigen
Quelldaten von der Ausführungsschaltung 40 zu der Umordnungs
schaltung 42 zu erfassen.
Das physikalische Ziel PDST jedes Reservierungsstationsein
trags RS0 bis RSx spezifiziert ein physikalisches Ziel in der
Umordnungsschaltung 42, das die spekulativen Ergebnisse für den
entsprechenden physikalischen Mikrobefehl halten soll.
Der Ladepuffer-Kennzeichner LBID (load buffer identifier)
jedes Reservierungsstationseintrags RS0 bis RSx spezifiziert
einen Ladepuffereintrag in der Speicherordnungsschaltung der
Ausführungsschaltung 40. Der Ladepuffereintrag ist gültig, so
fern der entsprechende Reservierungsstationseintrag einen phy
sikalischen Speicherlade-Mikrobefehl enthält.
Die Reservierungs- und Abfertigungs-Schaltung 38 empfängt
die physikalischen Mikrobefehle pmop_0 bis pmop_3 über den phy
sikalischen Mikrobefehlsbus 52. Die Reservierungs- und Abferti
gungs-Schaltung 38 empfängt außerdem die den Reservierungssta
tionseintrag auswählenden Signale 66 von der Zuweiser-Schaltung
36. Die Reservierungsstationseintrag-Auswahlsignale 66 spezifi
zieren die neuen Reservierungsstationseinträge.
Die Reservierungs- und Abfertigungs-Schaltung 38 speichert
den Befehlscode und die physikalischen Quellen psrc1 und psrc2
für jeden physikalischen Mikrobefehl pmop_0 bis pmop_3 in die
neuen Reservierungsstationseinträge RS0 bis RSx, die von den
Reservierungsstationseintrag-Auswahlsignalen 66 spezifiziert
werden. Die Reservierungs- und Abfertigungs-Schaltung 38 setzt
für jeden neuen Reservierungsstationseintrag das Eintrag-Gül
tig-Flag.
Die Reservierungs- und Abfertigungs-Schaltung 38 empfängt
Ladepuffer-Kennzeichner für physikalische Speicherlade-Mikrobe
fehle über den Ladebefehl-ID-Bus 72 von der Zuweiser-Schaltung
36. Die Reservierungs- und Abfertigungsschaltung 38 speichert
die Ladepuffer-Kennzeichner in die geeigneten LBID-Felder der
neuen Reservierungsstationseinträge RS0 bis RSx.
Die Reservierungs- und Abfertigungs-Schaltung 38 empfängt
die von den physikalischen Quellen psrc1 und psrc2 der physika
lischen Mikrobefehle pmop_0 bis pmop_3 spezifizierten Quellda
tenwerte und entsprechende Gültig-Flags von der Umordnungs
schaltung 42 und der Real-Register-Schaltung 44 über den Quell
datenbus 58. Die Reservierungs- und Abfertigungs-Schaltung 38
überträgt die Quelldatenwerte und Gültig-Flags in die SRC1/SRC2
DATA-Felder und Gültig-Flags der neuen Reservierungsstations
einträge, die den physikalischen Mikrobefehlen pmop_0 pmop_3
entsprechen.
Wenn die Eintrag-Gültig-Flags anzeigen, daß einer der oder
beide Quelldatenwerte für einen Reservierungsstationstabellen
eintrag RS0 bis RSx ungültig ist, dann wartet die Reservie
rungs- und Abfertigungs-Schaltung 38, bis die Ausführungsschal
tung 40 zuvor abgefertigte physikalische Mikrobefehle ausge
führt und die erforderlichen Quelldatenwerte erzeugt hat.
Die Reservierungs- und Abfertigungsschaltung 38 überwacht
die physikalischen Ziele pdst auf dem Ergebnisbus 62, sobald
die Ausführungsschaltung 40 Ergebnisdatenwerte zu der Umord
nungsschaltung 42 zurückschreibt. Wenn ein physikalisches Ziel
pdst auf dem Ergebnisbus 62 dem physikalischen Ziel der anhän
gigen Quelldaten für einen Reservierungsstationstabelleneintrag
RS0 bis RSx entspricht, dann empfängt die Reservierungs- und
Abfertigungs-Schaltung 38 den Ergebnisdatenwert über den Ergeb
nisbus 62 und speichert ihn in die entsprechenden SRC1/SRC2 DA-
TA-Felder und Gültig-Flags. Die Reservierungs- und Abferti
gungs-Schaltung 38 fertigt die anhängigen physikalischen Mikro
befehle zur Ausführungsschaltung 40 ab, sofern beide Quellda
tenwerte gültig sind.
Fig. 6 veranschaulicht die Real-Register-Schaltung 44. Die
Real-Register-Schaltung 44 implementiert eine Real-Register-Da
tei 86. Die Real-Register-Datei 86 weist einen Satz verbindli
cher Zustandsregister auf, die verbindliche Ergebnisdatenwerte
halten. Die verbindlichen Zustandsregister puffern verbindliche
Ergebnisse für die Architekturregister des ursprünglichen
Stroms von Makrobefehlen, der von der Befehlsheranhol- und Mi
krobefehlsausgabe-Schaltung 32 herangeholt wurde.
Die Ergebnisdatenwerte in jedem verbindlichen Zustandsregi
ster können entweder Ganzzahl-Datenwerte oder Gleitkomma-Daten
werte sein. Bei einem Ausführungsbeispiel weist das Ergebnisda
tenwertfeld jedes verbindlichen Zustandsregisters 86 Bits auf,
um sowohl Ganzzahl- als auch Gleitkomma-Datenwerte unterzubrin
gen.
Bei einem Ausführungsbeispiel weisen die verbindlichen Zu
standsregister verbindliche EAX-, EBX-, ECX- und EDX-Zustands
register usw. auf, die den Architekturregistern der Intel-Mi
kroprozessor-Architektur entsprechen. Die Real-Register-Datei
86 weist außerdem verbindliche Zustands-Flags auf, die den Ar
chitektur-Flags der Intel-Mikroprozessor-Architektur entspre
chen. Die Real-Register-Datei 86 weist ferner Mikrocode-Regi
ster auf, die bei der Mikrocode-Ausführung in der Befehlsheran
hol- und Mikrobefehlsausgabe-Schaltung 32 verwendet werden.
Die Real-Register-Schaltung 44 empfängt die physikalischen
Mikrobefehle pmop_0 bis pmop_3 über den Mikrobefehlsbus 52. Die
Real-Register-Schaltung 44 liest die Ergebnisdatenwerte aus den
von den physikalischen Quellen psrc1 und psrc2 der physikali
schen Mikrobefehle pmop_0 bis pmop_3 spezifizierten verbindli
chen Zustandsregistern von der Real-Register-Datei 86, sofern
die RRFV-Flags anzeigen, daß die physikalischen Quellen ausge
schieden sind.
Die Real-Register-Schaltung 44 überträgt die Ergebnisdaten
werte von den durch die physikalischen Quellen psrc1 und psrc2
der physikalischen Mikrobefehle spezifizierten verbindlichen
Zustandsregistern zu der Reservierungs- und Abfertigungsschal
tung 38 über den Quelldatenbus 58, sofern die RRFV-Flags anzei
gen, daß die physikalischen Quellen in die Real-Register-Datei
86 ausgeschieden sind. Die Real-Register-Schaltung 44 setzt
stets die Quelldaten-Gültig-Flags während der Übertragung der
Quelldaten zu der Reservierungs- und Abfertigungsschaltung 38
über den Quelldatenbus 58, weil die Ergebnisdaten in den ver
bindlichen Zustandsregistern stets gültig sind.
Beispielsweise wird der Ergebnisdatenwert von dem durch die
physikalische Quelle psrc1 des pmop_0 spezifizierten verbindli
chen Zustandsregisters als Quelldaten src1 data_0 über den
Quelldatenbus 58 übertragen, sofern das RRFV-Flag für die phy
sikalische Quelle psrc1 des pmop_0 gesetzt ist. Der Ergebnisda
tenwert von dem durch die physikalische Quelle psrc2 des pmop_0
spezifizierten verbindlichen Zustandsregisters wird als Quell
daten src2 data_0 über den Quelldatenbus 58 übertragen, sofern
das RRFV-Flag für die physikalische Quelle psrc2 des pmop_0 ge
setzt ist.
In ähnlicher Weise überträgt die Real-Register-Schaltung 44
Quelldaten src1/src2 data_1 bis src1/src2 data_3 über den
Quelldatenbus 58, um Quelldaten für die physikalischen Mikrobe
fehle pmop_1 bis pmop_3 zur Verfügung zu stellen, sofern die
geeigneten RRFV-Flags der physikalischen Mikrobefehle pmop_1
bis pmop_3 gesetzt sind.
Die Real-Register-Schaltung 44 empfängt die Ausscheide-Mi
krobefehle rm_0 bis rm_3 von der Umordnungsschaltung 42 über
den Ausscheidungsbus 64. Jeder Ausscheidungs-Mikrobefehl rm_0
bis rm_3 enthält spekulative Ergebnisse von einem der ROB-Ein
träge RE0 bis REn in dem Umordnungspuffer 82.
Jeder Ausscheidungs-Mikrobefehl rm_0 bis rm_3 weist einen
Ergebnisdatenwert und ein logisches Ziel ldst auf. Die Real-Re
gister-Schaltung 44 speichert die Ergebnisdatenwerte der Aus
scheidungs-Mikrobefehle rm_0 bis rm_3 in die durch die logi
schen Ziele ldst der Ausscheidungs-Mikrobefehle rm_0 bis rm_3
spezifizierten verbindlichen Zustandsregister der Real-Regi
ster-Datei 86.
Fig. 7 veranschaulicht eine Speicher-Ladeschaltung in der
Ausführungsschaltung 40. Die Speicher-Ladeschaltung weist eine
Adreßerzeugungsschaltung 100, eine Speicherordnungsschaltung
102, eine Datenübersetzungs-Nachschlagepuffer-Schaltung (DTLB-
Schaltung - data translate look-aside buffer) 104 und eine Da
ten-Cache-Schaltung 106 auf.
Die Adreßerzeugungsschaltung 100 empfängt die abgefertigten
physikalischen Speicher-Lademikrobefehle von der Reservierungs-
und Abfertigungs-Schaltung 38 über den Mikrobefehls-Abferti
gungsbus 60. Jeder abgefertigte physikalische Speicher-Lademi
krobefehl auf dem Mikrobefehls-Abfertigungsbus 60 weist einen
Befehlscode, ein Paar von Quelldatenwerten src1_data und
src2-data, ein physikalisches Ziel pdst und einen Ladepuffer-
Kennzeichner lbid (lbid - load buffer identifier).
Die Adreßerzeugungsschaltung 100 bestimmt eine lineare
Adresse für jeden abgefertigten physikalischen Speicher-Lademi
krobefehl entsprechend den Quelldatenwerten src1_data und
src2_data. Die lineare Adresse kann auch als virtuelle Adresse
bezeichnet werden. Bei einem Ausführungsbeispiel implementiert
die Adreßerzeugungsschaltung 100 Speichersegmentregister und
erzeugt die lineare Adresse entsprechend der Speichersegmentie
rung der Intel-Mikroprozessor-Architektur.
Die Adreßerzeugungsschaltung 190 überträgt lineare Spei
cher-Lademikrobefehle zur Speicherordnungsschaltung 102 über
einen linearen Befehlsbus 90. Jede lineare Speicher-Ladeopera
tion auf dem linearen Befehlsbus 90 entspricht einem über den
Mikrobefehls-Abfertigungsbus 60 empfangenen abgefertigten phy
sikalischen Speicher-Lademikrobefehl. Jeder lineare Speicher-
Lademikrobefehl weist den Befehlscode des entsprechenden physi
kalischen Speicher-Lademikrobefehls, die von den entsprechenden
Quelldatenwerten src1_data und src2_data bestimmte lineare
Adresse l-addr, das entsprechende physikalische Ziel pdst und
den entsprechenden Ladepuffer-Kennzeichner lbid auf.
Die Speicherordnungsschaltung 102 enthält einen Ladepuffer.
Die Speicherordnungsschaltung 102 empfängt die linearen Spei
cher-Lademikrobefehle über den linearen Befehlsbus 90. Die
Speicherordnungsschaltung 102 speichert die linearen Speicher-
Lademikrobefehle in dem Ladepuffer entsprechend dem Ladepuffer-
Kennzeichner lbid. Die Speicherordnungsschaltung 102 fertigt
die linearen Speicher-Lademikrobefehle von dem Ladepuffer zu
der DTLB-Schaltung 104 über den linearen Befehlsbus 90 ab.
Die DTLB-Schaltung 104 empfängt von der Speicherordnungs
schaltung 102 die abgefertigten linearen Speicher-Lademikrobe
fehle über den linearen Befehlsbus 90. Die DTLB-Schaltung 104
stellt für jeden von der Speicherordnungsschaltung 102 empfan
genen linearen Speicher-Lademikrobefehl über einen Lesebus 94
eine physikalische Adresse für die Daten-Cache-Schaltung 106
zur Verfügung.
Die DTLB-Schaltung 104 konvertiert die entsprechende linea
re Adresse l_addr in eine physikalische Adresse für das Spei
cher-Subsystem 26. Die DTLB-Schaltung 104 bildet die lineare
Adresse l-addr jedes linearen Speicher-Lademikrobefehls ent
sprechend einem vorgegebenen Speicher-Seitenwechselmechanismus
in eine physikalische Adresse ab.
Die DTLB-Schaltung 104 überträgt die der linearen Adresse
l_addr jedes linearen Speicher-Lademikrobefehls entsprechende
abgebildete physikalische Adresse zu der Speicherordnungsschal
tung 102 über einen physikalischen Adreßbus 96. Die Speicher
ordnungsschaltung 102 speichert die physikalische Adresse für
jeden linearen Speicher-Lademikrobefehl in dem entsprechenden
Ladepuffereintrag. Bei einem Ausführungsbeispiel speichert die
Speicherordnungsschaltung 102 einen Abschnitt der physikali
schen Adresse für jeden linearen Speicher-Lademikrobefehl in
dem entsprechenden Ladepuffereintrag.
Die Daten-Cache-Schaltung 106 liest die von der physikali
schen Adresse auf dem Lesebus 94 spezifizierten Daten ein. Wenn
die physikalische Adresse einen Cache-Fehlversuch veranlaßt,
dann holt die Daten-Cache-Schaltung 106 die erforderliche
Cache-Zeile aus dem Speicher-Subsystem 26 heran. Die Daten-
Cache-Schaltung 106 empfängt Cache-Zeilen aus dem Speicher-
Subsystem 26 über einen Schnittstellenbus 74 und die Bus
schnittstellenschaltung 30, welche mit dem Mehrprozessor-Bus 28
gekoppelt ist.
Die Daten-Cache-Schaltung 106 überträgt die gelesenen Er
gebnisdaten, ein entsprechendes Gültig-Bit und Fehlerdaten für
den Lesezugriff zu der Umordnungsschaltung 42 und der Reservie
rungs- und Abfertigungsschaltung 38 über den Ergebnisbus 62.
Der Ergebnisbus 62 trägt außerdem das physikalische Ziel von
dem entsprechenden Ladepuffer in der Speicherordnungsschaltung
102.
Die Speicherordnungsschaltung 102 erfaßt bzw. überwacht
("snoops") Buszyklen auf dem Mehrprozessor-Bus 28 über die Bus-
Schnittstellen-Schaltung 30 und den Schnittstellenbus 74. Die
Speicherordnungsschaltung 102 überwacht den Mehrprozessor-Bus
28 hinsichtlich einer externen Speicher-Operation oder einer
Lese-Operation für einen Besitz durch einen der Prozessoren 23-
24, die eine Prozessorordnungsverletzung für eine der abgefer
tigten linearen Speicher-Lademikrobefehle bewirken kann. Die
Speicherordnungsschaltung 102 überwacht den Mehrprozessor-Bus
28 hinsichtlich einer externen Speicher-Operation, die auf eine
physikalische Adresse eines bereits abgefertigten, in dem Lade
puffer gespeicherten linearen Speicher-Lademikrobefehls gerich
tet ist.
Während der Ausscheidung bzw. Aussonderung jedes physikali
schen Speicher-Lademikrobefehls erzeugt die Speicherordnungs
schaltung 102 die Speicherordnungs-Neustart-Signale 76, um eine
mögliche Prozessorordnungsverletzung entsprechend der Überwa
chungs- bzw. Snoop-Erfassung anzuzeigen.
Fig. 8 veranschaulicht die Speicherordnungsschaltung 102.
Die Speicherordnungsschaltung 102 implementiert einen Ladepuf
fer 88, der einen Satz von Ladepuffereinträgen LB0 bis LBn auf
weist. Jeder Ladepuffereintrag LB0 bis LBn erhält einen linea
ren Speicher-Lademikrobefehl von der Adreßerzeugungsschaltung
100.
Jeder Puffereintrag LB0 bis LBn weist einen Befehlscode,
ein physikalisches Ziel (PDST), eine lineare Adresse, eine phy
sikalische Adresse, einen Lade-Status und ein Snoop-Treffer-
Flag auf.
Die Speicherordnungsschaltung 102 empfängt die linearen
Speicher-Lademikrobefehle über den Mikrobefehls-Abfertigungsbus
60. Die Speicherordnungsschaltung 102 speichert jeden linearen
Speicher-Lademikrobefehl in einen Ladepuffereintrag LB0 bis LB-
n, der von dem entsprechenden Ladepuffer-Kennzeichner lbid spe
zifiziert ist.
Die Speicherordnungsschaltung 102 setzt einen "Gültig"-Sta
tus für jeden neuen linearen Speicher-Lademikrobefehl in dem
Ladepuffer 88. Der "Gültig"-Status zeigt an, daß der entspre
chende Ladepuffereintrag LB0 bis LBn einen nicht ausgeschiede
nen Speicher-Lademikrobefehl enthält.
Die Speicherordnungsschaltung 102 speichert den Befehls
code, das physikalische Ziel pdst und die lineare Adresse
l_addr jedes linearen Speicher-Lademikrobefehls in die entspre
chenden Felder des Ladepuffereintrags LB0 bis LBn, der von dem
Ladepuffer-Kennzeichner lbid des linearen Speicher-Lademikrobe
fehls spezifiziert wurde.
Die Speicherordnungsschaltung 102 empfängt die den linearen
Speicher-Lademikrobefehlen entsprechenden physikalischen Adres
sen p_addr von der DTLB-Schaltung 104 über den physikalischen
Adreßbus 96. Die Speicherordnungsschaltung 102 speichert die
physikalische Adresse für jeden linearen Speicher-Lademikrobe
fehl in das physikalische Adreßfeld des entsprechenden Ladepuf
fereintrags LB0 bis LBn.
Bei einem Ausführungsbeispiel weisen die physikalischen
Adressen auf dem physikalischen Adreßbus 96 die Bits 12-19
der von der DTLB-Schaltung 104 für die entsprechenden linearen
Speicher-Lademikrobefehle erzeugten physikalischen Adresse auf.
Die Speicherordnungsschaltung 102 fertigt entsprechend der
Verfügbarkeit von Ressourcen in der DTLB-Schaltung 104 die li
nearen Speicher-Lademikrobefehle von den Ladepuffereinträgen
LB0 bis LBn über den linearen Befehlsbus 90 ab. Die Speicher
ordnungsschaltung 102 setzt einen "Vollständig"-Status für je
den zu der DTLB-Schaltung 104 abgefertigten linearen Speicher-
Lademikrobefehl.
Die Speicherordnungsschaltung 102 überwacht ("snoops") den
Mehrprozessor-Bus 28 hinsichtlich externer Speicheroperationen,
die eine Prozessorordnungsverletzung bewirken können. Die Spei
cherordnungsschaltung 102 überwacht den Mehrprozessor-Bus 28
hinsichtlich externer Speicherungen zu einer der physikalischen
Adressen, die durch die Ladepuffereinträge LB0 bis LBn mit ei
nem "Vollständig"-Status spezifiziert sind. Die Speicherord
nungsschaltung 102 erfaßt eine externe physikalische Adresse
snoop_addr und ein entsprechendes Signal snoop_addr_valid von
dem Mehrprozessor-Bus 28 über den Schnittstellenbus 74. Das Si
gnal snoop_addr-valid spezifiziert eine gültige Adresse für ei
ne Speicheroperation auf dem Mehrprozessor-Bus 28.
Bei einem Ausführungsbeispiel weist die physikalische
Adresse auf dem Mehrprozessor-Bus 40 Bits (Bits 0 bis 39) auf.
Bits 0 bis 11 der linearen Adresse für einen linearen Speicher-
Lademikrobefehl sind gleich den Bits 0-11 der entsprechenden
physikalischen Adresse. Die Speicherordnungsschaltung 102 erfaßt
einen Prozessorordnungs-"Snoop_Treffer", indem sie die Bits 5-11
der physikalischen Adresse von externen Speicheroperationen
auf dem Mehrprozessor-Bus 28 mit den Bits 5-11 der linearen
Adresse der Ladepuffereinträge LB0 bis LBn mit einem
"Vollständig"-Status vergleicht. Die Speicherordnungsschaltung
102 vergleicht außerdem die Bits 12 bis 19 der physikalischen
Adresse externer Speicheroperationen auf dem Mehrprozessor-Bus
28 mit den Bits 12-19 der physikalischen Adresse der Ladepuf
fereinträge LB0 bis LBn, die einen "Vollständig"-Status haben.
Die Speicherordnungsschaltung 102 setzt das Snoop-Treffer-
Flag für die Ladepuffereinträge LB0 bis LBn, was einen Prozes
sorordnungs-Snoop-Treffer veranlaßt. Die Speicherordnungsschal
tung 102 setzt das Snoop-Treffer-Flag nicht, wenn der einen
Prozessorordnungs-Snoop-Treffer veranlassende Ladepuffereintrag
LB0 bis LBn den ältesten linearen Speicher-Lademikrobefehl in
dem Ladepuffer 88 enthält. Ein Snooping bzw. Überwachen für den
ältesten linearen Speicher-Lademikrobefehl in dem Ladepuffer 88
ist gesperrt durch ein Löschen eines entsprechenden Snoop-Frei
gabe-Flags des geeigneten Ladepuffereintrags LB0 bis LBn.
Die Speicherordnungsschaltung 102 empfängt die physikali
schen Ausscheidungsziele von der Ausscheide-Logikschaltung 46
über den Ausscheide-Mitteilungsbus 70. Die Speicherordnungs
schaltung 102 gibt die Speicherordnungs-Neustart-Signale 76
aus, um eine mögliche Prozessorordnungsverletzung anzuzeigen,
sofern bei einem der durch die physikalischen Ausscheidungszie
le spezifizierten Ladepuffereinträge LB0 bis LBn das entspre
chende Snoop-Treffer-Flag gesetzt ist.
Fig. 9 veranschaulicht die Snoop-Erfassungsschaltungsanord
nung in der Speicherordnungsschaltung 102. Die Snoop-Erfas
sungsschaltungsanordnung enthält jeweils eine Snoop-Erfassungs
schaltung für jeden Ladepuffereintrag LB0 bis LBn in der Spei
cherordnungsschaltung 102.
Beispielsweise ist die Snoop-Erfassungsschaltung 200 dem
Ladepuffereintrag LB0 zugeordnet. Die Snoop-Erfassungsschaltung
200 weist ein Gültig-Register 210, ein Vollständig-Register
214, ein physikalisches Adreßregister 216, ein lineares Adreß
register 218, ein Snoop-Freigabe-Register 212 und ein Snoop-
Treffer-Register 222 auf.
Das Gültig-Register 210 enthält den "Gültig"-Status, der
anzeigt, ob der Ladepuffereintrag LB0 eine gültige Speicher-La
deoperation enthält. Das Vollständig-Register 214 enthält den
"Vollständig"-Status, der anzeigt, ob die Speicher-Ladeopera
tion für den entsprechenden Ladepuffereintrag LB0 abgefertigt
wurde. Das physikalische Adreßregister 216 hält die physikali
schen Adreßbits 19-12, die dem Ladepuffereintrag LB0 entspre
chen. Das lineare Adreßregister 218 speichert die Bits 11-5
der linearen Adresse der dem Ladepuffereintrag LB0 entsprechen
den Speicher-Ladeoperation. Das Snoop-Freigabe-Register 212
enthält ein Snoop-Freigabe-Flag, das ein Überwachen (snooping)
externer Speicherungen für den Ladepuffereintrag LP0 freigibt
bzw. sperrt.
Das physikalische Adreßregister 216 empfängt einen Satz von
Snoop-Adreßbits 230. Die Snoop-Adreßbits 230 weisen die Bits 19
bis 12 des über dem Schnittstellenbus 74 empfangenen snoop_addr
auf. Das physikalische Adreßregister 216 gibt ein Physikalische-
Adresse-Erfaßt-Signal 236 aus, wenn die physikalischen Adreß
bits 230 gleich den dem Ladepuffereintrag LB0 entsprechenden
physikalischen Adreßbits 19-12 sind.
Das lineare Adreßregister 218 empfängt einen Satz physika
lischer Adreßbits 232. Die physikalischen Adreßbits 232 weisen
die Bits 11 - 5 des über den Schnittstellenbus 74 empfangenen
snoop_addr auf. Das lineare Adreßregister 218 erzeugt ein Li
neare-Adresse-Erfaßt-Signal 237, wenn die physikalischen Adreß
bits 232 gleich den Bits 11 - 5 der dem Ladepuffereintrag LB0
entsprechenden linearen Adresse sind.
Das Signal snoop_addr_valid 234 wird über den Schnittstel
len-Bus 74 empfangen. Das Signal snoop_addr_valid 234 zeigt an,
daß das Signal snoop_addr auf dem Schnittstellen-Bus 74 einer
gültigen externen Speicheroperation entspricht. Das Ausgangssi
gnal eines UND-Gatters 220 setzt ein Snoop-Treffer-Flag in dem
Snoop-Treffer-Register 222, indem es das Physikalische-Adresse-
Erfaßt-Signal 236 sowie das Lineare-Adresse-Erfaßt-Signal 237,
den "Vollständig"- und den "Gültig"-Status und das Snoop-Frei
gabe-Flag kombiniert.
Fig. 10 veranschaulicht eine Mitteilungs-Schaltungsanord
nung in der Speicherordnungsschaltung 102, die die Speicherord
nungs-Neustart-Signale 76 erzeugt. Die Speicherordnungsschal
tung 102 enthält eine Mitteilungsschaltung für jeden der Lade
puffereinträge LB0 bis LBn.
Beispielsweise ist die Mitteilungsschaltung 250 dem Lade
puffereintrag LB0 zugeordnet. Das Snoop-Treffer-Register 222
enthält das Snoop-Treffer-Flag für den Ladepuffereintrag LB0.
Ein Physikalisches-Ziel-Register 260 (PDST-Register - physical
destination register) enthält das dem Ladepuffereintrag LB0
entsprechende physikalische Ziel.
Das PDST-Register 260 empfängt einen Satz von physikali
schen Ausscheidungs-Zielen 270-272 über den Ausscheide-Mit
teilungsbus 70, die den nächsten Satz von auszuscheidenden phy
sikalischen Mikrobefehlen anzeigen. Das PDST-Register erzeugt
einen Satz von Steuersignalen 300-302. Die Steuersignale
300-302 zeigen an, ob irgendeines der physikalischen Ausscheidun
gs-Ziele 270-272 mit dem physikalischen Ziel in dem Ladepuf
fereintrag LB0 übereinstimmt.
Beispielsweise erzeugt das PDST-Register 260 das Steuersi
gnal 300, um anzuzeigen, daß das physikalische Ausscheidungs-
Ziel 270 mit dem physikalischen Ziel in dem Ladepuffereintrag
LB0 übereinstimmt. In ähnlicher Weise erzeugt das PDST-Register
260 das Steuersignal 301, um anzuzeigen, daß das physikalische
Ausscheidungs-Ziel 271 mit dem physikalischen Ziel in dem Lade
puffereintrag LB0 übereinstimmt und das Steuersignal 302, um
anzuzeigen, daß das physikalische Ausscheidungs-Ziel 272 mit
dem physikalischen Ziel in dem Ladepuffereintrag LB0 überein
stimmt.
Die Speicherordnungs-Neustart-Schaltung 250 empfängt einen
Satz von Physikalisches-Ausscheidungs-Ziel-Gültig-Flags
280-282 über den Ausscheide-Mitteilungsbus 70. Die Physikalisches-
Ausscheidungs-Ziel-Gültig-Flags 280-282 zeigen an, ob die
physikalischen Ausscheidungs-Ziele 270-272 gültig sind.
Beispielsweise zeigt das Physikalisches-Ausscheidungs-Ziel-
Gültig-Flag 280 an, ob das physikalische Ausscheidungs-Ziel 270
gültig ist. In gleicher Weise zeigt das Physikalisches-Aus
scheidungs-Ziel-Gültig-Flag 281 an, ob das physikalische Aus
scheidungs-Ziel 271 gültig ist und das Physikalisches-Aus
scheidungs-Ziel-Gültig-Flag 282, ob das physikalische Aus
scheidungs-Ziel 272 gültig ist.
Die Steuersignale 300-302 und die Physikalisches-Aus
scheidungs-Ziel-Gültig-Flags 280-282 werden mit dem Snoop-
Treffer-Flag durch einen Satz von UND-Gattern 310-312 kombi
niert. Die Ausgangssignale der UND-Gatter 310-312 werden in
einem Register 262 gespeichert. Die Ausgangssignale des Regi
sters 262 werden durch ein Taktsignal 350 synchronisiert.
Das Register 262 speichert die Speicherordnungs-Neustart-
Flags für den Ladepuffereintrag LB0. Die Ausgangssignale der
UND-Gatter 320-322 steuern einen Satz von Pull-Down-Transi
storen Q1, Q2 und Q3. Die Pull-Down-Transistoren Q1, Q2 und Q3
sind mit einem Satz von Speicherordnungs-Neustart-Signalleitun
gen 290-292 gekoppelt. Die Speicherordnungs-Neustart-Signal
leitungen 290-292 sind außerdem mit einem Satz von Pull-Up-
Transistoren Q4, Q5 und Q6 gekoppelt, welche durch das Taktsi
gnal 350 synchronisiert sind.
Wenn das Steuersignal 300 anzeigt, daß das physikalische
Ausscheidungsziel 270 mit dem physikalischen Ziel in dem Lade
puffereintrag LB0 übereinstimmt und wenn das Physikalisches-Aus
scheidungs-Ziel-Gültig-Flag 280 anzeigt, daß das physikalische
Ausscheidungsziel 270 gültig ist, und wenn das Snoop-Treffer-
Flag für den Ladepuffereintrag LB0 gesetzt ist, dann schaltet
das Ausgangssignal des UND-Gatters 320 den Transistor Q1 ein.
Der Transistor Q1 zieht die Spannung auf der Speicherordnungs-
Neustart-Signalleitung 290 herunter (pull down), um anzuzeigen,
daß der von dem physikalischen Ausscheidungsziel 270 spezifi
zierte physikalische Mikrobefehl eine mögliche Prozessorord
nungsverletzung veranlaßt hat.
In gleicher Weise zeigt die Speicherordnungs-Neustart-Si
gnalleitung 291 an, daß der von dem physikalischen Ausschei
dungsziel 271 spezifizierte physikalische Mikrobefehl eine mög
liche Prozessorordnungsverletzung veranlaßt hat, und die Spei
cherordnungs-Neustart-Signalleitung 299 zeigt an, das der von
dem physikalischen Ausscheidungs-Ziel 272 spezifizierte physi
kalische Mikrobefehl eine mögliche Prozessorordnungsverletzung
bewirkt hat.
Fig. 11 veranschaulicht eine Lade-Mikrobefehlsausgabe durch
die Befehlsheranhol- und Mikrobefehlsausgabe-Schaltung 32. Der
logische Mikrobefehl (ld 0×100, EBX, EAX) wird von der Befehls
heranhol- und Mikrobefehlsausgabe-Schaltung 32 über den Mikro
befehlsbus 50 übertragen. Der logische Mikrobefehl ld 0×100,
EBX, EAX spezifiziert eine Speicher-Ladeoperation aus dem Spei
cher-Subsystem 26 in das Architekturregister EAX. Die Adresse
wird durch den Inhalt des Architekturregisters EBX und ein
Offset von 100 hex spezifiziert.
Die Zuweiser-Schaltung 36 empfängt den logischen Mikrobe
fehl ld 0×100, EBX, EAX über den Mikrobefehlsbus 50 und erzeugt
ein physikalisches Ziel pdst, was gleich 42 ist. Die Zuweiser-
Schaltung 36 überträgt das pdst 42 zu der Register-Alias-Schal
tung 34 über den Physikalische-Ziele-Bus 56.
Die Register-Alias-Schaltung 34 empfängt das physikalische
Ziel pdst 42 und übersetzt den logischen Mikrobefehl ld 0×100,
EBX, EAX in einen physikalischen Mikrobefehl ld 100, 35, 42.
Das Argument 100 gibt an, daß psrc1 ein konstanter Datenwert
gleich 100 hex ist. Das Argument 35 gibt an, daß psrc2 der
Eintrag RE35 in dem Umordnungspuffer 82 ist, der dem ROB-Zeiger
und dem RRFV-Flag für den EBX-Eintrag in der Register-Alias-Ta
belle 80 entspricht.
Die Register-Alias-Schaltung 34 überträgt den physikali
schen Mikro 11243 00070 552 001000280000000200012000285911113200040 0002004429921 00004 11124befehl ld 100, 35, 42 zu der Reservierungs- und Ab
fertigungs-Schaltung 38, der Umordnungsschaltung 42 und der Re
al-Register-Schaltung 44 über den Mikrobefehlsbus 52.
Die Register-Alias-Schaltung 34 speichert das zugewiesene
pdst 42 für den physikalischen Mikrobefehl ld 100, 35, 42 in
den ROB-Zeiger des EAX-Eintrags in der Register-Alias-Tabelle
80. Die Register-Alias-Schaltung 34 löscht außerdem das RRFV-
Bit für den EAX-Eintrag in der Register-Alias-Tabelle 80, um
anzuzeigen, daß das logische Register EAX in den Umordnungspuf
fer 82 in einem spekulativen Zustand abgebildet worden ist.
Die Umordnungsschaltung 42 und die Real-Register-Schaltung
44 empfangen den physikalischen Mikrobefehl ld 100, 35, 42 über
den Mikrobefehlsbus 52. Die Umordnungsschaltung 42 liest Quell
daten für die physikalische Quelle psrc2 35, indem sie den ROB-
Eintrag RE35 des Umordnungspuffers 82 liest. Der ROB-Eintrag RE
35 des Umordnungspuffers 82 enthält einen Ergebnisdatenwert
gleich 2000 und ein gesetztes Gültig-Bit für den aktuellen spe
kulativen Zustand des Architekturregisters EBX.
Die Umordnungsschaltung 42 überträgt den Ergebnisdatenwert
2000 und den konstanten Datenwert 100 gemeinsam mit den ent
sprechenden Gültig-Bits zu der Reservierungs- und Abfertigungs-
Schaltung 38 über den Quelldatenbus 58 als Quelldatenpaar
src1/src2 data.
Die Umordnungsschaltung 42 empfängt das logische Ziel ldst
EAX für den physikalischen Mikrobefehl 100, 35, 42 über den lo
gischen Zielbus 54. Die Umordnungsschaltung 42 speichert das
logische Ziel ldst EAX in das LDST des Eintrags RE42 des Umord
nungspuffers 82. Die Umordnungsschaltung 42 löscht das Gültig-
Flag des Eintrags RE42 des Umordnungspuffers 82, um anzuzeigen,
daß die entsprechenden Ergebnisdaten nicht gültig sind.
Die Reservierungs- und Abfertigungsschaltung 38 empfängt
den physikalischen Mikrobefehl ld 100, 35, 42 über den physika
lischen Mikrobefehlsbus 52. Die Reservierungs- und Abferti
gungs-Schaltung 38 speichert den Befehlscode ld in das Befehls
code-Feld des Eintrags RS0 der Reservierungsstationstabelle 84
wie durch die Zuweiser-Schaltung 36 spezifiziert. Die Reservie
rungs- und Abfertigungs-Schaltung 38 speichert das physikali
sche Ziel pdst 42 in das PDST des Eintrags RS0 der Reservie
rungsstationstabelle 84. Die Reservierungs- und Abfertigungs-
Schaltung 38 speichert die physikalischen Quellen psrc1 xxx und
psrc2 35 in die PSRC1/PSRC2 des Eintrags RS0 der Reservierungs
stationstabelle 84. Die Reservierungs- und Abfertigungs-Schal
tung 38 setzt außerdem das Eintrag-Gültig-Flag des Eintrags RS0
der Reservierungsstationstabelle 84.
Die Reservierungs- und Abfertigungs-Schaltung 38 empfängt
die Quelldatenwerte src1/src2 data 100 und 2000 und entspre
chende Gültig-Flags über den Quelldatenbus 58. Die Reservie
rungs- und Abfertigungsschaltung 38 speichert die Quelldaten
werte src1/src2 data 100 und 2000 und entsprechende Gültig-
Flags in die SRC1/SRC2- und V-Felder des Eintrags RS0 der Re
servierungsstationstabelle 84.
Die Reservierungs- und Abfertigungs-Schaltung 38 empfängt
einen Ladepuffer-Kennzeichner lbid = 4 für den physikalischen
Mikrobefehl ld 100, 35, 42 von der Zuweiser-Schaltung 36 über
den Ladepuffer ID-Bus 72. Die Reservierungs- und Abfertigungs-
Schaltung 38 speichert den Ladepuffer-Kennzeichner lbid = 4 in
das LBID-Feld des Eintrags RS0 der Reservierungsstationstabelle
84.
Die Reservierungs- und Abfertigungsschaltung 38 fertigt den
physikalischen Speicher-Lademikrobefehl ld 100, 2000, 42, lbid
= 4 an die Adreßerzeugungsschaltung 100 über den Mikrobefehls
abfertigungsbus 60 ab. Die Adreßerzeugungsschaltung 100 konver
tiert die Quelldatenwerte 100, 2000 in eine lineare Adresse
32100 entsprechend den Segmentregisterwerten. Dann überträgt
die Adreßerzeugungsschaltung 100 einen entsprechenden linearen
Speicher-Lademikrobefehl ld 32100, 42, lbid = 4 an die Speiche
rordnungs-Schaltung 102 über den linearen Operationsbus 90.
Die Speicherordnungs-Schaltung 102 empfängt den linearen
Speicher-Lademikrobefehl ld 32100, 42, lbid = 4 über den linea
ren Befehlsbus 90. Die Speicherordnungsschaltung 102 speichert
den linearen Speicher-Lademikrobefehl ld 32100, 42, lbid = 4 in
den Eintrag LB4 des Ladepuffers 88 wie durch den entsprechenden
Ladepuffer-Kennzeichner lbid = 4 spezifiziert. Die Speicherord
nungs-Schaltung 102 setzt einen "Gültig"-Ladestatus für den La
depuffereintrag LB4.
Die Speicherordnungsschaltung 102 enthält außerdem einen
älteren linearen Speicher-Lademikrobefehl ld 31000, 41 im Ein
trag LB3 des Ladepuffers 88, der einen "Vollständig"-Status
hat. Der "Vollständig"-Status zeigt an, daß der lineare Spei
cher-Lademikrobefehl ld 31000, 41 an die DTLB-Schaltung 104 zur
Ausführung abgefertigt worden ist. Der Ladepuffereintrag LB3
enthält die physikalischen Adreßbits 6-19, die gleich 1040
hex sind, welche einer physikalischen Adresse gleich 41000 ent
sprechen, die durch die DTLB-Schaltung 104 für die lineare
Adresse 31000 erzeugt wurde.
Fig. 12 veranschaulicht die Abfertigung und Ausscheidung
des linearen Speicher-Lade-Mikrobefehls ld 32100, 42, lbid = 4.
Die Speicherordnungsschaltung 102 fertigt den linearen Spei
cher-Lademikrobefehl ld 32100, 42 von dem Ladepuffereintrag LB4
an die DTLB-Schaltung 104 über den linearen Befehlsbus 90 ab.
Die Speicherordnungsschaltung 102 setzt dann den "Vollständig"-
Status für den Ladepuffereintrag LB4.
Die DTLB-Schaltung 104 erzeugt eine physikalische Adresse
gleich 42100 für die lineare Adresse 32100 des linearen Spei
cher-Lademikrobefehls ld 32100, 42. Die DTLB-Schaltung 104
führt einen Lesezugriff auf die Daten-Cache-Schaltung 106 an
der physikalischen Adresse 42100 über den Lesebus 94 aus.
Die Speicherordnungsschaltung 102 empfängt die physikali
schen Adreßbits 6-19, die gleich 1084 sind und dem linearen
Speicher-Lademikrobefehl ld 32100, 42 entsprechen, über den
physikalischen Adreßbus 96. Die Speicherordnungsschaltung 102
speichert die physikalischen Adreßbits 6-19, die gleich 1084
sind, in das physikalische Adreßfeld des Ladepuffereintrags
LB4.
Die Daten-Cache-Schaltung 106 überträgt den Ergebnisdaten
wert, der gleich 225 ist, für das Lesen an der physikalischen
Adresse 42100, ein entsprechendes Gültig-Bit und Fehlerdaten
für den Lesezugriff an die Umordnungsschaltung 42 und die Re
servierungs- und Abfertigungs-Schaltung 38 über den Ergebnisbus
62. Der Ergebnisbus 62 trägt außerdem das physikalische Ziel
42, das den Ergebnisdaten für den linearen Speicher-Lademikro
befehl ld 32100, 42 entspricht.
Die Umordnungsschaltung 42 speichert die Ergebnisdaten, die
gleich 225 sind, und ein entsprechendes Gültig-Bit in den Ein
trag RE42 des Umordnungspuffers 82 wie von dem physikalischen
Ziel 42 auf den Ergebnisbus 62 spezifiziert.
Die Speicherordnungsschaltung 102 erfaßt einen Snoop-Tref
fer auf dem Mehrprozessor-Bus 28 für eine externe Speicherung,
bei der die physikalischen Adreßbits 6-19 gleich 1084 sind.
Die physikalischen Adreßbits 6-19, die gleich 1084 sind, ent
sprechen dem Eintrag LB4 des Ladepuffers 88. Die Speicherord
nungsschaltung 102 setzt das Snoop-Treffer-Flag für den Eintrag
LB4, um den Prozessorordnungs-Snoop-Treffer anzuzeigen.
Die Speicherordnungsschaltung 102 erfaßt außerdem einen
Snoop-Treffer auf dem Mehrprozessor-Bus 28 für eine externe
Speicherung, bei der die physikalischen Adreßbits 6-19 gleich
1040 sind. Die Speicherordnungsschaltung 102 setzt nicht das
Snoop-Treffer-Flag für den Eintrag LB3, weil der lineare Spei
cher-Lademikrobefehl ld 31000, 41 der älteste lineare Speicher-
Lademikrobefehl in dem Ladepuffer 88 ist.
Die Speicherordnungsschaltung 102 empfängt dann einen Satz
von physikalischen Ausscheidungs-Zielen 40, 41, 42 von der Aus
scheide-Logikschaltung 46 über dem Ausscheide-Mitteilungsbus
70. In Antwort darauf gibt die Speicherordnungsschaltung 102
die Speicherordnungs-Neustart-Signale 76 aus, um eine mögliche
Prozessorordnungsverletzung für den linearen Speicher-Lademi
krobefehl ld 32100, 42 anzuzeigen.
Die Speicherordnungs-Neustart-Signale 76 bewirken, daß die
Neustart-Schaltung 48 das Umordnungs-Löschsignal 78 ausgibt.
Das Umordnungs-Löschsignal 78 veranlaßt die Umordnungsschaltung
42, die spekulativen Ergebnisdaten für die nicht ausgeschiede
nen physikalischen Mikrobefehle in dem Umordnungspuffer 82 zu
löschen, und veranlaßt die Reservierungs- und Abfertigungs-
Schaltung 38, die anhängigen physikalischen Mikrobefehle, die
auf eine Abfertigung zur Ausführungsschaltung 40 warten, zu lö
schen. Das Umordnungs-Löschsignal 78 veranlaßt außerdem die Zu
weiser-Schaltung 36, den Zuweisungszeiger für die Zuweisung der
physikalischen Register in der Umordnungsschaltung 42 zurückzu
setzen, und die Ausscheide-Logikschaltung 46, den Ausschei
dungszeiger zum Ausscheiden der physikalischen Register zurück
zusetzen.
Die Neustart-Schaltung 48 verwendet die Makrobefehlszeiger-
Deltawerte, die über den Makrobefehlszeiger-Offset-Bus 120 emp
fangen wurden, um einen Neustart-Befehlszeigerwert zu berech
nen. Die Neustart-Schaltung 48 überträgt den Neustart-Befehls
zeigerwert an die Befehlsheranhol- und Mikrobefehlsausgabe-
Schaltung 32 über den Neustart-Vektor-Bus 122.
Das Umordnungs-Löschsignal 78 veranlaßt den Mikrobefehls-
Zuordner der Befehlsheranhol- und Mikrobefehlsausgabe-Schaltung
32, den geordneten Strom logischer Mikrobefehle, die von der
Umordnungsschaltung 42 vor der Ausscheidung gelöscht worden wa
ren, erneut auszugeben.
Claims (30)
1. Verfahren zur Prozessor-Ordnung (process orordering), in
einem Mehrprozessor-Computersystem,
dadurch gekennzeichnet,
daß von einem externen Speicher in einer sequentiellen Pro grammreihenfolge ein Speicher-Ladebefehl herangeholt wird, wo bei der Speicher-Ladebefehl eine Speicher-Ladeoperation von ei ner Speicheradresse über einen Mehrprozessor-Bus spezifiziert;
daß der Speicher-Ladebefehl ausgeführt und der Mehrprozes sor-Bus hinsichtlich eines Prozessor-Ordnungskonflikts an der Speicheradresse überwacht (snooping) wird;
daß der Speicher-Ladebefehl in einen Architekturzustand in der sequentiellen Programmreihenfolge verbindlich festgelegt wird, sofern keine externe Speicheroperation zu der Speicher adresse erfaßt wird; und
daß der Speicher-Ladebefehl erneut ausgeführt wird, wenn eine externe Speicheroperation zu der Speicheradresse erfaßt wird.
dadurch gekennzeichnet,
daß von einem externen Speicher in einer sequentiellen Pro grammreihenfolge ein Speicher-Ladebefehl herangeholt wird, wo bei der Speicher-Ladebefehl eine Speicher-Ladeoperation von ei ner Speicheradresse über einen Mehrprozessor-Bus spezifiziert;
daß der Speicher-Ladebefehl ausgeführt und der Mehrprozes sor-Bus hinsichtlich eines Prozessor-Ordnungskonflikts an der Speicheradresse überwacht (snooping) wird;
daß der Speicher-Ladebefehl in einen Architekturzustand in der sequentiellen Programmreihenfolge verbindlich festgelegt wird, sofern keine externe Speicheroperation zu der Speicher adresse erfaßt wird; und
daß der Speicher-Ladebefehl erneut ausgeführt wird, wenn eine externe Speicheroperation zu der Speicheradresse erfaßt wird.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß
beim Heranholen des Speicher-Ladebefehls ein Befehlsstrom von
dem externen Speicher in der sequentiellen Programmreihenfolge
herangeholt wird, wobei der Befehlsstrom den Speicher-Ladebe
fehl enthält.
3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeich
net, daß beim Ausführen des Speicher-Ladebefehls:
zumindest ein Quelldatenwert für den Speicher-Ladebefehl derart assembliert wird, daß der Quelldatenwert die Speicher adresse für den Speicher-Ladebefehl spezifiziert; und
daß dann der Speicher-Ladebefehl ausgeführt wird, wobei der ausgeführte Speicher-Ladebefehl einen Ergebnisdatenwert erzeugt.
zumindest ein Quelldatenwert für den Speicher-Ladebefehl derart assembliert wird, daß der Quelldatenwert die Speicher adresse für den Speicher-Ladebefehl spezifiziert; und
daß dann der Speicher-Ladebefehl ausgeführt wird, wobei der ausgeführte Speicher-Ladebefehl einen Ergebnisdatenwert erzeugt.
4. Verfahren nach einem der Ansprüche 1 bis 3, dadurch ge
kennzeichnet, daß beim Überwachen (snooping) des Mehrprozessor-
Busses hinsichtlich eines Prozessor-Ordnungskonflikts an der
Speicheradresse der Mehrprozessor-Bus hinsichtlich einer exter
nen Speicherungsoperation zu der Speicheradresse des ausgeführ
ten Speicher-Ladebefehls überwacht wird.
5. Verfahren nach einem der Ansprüche 1 bis 3, dadurch ge
kennzeichnet, daß beim Überwachen (snooping) des Mehrprozessor-
Busses hinsichtlich eines Prozessor-Ordnungskonfliktes an der
Speicheradresse der Mehrprozessor-Bus hinsichtlich einer exter
nen Leseoperation zum Besitz zu der Speicheradresse des ausge
führten Speicher-Ladebefehls überwacht wird.
6. Verfahren nach Anspruch 4, dadurch gekennzeichnet, daß
beim verbindlichen Festlegen des Speicher-Ladebefehls in einen
Architekturzustand der Ergebnisdatenwert in den Architekturzu
stand in der sequentiellen Programmreihenfolge festgelegt wird,
wenn keine externe Speicheroperation zu der Speicheradresse des
ausgeführten Speicher-Ladebefehls erfaßt wird.
7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß
beim erneuten Ausführen des Speicher-Ladebefehls im Falle der
Erfassung einer externen Speicheroperation zu der Speicher
adresse der Ergebnisdatenwert verworfen wird und dann der Be
fehlsstrom beginnend mit dem dem verworfenen Ergebnisdatenwert
entsprechenden Speicher-Ladebefehl erneut ausgeführt wird, wenn
die externe Speicheroperation zu der Speicheradresse des ausge
führten Speicher-Ladebefehls erfaßt wird, bevor der Ergebnisda
tenwert verbindlich in den Architekturzustand festgelegt wurde.
8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, daß
beim Ausführen des Speicher-Ladebefehls nach dem Assemblieren
des Quelldatenwerts:
eine lineare Speicheradresse für den Speicher-Ladebefehl
von dem Quelldatenwert für den Speicher-Ladebefehl bestimmt
wird;
der Speicher-Ladebefehl und die lineare Speicheradresse in einem verfügbaren Ladepuffereintrag eines Ladepuffers gespei chert wird;
die lineare Adresse des Speicher-Ladebefehls in eine physi kalische Adresse konvertiert und die physikalische Adresse in dem Ladepuffereintrag gespeichert wird; und
eine Speicher-Ladeoperation von der physikalischen Adresse ausgeführt und ein Vollständig-Status für den Ladepuffereintrag gesetzt wird, wobei die Speicher-Ladeoperation einen Ergebnis datenwert erzeugt.
der Speicher-Ladebefehl und die lineare Speicheradresse in einem verfügbaren Ladepuffereintrag eines Ladepuffers gespei chert wird;
die lineare Adresse des Speicher-Ladebefehls in eine physi kalische Adresse konvertiert und die physikalische Adresse in dem Ladepuffereintrag gespeichert wird; und
eine Speicher-Ladeoperation von der physikalischen Adresse ausgeführt und ein Vollständig-Status für den Ladepuffereintrag gesetzt wird, wobei die Speicher-Ladeoperation einen Ergebnis datenwert erzeugt.
9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, daß
beim Überwachen (snooping) des Mehrprozessor-Busses hinsicht
lich einer externen Speicheroperation zu der Speicheradresse
des ausgeführten Speicher-Ladebefehls:
der Mehrprozessor-Bus hinsichtlich einer externen Speicher
operation zu der in dem Ladepuffereintrag gespeicherten physi
kalischen Adresse überwacht wird, wenn der Ladepuffereintrag
den Vollständig-Status enthält; und
ein Snoop-Treffer-Flag in dem Ladepuffereintrag gesetzt wird, wenn die externe Speicheroperation zu der in dem Ladepuf fereintrag gespeicherten physikalischen Adresse erfaßt wird.
ein Snoop-Treffer-Flag in dem Ladepuffereintrag gesetzt wird, wenn die externe Speicheroperation zu der in dem Ladepuf fereintrag gespeicherten physikalischen Adresse erfaßt wird.
10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß
beim verbindlichen Festlegen der Ergebnisdatenwerte in einen
Architekturzustand in der sequentiellen Programmreihenfolge:
ein Ausscheidungs-Zeiger in der sequentiellen Programmrei
henfolge derart erzeugt wird, daß der Ausscheidungs-Zeiger den
in einem physikalischen Register eines Umordnungspuffers ge
speicherten Ergebnisdatenwert und den Ladepuffereintrag in dem
Ladepuffer spezifiziert; und
der Ergebnisdatenwert in dem physikalischen Register in dem Architekturzustand verbindlich festgelegt wird, wenn das Snoop- Treffer-Flag des Ladepuffereintrags nicht gesetzt wurde.
der Ergebnisdatenwert in dem physikalischen Register in dem Architekturzustand verbindlich festgelegt wird, wenn das Snoop- Treffer-Flag des Ladepuffereintrags nicht gesetzt wurde.
11. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß
beim Verwerfen des Ergebnisdatenwerts
ein Ausscheidungszeiger in der sequentiellen Programmrei henfolge derart erzeugt wird, daß der Ausscheidungszeiger dem in einem physikalischen Register eines Umordnungspuffers ge speicherten Ergebnisdatenwert und den Ladepuffereintrag in dem Ladepuffer spezifiziert; und
der Ergebnisdatenwert in dem physikalischen Register ge löscht wird, wenn das Snoop-Treffer-Flag des Ladepuffereintrags gesetzt wurde.
ein Ausscheidungszeiger in der sequentiellen Programmrei henfolge derart erzeugt wird, daß der Ausscheidungszeiger dem in einem physikalischen Register eines Umordnungspuffers ge speicherten Ergebnisdatenwert und den Ladepuffereintrag in dem Ladepuffer spezifiziert; und
der Ergebnisdatenwert in dem physikalischen Register ge löscht wird, wenn das Snoop-Treffer-Flag des Ladepuffereintrags gesetzt wurde.
12. Einrichtung zur Prozessor-Ordnung in einem Mehrprozes
sor-Computersystem,
gekennzeichnet durch:
gekennzeichnet durch:
Mittel (32) zum Heranholen eines Speicher-Ladebefehls von
einem externen Speicher (26) in einer sequentiellen Programm
reihenfolge, wobei der Speicher-Ladebefehl eine Speicher-Lade
operation von einer Speicheradresse über einen Mehrprozessor-
Bus (28) spezifiziert;
Mittel zum Ausführen des Speicher-Ladebefehls und zum Über wachen (snooping) des Mehrprozessor-Busses (28) hinsichtlich eines Prozessor-Ordnungskonflikts an der Speicheradresse;
Mittel (42, 44, 46, 64) zum verbindlichen Festlegen des Speicher-Ladebefehls in einen Architekturzustand in der sequen tiellen Programmreihenfolge, sofern keine externe Speicherope ration zu der Speicheradresse erfaßt wird; und
Mittel zum erneuten Ausführen des Speicher-Ladebefehls, so fern die externe Speicheroperation zu der Speicheradresse er faßt worden ist.
Mittel zum Ausführen des Speicher-Ladebefehls und zum Über wachen (snooping) des Mehrprozessor-Busses (28) hinsichtlich eines Prozessor-Ordnungskonflikts an der Speicheradresse;
Mittel (42, 44, 46, 64) zum verbindlichen Festlegen des Speicher-Ladebefehls in einen Architekturzustand in der sequen tiellen Programmreihenfolge, sofern keine externe Speicherope ration zu der Speicheradresse erfaßt wird; und
Mittel zum erneuten Ausführen des Speicher-Ladebefehls, so fern die externe Speicheroperation zu der Speicheradresse er faßt worden ist.
13. Einrichtung nach Anspruch 12, dadurch gekennzeichnet,
daß die Mittel (32) zum Heranholen eines Speicher-Ladebefehls
Mittel zum Heranholen eines Befehlsstroms von dem externen
Speicher (26) in der sequentiellen Programmreihenfolge aufwei
sen, wobei der Befehlsstrom den Speicher-Ladebefehl aufweist.
14. Einrichtung nach Anspruch 12 oder 13, dadurch gekenn
zeichnet, daß die Mittel zum Ausführen des Speicher-Ladebefehls
Mittel zum Assemblieren zumindest eines Quelldatenwerts für den Speicher-Ladebefehl, wobei der Quelldatenwert die Speicher adresse für den Speicher-Ladebefehl spezifiziert, und
Mittel (40) zum Ausführen des Speicher-Ladebefehls nach dem Assemblieren der Quelldatenwerte aufweisen, wobei der ausge führte Speicher-Ladebefehl einen Ergebnisdatenwert erzeugt.
Mittel zum Assemblieren zumindest eines Quelldatenwerts für den Speicher-Ladebefehl, wobei der Quelldatenwert die Speicher adresse für den Speicher-Ladebefehl spezifiziert, und
Mittel (40) zum Ausführen des Speicher-Ladebefehls nach dem Assemblieren der Quelldatenwerte aufweisen, wobei der ausge führte Speicher-Ladebefehl einen Ergebnisdatenwert erzeugt.
15. Einrichtung nach einem der Ansprüche 12 bis 14, dadurch
gekennzeichnet, daß die Mittel zum Überwachen des Mehrprozes
sor-Busses hinsichtlich eines Prozessor-Ordnungskonflikts an
der Speicheradresse Mittel (102) zum Überwachen des Mehrprozes
sor-Busses (28) hinsichtlich einer externen Speicheroperation
zu der Speicheradresse des ausgeführten Speicher-Ladebefehls
aufweisen.
16. Einrichtung nach einem der Ansprüche 12 bis 14, dadurch
gekennzeichnet, daß die Mittel (102) zum Überwachen des Mehr
prozessor-Busses (28) hinsichtlich eines Prozessor-Ordnungskon
fliktes an der Speicheradresse Mittel zum Überwachen des Mehr
prozessor-Busses (28) hinsichtlich einer externen Leseoperation
zum Besitz zu der Speicheradresse des ausgeführten Speicher-La
debefehls aufweisen.
17. Einrichtung nach Anspruch 15, dadurch gekennzeichnet,
daß die Mittel zum verbindlichen Festlegen des Speicher-Ladebe
fehls in einen Architekturzustand Mittel zum verbindlichen
Festlegen des Ergebnisdatenwerts in den Architekturzustand in
der sequentiellen Programmreihenfolge aufweisen, sofern keine
externe Speicheroperation zu der Speicheradresse des ausgeführ
ten Speicher-Ladebefehls erfaßt wird.
18. Einrichtung nach Anspruch 17, dadurch gekennzeichnet,
daß die Mittel zum erneuten Ausführen des Speicher-Ladebefehls
bei Erfassung der externen Speicheroperation zu der Speicher
adresse Mittel zum Verwerfen des Ergebnisdatenwerts und Mittel
zum erneuten Ausführen des Befehlsstroms beginnend mit dem dem
verworfenen Ergebnisdatenwert entsprechenden Speicher-Ladebe
fehl aufweisen, sofern die externe Speicheroperation zu der
Speicheradresse des ausgeführten Speicher-Ladebefehls erfaßt
wurde, bevor der Ergebnisdatenwert in den Architekturzustand
verbindlich festgelegt worden ist.
19. Einrichtung nach Anspruch 18, dadurch gekennzeichnet,
daß die Mittel zum Ausführen des Speicher-Ladebefehls nach dem
Assemblieren der Quelldatenwerte für den Speicher-Ladebefehl
aufweisen:
Mittel (100) zum Bestimmen einer linearen Speicheradresse
für den Speicher-Ladebefehl von dem Quelldatenwert für den
Speicher-Ladebefehl;
Mittel (102) zum Speichern des Speicher-Ladebefehls mit der linearen Speicheradresse in einem verfügbaren Ladepuffereintrag (LB0-LBn) eines Ladepuffers (88);
Mittel (104, 102) zum Konvertieren der linearen Adresse des Speicher-Ladebefehls in eine physikalische Adresse und zum Speichern der physikalischen Adresse in den Ladepuffereintrag (LB0-LBn) und
Mittel (102, 106) zum Ausführen einer Speicher-Ladeopera tion von der physikalischen Adresse und zum Setzen eines Voll ständig-Status für den Ladepuffereintrag, wobei die Speicher- Ladeoperation einen Ergebnisdatenwert erzeugt.
Mittel (102) zum Speichern des Speicher-Ladebefehls mit der linearen Speicheradresse in einem verfügbaren Ladepuffereintrag (LB0-LBn) eines Ladepuffers (88);
Mittel (104, 102) zum Konvertieren der linearen Adresse des Speicher-Ladebefehls in eine physikalische Adresse und zum Speichern der physikalischen Adresse in den Ladepuffereintrag (LB0-LBn) und
Mittel (102, 106) zum Ausführen einer Speicher-Ladeopera tion von der physikalischen Adresse und zum Setzen eines Voll ständig-Status für den Ladepuffereintrag, wobei die Speicher- Ladeoperation einen Ergebnisdatenwert erzeugt.
20. Verfahren nach Anspruch 19, dadurch gekennzeichnet, daß
die Mittel (102) zum Überwachen (snooping) des Mehrprozessor-
Busses (28) hinsichtlich einer externen Speicheroperation zu
der Speicheradresse des ausgeführten Speicher-Ladebefehls auf
weisen:
Mittel zum Überwachen des Mehrprozessor-Busses hinsichtlich
einer externen Speicheroperation zu der in dem Ladepufferein
trag (LB0-LBn) gespeicherten physikalischen Adresse, wenn der
Ladepuffereintrag den Vollständig-Status enthält; und
Mittel (200, 202) zum Setzen eines Snoop-Treffer-Flags in dem Ladepuffereintrag (LB0-LBn), sofern eine externe Speicher operation zu der in dem Ladepuffereintrag gespeicherten physi kalischen Adresse erfaßt worden ist.
Mittel (200, 202) zum Setzen eines Snoop-Treffer-Flags in dem Ladepuffereintrag (LB0-LBn), sofern eine externe Speicher operation zu der in dem Ladepuffereintrag gespeicherten physi kalischen Adresse erfaßt worden ist.
21. Einrichtung nach Anspruch 20, dadurch gekennzeichnet,
daß die Mittel zum verbindlichen Festlegen der Ergebnisdaten
werte in einen Architekturzustand in der sequentiellen Pro
grammreihenfolge aufweisen:
Mittel (46) zum Erzeugen eines Ausscheidungs-Zeigers in der
sequentiellen Programmreihenfolge derart, daß der Ausschei
dungs-Zeiger den in einem physikalischen Register (82) eines
Umordnungspuffers (42) gespeicherten Ergebnisdatenwert und den
Ladepuffereintrag (LB0-LBn) in dem Ladepuffer (88) spezifi
ziert; und
Mittel zum verbindlichen Festlegen des Ergebnisdatenwerts in dem physikalischen Register in den Architekturzustand, wenn das Snoop-Treffer-Flag des Ladepuffereintrags (LB0-LBn) nicht gesetzt ist.
Mittel zum verbindlichen Festlegen des Ergebnisdatenwerts in dem physikalischen Register in den Architekturzustand, wenn das Snoop-Treffer-Flag des Ladepuffereintrags (LB0-LBn) nicht gesetzt ist.
22. Einrichtung nach Anspruch 20, dadurch gekennzeichnet,
daß die Mittel zum Verwerfen des Ergebnisdatenwerts aufweisen:
Mittel (46) zum Erzeugen eines Ausscheidungs-Zeigers in der
sequentiellen Programmreihenfolge derart, daß der Ausschei
dungs-Zeiger den in einem physikalischen Register (82) eines
Umordnungspuffers (42) gespeicherten Ergebnisdatenwert und den
Ladepuffereintrag (LB0-LBn) in dem Ladepuffer (88) spezifi
ziert; und
Mittel zum Löschen des Ergebnisdatenwerts in dem physikali schen Register (82), wenn das Snoop-Treffer-Flag des Ladepuffe reintrags gesetzt ist.
Mittel zum Löschen des Ergebnisdatenwerts in dem physikali schen Register (82), wenn das Snoop-Treffer-Flag des Ladepuffe reintrags gesetzt ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11266893A | 1993-08-26 | 1993-08-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE4429921A1 true DE4429921A1 (de) | 1995-03-09 |
Family
ID=22345221
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19944429921 Withdrawn DE4429921A1 (de) | 1993-08-26 | 1994-08-23 | Verfahren und Einrichtung zur Prozessorordnung für einen Befehle ausserhalb der Reihe ausführenden Prozessor |
Country Status (5)
Country | Link |
---|---|
JP (1) | JPH0784965A (de) |
DE (1) | DE4429921A1 (de) |
GB (1) | GB2281422B (de) |
IE (1) | IE80854B1 (de) |
SG (1) | SG49220A1 (de) |
Families Citing this family (174)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69427734T2 (de) * | 1993-10-29 | 2002-05-23 | Advanced Micro Devices Inc | Linearadressierter Mikroprozessorcachespeicher |
US5630082A (en) * | 1993-10-29 | 1997-05-13 | Advanced Micro Devices, Inc. | Apparatus and method for instruction queue scanning |
EP0651320B1 (de) | 1993-10-29 | 2001-05-23 | Advanced Micro Devices, Inc. | Superskalarbefehlsdekoder |
DE69429061T2 (de) * | 1993-10-29 | 2002-07-18 | Advanced Micro Devices Inc | Superskalarmikroprozessoren |
US5689672A (en) * | 1993-10-29 | 1997-11-18 | Advanced Micro Devices, Inc. | Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions |
US5574928A (en) * | 1993-10-29 | 1996-11-12 | Advanced Micro Devices, Inc. | Mixed integer/floating point processor core for a superscalar microprocessor with a plurality of operand buses for transferring operand segments |
EP0651324B1 (de) * | 1993-10-29 | 2006-03-22 | Advanced Micro Devices, Inc. | Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge |
US5878245A (en) | 1993-10-29 | 1999-03-02 | Advanced Micro Devices, Inc. | High performance load/store functional unit and data cache |
US5689693A (en) * | 1994-04-26 | 1997-11-18 | Advanced Micro Devices, Inc. | Range finding circuit for selecting a consecutive sequence of reorder buffer entries using circular carry lookahead |
JPH07302200A (ja) | 1994-04-28 | 1995-11-14 | Hewlett Packard Co <Hp> | 順次付けロード動作および順序付け記憶動作を強制する命令を有するコンピュータのロード命令方法。 |
US5632023A (en) * | 1994-06-01 | 1997-05-20 | Advanced Micro Devices, Inc. | Superscalar microprocessor including flag operand renaming and forwarding apparatus |
US5696955A (en) * | 1994-06-01 | 1997-12-09 | Advanced Micro Devices, Inc. | Floating point stack and exchange instruction |
US5649225A (en) * | 1994-06-01 | 1997-07-15 | Advanced Micro Devices, Inc. | Resynchronization of a superscalar processor |
US5559975A (en) * | 1994-06-01 | 1996-09-24 | Advanced Micro Devices, Inc. | Program counter update mechanism |
US5901302A (en) * | 1995-01-25 | 1999-05-04 | Advanced Micro Devices, Inc. | Superscalar microprocessor having symmetrical, fixed issue positions each configured to execute a particular subset of instructions |
US6006324A (en) | 1995-01-25 | 1999-12-21 | Advanced Micro Devices, Inc. | High performance superscalar alignment unit |
US5819057A (en) * | 1995-01-25 | 1998-10-06 | Advanced Micro Devices, Inc. | Superscalar microprocessor including an instruction alignment unit with limited dispatch to decode units |
US5832249A (en) * | 1995-01-25 | 1998-11-03 | Advanced Micro Devices, Inc. | High performance superscalar alignment unit |
US6237082B1 (en) | 1995-01-25 | 2001-05-22 | Advanced Micro Devices, Inc. | Reorder buffer configured to allocate storage for instruction results corresponding to predefined maximum number of concurrently receivable instructions independent of a number of instructions received |
US5903741A (en) * | 1995-01-25 | 1999-05-11 | Advanced Micro Devices, Inc. | Method of allocating a fixed reorder buffer storage line for execution results regardless of a number of concurrently dispatched instructions |
US5878244A (en) * | 1995-01-25 | 1999-03-02 | Advanced Micro Devices, Inc. | Reorder buffer configured to allocate storage capable of storing results corresponding to a maximum number of concurrently receivable instructions regardless of a number of instructions received |
US5737550A (en) * | 1995-03-28 | 1998-04-07 | Advanced Micro Devices, Inc. | Cache memory to processor bus interface and method thereof |
US5822574A (en) * | 1995-04-12 | 1998-10-13 | Advanced Micro Devices, Inc. | Functional unit with a pointer for mispredicted resolution, and a superscalar microprocessor employing the same |
US5832297A (en) * | 1995-04-12 | 1998-11-03 | Advanced Micro Devices, Inc. | Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations |
US5802588A (en) * | 1995-04-12 | 1998-09-01 | Advanced Micro Devices, Inc. | Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer |
US5887152A (en) * | 1995-04-12 | 1999-03-23 | Advanced Micro Devices, Inc. | Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions |
US5764946A (en) * | 1995-04-12 | 1998-06-09 | Advanced Micro Devices | Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address |
US5991869A (en) * | 1995-04-12 | 1999-11-23 | Advanced Micro Devices, Inc. | Superscalar microprocessor including a high speed instruction alignment unit |
US5758114A (en) * | 1995-04-12 | 1998-05-26 | Advanced Micro Devices, Inc. | High speed instruction alignment unit for aligning variable byte-length instructions according to predecode information in a superscalar microprocessor |
US5819059A (en) * | 1995-04-12 | 1998-10-06 | Advanced Micro Devices, Inc. | Predecode unit adapted for variable byte-length instruction set processors and method of operating the same |
US5822558A (en) * | 1995-04-12 | 1998-10-13 | Advanced Micro Devices, Inc. | Method and apparatus for predecoding variable byte-length instructions within a superscalar microprocessor |
US5835753A (en) * | 1995-04-12 | 1998-11-10 | Advanced Micro Devices, Inc. | Microprocessor with dynamically extendable pipeline stages and a classifying circuit |
US5900012A (en) * | 1995-05-10 | 1999-05-04 | Advanced Micro Devices, Inc. | Storage device having varying access times and a superscalar microprocessor employing the same |
US5768610A (en) * | 1995-06-07 | 1998-06-16 | Advanced Micro Devices, Inc. | Lookahead register value generator and a superscalar microprocessor employing same |
US5878255A (en) * | 1995-06-07 | 1999-03-02 | Advanced Micro Devices, Inc. | Update unit for providing a delayed update to a branch prediction array |
US5859991A (en) * | 1995-06-07 | 1999-01-12 | Advanced Micro Devices, Inc. | Parallel and scalable method for identifying valid instructions and a superscalar microprocessor including an instruction scanning unit employing the method |
US5875324A (en) * | 1995-06-07 | 1999-02-23 | Advanced Micro Devices, Inc. | Superscalar microprocessor which delays update of branch prediction information in response to branch misprediction until a subsequent idle clock |
US5822778A (en) * | 1995-06-07 | 1998-10-13 | Advanced Micro Devices, Inc. | Microprocessor and method of using a segment override prefix instruction field to expand the register file |
US6604190B1 (en) | 1995-06-07 | 2003-08-05 | Advanced Micro Devices, Inc. | Data address prediction structure and a method for operating the same |
US5680578A (en) * | 1995-06-07 | 1997-10-21 | Advanced Micro Devices, Inc. | Microprocessor using an instruction field to specify expanded functionality and a computer system employing same |
US5761712A (en) * | 1995-06-07 | 1998-06-02 | Advanced Micro Devices | Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array |
US5875315A (en) * | 1995-06-07 | 1999-02-23 | Advanced Micro Devices, Inc. | Parallel and scalable instruction scanning unit |
US5768574A (en) * | 1995-06-07 | 1998-06-16 | Advanced Micro Devices, Inc. | Microprocessor using an instruction field to expand the condition flags and a computer system employing the microprocessor |
US5987561A (en) | 1995-08-31 | 1999-11-16 | Advanced Micro Devices, Inc. | Superscalar microprocessor employing a data cache capable of performing store accesses in a single clock cycle |
US5826071A (en) * | 1995-08-31 | 1998-10-20 | Advanced Micro Devices, Inc. | Parallel mask decoder and method for generating said mask |
US5781789A (en) * | 1995-08-31 | 1998-07-14 | Advanced Micro Devices, Inc. | Superscaler microprocessor employing a parallel mask decoder |
US5893146A (en) * | 1995-08-31 | 1999-04-06 | Advanced Micro Design, Inc. | Cache structure having a reduced tag comparison to enable data transfer from said cache |
US5752069A (en) * | 1995-08-31 | 1998-05-12 | Advanced Micro Devices, Inc. | Superscalar microprocessor employing away prediction structure |
US5845323A (en) * | 1995-08-31 | 1998-12-01 | Advanced Micro Devices, Inc. | Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time |
US5854921A (en) * | 1995-08-31 | 1998-12-29 | Advanced Micro Devices, Inc. | Stride-based data address prediction structure |
US5860104A (en) * | 1995-08-31 | 1999-01-12 | Advanced Micro Devices, Inc. | Data cache which speculatively updates a predicted data cache storage location with store data and subsequently corrects mispredicted updates |
US5872947A (en) * | 1995-10-24 | 1999-02-16 | Advanced Micro Devices, Inc. | Instruction classification circuit configured to classify instructions into a plurality of instruction types prior to decoding said instructions |
US5933618A (en) * | 1995-10-30 | 1999-08-03 | Advanced Micro Devices, Inc. | Speculative register storage for storing speculative results corresponding to register updated by a plurality of concurrently recorded instruction |
US5881278A (en) * | 1995-10-30 | 1999-03-09 | Advanced Micro Devices, Inc. | Return address prediction system which adjusts the contents of return stack storage to enable continued prediction after a mispredicted branch |
US5892936A (en) * | 1995-10-30 | 1999-04-06 | Advanced Micro Devices, Inc. | Speculative register file for storing speculative register states and removing dependencies between instructions utilizing the register |
US5765035A (en) * | 1995-11-20 | 1998-06-09 | Advanced Micro Devices, Inc. | Recorder buffer capable of detecting dependencies between accesses to a pair of caches |
US5787474A (en) * | 1995-11-20 | 1998-07-28 | Advanced Micro Devices, Inc. | Dependency checking structure for a pair of caches which are accessed from different pipeline stages of an instruction processing pipeline |
US5835744A (en) * | 1995-11-20 | 1998-11-10 | Advanced Micro Devices, Inc. | Microprocessor configured to swap operands in order to minimize dependency checking logic |
US5903910A (en) * | 1995-11-20 | 1999-05-11 | Advanced Micro Devices, Inc. | Method for transferring data between a pair of caches configured to be accessed from different stages of an instruction processing pipeline |
US5864707A (en) | 1995-12-11 | 1999-01-26 | Advanced Micro Devices, Inc. | Superscalar microprocessor configured to predict return addresses from a return stack storage |
US5819080A (en) * | 1996-01-02 | 1998-10-06 | Advanced Micro Devices, Inc. | Microprocessor using an instruction field to specify condition flags for use with branch instructions and a computer system employing the microprocessor |
US5822559A (en) * | 1996-01-02 | 1998-10-13 | Advanced Micro Devices, Inc. | Apparatus and method for aligning variable byte-length instructions to a plurality of issue positions |
US5742791A (en) * | 1996-02-14 | 1998-04-21 | Advanced Micro Devices, Inc. | Apparatus for detecting updates to instructions which are within an instruction processing pipeline of a microprocessor |
US5848287A (en) | 1996-02-20 | 1998-12-08 | Advanced Micro Devices, Inc. | Superscalar microprocessor including a reorder buffer which detects dependencies between accesses to a pair of caches |
US5687110A (en) * | 1996-02-20 | 1997-11-11 | Advanced Micro Devices, Inc. | Array having an update circuit for updating a storage location with a value stored in another storage location |
US5790821A (en) | 1996-03-08 | 1998-08-04 | Advanced Micro Devices, Inc. | Control bit vector storage for storing control vectors corresponding to instruction operations in a microprocessor |
US5813033A (en) * | 1996-03-08 | 1998-09-22 | Advanced Micro Devices, Inc. | Superscalar microprocessor including a cache configured to detect dependencies between accesses to the cache and another cache |
US5752259A (en) * | 1996-03-26 | 1998-05-12 | Advanced Micro Devices, Inc. | Instruction cache configured to provide instructions to a microprocessor having a clock cycle time less than a cache access time of said instruction cache |
US5838943A (en) * | 1996-03-26 | 1998-11-17 | Advanced Micro Devices, Inc. | Apparatus for speculatively storing and restoring data to a cache memory |
US6085302A (en) * | 1996-04-17 | 2000-07-04 | Advanced Micro Devices, Inc. | Microprocessor having address generation units for efficient generation of memory operation addresses |
US5835968A (en) * | 1996-04-17 | 1998-11-10 | Advanced Micro Devices, Inc. | Apparatus for providing memory and register operands concurrently to functional units |
US5918056A (en) * | 1996-05-17 | 1999-06-29 | Advanced Micro Devices, Inc. | Segmentation suspend mode for real-time interrupt support |
US5748978A (en) * | 1996-05-17 | 1998-05-05 | Advanced Micro Devices, Inc. | Byte queue divided into multiple subqueues for optimizing instruction selection logic |
US5835511A (en) * | 1996-05-17 | 1998-11-10 | Advanced Micro Devices, Inc. | Method and mechanism for checking integrity of byte enable signals |
US6108769A (en) | 1996-05-17 | 2000-08-22 | Advanced Micro Devices, Inc. | Dependency table for reducing dependency checking hardware |
US5822560A (en) * | 1996-05-23 | 1998-10-13 | Advanced Micro Devices, Inc. | Apparatus for efficient instruction execution via variable issue and variable control vectors per issue |
US6049863A (en) * | 1996-07-24 | 2000-04-11 | Advanced Micro Devices, Inc. | Predecoding technique for indicating locations of opcode bytes in variable byte-length instructions within a superscalar microprocessor |
US5867680A (en) * | 1996-07-24 | 1999-02-02 | Advanced Micro Devices, Inc. | Microprocessor configured to simultaneously dispatch microcode and directly-decoded instructions |
US5813045A (en) * | 1996-07-24 | 1998-09-22 | Advanced Micro Devices, Inc. | Conditional early data address generation mechanism for a microprocessor |
US5903740A (en) | 1996-07-24 | 1999-05-11 | Advanced Micro Devices, Inc. | Apparatus and method for retiring instructions in excess of the number of accessible write ports |
US5872951A (en) * | 1996-07-26 | 1999-02-16 | Advanced Micro Design, Inc. | Reorder buffer having a future file for storing speculative instruction execution results |
US5946468A (en) * | 1996-07-26 | 1999-08-31 | Advanced Micro Devices, Inc. | Reorder buffer having an improved future file for storing speculative instruction execution results |
US5872943A (en) * | 1996-07-26 | 1999-02-16 | Advanced Micro Devices, Inc. | Apparatus for aligning instructions using predecoded shift amounts |
US5915110A (en) * | 1996-07-26 | 1999-06-22 | Advanced Micro Devices, Inc. | Branch misprediction recovery in a reorder buffer having a future file |
US5900013A (en) * | 1996-07-26 | 1999-05-04 | Advanced Micro Devices, Inc. | Dual comparator scheme for detecting a wrap-around condition and generating a cancel signal for removing wrap-around buffer entries |
US5765016A (en) * | 1996-09-12 | 1998-06-09 | Advanced Micro Devices, Inc. | Reorder buffer configured to store both speculative and committed register states |
US5822575A (en) * | 1996-09-12 | 1998-10-13 | Advanced Micro Devices, Inc. | Branch prediction storage for storing branch prediction information such that a corresponding tag may be routed with the branch instruction |
US5794028A (en) * | 1996-10-17 | 1998-08-11 | Advanced Micro Devices, Inc. | Shared branch prediction structure |
US5920710A (en) * | 1996-11-18 | 1999-07-06 | Advanced Micro Devices, Inc. | Apparatus and method for modifying status bits in a reorder buffer with a large speculative state |
US5870579A (en) * | 1996-11-18 | 1999-02-09 | Advanced Micro Devices, Inc. | Reorder buffer including a circuit for selecting a designated mask corresponding to an instruction that results in an exception |
US5954816A (en) * | 1996-11-19 | 1999-09-21 | Advanced Micro Devices, Inc. | Branch selector prediction |
US5978906A (en) * | 1996-11-19 | 1999-11-02 | Advanced Micro Devices, Inc. | Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions |
US5995749A (en) * | 1996-11-19 | 1999-11-30 | Advanced Micro Devices, Inc. | Branch prediction mechanism employing branch selectors to select a branch prediction |
US6175906B1 (en) | 1996-12-06 | 2001-01-16 | Advanced Micro Devices, Inc. | Mechanism for fast revalidation of virtual tags |
US5870580A (en) * | 1996-12-13 | 1999-02-09 | Advanced Micro Devices, Inc. | Decoupled forwarding reorder buffer configured to allocate storage in chunks for instructions having unresolved dependencies |
US5881305A (en) * | 1996-12-13 | 1999-03-09 | Advanced Micro Devices, Inc. | Register rename stack for a microprocessor |
US5983321A (en) * | 1997-03-12 | 1999-11-09 | Advanced Micro Devices, Inc. | Cache holding register for receiving instruction packets and for providing the instruction packets to a predecode unit and instruction cache |
US5862065A (en) * | 1997-02-13 | 1999-01-19 | Advanced Micro Devices, Inc. | Method and circuit for fast generation of zero flag condition code in a microprocessor-based computer |
US5768555A (en) | 1997-02-20 | 1998-06-16 | Advanced Micro Devices, Inc. | Reorder buffer employing last in buffer and last in line bits |
US6141740A (en) * | 1997-03-03 | 2000-10-31 | Advanced Micro Devices, Inc. | Apparatus and method for microcode patching for generating a next address |
US6233672B1 (en) | 1997-03-06 | 2001-05-15 | Advanced Micro Devices, Inc. | Piping rounding mode bits with floating point instructions to eliminate serialization |
US5850532A (en) * | 1997-03-10 | 1998-12-15 | Advanced Micro Devices, Inc. | Invalid instruction scan unit for detecting invalid predecode data corresponding to instructions being fetched |
US5852727A (en) * | 1997-03-10 | 1998-12-22 | Advanced Micro Devices, Inc. | Instruction scanning unit for locating instructions via parallel scanning of start and end byte information |
US5968163A (en) * | 1997-03-10 | 1999-10-19 | Advanced Micro Devices, Inc. | Microcode scan unit for scanning microcode instructions using predecode data |
US5859992A (en) * | 1997-03-12 | 1999-01-12 | Advanced Micro Devices, Inc. | Instruction alignment using a dispatch list and a latch list |
US5828873A (en) * | 1997-03-19 | 1998-10-27 | Advanced Micro Devices, Inc. | Assembly queue for a floating point unit |
US5887185A (en) * | 1997-03-19 | 1999-03-23 | Advanced Micro Devices, Inc. | Interface for coupling a floating point unit to a reorder buffer |
US5859998A (en) * | 1997-03-19 | 1999-01-12 | Advanced Micro Devices, Inc. | Hierarchical microcode implementation of floating point instructions for a microprocessor |
US5930492A (en) * | 1997-03-19 | 1999-07-27 | Advanced Micro Devices, Inc. | Rapid pipeline control using a control word and a steering word |
US5987235A (en) * | 1997-04-04 | 1999-11-16 | Advanced Micro Devices, Inc. | Method and apparatus for predecoding variable byte length instructions for fast scanning of instructions |
US5901076A (en) * | 1997-04-16 | 1999-05-04 | Advanced Micro Designs, Inc. | Ripple carry shifter in a floating point arithmetic unit of a microprocessor |
US6003128A (en) * | 1997-05-01 | 1999-12-14 | Advanced Micro Devices, Inc. | Number of pipeline stages and loop length related counter differential based end-loop prediction |
US5845101A (en) * | 1997-05-13 | 1998-12-01 | Advanced Micro Devices, Inc. | Prefetch buffer for storing instructions prior to placing the instructions in an instruction cache |
US6122729A (en) | 1997-05-13 | 2000-09-19 | Advanced Micro Devices, Inc. | Prefetch buffer which stores a pointer indicating an initial predecode position |
US6009511A (en) * | 1997-06-11 | 1999-12-28 | Advanced Micro Devices, Inc. | Apparatus and method for tagging floating point operands and results for rapid detection of special floating point numbers |
US5940602A (en) * | 1997-06-11 | 1999-08-17 | Advanced Micro Devices, Inc. | Method and apparatus for predecoding variable byte length instructions for scanning of a number of RISC operations |
US6073230A (en) * | 1997-06-11 | 2000-06-06 | Advanced Micro Devices, Inc. | Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches |
US5872946A (en) * | 1997-06-11 | 1999-02-16 | Advanced Micro Devices, Inc. | Instruction alignment unit employing dual instruction queues for high frequency instruction dispatch |
US5933626A (en) * | 1997-06-12 | 1999-08-03 | Advanced Micro Devices, Inc. | Apparatus and method for tracing microprocessor instructions |
US5933629A (en) | 1997-06-12 | 1999-08-03 | Advanced Micro Devices, Inc. | Apparatus and method for detecting microbranches early |
US5983337A (en) * | 1997-06-12 | 1999-11-09 | Advanced Micro Devices, Inc. | Apparatus and method for patching an instruction by providing a substitute instruction or instructions from an external memory responsive to detecting an opcode of the instruction |
US5898865A (en) * | 1997-06-12 | 1999-04-27 | Advanced Micro Devices, Inc. | Apparatus and method for predicting an end of loop for string instructions |
US6012125A (en) * | 1997-06-20 | 2000-01-04 | Advanced Micro Devices, Inc. | Superscalar microprocessor including a decoded instruction cache configured to receive partially decoded instructions |
US5978901A (en) * | 1997-08-21 | 1999-11-02 | Advanced Micro Devices, Inc. | Floating point and multimedia unit with data type reclassification capability |
US6101577A (en) * | 1997-09-15 | 2000-08-08 | Advanced Micro Devices, Inc. | Pipelined instruction cache and branch prediction mechanism therefor |
US5931943A (en) * | 1997-10-21 | 1999-08-03 | Advanced Micro Devices, Inc. | Floating point NaN comparison |
US6032252A (en) * | 1997-10-28 | 2000-02-29 | Advanced Micro Devices, Inc. | Apparatus and method for efficient loop control in a superscalar microprocessor |
US5974542A (en) * | 1997-10-30 | 1999-10-26 | Advanced Micro Devices, Inc. | Branch prediction unit which approximates a larger number of branch predictions using a smaller number of branch predictions and an alternate target indication |
US6230259B1 (en) | 1997-10-31 | 2001-05-08 | Advanced Micro Devices, Inc. | Transparent extended state save |
US6157996A (en) * | 1997-11-13 | 2000-12-05 | Advanced Micro Devices, Inc. | Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space |
US6199154B1 (en) | 1997-11-17 | 2001-03-06 | Advanced Micro Devices, Inc. | Selecting cache to fetch in multi-level cache system based on fetch address source and pre-fetching additional data to the cache for future access |
US6516395B1 (en) | 1997-11-20 | 2003-02-04 | Advanced Micro Devices, Inc. | System and method for controlling access to a privilege-partitioned address space with a fixed set of attributes |
US6079003A (en) * | 1997-11-20 | 2000-06-20 | Advanced Micro Devices, Inc. | Reverse TLB for providing branch target address in a microprocessor having a physically-tagged cache |
US6154818A (en) * | 1997-11-20 | 2000-11-28 | Advanced Micro Devices, Inc. | System and method of controlling access to privilege partitioned address space for a model specific register file |
US6079005A (en) * | 1997-11-20 | 2000-06-20 | Advanced Micro Devices, Inc. | Microprocessor including virtual address branch prediction and current page register to provide page portion of virtual and physical fetch address |
US5974432A (en) * | 1997-12-05 | 1999-10-26 | Advanced Micro Devices, Inc. | On-the-fly one-hot encoding of leading zero count |
US5870578A (en) * | 1997-12-09 | 1999-02-09 | Advanced Micro Devices, Inc. | Workload balancing in a microprocessor for reduced instruction dispatch stalling |
US6157986A (en) * | 1997-12-16 | 2000-12-05 | Advanced Micro Devices, Inc. | Fast linear tag validation unit for use in microprocessor |
US6016533A (en) * | 1997-12-16 | 2000-01-18 | Advanced Micro Devices, Inc. | Way prediction logic for cache array |
US6016545A (en) * | 1997-12-16 | 2000-01-18 | Advanced Micro Devices, Inc. | Reduced size storage apparatus for storing cache-line-related data in a high frequency microprocessor |
US6112296A (en) * | 1997-12-18 | 2000-08-29 | Advanced Micro Devices, Inc. | Floating point stack manipulation using a register map and speculative top of stack values |
US6018798A (en) * | 1997-12-18 | 2000-01-25 | Advanced Micro Devices, Inc. | Floating point unit using a central window for storing instructions capable of executing multiple instructions in a single clock cycle |
US6112018A (en) * | 1997-12-18 | 2000-08-29 | Advanced Micro Devices, Inc. | Apparatus for exchanging two stack registers |
US6141745A (en) * | 1998-04-30 | 2000-10-31 | Advanced Micro Devices, Inc. | Functional bit identifying a prefix byte via a particular state regardless of type of instruction |
US6175908B1 (en) | 1998-04-30 | 2001-01-16 | Advanced Micro Devices, Inc. | Variable byte-length instructions using state of function bit of second byte of plurality of instructions bytes as indicative of whether first byte is a prefix byte |
US6230262B1 (en) | 1998-07-31 | 2001-05-08 | Advanced Micro Devices, Inc. | Processor configured to selectively free physical registers upon retirement of instructions |
US6119223A (en) * | 1998-07-31 | 2000-09-12 | Advanced Micro Devices, Inc. | Map unit having rapid misprediction recovery |
US6122656A (en) * | 1998-07-31 | 2000-09-19 | Advanced Micro Devices, Inc. | Processor configured to map logical register numbers to physical register numbers using virtual register numbers |
US6473832B1 (en) | 1999-05-18 | 2002-10-29 | Advanced Micro Devices, Inc. | Load/store unit having pre-cache and post-cache queues for low latency load memory operations |
US6473837B1 (en) | 1999-05-18 | 2002-10-29 | Advanced Micro Devices, Inc. | Snoop resynchronization mechanism to preserve read ordering |
US6266744B1 (en) | 1999-05-18 | 2001-07-24 | Advanced Micro Devices, Inc. | Store to load forwarding using a dependency link file |
US6415360B1 (en) | 1999-05-18 | 2002-07-02 | Advanced Micro Devices, Inc. | Minimizing self-modifying code checks for uncacheable memory types |
US6393536B1 (en) | 1999-05-18 | 2002-05-21 | Advanced Micro Devices, Inc. | Load/store unit employing last-in-buffer indication for rapid load-hit-store |
US6427193B1 (en) | 1999-05-18 | 2002-07-30 | Advanced Micro Devices, Inc. | Deadlock avoidance using exponential backoff |
US6438664B1 (en) | 1999-10-27 | 2002-08-20 | Advanced Micro Devices, Inc. | Microcode patch device and method for patching microcode using match registers and patch routines |
US6442707B1 (en) | 1999-10-29 | 2002-08-27 | Advanced Micro Devices, Inc. | Alternate fault handler |
US6662280B1 (en) | 1999-11-10 | 2003-12-09 | Advanced Micro Devices, Inc. | Store buffer which forwards data based on index and optional way match |
US6848024B1 (en) | 2000-08-07 | 2005-01-25 | Broadcom Corporation | Programmably disabling one or more cache entries |
US6748492B1 (en) | 2000-08-07 | 2004-06-08 | Broadcom Corporation | Deterministic setting of replacement policy in a cache through way selection |
US6732234B1 (en) | 2000-08-07 | 2004-05-04 | Broadcom Corporation | Direct access mode for a cache |
US6877084B1 (en) | 2000-08-09 | 2005-04-05 | Advanced Micro Devices, Inc. | Central processing unit (CPU) accessing an extended register set in an extended register mode |
US6981132B2 (en) | 2000-08-09 | 2005-12-27 | Advanced Micro Devices, Inc. | Uniform register addressing using prefix byte |
US6738792B1 (en) | 2001-03-09 | 2004-05-18 | Advanced Micro Devices, Inc. | Parallel mask generator |
US6748495B2 (en) | 2001-05-15 | 2004-06-08 | Broadcom Corporation | Random generator |
US7266587B2 (en) | 2002-05-15 | 2007-09-04 | Broadcom Corporation | System having interfaces, switch, and memory bridge for CC-NUMA operation |
US7321964B2 (en) | 2003-07-08 | 2008-01-22 | Advanced Micro Devices, Inc. | Store-to-load forwarding buffer using indexed lookup |
US7117290B2 (en) | 2003-09-03 | 2006-10-03 | Advanced Micro Devices, Inc. | MicroTLB and micro tag for reducing power in a processor |
JP4584124B2 (ja) * | 2005-11-24 | 2010-11-17 | エヌイーシーコンピュータテクノ株式会社 | 情報処理装置およびそのエラー処理方法ならびに制御プログラム |
US8314803B2 (en) | 2007-08-15 | 2012-11-20 | Nvidia Corporation | Buffering deserialized pixel data in a graphics processor unit pipeline |
US8775777B2 (en) | 2007-08-15 | 2014-07-08 | Nvidia Corporation | Techniques for sourcing immediate values from a VLIW |
US8521800B1 (en) | 2007-08-15 | 2013-08-27 | Nvidia Corporation | Interconnected arithmetic logic units |
US8599208B2 (en) * | 2007-08-15 | 2013-12-03 | Nvidia Corporation | Shared readable and writeable global values in a graphics processor unit pipeline |
US9317251B2 (en) | 2012-12-31 | 2016-04-19 | Nvidia Corporation | Efficient correction of normalizer shift amount errors in fused multiply add operations |
US10311191B2 (en) | 2017-01-26 | 2019-06-04 | Advanced Micro Devices, Inc. | Memory including side-car arrays with irregular sized entries |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE2704560C2 (de) * | 1977-02-03 | 1979-01-18 | Siemens Ag, 1000 Berlin Und 8000 Muenchen | Datenverarbeitende Anlage mit paralleler Bereitstellung und Ausführung von Maschinenbefehlen |
-
1994
- 1994-04-12 IE IE940337A patent/IE80854B1/en not_active IP Right Cessation
- 1994-04-22 SG SG1996007762A patent/SG49220A1/en unknown
- 1994-04-22 GB GB9408016A patent/GB2281422B/en not_active Expired - Fee Related
- 1994-08-11 JP JP20941894A patent/JPH0784965A/ja active Pending
- 1994-08-23 DE DE19944429921 patent/DE4429921A1/de not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
SG49220A1 (en) | 1998-05-18 |
GB2281422B (en) | 1997-09-10 |
JPH0784965A (ja) | 1995-03-31 |
GB2281422A (en) | 1995-03-01 |
IE940337A1 (en) | 1995-03-08 |
IE80854B1 (en) | 1999-04-07 |
GB9408016D0 (en) | 1994-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4429921A1 (de) | Verfahren und Einrichtung zur Prozessorordnung für einen Befehle ausserhalb der Reihe ausführenden Prozessor | |
DE10297856B4 (de) | Verfahren und Vorrichtung zum Suspendieren der Ausführung eines Threads, bis ein spezifizierter Speicherzugriff auftritt | |
DE68927492T2 (de) | Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten | |
DE69636861T2 (de) | Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern | |
DE69017178T2 (de) | Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung. | |
DE112018006124B4 (de) | ZUSAMMENFÜHREN VON EINTRÄGEN GLOBALER ABSCHLUSSTABELLEN IN EINEM OoO-PROZESSOR | |
DE60038693T2 (de) | Verfahren und vorrichtung zur ausschaltung eines taktsignals in einem vielfadenprozessor | |
DE69932066T2 (de) | Mechanismus zur "store-to-load forwarding" | |
DE19681660C2 (de) | Verfahren zum Ausführen von Befehlssätzen, die Operationen an verschiedenen Datenarten und Register eines gemeinsamen logischen Registersatzes spezifizieren | |
DE112011101364B4 (de) | Fehlerbehebung in Multithread-Code | |
DE69233493T2 (de) | RISC-Prozessor mit erweiterbarer Architektur | |
DE3751356T2 (de) | Informationsverarbeitungssystem. | |
DE102014003399A1 (de) | Systeme und Verfahren zur Implementierung transaktionalen Speichers | |
DE19506435C2 (de) | Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten | |
DE19506734A1 (de) | Computersystem und Verfahren zum Aufrechterhalten der Speicherkonsistenz in einer Busanforderungswarteschlange | |
DE102014003799A1 (de) | Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle | |
DE10297597T5 (de) | Suspendieren der Ausführung eines Threads in einem Mehrfach-Thread-Prozessor | |
DE112015004983T5 (de) | Parallel-Slice-Prozessor mit einer Lade-Speicher-Umlaufwarteschlange für eine schnelle Freigabe von Einträgen in einer Ausgabewarteschlange | |
DE112010004322T5 (de) | Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge | |
DE112018006127B4 (de) | Abschliessen von verbundenen einträgen einer globalen abschlusstabelle in einem out-of-order-prozessor | |
DE03024585T1 (de) | Hochleistungsarchitektur für RISC-Mikroprozessor | |
DE102015002383A1 (de) | Verfahren und Vorrichtung zum Implementieren einer dynamischen Out-of-order-Prozessorpipeline | |
US5748937A (en) | Computer system that maintains processor ordering consistency by snooping an external bus for conflicts during out of order execution of memory access instructions | |
DE2855106A1 (de) | Einrichtung zur durchfuehrung von instruktionsverzweigungen | |
DE19506990A1 (de) | Einrichtung zur Datenumleitung in einem Prozessor mit mehreren Ausführungseinheiten |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
8139 | Disposal/non-payment of the annual fee |