DE112011103219T5 - Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehle, Vorrichtungen, Verfahren und Systeme - Google Patents

Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehle, Vorrichtungen, Verfahren und Systeme Download PDF

Info

Publication number
DE112011103219T5
DE112011103219T5 DE112011103219T DE112011103219T DE112011103219T5 DE 112011103219 T5 DE112011103219 T5 DE 112011103219T5 DE 112011103219 T DE112011103219 T DE 112011103219T DE 112011103219 T DE112011103219 T DE 112011103219T DE 112011103219 T5 DE112011103219 T5 DE 112011103219T5
Authority
DE
Germany
Prior art keywords
execute
command
state update
instruction
logic
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
DE112011103219T
Other languages
English (en)
Inventor
James E. Phillips
Kameswar Subramaniam
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 DE112011103219T5 publication Critical patent/DE112011103219T5/de
Withdrawn legal-status Critical Current

Links

Images

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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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/46Multiprogramming arrangements
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Eine Vorrichtung mit einer Ausführungslogik, die eine Schaltung zum Ausführen von Befehlen aufweist, und einer Befehlsausführung-Scheduler-Logik, die an die Ausführungslogik gekoppelt ist, ist offenbart. Die Befehlsausführung-Scheduler-Logik ist eingerichtet, einen Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl zu empfangen. Die Befehlsausführung-Scheduler-Logik weist eine bei-Übergabe-Zustandsaktualisierungslogik auf, die damit warten soll, den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl zur Ausführung einzuplanen, bis der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl ein nächster Befehl zur Übergabe ist. Andere Vorrichtungen, Verfahren und Systeme sind ebenfalls offenbart.

Description

  • HINTERGRUND
  • Bereich
  • Ausführungsformen beziehen sich auf Prozessoren und andere Befehlsverarbeitungsvorrichtungen. Insbesondere beziehen sich Ausführungsformen auf Verfahren, Vorrichtungen, Systeme oder Befehle, welche einen internen Zustand von Prozessoren und anderen Befehlsverarbeitungsvorrichtungen aktualisieren.
  • Hintergrundinformationen
  • Bestimmte Prozessoren verwenden eine Ausführung in einer Pipeline, um Ausführungsphasen zu überlappen, wodurch es mehreren Befehlen erlaubt wird, sich zur selben Zeit in unterschiedlichen Phasen der Ausführung zu befinden, was beim Verbessern der Leistungsfähigkeit helfen kann. Die Menge an erreichter Parallelität tendiert dazu, mit der Tiefe der Pipeline größer zu werden. Im Laufe der Zeit haben bestimmte Prozessoren ein tieferes Pipelining eingebaut, beim Versuch, die Leistungsfähigkeit zu verbessern. Pipelining tendiert dazu, effektiver zu sein, wenn der Befehlsstrom bekann ist, so dass die Pipeline voll gehalten werden kann und die Ausführung eines nachfolgenden Befehls nicht auf die Ergebnisse derjenigen in der Pipeline warten muss.
  • Um die Pipeline noch voller zu halten, haben Prozessoren mit einer Pipeline dynamische Vorhersage (z. B. Sprungvorhersage) und spekulative Ausführung verwendet. Die dynamische Vorhersage kann verwendet werden, um den Fluss von Befehlen in dem Befehlsstrom vorherzusagen und Befehle des vorhergesagten Pfads in die Pipeline einzuspeisen. Sprungvorhersage kann ein Vorhersagen der Richtung eines Sprungs beinhalten, zum Beispiel die Richtung eines bedingten Sprungbefehls, bevor die richtige Richtung des Sprungs definitiv bekannt ist. Der Prozessor kann zum Beispiel eine fundierte Vermutung darüber anstellen, welche Richtung der bedingte Sprungbefehl höchstwahrscheinlich nehmen wird, basierend auf der vergangenen Historie. Der Prozessor kann dann damit beginnen, Befehle spekulativ auszuführen, basierend auf der Annahme, dass die vorhergesagte Sprungrichtung richtig ist, jedoch bevor der Prozessor weiß, ob die vorhergesagte Sprungrichtung tatsächlich richtig ist oder nicht.
  • Es wird sich später herausstellen, ob die dynamische Vorhersage (z. B. die vorhergesagte Sprungrichtung) richtig oder falsch ist. Wenn sich später herausstellt, dass die vorhergesagte Sprungrichtung richtig ist, können die Ergebnisse der spekulativen Ausführung verwendet werden. In diesem Fall bietet die spekulative Ausführung einen Mehrwert beim stärkeren Verwenden von Pipeline-Stufen, die ansonsten untätig oder zumindest unausgenutzt wären, beim Warten darauf, dass die richtige Richtung der Sprungrichtung bekannt wird. Wenn sich alternativ herausstellt, dass die vorhergesagte Sprungrichtung falsch ist oder die Sprungrichtung fehlvorhergesagt wurde, sollte die spekulative Ausführung nach dem bedingten Sprungbefehl typischerweise verworfen werden und die Ausführung sollte typischerweise durch Überspringen oder Zurückspringen in den Kontrollfluss zu dem bedingten Sprung zurückgespult werden, der fehlvorhergesagt wurde. Die Ausführung kann dann wieder aufgenommen werden, nun nicht spekulativ mit der nun definitiv bekannten richtigen Sprungrichtung.
  • KURZBESCHREIBUNG MEHRERER ANSICHTEN DER ZEICHNUNGEN
  • Die Erfindung wird am Besten durch Bezugnahme auf die folgende Beschreibung und die begleitenden Zeichnungen verstanden, die zum Darstellen von Ausführungsformen der Erfindung verwendet werden. In den Zeichnungen:
  • 1 ist ein Blockdiagramm einer Ausführungsform eines Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls, der auf einem maschinenlesbaren Speichermedium gespeichert ist.
  • 2 ist ein Blockdiagramm einer Ausführungsform eines Prozessors oder einer anderen Befehlsverarbeitungsvorrichtung mit einer Befehlsausführung-Scheduler-Warteschlange zum Ausgeben eines Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls.
  • 3 ist ein Blockflussdiagramm einer Ausführungsform eines Verfahrens, das einen Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl ausgibt.
  • 4 ist ein Blockdiagramm einer Ausführungsform eines Out-of-Order-Prozessors oder einer anderen Befehlsverarbeitungsvorrichtung mit einer Ausführungsform einer Out-of-Order-Befehlsausführung-Scheduler-Warteschlange zum Ausgeben eines Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls.
  • 5 ist ein Blockdiagramm einer bestimmten beispielhaften Ausführungsform eines Out-of-Order-Prozessors oder einer anderen Befehlsverarbeitungsvorrichtung mit einer bestimmten beispielhaften Ausführungsform einer Out-of-Order-Befehlsausführung-Scheduler-Warteschlange zum Ausgeben eines Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls.
  • 6 ist ein Blockdiagramm einer bestimmten beispielhaften Ausführungsform einer Reservierungsstation mit einer bestimmten beispielhaften Ausführungsform einer bei-Übergabe-Zustandsaktualisierungslogik zum Ausgeben eines Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls.
  • 7 ist ein Blockdiagramm einer beispielhaften Ausführungsform eines geeigneten Computersystems mit einer Ausführungsform eines hier offenbarten Prozessors.
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden Beschreibung werden zahlreiche spezifische Details, wie zum Beispiel bestimmte Prozessorkomponenten und Konfigurationen, eine bestimmte Scheduling-Logik und Ähnliches dargelegt. Jedoch sollte verständlich sein, dass Ausführungsformen der Erfindung auch ohne diese spezifischen Details ausgeführt sein könen. In anderen Fällen werden wohlbekannte Schaltungen, Strukturen und Techniken nicht detailliert gezeigt, um das Verständnis dieser Beschreibung nicht zu verschleiern.
  • Eine der Herausforderungen von spekulativer Ausführung innerhalb eines Prozessors bezieht sich auf Aktualisieren oder Ändern des internen Zustands des Prozessors. Prozessoren haben allgemein eine große Menge von internen Zuständen, die nicht spekulativ geändert werden sollten. Einige Prozessoren haben hunderte oder tausende von Bits für den internen Zustand. Der interne Zustand kann System-Flags, Bits in Kontrollregistern und Ähnliches aufweisen. Während des Betriebs des Prozessors, während der Prozessor Code ausführt, kann dieser interne Zustand modifiziert werden, beispielsweise von Mikrocode des Prozessors und/oder von Software/BIOS durch Schnittstellen, die von Mikrocode bereitgestellt sind. Jedoch sollte typischerweise ein großer Teil oder das Meiste dieses internen Zustands nicht spekulativ modifiziert werden, beispielsweise während einer spekulativen Ausführung. Bei einigen Prozessoren kann der am öftesten modifizierte Prozessorzustand umbenannt werden (z. B. im Fall eines Out-of-Order-Prozessors, indem er einem Umordnungspuffer zugewiesen und umbenannt wird), was dabei hilft, gegen spekulative Änderungen dieses Zustands zu schützen. Jedoch werden aufgrund der großen Menge von Prozessorzuständen in einigen Prozessoren nicht alle diese Prozessorzustände umbenannt und der entsprechende Schutz des Prozessorzustands durch Umbenennen wird nicht erreicht.
  • Ausführungsformen der Erfindung beziehen sich auf einen Zustandsaktualisierungsbefehl, der betriebsbereit eingerichtet ist, einen Prozessor dazu zu veranlassen oder zu steuern, einen internen Zustand (z. B. einen nicht umbenannten Prozessorzustand) des Prozessors nicht spekulativ in einem Prozessor mit einer Pipeline, der eine spekulative Ausführung verwendet, zu aktualisieren. In verschiedenen Ausführungsformen kann der Zustandsaktualisierungsbefehl den Prozessor dazu veranlassen oder steuern, den internen Zustand bei Übergabe (commit, z. B. beim Ausscheiden oder direkt nach dem Ausscheiden, beim Abschluss oder direkt nach dem Abschluss, nach einer Auflösung einer dynamischen Vorhersage, nach einem Empfang eines Sprungauflösungssignals usw.) zu aktualisieren. Das Ausführen des Zustandsaktualisierungsbefehls bei der Übergabe hilft beim Bereitstellen, dass der interne Zustand nicht aktualisiert wird, bis bekannt ist, dass die Aktualisierung nicht spekulativ ist. Einige Ausführungsformen sind auf Out-of-Order-Prozessoren (Prozessoren, welche eine Ausführung außer der Programmreihenfolge unterstützen) anwendbar, während andere Ausführungsformen bei In-Order-Prozessoren (Prozessoren, welche in Programmreihenfolge ausführen) anwendbar sind. Weitere Ausführungsformen betreffen Verfahren, welche in Reaktion auf den Zustandsaktualisierungsbefehl durchgeführt werden. Noch weitere Ausführungsformen betreffen eine Vorrichtung zum Verarbeiten des Zustandsaktualisierungsbefehls.
  • 1 ist ein Blockdiagramm einer Ausführungsform eines Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls 102, der auf einem maschinenlesbaren Speichermedium 100 gespeichert ist. In verschiedenen Ausführungsformen kann das maschinenlesbare Speichermedium ein Speicher, z. B. ein Festwertspeicher (Read Only Memory, ROM), ein Befehlsspeicher, ein Befehls-Cache, eine Befehlswarteschlange, ein Befehlspuffer, eine Platte (z. B. eine magnetische oder optische Platte) sein, um nur einige als Beispiel zu nennen.
  • Der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl kann einer Maschine, wie zum Beispiel einem Prozessor oder einer anderen Befehlsausführungsvorrichtung, bereitgestellt sein, auf ihn kann zugegriffen werden oder er kann anderweitig durch die Maschine verarbeitet werden. Die Maschine kann erkennen, dass der Zustandsaktualisierungsbefehl ein Ausführen-bei-Übergabe-Typ eines Zustandsaktualisierungsbefehls ist. Beispielsweise kann die Maschine erkennen, dass ein oder mehrere Bits des Zustandsaktualisierungsbefehls angeben, dass es sich um einen Ausführen-bei-Übergabe-Typ eines Befehls handelt. Es gibt verschiedene unterschiedliche Wege, um dies zu tun. Beispiele von geeigneten Wegen, wie dies gemacht werden kann, weisen auf, sind jedoch nicht beschränkt auf Bereitstellen eines separaten Opcodes für den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl, Bereitstellen eines Tags aus einem oder mehreren Bits des Opcodes zum Markieren, dass ein Zustandsaktualisierungsbefehl, der durch den Opcode identifiziert wird, einer aus einer Ausführen-bei-Übergabe-Vielfalt ist, und Bereitstellen eines Tags aus einem oder mehreren Bits in einem anderen Feld des Befehls (z. B. ein Feld, das sonst nicht für diesen Befehl verwendet wird) zum Markieren, dass der Befehl ein Ausführen-bei-Übergabe-Befehl ist, um nur einige als Beispiel zu nennen.
  • Der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl kann, wenn oder falls er von der Maschine verarbeitet wird, die Maschine dazu veranlassen oder dazu (ihren, mit dem Einplanen/Ausgeben und Ausführen des Zustandsaktualisierungsbefehls zu warten, bis der Zustandsaktualisierungsbefehl der nächste Befehl zur Übergabe ist, oder sonst wenn die Ausführung des Zustandsaktualisierungsbefehls nicht spekulativ ist. Die Maschine kann dann den Zustandsaktualisierungsbefehl einplanen/ausgeben, ausführen und übergeben. Wenn der Zustandsaktualisierungsbefehl ausführt oder in einigen Fällen übergeben wird, kann der interne Zustand der Maschine aktualisiert werden. Der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl ist betriebsbereit eingerichtet, den Prozessor oder eine andere Befehlsverarbeitungsvorrichtung derart zu steuern, dass die Ausführung des Zustandsaktualisierungsbefehls auf einer bestimmten Pipeline-Stufe, nämlich bei der Übergabe stattfindet.
  • In einer bestimmten beispielhaften Ausführungsform kann der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl ein Ausführen-bei-Übergabe-Steuerregister-Schreibbefehl sein, der betriebsbereit eingerichtet ist, ein Steuerregister, das ein Beispiel eines Typs eines internen Zustands repräsentiert, zu beschreiben oder zu modifizieren. Die Inhalte des Steuerregisters können System-Flags, Paging-Tabellenstellen für Adressübersetzung, Segmentierungsdaten, Speicherbereichstypen, Prozessormodi (z. B. Schutz oder Caching) oder Ähnliche repräsentieren. Hinsichtlich eines Aspekts darf das Steuerregister nicht derart konfiguriert sein, dass es durch Registerumbenennung umbenannt wird, was das Steuerregister oder den internen Zustand noch anfälliger für oder weniger geschützt vor Modifikationen während der spekulativen Ausführung machen kann.
  • In einer oder mehreren Ausführungsformen ist der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl ein Mikrobefehl. Andere Ausführungsformen sind nicht auf Mikrocode-gesteuerte Prozessoren beschränkt.
  • Der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl kann vorteilhaft dabei helfen, spekulative Aktualisierungen des internen Zustands zu vermeiden. Da der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl die Maschine dazu veranlasst, damit zu warten, den Zustandsaktualisierungsbefehl einzuplanen, auszugeben und auszuführen, bis der Zustandsaktualisierungsbefehl der nächste Befehl zur Übergabe ist, wird der Zustandsaktualisierungsbefehl keine Aktualisierung des internen Zustands der Maschine verursachen, bis nach der Ausführung des Befehls bekannt ist, dass er nicht spekulativ ist. Darüber hinaus ist das Einrichten des Zustandsaktualisierungsbefehls selbst als ein Ausführen-bei-Übergabe-Befehl ein direkter und effizienter Weg zum Verhindern von spekulativen Aktualisierungen des internen Zustands. Grundsätzlich ist es der Zustandsaktualisierungsbefehl, der nicht spekulativ vorkommen sollte, um eine spekulative Modifikation des internen Zustands zu verhindern, und nicht die bedingten Mikrosprung-Befehle oder andere Typen von Befehlen.
  • 2 ist ein Blockdiagramm einer Ausführungsform eines Prozessors oder einer anderen Befehlsverarbeitungsvorrichtung 204 mit einer Befehlsausführung-Scheduler-Logik 212 zum Einplanen eines Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls 202. Der Prozessor oder die Befehlsverarbeitungsvorrichtung kann eine von verschiedenen Typen sein, wie zum Beispiel verschiedene Complex Instruction Set Computing(CISC)-Typen, verschiedene Reduced Instruction Set Computing(RISC)-Typen, verschiedene Very Long Instruction Word(VLIW)-Typen und verschiedene Hybride davon, um lediglich einige als Beispiel zu nennen. Der Prozessor oder die andere Befehlsverarbeitungsvorrichtung kann Befehle entweder in Programmreihenfolge (In-Order) oder in einer anderen Reihenfolge als der Programmreihenfolge (Out-of-Order) ausführen.
  • In einer oder mehreren Ausführungsformen kann der Prozessor ein Allzweckprozessor sein, wie zum Beispiel einer der Allzweckprozessoren, die von der Intel Corporation aus Santa Clara, Kalifornien, hergestellt werden, obwohl dies nicht notwendig ist. Ein paar repräsentative Beispiele von geeigneten Allzweckprozessoren, die von der Intel Corporation verfügbar sind, weisen auf, sind jedoch nicht beschränkt auf Intel® Atom-Prozessoren, Intel® CoreTM-Prozessoren, Intel® CoreTM2-Prozessoren, Intel® Pentium®-Prozessoren und Intel® Celeron®-Prozessoren.
  • Alternativ kann der Prozessor ein Spezialprozessor sein. Repräsentative Beispiele von geeigneten Spezialprozessoren weisen auf, sind jedoch nicht beschränkt auf Netzwerkprozessoren, Kommunikationsprozessoren, Kryptographieprozessoren, Grafikprozessoren, Co-Prozessoren, eingebettete Prozessoren und digitale Signalprozessoren (DSPs), um nur wenige als Beispiel zu nennen. Diese Prozessoren können ebenfalls auf CISC, RISC, VLIW, Hybriden davon oder andere Typen von Prozessoren basieren. In noch weiteren Ausführungsformen kann der Prozessor oder die Befehlsverarbeitungsvorrichtung einen Controller (z. B. ein Mikrocontroller) oder einen anderen Typ einer logischen Schaltung repräsentieren, die in der Lage ist, Mikrocode oder Mikrobefehle zu verarbeiten.
  • Wieder Bezug nehmend auf 2 ist die Befehlsausführung-Scheduler-Logik 212 dazu betriebsbereit eingerichtet, Befehle zur Ausführung einzuplanen oder auszugeben. Die Befehlsausführung-Scheduler-Logik 212 kann während der Verwendung den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl 202 empfangen. Wie erwähnt worden ist, kann der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl einen Tag oder eine andere Angabe aufweisen, dass der Befehl ein Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl ist. Hinsichtlich eines Aspekts kann dieses Tag oder diese andere Angabe am vorderen Ende bereitgestellt sein (z. B. durch eine Befehlsabruf/Sequencer-Logik). Die Befehlsabruf/Sequencer-Logik kann eine Logik aufweisen, um zu spezifizieren, dass ein bestimmter einzelner Befehl in dem Prozessor, der eine spekulative Ausführung verwendet, nicht spekulativ ausgeführt werden soll. In den hier offenbarten Ausführungsformen ist die Spezifikation (z. B. durch einen Tag oder ein oder mehrere Bits eines Felds des Befehls) in einem Zustandsaktualisierungsbefehl aufgenommen.
  • Der Befehlsausführung-Scheduler weist eine optionale Befehlswarteschlage 208 auf. Die optionale Befehlswarteschlange kann verwendet werden, um Befehle 210 zu speichern, die den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl 202 aufweisen. In einer oder mehreren Ausführungsformen kann die optionale Befehlswarteschlange ebenfalls Operanden oder andere Daten oder Parameter speichern, die den Befehlen zugeordnet sind. Die Befehl-Scheduler-Logik ist betriebsbereit eingerichtet, die Befehle in der Befehlswarteschlange zur Ausführung einzuplanen/auszugeben. In einer Ausführungsform kann die Befehl-Scheduler-Logik die Befehle in Programmreihenfolge einplanen oder in einer anderen Ausführungsform kann die Befehl-Scheduler-Logik die Befehle außerhalb der Programmreihenfolge einplanen.
  • Die Befehl-Scheduler-Logik weist eine bei-Übergabe-Zustandsaktualisierungslogik 214 auf. Die bei-Übergabe-Zustandsaktualisierungslogik ist eingerichtet, damit zu warten, den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl zur Ausführung einzuplanen/auszugeben, bis der Zustandsaktualisierungsbefehl ein nächster Befehl zur Übergabe ist. Die älteren Befehle, die älter als der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl sind, können ausführen und übergeben werden, bevor es dem Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl erlaubt ist, eingeplant/ausgegeben und ausgeführt zu werden. In einer oder mehreren Ausführungsformen kann die Befehlsausführung-Scheduler-Logik eine Angabe des nächsten Befehls zur Übergabe und/oder eine Angabe, dass die Ausführung nicht spekulativ ist, von einer anderen Komponente empfangen, wie zum Beispiel einem Umordnungspuffer, einer Übergabelogik oder Sprungauflösungslogik (z. B. ein Sprungauflösungssignal). Wenn der Zustandsaktualisierungsbefehl der nächste Befehl zur Übergabe und/oder nicht spekulativ ist, kann die Befehlsausführung-Scheduler-Logik den Zustandsaktualisierungsbefehl zur Ausführung einplanen/ausgeben 216.
  • Die Ausführungslogik 220 ist an die Befehlsausführung-Scheduler-Logik gekoppelt. Die Ausfürungslogik kann den ausgegebenen Zustandsaktualisierungsbefehl empfangen. Die Ausführungslogik kann Logik aufweisen, wie zum Beispiel Hardware (z. B. Schaltkreise), Software, Firmware oder einige Kombinationen davon, um den Zustandsaktualisierungsbefehl auszuführen. In einer oder mehreren Ausführungsformen weist die Ausführungslogik mindestens einige Schaltkreise auf, um den Zustandsaktualisierungsbefehl auszuführen. Der Schaltkreis kann beispielsweise einen bestimmten/spezialisierten Schaltkreis aufweisen, der auf den Zustandsaktualisierungsbefehl oder Mikrobefehl reagiert.
  • In einer oder mehreren Ausführungsformen kann ein Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl vor einem Einplanen/Ausgabe und einer Ausführung in einem Out-of-Order-Abschnitt eines Prozessors oder einer anderen Befehlsverarbeitungsvorrichtung zurückgehalten werden. In einer oder mehreren Ausführungsformen kann eine Befehlsausführung-Scheduler-Logik in einem Out-of-Order-Abschnitt eines Prozessors oder einer anderen Befehlsverarbeitungsvorrichtung aufgenommen sein.
  • 3 ist ein Blockflussdiagramm einer Ausführungsform eines Verfahrens 370 zum Einplanen eines Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls. Das Verfahren weist ein Empfangen des Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls in Block 371 auf. Das Verfahren weist ein Warten darauf, den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl zur Ausführung einzuplanen, bis der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl ein nächster Befehl zur Übergabe ist, in Block 372 auf. Das Verfahren weist ein Einplanen des Ausfüren-bei-Übergabe-Zustandsaktualisierungsbefehls zur Ausführung, wenn er der nächste Befehl zur Übergabe ist, in Block 373 auf.
  • 4 ist ein Blockdiagramm einer Ausführungsform eines Out-of-Order-Prozessors oder einer anderen Befehlsverarbeitungsvorrichtung 404 mit einer Ausführungsform einer Out-of-Order-Befehlsausführung-Scheduler-Warteschlange 406. Der Prozessor oder die andere Befehlsverarbeitungsvorrichtung kann eines beliebigen Typs sein, wie zum Beispiel verschiedene Complex Instruction Set Computing(CISC)-Typen, verschiedene Recuced Instruction Set Computing(RISC)-Typen, verschiedene Very Long Instruction Word(VLIW)-Typen und verschiedene Hybride davon, um nur einige als Beispiel zu nennen.
  • In einer oder mehreren Ausführungsformen kann der Prozessor ein Allzweckprozessor sein, wie zum Beispiel einer der Allzweckprozessoren, die von der Intel Corporation aus Santa Clara, Kalifornien, hergestellt werden, obwohl dies nicht erforderlich ist. Ein paar repräsentative Beispiele von geeigneten Allzweckprozessoren, die von der Intel Corporation verfügbar sind, weisen auf, sind jedoch nicht beschränkt auf Intel® Atom-Prozessoren, Intel® CoreTM-Prozessoren, Intel® CoreTM2-Prozessoren, Intel® Pentium®-Prozessoren und Intel® Celeron®-Prozessoren.
  • Der Prozessor kann alternativ ein Spezialprozessor sein. Repräsentative Beispiele von geeigneten Spezialprozessoren weisen auf, sind jedoch nicht beschränkt auf Netzwerkprozessoren, Kommunikationsprozessoren, Kryptographieprozessoren, Grafikprozessoren, Co-Prozessoren, eingebettete Prozessoren und digitale Signalprozessoren (DSPs), um nur ein paar als Beispiel zu nennen. Diese Prozessoren können ebenfalls auf CICS, RISC, VLIW, Hybriden davon oder anderen Typen von Prozessoren basieren. In noch weiteren Ausführungsformen kann der Prozessor oder die weitere Befehlsverarbeitungsvorrichtung einen Controller (z. B. einen Mikrocontroller) oder einen anderen Typ einer Logikschaltung repräsentieren, die in der Lage ist, Mikrocode oder Mikrobefehle zu verarbeiten.
  • Der Prozessor ist ein Out-of-Order-Prozessor, der eingerichtet ist, Befehle außerhalb der Programmreihenfolge auszuführen. In einigen Fällen kann ein nachfolgender Befehl von der Ausführung eines vorhergehenden Befehls abhängen. Die Fähigkeit, Befehle außerhalb der Programmreihenfolge auszuführen, erlaubt es dem Prozessor, Abschnitte der Pipeline mit Befehlen zu füllen, die nicht von der Ausführung eines vorhergehenden Befehls in der Pipeline abhängen, wobei die, die von der Ausführung eines vorhergehenden Befehls abhängen, darauf warten, dass der Befehl, von dem sie abhängen, endet. Dies kann dabei helfen, die Leistungsfähigkeit des Prozessors zu verbessern. Der Prozessor kann jedoch den architektonischen Zustand des Prozessors für Software oder einen Benutzer in der ursprünglichen Programmreihenfolge präsentieren. Um dies zu erreichen, weist der Out-of-Order-Prozessor Logik (z. B. einen Umordnungspuffer) auf, um zu erlauben, dass ein Zustand aus der Ausführung eines jüngeren Befehls, der vor einem älteren Befehl ausgeführt worden ist, erhalten bleibt, bis die Ausführung aus dem älteren Befehl verfügbar wird. Wenn die Ausführung des älteren Befehls verfügbar wird, kann eine Ausscheidelogik oder Übergabelogik betriebsbereit eingerichtet sein, die Aktualisierung des architektonischen Zustands des Prozessors (z. B. aus dem Umordnungspuffer) zu steuern, durch Aktualisieren des Zustands in der ursprünglichen Befehlsreihenfolge. Das Abbilden eines sichtbaren Zustands auf Einträge des Umordnungspuffers kann durch Umbenennen erreicht werden.
  • Wieder Bezug nehmend auf 4 weist der Out-of-Order-Prozessor oder die andere Befehlsverarbeitungsvorrichtung einen In-Order-Frontend-Teil oder -Abschnitt 424 auf, der Befehle in Programmreihenfolge verarbeiten kann. Ohne Beschränkung kann das Frontend eine oder mehrere Komponenten aufweisen, wie zum Beispiel eine Befehlsabruf/Sequenzlogik (z. B. eine Befehlsabruf/Sequenzlogik oder -schaltung, nicht gezeigt), eine Befehlsdecodierlogik (z. B. einen Decodierer oder eine Decodierschaltung, nicht gezeigt) und Befehlsverteillogik (z. B. eine Befehlsverteillogik oder -schaltung, nicht gezeigt), obwohl der Umfang der Erfindung nicht auf irgendeine bekannte Komponente des Frontends beschränkt ist. In einer oder mehreren Ausführungsformen kann Logik in dem Frontend-Teil oder -Abschnitt (z. B. die Abruf/Scheduler-Logik) mit einem Tag oder anderweitig spezifizieren, dass ein Zustandsaktualisierungsbefehl einer aus einer Ausführen-bei-Übergabe-Vielfalt ist.
  • Der Out-of-Order-Prozessor oder Vorrichtung weist ebenfalls ein Out-of-Order-Backend-Teil oder -Abschnitt 426 auf, das an den Frontend-Teil oder -Abschnitt gekoppelt ist, um Befehle zu empfangen, die den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl 402 aufweisen. Das Out-of-Order-Backend kann die Befehle umordnen und die Befehle außer Programmreihenfolge verarbeiten.
  • Wie es gezeigt worden ist, kann das Out-of-Order-Backend eine Ausführungsform einer Out-of-Order-Befehlsausführung-Scheduler-Warteschlange 406 aufweisen. Auf die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange kann ebenfalls als eine dynamische Befehlsausführung-Scheduler-Warteschlange Bezug genommen werden. Das Out-of-Order-Backend kann ebenfalls eine Befehlsumordnungslogik (z. B. einen Umordnungspuffer, nicht gezeigt) und eine Befehlsausführungslogik (z. B. eine Ausführungslogik, nicht gezeigt) aufweisen. Die Befehlsausführungslogik kann die Befehle außer Programmreihenfolge ausführen und Ausführungsergebnisse 430 bereitstellen.
  • Die dargestellte Ausführungsform der Out-of-Order-Befehlsausführung-Scheduler-Warteschlange weist eine Befehlswarteschlange 408, eine Out-of-Order-Befehl-Scheduler-Logik 428 und eine bei-Übergabe-Zustandsaktualisierungslogik 414 auf. Die Befehlswarteschlange kann aufgebaut sein, wie vorher beschrieben worden ist. Die bei-Übergabe-Zustandsaktualisierungslogik kann gemäß einer oder mehreren Ausführungsformen die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange dazu veranlassen, mit dem Einplanen des Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls zur Ausführung zu warten, bis der Zustandsaktualisierungsbefehl ein nächster Befehl zur Übergabe ist.
  • Die Out-of-Order-Befehl-Scheduler-Logik kann die Befehle in der Befehlswarteschlange außerhalb der Programmreihenfolge einplanen. Gemäß einem Aspekt kann die Out-of-Order-Befehl-Scheduler-Logik eine Logik aufweisen, um eine Anzahl von Faktoren vor einem Einplanen eines Befehls zur Ausführung sicherzustellen, zu überprüfen oder zu evaluieren. Repräsentative Beispiele solcher Faktoren weisen potentiell auf, ob die Eingabe (z. B. ein Quelloperand) eines Befehls von einem Ausführungsergebnis eines bis jetzt noch nicht ausgeführten Befehls abhängt oder nicht, ob die Eingabe des Befehls aus einem Speicher geladen werden muss oder nicht und ob der Befehl darauf warten muss, dass eine beschäftigte Ausführungslogik oder eine andere Ressource verfügbar wird, oder nicht.
  • Da die Befehlsausführung-Scheduler-Warteschlange 406 eine Out-of-Order-Befehlsausführung-Scheduler-Warteschlange ist, ist sie vorteilhaft in einem Out-of-Order-Teil oder -Abschnitt 426 des Prozessors angeordnet und weist die Out-of-Order-Befehl-Scheduler-Logik auf, wobei die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange eingerichtet ist, einen oder mehrere jüngere Befehle 410 zur Ausführung einzuplanen/auszugeben, vor einem Einplanen/Ausgeben des Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls 402 zur Ausführung, der vom Einplanen/Ausgeben und Ausführung zurückgehalten wird, bis er der nächste Befehl zur Übergabe ist. Der Klarheit halber sind die jüngeren Befehle 410 jünger als der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl 402, was heißt, dass sie chronologisch nach dem Ausführenbei-Übergabe-Zustandsaktualisierungsbefehl in der ursprünglichen Programmreihenfolge auftreten (z. B. würden die jüngeren Befehle abgerufen und decodiert werden nach dem Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl in dem In-Order-Frontend).
  • Wenn den jüngeren Befehlen erlaubt wird, um den zurückgehaltenen Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl herum auszugeben und auszuführen, kann dies vorteilhaft dabei helfen, eine Blase in der Ausführung zu vermeiden, die ansonsten dazu tendieren würde, die Leistungsfähigkeit zu verringern. Falls stattdessen der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl von der Ausführung in dem In-Order-Frontend-Teil oder -Abschnitt des Prozessors zurückgehalten worden wäre, würden alle Mikrobefehle, die jünger als der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl sind, typischerweise ebenfalls vom Ausgeben und Ausführen hinter dem Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl zurückgehalten werden. Die jüngeren Mikrobefehle können nicht um den zurückgehaltenen Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl herum gelangen. Der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl und alle jüngeren Befehle können zurückgehalten werden, während alle Befehle, die älter als der Ausführenbei-Übergabe-Zustandsaktualisierungsbefehl sind, durch die Pipeline durchlaufen und potentiell auf Latenzen (z. B. aufgrund von Lade-Misses usw.) stoßen, bevor es dem Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl und jedem jüngeren Befehl erlaubt ist, auszugeben und auszuführen. Dies kann eine Blase in der Ausführung verursachen, die dazu tendieren kann, die Leistungsfähigkeit zu reduzieren.
  • Wieder Bezug nehmend auf 4 weist der Out-of-Order-Prozessor oder Vorrichtung ebenfalls eine In-Order-Übergabelogik 432 auf, die an den Out-of-Order-Backend-Teil oder -Abschnitt 426 gekoppelt ist, um die Ausführungsergebnisse 430 zu empfangen. Die In-Order-Übergabelogik kann die Ausführungsergebnisse umordnen, so dass sie in Programmreihenfolge sind und dann die Ausführungsergebnisse in Programmreihenfolge übergeben. Gemäß einem Aspekt darf die Übergabelogik keine Befehle übergeben, bis alle älteren Befehle davor in ursprünglicher Programmreihenfolge übergeben worden sind. Die Übergabe der Befehle kann ein Schreiben 433 der Ausführungsergebnisse, die den Befehlen in Programmreihenfolge zugeordnet sind, in die Registerdatei oder einen anderen für Programmierer sichtbaren architektonischen Zustand 434 des Prozessors aufweisen. Wenn Befehlsergebnisse in den Prozessor geschrieben werden, sagt man, dass dieser Befehl übergeben worden ist. In dem Fall der vorher diskutierten Zustandsaktualisierungsbefehle kann der architektonische Zustand den vorher diskutierten internen Zustand aufweisen (z. B. Flags, Steuerregister usw.). Gemäß einem Aspekt kann der interne Zustand aktualisiert werden, wenn der Zustandsaktualisierungsbefehl ausführt, bevor er tatsächlich übergeben wird. Dies kann beispielsweise der Fall bei einem nicht umbenannten internen Zustand sein. Der Prozessor kann einen umbenannten Prozessorzustand bei der Übergabe aktualisieren, kann jedoch einen nicht umbenannten Prozessorzustand bei der Ausführung aktualisieren.
  • 5 ist ein Blockdiagramm einer bestimmten beispielhaften Ausführungsform eines Out-of-Order-Prozessors oder einer anderen Befehlsverarbeitungsvorrichtung 504 mit einer bestimmten beispielhaften Ausführungsform einer Out-of-Order-Befehlsausführung-Scheduler-Warteschlange 506, um einen Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl 502 auszugeben. Der Prozessor oder die andere Befehlsverarbeitungsvorrichtung kann ein beliebiger der verschiedenen vorher erwähnten Typen sein (z. B. CISC, RISC, Allzweck, Spezial usw.).
  • Der Prozessor oder die andere Vorrichtung weist einen Ausgabeumordnungspuffer 540 auf. In einer oder mehreren Ausführungsformen kann der Ausgabeumordnungspuffer ein Puffer sein, der zwischen einem In-Order-Frontend und einer Ausführungslogik gekoppelt ist. Befehle können in den Ausgabeumordnungspuffer in Programmreihenfolge eintreten und der Ausgabeumordnungspuffer kann die Befehle sowie Informationen, die den Befehlen zugeordnet sind, wie zum Beispiel den Befehlsstatus, Operanden und den ursprünglichen Platz oder die Stelle in der Programmreihenfolge oder Sequenz der Befehle speichern oder puffern. Die Befehle können in dem Ausgabeumordnungspuffer warten, bis Daten, die zum Ausführen der Befehle (z. B. Eingabeoperanden) notwendig sind, verfügbar sind und Ressourcen, die zum Ausführen des Befehls benötigt werden, verfügbar sind.
  • Der Prozessor oder die andere Vorrichtung weisen ebenfalls die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange auf, die eingerichtet ist, einen Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl 502 auszuführen. Wie es gezeigt worden ist, kann in einer oder mehreren Ausführungsformen der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl optional von einer Zuweisungslogik 542 des Prozessors empfangen werden, die an die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange gekoppelt sein kann.
  • Die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange weist eine Befehlswarteschlange 508 auf, die, wie es vorher beschrieben worden ist, verwendet werden kann, um Befehle zu speichern, die den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl aufweisen. Die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange weist ebenfalls eine Out-of-Order-Befehl-Scheduler-Logik 512 auf, die, wie es vorher beschrieben worden ist, die Befehle zur Ausführung potentiell außer der Programmreihenfolge einplanen kann. Die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange weist ebenfalls eine bei-Übergabe-Zustandsaktualisierungslogik 514 auf, die, wie es vorher beschrieben worden ist, in einer oder mehreren Ausführungsformen mit dem Einplanen des Zustandsaktualisierungsbefehls zur Ausführung warten kann, bis der Zustandsaktualisierungsbefehl der nächste Befehl zur Übergabe ist. Wie es gezeigt worden ist, kann die Out-of-Order-Befehl-Scheduler-Logik eine Angabe eines nächsten Befehls zur Übergabe empfangen 544.
  • Der Prozessor oder die andere Vorrichtung weist ebenfalls eine Out-of-Order-Ausführungslogik 520 auf, die an die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange gekoppelt ist. Die Ausführungslogik kann die ausgegebenen oder eingeplanten Befehle von der Befehlsausführung-Scheduler-Warteschlange empfangen, die den Ausführenbei-Übergabe-Zustandsaktualisierungsbefehl aufweisen, wenn es angegeben ist, dass er der nächste Befehl ist, der übergeben werden soll. Die Out-of-Order-Ausführungslogik kann Logik aufweisen, in einer Ausführungsform mindestens einige Schaltkreise, um die Befehle in diesem Fall außer der Programmreihenfolge auszuführen.
  • Der Prozessor oder die andere Vorrichtung weist ebenfalls eine In-Order-Übergabelogik 532 auf, die an die Out-of-Order-Ausführungslogik gekoppelt ist, um Ausführungsergebnisse zu empfangen. Wie es gezeigt worden ist, kann die Übergabelogik in einer oder mehreren Ausführungsformen einen Abschlussumordnungspuffer 546 aufweisen. Der Abschlussumordnungspuffer 546 und der Ausgabeumordnungspuffer 540 können entweder dieselben Puffer oder unterschiedliche Puffer sein. In einer oder mehreren Ausführungsformen kann der Ausgabeumordnungspuffer und der Abschlussumordnungspuffer ein gewöhnlicher oder ein im Wesentlichen gewöhnlicher Umordnungspuffer (re-order buffer, ROB) sein, wie er in bestimmten Out-of-Order-Prozessoren verwendet wird, oder diesen umfassen. In einer weiteren Ausführungsform kann der Umordnungspuffer durch eine Abschlusswarteschlange ersetzt sein.
  • Der Abschlussumordnungspuffer kann die Befehle und die Ausführungsergebnisse puffern, bis sie dazu bereit sind, in Programmreihenfolge übergeben zu werden. Der Umordnungspuffer kann die Befehle nachverfolgen, die ausgeführt worden sind, und kann beim Ausscheiden oder Übergeben der ausgeführten Befehle in Programmreihenfolge assistieren. Der Abschlussumordnungspuffer kann Logik aufweisen, um die Befehle und ihre zugeordneten Ergebnisdaten, die aus dem Out-of-Order-Abschnitt des Prozessors kommen, in dieselbe Reihenfolge zu bringen, die die Befehle in dem In-Order-Frontend-Abschnitt des Prozessors hatten. Wenn der Befehl übergeben wird, kann er die Ergebnisdaten aus dem Umordnungspuffer lesen und die Ergebnisdaten in den architektonischen Zustand des Prozessors schreiben. In dem Fall der vorher diskutierten Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehle kann der architektonische Zustand den vorher diskutierten internen Zustand (z. B. Flags, Steuerregister usw.) aufweisen. Gemäß einem Aspekt kann der interne Zustand aktualisiert werden, wenn der Zustandsaktualisierungsbefehl ausgeführt wird, bevor er tatsächlich übergeben wird. Dies kann zum Beispiel bei nicht umbenannten internen Zuständen der Fall sein. Der Prozessor kann einen umbenannten Prozessorzustand bei der Übergabe aktualisieren, jedoch einen nicht umbenannten Prozessorzustand bei der Ausführung aktualisieren.
  • Wie es gezeigt worden ist, kann in einer oder mehreren Ausführungsformen der Abschlussumordnungspuffer, der bereits Befehle nachverfolgt, die ausgeschieden worden sind, einen Ausscheidezeiger oder eine andere Angabe des nächsten Befehls zum Ausscheiden 544 für die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange bereitstellen. Der nächste Befehl zum Ausscheiden ist ein Beispiel einer Angabe eines nächsten Befehls zur Übergabe. Weitere Beispiele von Angaben, dass ein Befehl zur Übergabe bereit ist, können ein Abschlusssignal aufweisen oder auf einer dynamischen Vorhersageauflösung (z. B. ein Sprungauflösungssignal) basieren, um ein paar zusätzliche Beispiele zu nennen. Es sollte ebenfalls klargestellt werden, dass das Konzept des Ausscheidens, obwohl es hier für einen Out-of-Order-Prozessor gezeigt ist, nicht auf Out-of-Order-Prozessoren beschränkt ist. Wenn der Ausführen-bei-Übergabe-Befehl der nächste Befehl zur Übergabe ist, kann der Abschlussumordnungspuffer eine Angabe an die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange liefern, dass der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl der nächste Befehl zur Übergabe ist. Der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl kann dann ausgegeben, ausgeführt, übergeben werden und einen internen Zustand 536 aktualisieren.
  • Wenn ein Out-of-Order-Prozessor Befehle spekulativ ausführt, können die spekulativ ausgeführten Befehle und ihre Ausführungsergebnisse in dem/den Umordnungspuffer(n) zusammen mit nicht spekulativ ausgeführten Befehlen gespeichert sein. Jedoch kann/können der/die Umordnungspuffer die spekulativ ausgeführten Befehle und ihre Ausführungsergebnisse nachverfolgen und die spekulativ ausgeführten Befehle und ihre Ausführungsergebnisse an der Übergabe hindern, bis bestätigt worden ist, dass die spekulative Ausführung bestätigt ist/die benötigte Ausführung ist (z. B. wird bestätigt, dass die Richtung eines bedingten Sprungbefehls richtig vorhergesagt worden ist). Die nun bestätigten/benötigten Befehle und ihre Ausführungsergebnisse können dann übergeben und in den architektonischen Zustand geschrieben werden. Alternativ, wenn vorgefunden worden ist, dass die spekulative Ausführung fehlerhaft ist und nicht benötigt wird (z. B. wurde die Richtung eines bedingten Sprungbefehls fehlvorhergesagt), dann dürfen die spekulativ ausgeführten Befehle und ihre Ausführungsergebnisse nicht übergeben werden und dürfen nicht in den architektonischen Zustand geschrieben werden (z. B. können sie aus dem/den Umordnungspuffer(n) gelöscht werden). Vorteilhafterweise können in dieser Ausführungsform durch Zurückhalten der Aktualisierung oder Änderung des internen Zustands des Prozessors bis der Umordnungspuffer angibt, dass der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl der nächste Befehl zur Übergabe ist (was ein Bestimmen aufweist, dass der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl nicht spekulativ ist), spekulative Aktualisierungen des internen Zustands verhindert oder zumindest reduziert werden.
  • 6 ist ein Blockdiagramm einer bestimmten beispielhaften Ausführungsform einer Reservierungsstation 606 mit einer bestimmten beispielhaften Ausführungsform einer bei-Übergabe-Zustandsaktualisierungslogik 614, um einen Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl 602 auszugeben. Die Reservierungsstation repräsentiert eine beispielhafte Ausführungsform einer Out-of-Order-Befehlsausführung-Scheduler-Warteschlange oder einer Befehlseinplanungslogik. Neben den Merkmalen, die nachfolgend beschrieben werden, oder die die bei-Übergabe-Zustandsaktualisierungslogik betreffen, oder die Interaktionen der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehle mit der Reservierungsstation, kann die Reservierungsstation weitere gewöhnliche oder im Wesentlichen gewöhnliche Merkmale aufweisen. Die Reservierungsstation kann entweder zentral zu oder von der Ausführungslogik eines Prozessors gemeinsam genutzt sein oder unterschiedliche Reservierungsstationen können für unterschiedliche Sätze einer Ausführungslogik bereitgestellt sein.
  • Die Reservierungsstation weist eine Vielzahl von Einträgen 650-0 bis 650-n auf, wobei die Zahl n eine ganze Zahl größer als 2 ist, beispielsweise von ungefähr 10 bis ungefähr 100. Jeder Eintrag kann eine Warteschlange 608-0 bis 608-n haben, um Befehle einzureihen und in einigen Fällen verschiedene Daten der Reservierungsstation, die den Befehlen zugeordnet sind (z. B. Operanden, die den Befehlen zugeordnet sind). In einer oder mehreren Ausführungsformen kann die Reservierungsstation betriebsbereit sein, einen Ergebnisbus, auf dem Daten in Register geschrieben werden, zu snoopen oder zu überwachen und die Reservierungsstation kann betriebsbereit sein, die Daten von dem Ergebnisbus in den Warteschlangen zu speichern. Dies kann dabei helfen, die Notwendigkeit von aufeinander folgenden Zugriffen auf die Daten in den Registern zu vermeiden.
  • Die Reservierungsstation hat ebenfalls eine Vielzahl von Zeigerspeicherstellen 652-0 bis 652-n für physikalische Ziele (pdst). Diese Stellen sind betriebsbereit eingerichtet, Zeiger auf physikalische Ziele oder Einträge in einem Umordnungspuffer zu speichern, wo sich die Daten für den entsprechenden Befehl befinden. Jeder Befehl und jeder Eintrag kann einen Zeiger auf ein physikalisches Ziel (pdst) haben. Jeder dieser Zeiger auf physikalische Ziele (pdst) kann eine Angabe eines Befehls repräsentieren, der in einem entsprechenden Eintrag in der Reservierungsstation gespeichert ist.
  • Die Reservierungsstation hat ebenfalls die bei-Übergabe-Zustandsaktualisierungslogik 614. Die bei-Übergabe-Zustandsaktualisierungslogik ist betriebsbereit eingerichtet, das Einplanen des Zustandsaktualisierungsbefehls zu blockieren, der mit einem Tag versehen ist, das angibt, dass er nicht spekulativ und/oder bei Übergabe auszuführen ist, bis der Zustandsaktualisierungsbefehl der nächste zum Ausscheiden oder zur anderweitigen Übergabe ist.
  • Die bei-Übergabe-Zustandsaktualisierungslogik weist eine Logik auf, um eine Angabe, dass der Zustandsaktualisierungsbefehl nicht spekulativ und/oder bei Übergabe ausführen sollte, dem bei-Übergabe-Zustandsaktualisierungsbefehl zuzuordnen, und mit der Altersreihenfolge des bei-Übergabe-Zustandsaktualisierungsbefehls innerhalb der Befehlssequenz. In der dargestellten Ausführungsform weist beispielsweise die bei-Übergabe-Zustandsaktualisierungslogik eine Vielzahl von Sätzen von einem oder mehreren bei-Übergabe-Bits 654-0 bis 654-n auf. Jeder der Sätze des einen oder der mehreren bei-Übergabe-Bits entspricht einem anderen Eintrag in der Reservierungsstation. Die bei-Übergabe-Zustandsaktualisierungslogik weist ebenfalls eine Bitwertabgleichlogik 656 auf, die an jeden der Sätze der bei-Übergabe-Bits gekoppelt ist. Die Bitwertabgleichlogik ist betriebsbereit eingerichtet, in Reaktion auf einen bei-Übergabe-Zustandsaktualisierungsbefehl 602 einen Wert eines Satzes des einen oder der mehreren bei-Übergabe-Bits in einem Eintrag in der Reservierungsstation, der dem Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl (z. B. in einem Eintrag, wo der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl eingereiht werden soll) entspricht, auf einen gegebenen Wert abzugleichen.
  • Ein bei-Übergabe-Bit kann beispielsweise entweder auf den Wert von Eins (gemäß einer Konvention) gesetzt sein oder auf einen Wert von Null (gemäß einer anderen Konvention) gelöscht werden in Reaktion auf den bei-Übergabe-Zustandsaktualisierungsbefehl. In einer oder mehreren Ausführungsformen kann die bei-Übergabe-Zustandsaktualisierungslogik einen Decodierer aufweisen, um einen Op-Code des bei-Übergabe-Zustandsaktualisierungsbefehls zu decodieren, um zu bestimmen, dass der Befehl eine bei-Übergabe-Variante eines Befehls ist, und dann die Bits entsprechend anzupassen. Der Decodierer kann unter Verwendung von verschiedenen unterschiedlichen Typen von Mechanismen implementiert sein. Beispiele von geeigneten Typen von Mechanismen weisen auf, sind jedoch nicht beschränkt auf Microcode-Festwertspeicher (Read Only Memories, ROMs), Look-up-Tabellen, Hardware-Implementierungen, programmierbare logische Arrays (Programmable Logic Arrays, PLAs) und Ähnliche. Der Decodierer kann in Hardware (z. B. als Schaltkreis), Firmware, Software oder eine Kombination davon implementiert sein. Es ist nicht notwendig, dass die Ausführen-bei-Übergabe-Angabe durch den Op-Code bereitgestellt ist, sie kann vielmehr durch ein anderes Feld bereitgestellt sein.
  • Die bei-Übergabe-Zustandsaktualisierungslogik weist ebenfalls eine Bestimmungslogik 658 auf. Gemäß einem Aspekt kann die Bestimmungslogik eine Vielzahl von Sätzen einer Bestimmungslogik 658-0 bis 658-n aufweisen, von denen jeder einem anderen Eintrag in der Befehlswarteschlange entspricht. Jeder der Sätze der Bestimmungslogik ist an eine andere entsprechende aus den Zeigerspeicherstellen für physikalische Ziele (pdst) gekoppelt, um einen anderen Zeiger für physikalische Ziele (pdst) zu empfangen. Jeder der Sätze der Bestimmungslogik ist ebenfalls an einen Umordnungspuffer gekoppelt, um beispielsweise einen Ausscheidezeiger 644 zu empfangen (z. B. einen nächsten auszuscheidenden Schwanzzeiger), der eine Ausführungsform einer Angabe eines nächsten Befehls zum Ausscheiden oder zur anderweitigen Übergabe darstellt. Jeder der Sätze der Bestimmungslogik ist ebenfalls an einen anderen entsprechenden der Sätze des einen oder der mehreren bei-Übergabe-Bits gekoppelt, um einen anderen entsprechenden der Sätze der bei-Übergabe-Bits zu empfangen.
  • Die Bestimmungslogik weist eine Altersreihenfolge-Vergleichslogik auf, die eine Logik aufweist, um einen Altersreihenfolgenvergleich (z. B. der Vergleich zwischen dem Ausscheidezeiger 644 mit dem pdst 652) mit der Angabe über die bei-Übergabe-Bits 654 zu qualifizieren, dass der Zustandsaktualisierungsbefehl nicht spekulativ und/oder bei Übergabe ausführen soll. Die Bestimmungslogik ist betriebsbereit dazu eingerichtet, wenn der Satz des einen oder der mehreren bei-Übergabe-Bits am Einstieg der Befehlswarteschlange, die dem bei-Übergabe-Zustandsaktualisierungsbefehl entspricht, den gegebenen Wert hat (d. h. den Wert, den er für einen Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl haben würde), zu bestimmen, ob einer Angabe eines nächsten Befehls zur Übergabe (z. B. der Ausscheidezeiger) mit einer Angabe des bei-Übergabe-Zustandsaktualisierungsbefehls am Einstieg der Befehlswarteschlange, die dem bei-Übergabe-Zustandsaktualisierungsbefehl entspricht (z. B. der Zeiger auf das physikalische Ziel (pdst) am Einstieg, wo der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl eingereiht ist, übereinstimmt oder nicht. Ein Satz einer Bestimmungslogik am Einstieg der Reservierungsstation, wo der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl gespeichert ist oder gespeichert werden soll, kann beispielsweise den einen oder die mehreren bei-Übergabe-Bits für denselben Eintrag, den Zeiger auf das physikalische Ziel (pdst) für denselben Eintrag und den Übergabezeiger empfangen und kann den Zeiger auf das physikalische Ziel (pdst) mit dem Ausscheidezeiger vergleichen.
  • Die Reservierungs- oder Einplanungslogik kann eine Logik aufweisen, um den bei-Übergabe-Zustandsaktualisierungsbefehl zu blockieren, zur Ausführung eingeplant zu werden, bis der Mikrobefehl der nächste zur Übergabe (z. B. Ausscheiden) ist. Wenn der Zeiger auf das physikalische Ziel (pdst) nicht mit dem Ausscheidezeiger übereinstimmt oder gleich ist, kann darauf zurückgeschlossen werden, dass der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl nicht der nächste Befehl zum Ausscheiden oder zur anderweitigen Übergabe ist und die Bestimmungslogik kann fortfahren, damit zu warten, den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl einzuplanen oder auszugeben. Die Bestimmungslogik kann beispielsweise ein Blockierungssignal an eine Out-of-Order-Einplanungslogik 612 liefern. Dies bedeutet, dass der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl noch nicht für eine Übergabe bereit ist. Die älteren Befehle vor dem Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl müssen ausgeschieden oder anderweitig übergeben werden, bevor es dem Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl erlaubt wird, übergeben zu werden. Die älteren Befehle werden ausgeschieden, bis zu dem Zeitpunkt, an dem der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl der älteste Befehl in der Reservierungsstation ist und zum Ausscheiden oder zur anderweitigen Übergabe bereit ist. An einem Punkt, wenn oder falls der Zeiger auf das physikalische Ziel (pdst) mit dem Ausscheidezeiger übereinstimmt oder gleich ist, kann aus dem Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl rückgeschlossen oder bestimmt werden, dass er der nächste Befehl zur Übergabe ist, und die Bestimmungslogik kann bestimmen, dass es möglich ist, den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl einzuplanen oder auszugeben. Die Bestimmungslogik kann beispielsweise ein Entblockierungssignal oder ein Signal, das kein Blockierungssignal ist, an die Out-of-Order-Einplanungslogik liefern.
  • In einer oder mehreren Ausführungsformen kann jeder der Sätze der Bestimmungslogik eine Logik eines gleich-wie-Typs aufweisen, obwohl dies nicht notwendig ist. Die gleich-wie-Logik kann beispielsweise mit einer Logik eines exklusives-ODER-Typs implementiert sein. Alternativ können andere Typen von Bestimmungs- oder Vergleichslogik, die dazu geeignet sind, zu bestimmen, ob der Ausscheidezeiger mit dem Zeiger auf das physikalische Ziel (pdst) übereinstimmt oder gleich ist oder nicht, stattdessen verwendet werden.
  • Die Out-of-Order-Einplanungslogik kann das Blockierungs- oder Entblockierungssignal von der Bestimmungslogik empfangen. Wenn das eine oder die mehreren bei-Übergabe-Bits für einen Eintrag, der einem Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl entspricht, den gegebenen Wert haben, würden sie für den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl abgeglichen werden, die Out-of-Order-Einplanungslogik muss nicht den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl einplanen, wenn ein Blockierungssignal zugesichert ist, kann jedoch möglicherweise den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl einplanen, wenn ein Entblockierungssignal zugesichert ist, in Abhängigkeit von weiteren Faktoren, die gewöhnlicherweise bei der Out-of-Order-Befehlseinplanung berücksichtigt werden (z. B. Ressourcen- und/oder Datenverfügbarkeit). In einer oder mehreren Ausführungsformen kann die Out-of-Order-Einplanungslogik eine Blockierungslogik, eine Bereitschaftslogik und eine Sammellogik aufweisen, die neben dem Merkmal, dass sie die Blockierungs/Entblockierungssignale oder Aspekte aufgrund des Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls berücksichtigen müssen, gewöhnlich oder im Wesentlichen gewöhnlich sein können.
  • Dies ist lediglich eine darstellende beispielhafte Ausführungsform. Weitere Ausführungsformen werden betrachtet, die eine Logik aufweisen, um die Ausführung des Zustandsaktualisierungsbefehls anders zu blockieren, die unterschiedliche Signale daneben beim Ausscheiden (z. B. ein Sprungauflösungssignal oder ein anderes bei-Übergabe-Signal) usw. verwenden.
  • Noch weitere Ausführungsformen betreffen ein System (z. B. ein Computersystem oder eine weitere elektronische Vorrichtung), die einen oder mehrere Prozessoren, wie es hier offenbart ist, aufweisen und/oder ein Verfahren, wie es hier offenbart ist, durchführen. 12 ist ein Blockdiagramm einer beispielhaften Ausführungsform eines geeigneten Computersystems oder elektronischen Vorrichtung 1286.
  • Das Computersystem weist einen Prozessor 1200 auf. In einer oder mehreren Ausführungsformen kann der Prozessor eine Mikrocode-Aliased-Parameter-Weiterreichungslogik und/oder eine Mikrocode-Aliased-Parameter-Speicher-und-Wiederherstellungslogik aufweisen, wie es hier an anderer Stelle offenbart ist.
  • Der Prozessor kann einen oder mehrere Kerne haben. Im Fall eines Mehrfachkernprozessors können die mehreren Kerne auf einem Chip oder Die einer einzelnen integrierten Schaltung (IC) monolithisch integriert sein. Gemäß einem Aspekt kann jeder Kern mindestens eine Ausführungseinheit und mindestens einen Cache aufweisen. Der Prozessor kann ebenfalls einen oder mehrere gemeinsam genutzte Caches aufweisen.
  • In einer bestimmten Ausführungsform kann der Prozessor einen integrierten Grafikcontroller, einen integrierten Videocontroller und einen integrierten Speichercontroller aufweisen, die jeweils auf einem einzelnen Die des Allzweckmikroprozessors monolithisch integriert sind, obwohl dies nicht erforderlich ist. Alternativ können einige oder alle der Komponenten außerhalb des Prozessors angeordnet sein. Der integrierte Speichercontroller kann beispielsweise aus dem Prozessor ausgelassen sein und der Chipsatz kann ein Speichercontroller-Hub (MCH) aufweisen.
  • Der Prozessor ist an einen Chipsatz 1288 über einen Bus (z. B. ein Front Side Bus) oder eine andere Zusammenschaltung 1287 gekoppelt. Die Zusammenschaltung kann verwendet werden, um Datensignale zwischen den Prozessor und weiteren Komponenten des Systems über den Chipsatz zu übermitteln.
  • Ein Speicher 1289 ist an den Chipsatz gekoppelt. In verschiedenen Ausführungsformen kann der Speicher einen Direktzugriffsspeicher (Random Access Memory, RAM) aufweisen. Ein dynamischer RAM (DRAM) ist ein Beispiel eines Typs eines RAM, der in einigen, jedoch nicht allen Computersystemen verwendet wird.
  • Eine Komponentenzusammenschaltung 1290 ist ebenfalls an den Chipsatz gekoppelt. In einer oder mehreren Ausführungsformen kann die Komponentenzusammenschaltung eine oder mehrere Peripheral Component Interconnect Express(PCIe)-Schnittstellen aufweisen. Die Komponentenzusammenschaltung kann es anderen Komponenten ermöglichen, an den Rest des Systems durch den Chipsatz gekoppelt zu sein. Ein Beispiel solcher Komponenten ist ein Grafikchip oder eine andere Grafikvorrichtung, obwohl dies optional und nicht erforderlich ist.
  • Ein Daten-Storage-Speicher 1291 ist an den Chipsatz gekoppelt. In verschiedenen Ausführungsformen kann der Daten-Storage-Speicher ein Festplattenlaufwerk, ein Diskettenlaufwerk, eine CD-ROM-Vorrichtung, eine Flash-Speicher-Vorrichtung, einen dynamischen Direktzugriffsspeicher (Dynamic Random Access Memory, DRAM) oder Ähnliches oder eine Kombination davon aufweisen.
  • Ein Netzwerkcontroller 1293 ist ebenfalls an den Chipsatz gekoppelt. Der Netzwerkcontroller kann es dem System erlauben, an ein Netzwerk gekoppelt zu sein.
  • Ein serieller Erweiterungsport 1292 ist ebenfalls an den Chipsatz gekoppelt. In einer oder mehreren Ausführungsformen kann der serielle Erweiterungsport einen oder mehrere Universal Serial Bus(USB)-Ports aufweisen. Der serielle Erweiterungsport kann verschiedenen anderen Typen von Eingabe/Ausgabe-Vorrichtung erlauben, an den Rest des Systems durch den Chipsatz gekoppelt zu sein.
  • Ein paar veranschaulichende Beispiele von anderen Komponenten, die optional an den Chipsatz gekoppelt sein können, weisen auf, sind jedoch nicht beschränkt auf einen Audio-Controller, einen drahtlosen Transceiver und eine Benutzereingabevorrichtung (z. B. eine Tastatur, Maus).
  • In einer oder mehreren Ausführungsformen kann das Computersystem eine Version des WINDOWSTM-Betriebssystems ausführen, das von der Microsoft Corporation aus Redmond, Washington verfügbar ist. Alternativ können andere Betriebssysteme, wie zum Beispiel UNIX, Linux oder eingebettete Systeme verwendet werden.
  • Dies ist lediglich ein bestimmtes Beispiel eines geeigneten Computersystems. Andere System-Designs und Konfigurationen, die im Stand der Technik für Laptops, Desktops, handgehaltene PCs, Personal Digital Assistants, Ingenieurs-Workstations, Server, Netzwerkvorrichtungen, Netzwerk-Hubs, Switches, Videospielvorrichtungen, Set-Top-Boxen und verschiedene andere elektronische Vorrichtungen mit Prozessoren bekannt sind, sind ebenfalls geeignet. In einigen Fällen können die Systeme mehrere Prozessoren haben.
  • In der Beschreibung und den Ansprüchen können die Begriffe „gekoppelt” und „verbunden” zusammen mit ihren Ableitungen verwendet werden. Es sollte verständlich sein, dass diese Begriffe nicht dazu bestimmt sind, Synonyme füreinander zu sein. Vielmehr kann in bestimmten Ausführungsformen „verbunden” verwendet werden, um anzugeben, dass zwei oder mehr Elemente in einem direkten physikalischen oder elektrischen Kontakt miteinander stehen. „Gekoppelt” kann bedeuten, dass zwei oder mehr Elemente in einem direkten physikalischen oder elektrischen Kontakt stehen. Jedoch kann „gekoppelt” ebenfalls bedeuten, dass zwei oder mehr Elemente nicht in einem direkten Kontakt miteinander stehen, jedoch nach wie vor miteinander kooperieren oder interagieren. Eine Befehlsausführung-Scheduler-Warteschlange kann zum Beispiel an eine Ausführungslogik durch eine oder mehrere Zwischenkomponenten gekoppelt sein.
  • In der obigen Beschreibung wurden für erklärende Zwecke zahlreiche spezifische Details dargelegt, um ein tiefgehendes Verständnis der Ausführungsformen der Erfindung bereitzustellen. Einem Fachmann wird jedoch klar, dass eine oder mehrere andere Ausführungsformen ohne einige dieser spezifischen Details umgesetzt werden können. Die bestimmten beschriebenen Ausführungsformen werden nicht bereitgestellt, um die Erfindung zu beschränken, sondern um Ausführungsformen der Erfindung darzustellen. Der Umfang der Erfindung sollte nicht durch die spezifischen Beispiele, die oben bereitgestellt werden, bestimmt werden, sondern nur durch die nachfolgenden Ansprüche. In anderen Fällen wurden wohlbekannte Schaltungen, Strukturen, Vorrichtungen und Operationen in einer Blockdiagrammform oder ohne Details gezeigt, um ein Verschleiern des Verständnisses der Beschreibung zu vermeiden. Wo es angebracht erschien, wurden Bezugszeichen oder Endabschnitte von Bezugszeigen unter den Figuren wiederholt, um entsprechende oder analoge Elemente anzugeben, die optional ähnliche Eigenschaften haben können.
  • Verschiedene Operationen und Verfahren wurden beschrieben. Einige der Verfahren wurden in einer grundlegenden Form in den Flussdiagrammen beschrieben, jedoch können zu den Verfahren Operationen optional hinzugefügt und/oder entfernt werden. Zusätzlich, während die Flussdiagramme eine bestimmte Reihenfolge der Operationen gemäß den beispielhaften Ausführungsformen zeigen, sollte verständlich sein, dass diese bestimmte Reihenfolge beispielhaft ist. Alternative Ausführungsformen können die Operationen optional in einer unterschiedlichen Reihenfolge durchführen, bestimmte Operationen kombinieren, bestimmte Operationen überlappen usw. Viele Modifikationen und Anpassungen können an den Verfahren durchgeführt werden und sind vorgesehen.
  • Bestimmte Operationen können von Hardware-Komponenten durchgeführt werden oder können als maschinenausführbare oder schaltungsausführbare Befehle verkörpert sein, die verwendet werden können, um eine Schaltung oder eine Hardware, die mit den Befehlen programmiert ist, dazu zu veranlassen die Operationen durchzuführen, oder zumindest dazu führen. Die Schaltung kann einen Allzweck- oder einen Spezialprozessor oder eine logische Schaltung aufweisen, um lediglich einige Beispiele zu nennen. Die Operationen können ebenfalls optional von einer Kombination aus Hardware und Software durchgeführt werden. Eine Ausführungslogik und/oder ein Prozessor können einen spezifischen oder bestimmten Schaltkreis oder eine andere Logik aufweisen, die auf Befehle oder Mikrobefehle oder ein oder mehrere Steuersignale, die aus einem Maschinenbefehl abgeleitet sind, reagiert, um bestimmte Operationen durchzuführen.
  • Eine oder mehrere Ausführungsformen weisen einen Herstellungsartikel (z. B. ein Computerprogrammprodukt) auf, das ein maschinenzugreifbares und/oder maschinenlesbares Medium oder Datenträger aufweist. Das Medium kann einen Mechanismus aufweisen, der Informationen in einer Form bereitstellt, beispielsweise speichert oder sendet, die von der Maschine zugreifbar und/oder lesbar ist. Das maschinenzugreifbare und/oder maschinenlesbare Medium kann einen oder mehrere oder eine Sequenz von Befehlen und/oder Datenstrukturen bereitstellen oder darauf gespeichert haben, die, wenn sie von einer Maschine ausgeführt werden, die Maschine dazu veranlassen oder dazu führen, eine oder mehrere oder einen Abschnitt der Operationen oder Verfahren oder der in den hier offenbarten Figuren gezeigten Techniken durchführen, und/oder die Maschine zum Durchführen veranlassen.
  • In einer Ausführungsform kann das maschinenlesbare Medium ein greifbares nicht vergängliches maschinenlesbares Speichermedium sein. Beispielsweise kann das greifbare nicht vergängliche maschinenlesbare Speichermedium eine Floppy-Diskette, ein optisches Speichermedium, eine optische Platte, eine CD-ROM, eine magnetische Platte, eine magneto-optische Platte, einen Nur-Lese-Speicher (Read Only Memory, ROM), einen programmierbaren ROM (PROM), einen lesbaren und programmierbaren ROM (EPROM), einen elektrisch löschbaren und programmierbaren ROM (EEPROM), einen Wahlzugriffsspeicher (Random Access Memory, RAM), einen statischen RAM (SRAM), einen dynamischen RAM (DRAM), einen Flash-Speicher, einen Phasenwechselspeicher oder Kombinationen davon aufweisen. Das greifbare Medium kann ein oder mehrere feste oder greifbare physikalische Materialien aufweisen, wie zum Beispiel ein Halbleitermaterial, ein Phasenwechselmaterial, ein magnetisches Material usw.
  • In einer weiteren Ausführungsform kann das maschinenlesbare Medium ein nicht greifbares vergängliches maschinenlesbares Kommunikationsmedium aufweisen. Das vergängliche maschinenlesbare Kommunikationsmedium kann zum Beispiel ein elektrisches, optisches, akustisches oder eine andere Form eines verbreiteten Signals aufweisen, wie zum Beispiel Trägerwellen, Infrarotsignale, digitale Signale usw.
  • Beispiele von geeigneten Maschinen weisen auf, sind jedoch nicht beschränkt auf Computersysteme, Desktops, Laptops, Notebooks, Netbooks, Nettops, mobile Internetvorrichtungen (MIDs), Netzwerkvorrichtungen, Router, Switches, Mobiltelefone, Medienabspieler und andere elektronische Vorrichtungen mit einem oder mehreren Prozessoren oder anderen Befehlsausführungsvorrichtungen. Solche elektronischen Vorrichtungen weisen typischerweise einen oder mehrere Prozessoren auf, die mit einer oder mehreren anderen Komponenten gekoppelt sind, wie zum Beispiel eine oder mehrere Storage-Speichervorrichtungen (nicht vergängliches maschinenlesbares Speichermedium), Eingabe/Ausgabe-Benutzervorrichtungen (z. B. eine Tastatur, ein berührungsempfindlicher Bildschirm und/oder eine Anzeige) und/oder Netzwerkverbindungen. Das Koppeln der Prozessoren und anderer Komponenten wird typischerweise durch einen oder mehrere Busse und Bridges erfolgen (die ebenfalls als Bus-Controller bezeichnet werden). Die Storage-Speichervorrichtung einer gegebenen elektronischen Vorrichtung kann somit Code und/oder Daten zur Ausführung auf dem einen oder den mehreren Prozessoren dieser elektronischen Vorrichtung speichern. Alternativ kann ein oder mehrere Teile einer Ausführungsform der Erfindung unter Verwendung unterschiedlicher Kombinationen von Software, Firmware und/oder Hardware implementiert sein.
  • Es sollte ebenfalls gewürdigt werden, dass Bezüge in dieser Spezifikation auf „(genau) eine Ausführungsform”, „eine Ausführungsform” oder „eine oder mehrere Ausführungsformen” beispielsweise bedeuten, dass ein bestimmtes Merkmal bei der Ausübung von Ausführungsformen der Erfindung aufgenommen sein kann. In einer ähnlichen Art und Weise sollte jedoch gewürdigt werden, dass in der Beschreibung verschiedene Merkmale manchmal zusammen in einer einzelnen Ausführungsform, Figur oder der Beschreibung davon für die Zwecke der Glättung der Offenbarung und der Hilfe beim Verständnis von verschiedenen erfindungsgemäßen Aspekten gruppiert sind. Dieses Verfahren der Offenbarung ist jedoch nicht derart auszulegen, dass eine Erfindung derart reflektiert wird, dass die Erfindung mehr Merkmale erfordert, als ausdrücklich in jedem Anspruch angegeben ist. Vielmehr können, wie es durch die folgenden Ansprüche reflektiert wird, erfindungsgemäße Aspekte in weniger als allen Merkmalen einer einzelnen offenbarten Ausführungsform liegen. Somit werden die der detaillierten Beschreibung folgenden Ansprüche hiermit ausdrücklich in diese detaillierte Beschreibung aufgenommen, wobei jeder Anspruch für sich selbst als eine separate Ausführungsform der Erfindung steht.

Claims (20)

  1. Vorrichtung, die Folgendes umfasst: eine Ausführungslogik, die eine Schaltung zum Ausführen von Befehlen aufweist; und eine Befehlsausführung-Scheduler-Logik, die an die Ausführungslogik gekoppelt ist, wobei die Befehlsausführung-Scheduler-Logik eingerichtet ist, einen Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl zu empfangen, wobei die Befehlsausführung-Scheduler-Logik Folgendes aufweist: eine bei-Übergabe-Zustandsaktualisierungslogik, die eingerichtet ist, damit zu warten, den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl zur Ausführung einzuplanen, bis der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl ein nächster Befehl zur Übergabe is.
  2. Vorrichtung nach Anspruch 1, wobei die Befehlsausführung-Scheduler-Logik eine Out-of-Order-Befehlsausführung-Scheduler-Warteschlange aufweist, wobei die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange betriebsbereit eingerichtet ist, einen jüngeren Befehl zur Ausführung einzuplanen, vor dem Einplanen des Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls zur Ausführung.
  3. Vorrichtung nach Anspruch 2, die ferner einen Umordnungspuffer umfasst, der an die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange gekoppelt ist, wobei der Umordnungspuffer eingerichtet ist, eine Angabe an die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange zu liefern, dass der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl der nächste Befehl zur Übergabe ist.
  4. Vorrichtung nach Anspruch 1, wobei der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl einen Ausführen-bei-Übergabe-Steuerregisterschreibbefehl umfasst, der eingerichtet ist, in ein Steuerregister zu schreiben.
  5. Vorrichtung nach Anspruch 1, wobei der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl eingerichtet ist, einen Zustand zu aktualisieren, der nicht konfiguriert ist, umbenannt zu werden.
  6. Vorrichtung nach Anspruch 1, wobei die Befehlsausführung-Scheduler-Logik eine Reservierungsstation umfasst.
  7. Vorrichtung nach Anspruch 1, wobei die Ausführen-bei-Übergabe-Zustandsaktualisierungslogik Folgendes umfasst: eine Vielzahl von Sätzen eines oder mehrerer bei-Übergabe-Bits, wobei jeder der Sätze des einen oder der mehreren bei-Übergabe-Bits einem anderen Eintrag in der Befehlsausführung-Scheduler-Warteschlange der Befehlsausführung-Scheduler-Logik entspricht; eine Bitwertanpassungslogik, die betriebsbereit eingerichtet ist, in Reaktion auf den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl, einen Wert eines Satzes eines oder mehrerer bei-Übergabe-Bits bei einem Einstieg in die Befehlsausführung-Scheduler-Warteschlange, die dem Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl entspricht, auf einen gegebenen Wert anzupassen; eine Bestimmungslogik, die betriebsbereit eingerichtet ist, wenn der Satz des einen oder der mehreren bei-Übergabe-Bits am Einstieg in die Befehlsausführung-Scheduler-Warteschlange, die dem Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl entspricht, den gegebenen Wert hat, zu bestimmen, ob eine Angabe des nächsten Befehls zur Übergabe mit einer Angabe des Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls am Einstieg in die Befehlsausführung-Scheduler-Warteschlange, die dem Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl entspricht, übereinstimmt.
  8. Vorrichtung nach Anspruch 7, wobei die Bitwertanpassungslogik betriebsbereit einen Decoder umfasst, um den bei-Übergabe-Zustandsaktualisierungsbefehl zu decodieren, und wobei die Bestimmungslogik eine Vielzahl von Sätzen von Bestimmungslogik umfasst, wobei jeder einem anderen Eintrag entspricht, wobei ein Satz von Bestimmungslogik für den Eintrag, der dem Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl entspricht, betriebsbereit eingerichtet ist, zu bestimmen, ob eine Vielzahl von Bits, die den nächsten Befehl zur Übergabe repräsentiert, einer Vielzahl von Bits gleicht, die den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl repräsentiert.
  9. Vorrichtung nach Anspruch 7, wobei die Befehl-Scheduler-Logik betriebsbereit eingerichtet ist, eine Ausgabe des Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls zu blockieren, wenn die Bestimmungslogik bestimmt, dass die Angabe des nächsten Befehls zur Übergabe nicht mit der Angabe des Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls übereinstimmt.
  10. Verfahren, das folgende Schritte umfasst: Empfangen eines Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls; Warten damit, den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl zur Ausführung einzuplanen, bis der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl ein nächster Befehl zur Übergabe ist; und Einplanen des Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls zur Ausführung, wenn er der nächste Befehl zur Übergabe ist.
  11. Verfahren nach Anspruch 10, das ferner ein Einplanen, nach Empfangen des Befehls und vor Einplanen des Befehls zur Ausführung, eines jüngeren Befehls zur Ausführung umfasst, wobei der jüngere Befehl jünger als der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl ist.
  12. Verfahren nach Anspruch 10, das ferner folgende Schritte umfasst: Aktualisieren eines internen Zustands einer Befehlsverarbeitungsvorrichtung, wenn der Zustandsaktualisierungsbefehl ausgeführt wird, wobei der interne Zustand ein Steuerregister umfasst, das nicht konfiguriert ist, umbenannt zu werden.
  13. Verfahren nach Anspruch 10, wobei das Warten damit, den Befehl einzuplanen, ein Speichern des Befehls in einer Befehlswarteschlange einer Befehlsausführung-Scheduler-Warteschlange umfasst.
  14. Verfahren nach Anspruch 10, das ferner folgende Schritte umfasst: Ändern eines Werts eines oder mehrerer bei-Übergabe-Bits als Reaktion auf das Empfangen des Befehls; und Blockieren eines Einplanens des Befehls, nachdem der Wert des einen oder der mehreren bei-Übergabe-Bits geändert wurde, bis ein Identifikator des Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls mit einer Angabe des nächsten Befehls zur Übergabe übereinstimmt.
  15. Herstellungsartikel, der Folgendes umfasst: ein maschinenlesbares Speichermedium mit einem darauf gespeicherten Ausführenbei-Übergabe-Zustandsaktualisierungsbefehl, der, wenn er von einer Maschine verarbeitet wird, dazu führt, dass die Maschine Operationen durchführt, aufweisend: Warten damit, den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl zur Ausführung einzuplanen, bis der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl ein nächster Befehl zur Übergabe ist; und Einplanen des Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls zur Ausführung, wenn er der nächste Befehl zur Übergabe ist.
  16. Herstellungsartikel nach Anspruch 15, wobei der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl ferner dazu führt, dass die Maschine Operationen durchführt, umfassend: Einplanen eines jüngeren Befehls zur Ausführung, wobei der jüngere Befehl jünger als der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl ist, nach dem Empfangen des Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls und vor dem Einplanen des Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls zur Ausführung.
  17. Herstellungsartikel nach Anspruch 15, wobei der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl ferner dazu führt, dass die Maschine Operationen durchführt, umfassend: Aktualisieren eines internen Zustands der Maschine, wenn der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl übergeben wird, wobei der interne Zustand ein Steuerregister umfasst, das nicht durch Registerumbenennung umbenannt ist.
  18. System, das Folgendes umfasst: eine Zusammenschaltung; einen Prozessor, der an die Zusammenschaltung gekoppelt ist, wobei der Prozessor eine Befehlsausführung-Scheduler-Logik aufweist, wobei die Befehlsausführung-Scheduler-Logik Folgendes aufweist: eine Logik, die in Reaktion auf den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl ein Einplanen des Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls zur Ausführung blockiert, bis der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl ein nächster Befehl zur Übergabe ist; und einen dynamischen Direktzugriffsspeicher (DRAM), der an die Zusammenschaltung gekoppelt ist.
  19. System nach Anspruch 18, wobei die Befehlsausführung-Scheduler-Logik in einem Out-of-Order-Abschnitt des Prozessors angeordnet ist.
  20. System nach Anspruch 18, wobei der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl einen Steuerregisterschreibbefehl umfasst, der betriebsbereit eingerichtet ist, den Prozessor zum Schreiben eines Steuerregisters zu veranlassen, und wobei das Steuerregister nicht konfiguriert ist, umbenannt zu werden.
DE112011103219T 2010-09-25 2011-09-26 Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehle, Vorrichtungen, Verfahren und Systeme Withdrawn DE112011103219T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/924,311 US9052890B2 (en) 2010-09-25 2010-09-25 Execute at commit state update instructions, apparatus, methods, and systems
US12/924,311 2010-09-25
PCT/US2011/053266 WO2012040708A2 (en) 2010-09-25 2011-09-26 Execute at commit state update instructions, apparatus, methods, and systems

Publications (1)

Publication Number Publication Date
DE112011103219T5 true DE112011103219T5 (de) 2013-07-11

Family

ID=45872029

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112011103219T Withdrawn DE112011103219T5 (de) 2010-09-25 2011-09-26 Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehle, Vorrichtungen, Verfahren und Systeme

Country Status (8)

Country Link
US (1) US9052890B2 (de)
JP (1) JP5635701B2 (de)
KR (1) KR101508566B1 (de)
CN (1) CN103119562B (de)
DE (1) DE112011103219T5 (de)
GB (1) GB2497467B (de)
TW (1) TWI552070B (de)
WO (1) WO2012040708A2 (de)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9052890B2 (en) 2010-09-25 2015-06-09 Intel Corporation Execute at commit state update instructions, apparatus, methods, and systems
US20130124805A1 (en) * 2011-11-10 2013-05-16 Advanced Micro Devices, Inc. Apparatus and method for servicing latency-sensitive memory requests
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
US9015423B2 (en) 2012-06-14 2015-04-21 International Business Machines Corporation Reducing store operation busy times
US9075727B2 (en) 2012-06-14 2015-07-07 International Business Machines Corporation Reducing penalties for cache accessing operations
CN102819419B (zh) * 2012-07-25 2016-05-18 龙芯中科技术有限公司 指令执行流信息处理系统和装置及方法
KR102010317B1 (ko) * 2013-03-14 2019-08-13 삼성전자주식회사 재명명 테이블 재구성을 위한 리오더-버퍼를 기초로 하는 동적 체크포인팅
US9448799B2 (en) * 2013-03-14 2016-09-20 Samsung Electronics Co., Ltd. Reorder-buffer-based dynamic checkpointing for rename table rebuilding
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
RU2644528C2 (ru) * 2013-12-23 2018-02-12 Интел Корпорейшн Инструкция и логика для идентификации инструкций для удаления в многопоточном процессоре с изменением последовательности
US11755484B2 (en) 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US9940136B2 (en) 2015-06-26 2018-04-10 Microsoft Technology Licensing, Llc Reuse of decoded instructions
US10095519B2 (en) 2015-09-19 2018-10-09 Microsoft Technology Licensing, Llc Instruction block address register
US9824012B2 (en) * 2015-09-24 2017-11-21 Qualcomm Incorporated Providing coherent merging of committed store queue entries in unordered store queues of block-based computer processors
US10318295B2 (en) * 2015-12-22 2019-06-11 Intel Corporation Transaction end plus commit to persistence instructions, processors, methods, and systems
US10275250B2 (en) * 2017-03-06 2019-04-30 Arm Limited Defer buffer
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
CN113326524B (zh) * 2021-06-18 2024-05-28 鹏城实验室 指令处理方法及处理器
CN114995884A (zh) * 2022-06-14 2022-09-02 平头哥(上海)半导体技术有限公司 指令退休单元、指令执行单元及相关装置和方法

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5265233A (en) 1991-05-17 1993-11-23 Sun Microsystems, Inc. Method and apparatus for providing total and partial store ordering for a memory in multi-processor system
US5636374A (en) 1994-01-04 1997-06-03 Intel Corporation Method and apparatus for performing operations based upon the addresses of microinstructions
US5898854A (en) 1994-01-04 1999-04-27 Intel Corporation Apparatus for indicating an oldest non-retired load operation in an array
US5452426A (en) 1994-01-04 1995-09-19 Intel Corporation Coordinating speculative and committed state register source data and immediate source data in a processor
JPH07302200A (ja) 1994-04-28 1995-11-14 Hewlett Packard Co <Hp> 順次付けロード動作および順序付け記憶動作を強制する命令を有するコンピュータのロード命令方法。
US5724565A (en) * 1995-02-03 1998-03-03 International Business Machines Corporation Method and system for processing first and second sets of instructions by first and second types of processing systems
US5826070A (en) 1996-08-30 1998-10-20 International Business Machines Corporation Apparatus and method for maintaining status flags and condition codes using a renaming technique in an out of order floating point execution unit
US6230253B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data instructions
US6240510B1 (en) * 1998-08-06 2001-05-29 Intel Corporation System for processing a cluster of instructions where the instructions are issued to the execution units having a priority order according to a template associated with the cluster of instructions
US6636950B1 (en) 1998-12-17 2003-10-21 Massachusetts Institute Of Technology Computer architecture for shared memory access
US6493819B1 (en) * 1999-11-16 2002-12-10 Advanced Micro Devices, Inc. Merging narrow register for resolution of data dependencies when updating a portion of a register in a microprocessor
US6678810B1 (en) 1999-12-30 2004-01-13 Intel Corporation MFENCE and LFENCE micro-architectural implementation method and system
JP2001209535A (ja) 2000-01-27 2001-08-03 Toshiba Corp プロセッサの命令スケジューリング装置
US6799268B1 (en) 2000-06-30 2004-09-28 Intel Corporation Branch ordering buffer
US6950925B1 (en) 2002-08-28 2005-09-27 Advanced Micro Devices, Inc. Scheduler for use in a microprocessor that supports data-speculative execution
US7269711B2 (en) 2003-12-29 2007-09-11 Intel Corporation Methods and apparatus for address generation in processors
TWI273485B (en) * 2004-02-04 2007-02-11 Via Tech Inc Pipeline microprocessor, apparatus, and method for generating early status flags
US7496735B2 (en) * 2004-11-22 2009-02-24 Strandera Corporation Method and apparatus for incremental commitment to architectural state in a microprocessor
US7882339B2 (en) 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
TWI334571B (en) * 2007-02-16 2010-12-11 Via Tech Inc Program instruction rearrangement methods
US7769986B2 (en) * 2007-05-01 2010-08-03 International Business Machines Corporation Method and apparatus for register renaming
US8635437B2 (en) * 2009-02-12 2014-01-21 Via Technologies, Inc. Pipelined microprocessor with fast conditional branch instructions based on static exception state
US8335912B2 (en) * 2009-04-22 2012-12-18 Oracle America, Inc. Logical map table for detecting dependency conditions between instructions having varying width operand values
US8966230B2 (en) 2009-09-30 2015-02-24 Intel Corporation Dynamic selection of execution stage
US9052890B2 (en) 2010-09-25 2015-06-09 Intel Corporation Execute at commit state update instructions, apparatus, methods, and systems

Also Published As

Publication number Publication date
KR101508566B1 (ko) 2015-04-07
WO2012040708A3 (en) 2012-07-05
WO2012040708A2 (en) 2012-03-29
JP2013537996A (ja) 2013-10-07
GB2497467A (en) 2013-06-12
JP5635701B2 (ja) 2014-12-03
US9052890B2 (en) 2015-06-09
CN103119562A (zh) 2013-05-22
KR20130064109A (ko) 2013-06-17
GB2497467B (en) 2018-10-10
US20120079488A1 (en) 2012-03-29
TW201224919A (en) 2012-06-16
GB201304555D0 (en) 2013-04-24
CN103119562B (zh) 2017-01-18
TWI552070B (zh) 2016-10-01

Similar Documents

Publication Publication Date Title
DE112011103219T5 (de) Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehle, Vorrichtungen, Verfahren und Systeme
DE60038693T2 (de) Verfahren und vorrichtung zur ausschaltung eines taktsignals in einem vielfadenprozessor
DE69908193T2 (de) Ausführung von speicher- und ladeoperationen mittels einer linkdatei
DE69631778T2 (de) Flexible implementierung eines systemverwaltungsmodus in einem prozessor
DE69233313T2 (de) Hochleistungsarchitektur für RISC-Mikroprozessor
DE69434669T2 (de) Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge
DE69932066T2 (de) Mechanismus zur &#34;store-to-load forwarding&#34;
DE69737423T2 (de) Verfahren und gerät zum replizieren von datenspeicherung in einem fortgeschrittenen mikroprozessor
DE102014003798B4 (de) Verfahren zum Booten eines heterogenen Systems und Präsentieren einer symmetrischen Kernansicht
DE112013003731T5 (de) Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading
DE60009151T2 (de) Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung
DE112016007566T5 (de) Systeme, Verfahren und Vorrichtungen zur heterogenen Berechnung
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE112010004322T5 (de) Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge
DE112011103210T5 (de) Ein auf der Klasse und dem Inhalt von Instruktionen basierendes Energiemanagement für einen Prozessor
DE102014003399A1 (de) Systeme und Verfahren zur Implementierung transaktionalen Speichers
DE112012007088B4 (de) Vorrichtung, verfahren und system mit einem befehl zum reduzieren von elementen in einem vektorregister mit einem schrittweisem zugriffsmuster
DE102015002383A1 (de) Verfahren und Vorrichtung zum Implementieren einer dynamischen Out-of-order-Prozessorpipeline
DE102012216565A1 (de) Decodierzeit-computeranweisungsoptimierung
DE102014003799A1 (de) Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle
DE102012216571A1 (de) Nutzung einer architekturdefinierten letztverwendungs-operandenangabe in einem computersystem-operandenressourcenpool
DE112010004971T5 (de) Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen
DE69908175T2 (de) Verbesserte befehlsdekodierung durch paralleldekodierungsalgorithmus
DE112005003098T5 (de) Verfahren und Vorrichtung zum Zugreifen auf einen physikalischen Speicher von einer CPU oder einem Prozessorelement mit hoher Leistung
DE102013219856A1 (de) Handhaben von potentiell ungültigen Ergebnissen während Vorauslaufen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0009460000

Ipc: G06F0009380000

Effective date: 20130610

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee