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 Prozessor

Info

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
Application number
DE19944429921
Other languages
English (en)
Inventor
Jeffrey M Abramson
Haitham Akkary
Andrew F Glew
Glenn J Hinton
Kris G Konigsfeld
Paul D Madland
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE4429921A1 publication Critical patent/DE4429921A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining 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.
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.
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.
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.
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.
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.
12. Einrichtung zur Prozessor-Ordnung in einem Mehrprozes­ sor-Computersystem,
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.
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.
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.
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.
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.
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.
DE19944429921 1993-08-26 1994-08-23 Verfahren und Einrichtung zur Prozessorordnung für einen Befehle ausserhalb der Reihe ausführenden Prozessor Withdrawn DE4429921A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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 &#34;store-to-load forwarding&#34;
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