DE112011103210T5 - Ein auf der Klasse und dem Inhalt von Instruktionen basierendes Energiemanagement für einen Prozessor - Google Patents

Ein auf der Klasse und dem Inhalt von Instruktionen basierendes Energiemanagement für einen Prozessor Download PDF

Info

Publication number
DE112011103210T5
DE112011103210T5 DE112011103210T DE112011103210T DE112011103210T5 DE 112011103210 T5 DE112011103210 T5 DE 112011103210T5 DE 112011103210 T DE112011103210 T DE 112011103210T DE 112011103210 T DE112011103210 T DE 112011103210T DE 112011103210 T5 DE112011103210 T5 DE 112011103210T5
Authority
DE
Germany
Prior art keywords
macroinstruction
instruction
unit
macro
processor
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
DE112011103210T
Other languages
English (en)
Inventor
Venkateswara R. Madduri
Hoichi Cheong
Jonathan Y. Tong
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 DE112011103210T5 publication Critical patent/DE112011103210T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • 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, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3237Power saving characterised by the action undertaken by disabling clock generation or distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30083Power or thermal control 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • 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, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

Ein Prozessor und ein Verfahren werden offenbart. Bei einer Ausführungsform umfasst der Prozessor einen Prefetch-Puffer, der Makrobefehle speichert. Der Prozessor umfasst auch eine Taktschaltung, die ein Taktsignal für zumindest einige der funktionalen Einheiten im Prozessor liefern kann. Der Prozessor umfasst zusätzlich eine Makrobefehlsdekodierlogik, die eine Klasse jedes Makrobefehls bestimmen kann. Der Prozessor umfasst auch eine Taktverwaltungseinheit, die bewirken kann, dass das Taktsignal in einem Dauerzustand bleibt, das in zumindest eine der Einheiten im Prozessor eintritt, die nicht auf einen aktuellen Mikrobefehl wirken, der dekodiert wird. Schließlich umfasst der Prozessor auch zumindest eine Befehlsdekodereinheit, die den ersten Makrobefehl in einen oder mehrere Opcodes dekodieren kann.

Description

  • Gebiet der Erfindung
  • Die Erfindung bezieht sich auf die Verwaltung des Stromverbrauchs eines Prozessors durch Takt-Gating von einzelnen Teilen des Prozessors, die für eine gegebene Befehlsklasse oder einen bestimmten Inhalt in einem Befehl nicht verwendet werden.
  • Hintergrund der Erfindung
  • Es gibt viele verschiedene funktionelle Einheiten in einer zentralen Recheneinheit (CPU), die in bestimmten Stufen einer Befehlspipeline arbeiten. Abhängig von der Klasse des Befehls oder dem Inhalt eines Befehls ist es oft der Fall, dass nicht alle diese Funktionseinheiten gleichzeitig genutzt werden. Somit gibt es keinen Grund, dass alle Funktionseinheiten innerhalb einer CPU gleichzeitig eingeschaltet sind. Vielmehr können einige Einheiten zu einem bestimmten Zeitpunkt über keine Daten verfügen, mit welchen sie arbeiten können. Wenn eine Funktionseinheit keine Daten zu bearbeiten hat, befindet sie sich effektiv im Leerlauf. Allerdings werden derartige Leerlaufeinheiten, die noch mit einem aktiven Takt versorgt werden, aufgrund des empfangenen Taktsignals einen Stromverbrauch durch den ständigen Wechsel (Hin- und Herschalten) der Latches in der gesamten Einheit erfahren.
  • X68-Befehle weisen mehrere Felder auf. Drei der grundlegendsten Felder sind das Befehls-Opcode-Feld (z. B. Bewegung, Verschiebung, etc.), ein unmittelbares Operandenfeld und ein Verschiebungs-Byte-Feld. Obwohl viele Funktionseinheiten innerhalb der Befehlspipeline eine Schaltung aufweisen, um diese Felder zu behandeln, enthalten einige Instruktionen, die sich durch die Pipeline bewegen, keine Verschiebungs-Byte-Informationen oder eine unmittelbare Operandeninformation. In diesen Fällen werden die Daten, die diese Felder füllen, nicht verwendet und bestehen allgemein aus zufälligen Daten-Bits. Da sich der Befehl durch die Pipeline bewegt, erfahren die Funktionseinheiten, obwohl diese Felder nicht verwendet werden, dennoch ein Umschalten an ihren Latches, die diese Information eingeben. Dieses Umschalten erhöht weiter den Stromverbrauch in den Funktionseinheiten einer CPU.
  • Kurzbeschreibung der Zeichnungen
  • Die vorliegende Erfindung wird beispielhaft dargestellt und wird nicht durch die Zeichnungen, in welchen gleiche Bezugszeichen ähnliche Elemente bezeichnen, beschränkt und in welchen:
  • 1 eine Ausführungsform eines Computersystems veranschaulicht, das in der Lage ist, den Stromverbrauch eines Prozessors basierend auf der Klasse und dem Inhalt von Instruktionen, die in zumindest einem Prozessor im System ausgeführt werden, zu verwalten;
  • 2 spezifische relevante Einheiten und funktionale Logikblöcke innerhalb eines bestimmten Kerns zeigt, die es dem Kern ermöglichen, den Kernstromverbrauch durch eine Befehlsklassenbestimmung und Befehlsinhaltsbestimmung zu verwalten;
  • 3 eine Ausführungsform einer Zustandsmaschine beschreibt, die verwendet wird, um Fließkomma-Mikrooperationen durch eine Befehlspipeline zu verfolgen;
  • 4 ein Flussdiagramm einer Ausführungsform eines Verfahrens zum Takt-Gaten eines oder mehrerer programmierbarer Logikarrays in einem Dekoder ist, die nicht dazu konfiguriert sind, einen aktuellen Befehl zu dekodieren, der in den Dekoder eintritt;
  • 5 ein Flussdiagramm einer Ausführungsform eines Verfahrens zum Takt-Gaten einer Verzweigungseinheit ist, wenn ein Verzweigungsbefehl nicht in der Pipeline dekodiert wird;
  • 6 ein Flussdiagramm einer Ausführungsform eines Verfahrens zum Takt-Gaten einer Fließkommaeinheit ist, wenn kein Fließkommabefehl in der Befehlspipeline vorhanden ist;
  • 7 ein Flussdiagramm einer Ausführungsform eines Verfahrens zum Eliminieren der unmittelbaren und Verschiebungs-Byte-Felder eines Befehls ist, wenn der Befehl diese Felder nicht verwendet.
  • Detaillierte Beschreibung der Erfindung
  • Ausführungsformen eines Prozessors und eines Verfahrens zur Verwaltung der Prozessorleistung basierend auf der Klasse und dem Inhalt von Befehlen in einer Befehlseinheit werden offenbart.
  • 1 veranschaulicht eine Ausführungsform eines Computersystems, das dazu geeignet ist, den Stromverbrauch eines Prozessors basierend auf der Klasse und dem Inhalt von Befehlen zu verwalten, die in zumindest einem Prozessor im System ausgeführt werden.
  • Das Computersystem 100 wird gezeigt. Das Computersystem kann ein Desktop, Server, eine Workstation, ein Laptop, ein Handheld, ein TV-Set-Top, ein Media-Center, eine Spielkonsole, ein integriertes System (wie beispielsweise in einem Auto) oder eine andere Art eines Computersystems sein. In mehreren Ausführungsformen umfasst das Computersystem 100 eine oder mehrere zentrale Verarbeitungseinheiten (CPUs), die auch als „Prozessoren” bezeichnet werden. Obwohl es in vielen Ausführungsformen potentiell mehrere CPUs gibt, ist in der in 1 gezeigten Ausführungsform zur Vereinfachung lediglich die CPU 102 gezeigt. Die CPU 102 kann eine CPU der Intel Corporation oder eine CPU einer anderen Marke sein. Die CPU 102 umfasst in verschiedenen Ausführungsformen einen oder mehrere Kerne. Die CPU 102 ist mit vier Kernen (Kerne 104, 106, 108 und 110) gezeigt.
  • In vielen Ausführungsformen umfasst jeder Kern mehrere interne funktionelle Blöcke/Einheiten/Logik-Komponenten, wie die in der Explosionsansicht des Kerns 104 gezeigten. Beispielsweise umfasst der Kern 104 zumindest einen Befehls-/Daten-(d. h. Ebene 1, L1)Cache 112, einen Prefetch-Puffer 114, einen Vordekodier-Cache 116, einen Befehlsdekoder 118, eine Verzweigungsadresse-Berechnungseinheit 120, eine Befehlswarteschlange 122, eine Gleit-Komma-Ausführungseinheit 124, eine Zuordnungs-/Rückordnungs-Einheit 126 und eine Takt-Verwaltungs-/Erzeugungs-Logik 128. Mehrere dieser Einheiten und Logik-Komponenten werden in wesentlichen Einzelheiten nachfolgend mit Bezug zu 2 erläutert. Im Allgemeinen gibt es mehr Einheiten, Register und andere Schaltungen in jedem Kern als die im Kern 104 gezeigten, einschließlich der Möglichkeit mehrerer Kopien jeder der gezeigten Einheiten (z. B. eine oder mehrere Ganzzahl-/Adressausführungseinheiten, drei Gleit-Komma-Einheiten, etc.), wobei zusätzliche Einheiten nicht gezeigt sind, um die Klarheit der wichtigen Elemente aus 1 beizubehalten.
  • In einem Einzel-Thread-Kern kann jeder Kern als ein Hardware-Thread bezeichnet werden. Wenn ein Kern ein Multi-Thread oder Hyper-Thread ist, kann jeder Thread, der in jedem Kern arbeitet, auch als ein Hardware-Thread bezeichnet werden. Somit kann jeder einzelne Ausführungs-Thread, der im Computersystem 100 läuft als ein Hardware-Thread bezeichnet werden. Beispielsweise gibt es in 1, wenn jeder Kern ein Einzel-Thread ist, vier Hard-Ware-Threads im System (vier Kerne). Wenn andererseits jeder Kern ein Mehrfach-Thread ist und die Fähigkeit hat, die Zustände von zwei Threads gleichzeitig aufrechtzuerhalten, sind acht Hardware-Threads im System vorhanden (vier Kerne mit zwei Threads pro Kern).
  • Die CPU 102 kann ebenfalls einen oder mehrere Nicht-L1-Caches, wie beispielsweise den Nicht-L1-Cache 112 aufweisen. Bei vielen Ausführungsformen ist zumindest ein Nicht-L1-Cache, wie beispielsweise der Cache 130 in der CPU 102 außerhalb irgendeines gegebenen Kerns vorhanden. Zusätzlich wird bei vielen Ausführungsformen der Cache 130 von den vier gezeigten Kernen geteilt. Bei anderen Ausführungsformen, die nicht gezeigt sind, sind zusätzliche Nicht-L1-Caches neben dem Cache 130 realisiert. Bei verschiedenen Ausführungsformen kann der Cache 130 auf verschiedene Weise aufgeteilt sein. Zusätzlich kann der Cache 130 bei verschiedenen Ausführungsformen eine von vielen verschiedenen Größen haben. Beispielsweise kann der Cache 130 ein 8-Megabyte-(MB)-Cache, ein 16-MB-Cache etc. sein. Zusätzlich kann bei verschiedenen Ausführungsformen der Cache 130 ein direkt abgebildeter Cache, ein vollassoziativer Cache, ein Mehr-Wege-Satz-Assoziativ-Cache oder ein Cache mit einer anderen Art von Abbildung sein. Bei vielen Ausführungsformen kann der Cache 130 einen großen Teil aufweisen, der zwischen allen Kernen geteilt wird, oder kann in mehrere getrennte funktionale Scheiben unterteilt sein (z. B. eine Scheibe für jeden Kern). Der Cache 130 kann auch einen Teil, der zwischen allen Kernen geteilt wird und mehrere andere Teile aufweisen, die getrennte funktionale Scheiben pro Kern sind.
  • Bei vielen Ausführungsformen umfasst die CPU 102 einen integrierten Systemspeichercontroller 132, um über eine Schnittstelle zur Kommunikation mit dem Systemspeicher 134 zu verfügen. Bei anderen Ausführungsformen, die nicht gezeigt sind, kann sich der Speichercontroller 132 in einer diskreten anderswo im Computersystem 100 befinden.
  • Der Systemspeicher 134 kann einen dynamischer Direktzugriffsspeicher (DRAM), wie beispielsweise einen Typ eines DRAM mit doppelter Datenrate (DDR), einen nichtflüchtigen Speicher, wie beispielsweise einen Flash-Speicher, einen Phasenänderungsspeicher (PCM) oder jeden anderen Typ von Speichertechnologie aufweisen. Der Systemspeicher 134 kann ein Mehrzweckspeicher sein, um Daten und Befehle zu speichern, mit welchen die CPU 102 arbeitet. Zusätzlich kann es andere mögliche Vorrichtungen im Computersystem 100 geben, die dazu geeignet sind, in den Systemspeichern zu lesen und zu schreiben, wie beispielsweise eine zu einem direkten Speicherzugriff (DMA) eingerichtete E/A-(Eingabe/Ausgabe)Vorrichtung.
  • Die Verbindung (d. h. Bus, Interconnect, etc.), die die CPU 102 mit dem Systemspeicher 134 koppelt, kann einen oder mehrere optische, metallische oder andere Drähte (d. h. Leitungen) aufweisen, die dazu geeignet sind, Daten, Adressen, Steuer- und Taktinformationen zu transportieren.
  • Der Platform-Controller-Hub (PCH) 136 (z. B. ein Komplex von E/A-Controllern und anderer Schaltung) umfasst eine E/A-Schnittstelle, die eine Kommunikation zwischen der CPU 102 und externen E/A-Vorrichtungen ermöglicht. Der Komplex kann einen oder mehrere E/A-Adapter umfassen, wie beispielsweise den E/A-Adapter 138. Die E/A-Adapter übersetzen ein Host-Kommunikationsprotokoll, das in der CPU 102 verwendet wird, in ein Protokoll, das mit einer speziellen E/A-Vorrichtung kompatibel ist, wie beispielsweise der E/A-Vorrichtung 140. Einige der Protokolle, die ein gegebener E/A-Adapter übersetzen kann, umfassen unter anderem einen Peripheral-Component-Interconnect(PCI)-Express, Universal Serial Bus (USB), Serial Advanced Technology Attachment (SATA), Small Computer System Interface (SCSI), Redundant Array of Inexpensive Discs (RAID) und 1394 „Firewire”. Zusätzlich können einer oder mehrere drahtlose Protokoll-E/A-Adapter vorhanden sein. Beispiele drahtloser Protokolle sind unter anderem Bluetooth, IEEE 802.11-basierende drahtlose Protokolle und Mobiltelefonprotokolle.
  • Abgesehen von U/O-Geräten kann der PCH 136 auch mit einem oder mehreren eingebetteten Controller (ECs) im System, wie beispielsweise EC 142 gekoppelt sein. Der EC 142 kann eine Reihe von Funktionen enthalten. Beispielsweise kann eine RAID-Speicher-Controller-Vorrichtung im Computersystem 100 vorhanden sein. Der RAID-Controller kann ein Array von Festplattenlaufwerken oder Solid-State-Platten (SSDs) verwalten. Andere Beispiele der Controllervorrichtung können eine diskrete Out-of-Band-Verwaltungsengine, ein Keyboard-Controller oder eine andere Art eines Controllers sein.
  • In anderen Ausführungsformen ist der PCH 136 eine diskrete Vorrichtung, die sich außerhalb der CPU 102 befindet. Bei diesen Ausführungsformen koppelt eine Schnittstelle, wie beispielsweise eine direkte Speicherschnittstelle (DMI) die CPU an den PCH. Jedoch sind diese Ausführungsformen nicht gezeigt.
  • Eine Inter-CPU-Schnittstelle 144 kann eine Schnittstelle zu einem Link bereitstellen, das mit einem oder mehreren zusätzlichen CPUs gekoppelt ist und kann ermöglichen, dass CPU-Kommunikationen stattfinden. Beispielsweise kann eine Hochgeschwindigkeits-Inter-CPU-Schnittstelle ein Quick-Path-Interconnect (QPI) oder eine ähnliche Schnittstelle sein. Obwohl zusätzliche CPUs in 1 nicht gezeigt sind, ist bei vielen Ausführungsformen die CPU 102 eine von mehreren CPUs, die im Computersystem 100 vorhanden sind. Bei vielen Ausführungsformen liefert die Inter-CPU-Schnittstelle 144 eine Hochgeschwindigkeits-Punkt-zu-Punkt-Kommunikationsschnittstelle zwischen der CPU 102 und jeder der anderen im System vorhanden CPUs.
  • Eine Graphikschnittstelle 146 kann eine Schnittstelle zu einem Link liefern, das mit einem diskreten Graphik-Controller gekoppelt ist (ein diskreter Graphik-Controller ist nicht gezeigt). Die Schnittstelle kann eine Hochgeschwindigkeitsplattform-Component-Interconnect(PCI)-Express-Schnittstelle oder eine andere Hochgeschwindigkeitsschnittstelle sein. Bei anderen Ausführungsformen umfasst die CPU 102 einen integrierten Graphik-Controller und die Graphik-Schnittstelle 146 kann mit einer Anzeigevorrichtung gekoppelt sein, wie beispielsweise einem Monitor. Bei vielen Ausführungsformen handelt es sich bei der Schnittstelle um eine Hochgeschwindigkeitsschnittstelle, um die Übertragung eines signifikanten Graphikdatenverkehrs über den Link zu ermöglichen (z. B. 3D-Graphik, Video, etc.).
  • Das Computersystem 100 umfasst auch eine Systemmanagement-Firmware 148, um Boot-Befehle zur Initialisierung des Computersystems und der Komponenten bereitzustellen. Bei verschiedenen Ausführungsformen kann die Systemmanagement-Firmware ein Basic-Eingabe/Ausgabe-System (BIOS), eine erweiterbare Firmware oder eine andere Form von Firmware-Befehlen sein, die das Computersystem während des Bootens der Plattform verwenden kann.
  • Bei vielen Ausführungsformen umfasst jeder Kern im Computersystem 100 eine interne Logik, um den Stromverbrauch des Kerns basierend auf der Klasse und dem Inhalt von Befehlen zu verwalten, die in jedem Kern ausgeführt werden. Eine Vielzahl von Logik in mehreren Einheiten wird dazu verwendet, um bestimmte Einheiten auf einer Takt-um-Taktbasis durch die Taktmanagement/Erzeugungslogik 128 zu Takt-gaten.
  • 2 veranschaulicht spezielle relevante Einheiten und funktionale Logikblöcke in einem gegebenen Kern, die dem Kern die Fähigkeit verleihen, den Stromverbrauch des Kerns durch eine Befehlsklassenbestimmung und Befehlsinhaltbestimmung zu verwalten.
  • In einem gegebenen Kern werden Makrobefehle aus dem Befehls-Cache 112 abgerufen und gelangen in einen Prefetch-Puffer 200. Bei vielen Ausführungsformen gibt es zwei Befehlsdekoder (Dekoder 0 (202) und Dekoder 1 (204)). Der Prefetch-Puffer 200 versorgt ein Befehlsregister für jeden Dekoder (Befehl-1-Register (206) und Befehl-2-Register (208). Bei denen in 1 gezeigten Ausführungsformen gibt es zwei in der Befehlsdekodereinheit gezeigte Dekoder, da der Kern dazu geeignet ist, zwei Befehle gleichzeitig zu dekodieren. Zur Vereinfachung ist die detaillierte Schaltung in einem einzelnen Dekoder lediglich im Dekoder 0 gezeigt. Dieselbe Schaltung ist auch im Dekoder 1 vorhanden. Sie ist jedoch nicht dargestellt, da die Schaltung die im Dekoder 0 gezeigte Schaltung spiegelt und daher eine nochmalige Erläuterung der Schaltung überflüssig ist.
  • Abgesehen von dem Prefetch-Puffer 200 gibt es auch eine vordekodier-basierte Logik 210, die Cache-Zeilen aus dem Prefetch-Puffer liest und den Makrobefehl aus der Befehlscache-Zeile trennt und die Länge des Befehls basierend auf den Vordekodier-Bits bestimmt. Für jeden Makrobefehl liefert die Dekodierlogik eine erste Durchgangsnährung der Byte-Größenklasse des Befehls (d. h. ob der Makrobefehl in eine 1-Byte-Mikrooperation (Opcode), einen 2-Byte-Opcode, einen 3-Byte-Opcode dekodiert wird oder in einen komplexeren Satz aus einem oder mehreren Opcodes variierender Länge dekodiert. Die Byte-Klassengröße des Vordekodier-Prozesses ist eine Näherung, da es einige Befehle gibt, bei welchen die Byte-Größe falsch werden kann. Abgesehen von der in 2 gezeigten Logik gibt es einen weiteren parallelen Dekoder (Gesamtlängen-Dekoder 242), der eine Gesamtlängendekodierung ausführt, die vollkommen fehlerfrei ist. Jedoch ist der Gesamtlängendekoder nicht so effizient wie der Vordekodier-Längennährung und wird daher parallel zum durch die in 2 gezeigte Logik ausgeführten Dekodierprozess ausgeführt.
  • Bei vielen Ausführungsformen werden, falls der Gesamtlängendekoder mit einer Opcode-Byte-Länge antwortet, die sich von der durch die Makrobefehldekodierlogik abgeschätzten Länge unterscheidet, die nachfolgenden Befehle nach dem momentanen Befehl invalidiert, da eine fehlerhafte Opcode-Byte-Länge bewirken kann, dass zufällige Abfalldaten weiter abwärts in der Befehlspipeline verwendet werden. Invalidierte Befehle werden wieder durch die Pipeline mit der richtigen Opcode-Byte-Länge gesandt, die durch den Gesamtlängendekoder bestimmt wurde. Obwohl die Invalidierung eines gelegentlichen Opcodes und ein nachfolgender zweiter Durchgang durch die Befehlspipeline die Effektivität der Pipeline vermindert, gewährt die hohe Erfolgsrate der Makrobefehlsdekodierlogik-Byte-Längen-Näherung sogar einen noch höheren Effizienzgewinn, um die Verwendung dieses parallelen dualen Längendekodierprozesses zu rechtfertigen.
  • Zurückkommend auf das Befehl-1-Register 206 tritt der Makrobefehl, der in diesem Register eingeklinkt ist, in den Dekoder 0 (202) ein und wird zu mehreren Logikkomponenten im Dekoder weitergeleitet. Anstelle der Handhabung des Dekodierprozesses jedes Typs eines empfangenen Makrobefehls durch ein großes Programmierlogik-Array (PLA) sind die im Dekoder 0 vorhandenen PLAs in PLAs unterteilt, die Makrobefehl-Dekodieren pro Byte-Länge durchführen. Alle Makrobefehle, die 1-Byte-Opcodes produzieren, werden im 1-Byte-Opcode-PLA 212 dekodiert, alle Makrobefehle, die 2-Byte-Opcodes produzieren, werden im 2-Byte-Opcode-PLA 214 dekodiert und alle Makrobefehle, die 3-Byte-Opcodes produzieren, werden im 3-Byte-Opcode-PLA 216 dekodiert. Zusätzliche dekodiert ein komplexes Befehls-PLA 218 alle anderen Opcodes, die nicht durch eine Dekodierung in den PLAs 212216 abgedeckt sind. Im Allgemeinen fallen die meisten Makrobefehle in die 1-3-Byte-Opcode-Übersetzungen. Somit wird die komplexe Befehls-PLA 218 nicht so häufig verwendet werden wie die anderen drei PLAs.
  • Bei Dekodern einer früheren Generation war im Allgemeinen ein PLA vorhanden, das dazu in der Lage war, alle Befehle zu dekodieren. Die Schaltungen aller vier PLAs in 2 waren in diese einzige PLA integriert. Somit war unabhängig davon, welche Byte-Größenklasse eines Makrobefehls von der PLA empfangen wurde, die ganze PLA aktiv, um den Makrobefehl in entsprechende Opcode(s) zu dekodieren. Bei der in 2 gezeigten vorliegenden Ausführungsform ist diese Schaltung in vier getrennte PLAs aufgeteilt. Zusätzlich führen alle PLAs aktiv von Zyklus zu Zyklus basierend auf einem empfangenen oszillierenden Taktsignal aus. Dieses oszillierende Taktsignal wird von der Takt-Management- und Erzeugungslogik (CMGL) 220 empfangen. Die CMGL 220 umfasst eine Taktschaltung, um zumindest ein bei zumindest einer Frequenz oszillierendes Taktsignal zu erzeugen. Es können jedoch mehrere Signale bei mehreren Frequenzen verwendet werden, um dem Prozessordesign eine Flexibilität zu verleihen. Bei einigen Ausführungsformen wird mehr als eine Taktgeschwindigkeit verwendet. Einige Einheiten nehmen das Taktsignal bei einer doppelten Frequenz, einer halben Frequenz oder bei irgendeiner anderen eventuell manipulierten Taktsignalfrequenz. Jedoch laufen bei einigen Ausführungsformen die in 2 gezeigten Funktionseinheiten und Logik alle bei derselben Frequenz. Jedenfalls kann die CMGL 220 ein oszillierendes Taktsignal zu jedem/r beliebigen funktionalen Block/Einheit, der/die in 2 gezeigt ist, der/die ein solches benötigt, um korrekt zu laufen, weiterleiten. Zur Verdeutlichung von 2 sind lediglich bestimmte Blöcke/Einheiten mit einem Taktsignal gezeigt, das durch eine vom CMGL 220 abgehende Leitung zugeführt wird, wobei diese speziellen Takt-Quellen- und Zielpaare nachfolgend beschrieben werden.
  • Zusätzlich umfasst die CMGL 220 auch eine Taktverwaltungsschaltung, um die Eignung zur Verfügung zu stellen, die Zuführung des Taktsignals zu jedem beliebigen oder mehreren der funktionalen Blöcke/Einheiten aktiv zu verwalten. Beispielsweise kann die Taktverwaltungsschaltung eine Takt-Gating-Logik aufweisen, um das Taktsignal zu einem Dauer-Hoch-Zustand zu ziehen oder um das Taktsignal in einen Dauer-Niedrig-Zustand herabzudrücken.
  • Wenn einem funktionalen Block/Einheit, der/die einen Takt zum Laufen benötigt, ein eingehendes Taktsignal verweigert wird, hält der Block/die Einheit das Arbeiten an, da die interne Schaltung in einen Dauerzustand gezwungen wird und über keine Schaltaktivität in der Schaltung verfügt (d. h. umschalten/hin- und herschalten basierend auf der Versorgung mit dem Taktsignal). Somit stellt die Logik den Betrieb ein, falls die CMGL 220 ein Taktsignal zu einem Block/einer Einheit einer funktionalen Logik abschaltet. Dadurch wird der Stromverbrauch durch dynamisches Schalten in der Schaltung des Blocks/der Einheit eingespart.
  • Somit kann die CMGL 220 ein Taktsignal, das zu einem/einer bestimmten funktionalen Block/Einheit in 2 zugeführt wird, abschalten oder nicht abschalten. Bei vielen Ausführungsformen sendet die Makrobefehlsdekodierlogik 210 der CMGL 220 die Näherungsinformation über die Byte-Größenklassenlänge, die sie entsprechend einem bestimmten Befehl, der in das Befehls-1-Register 206 eingetreten ist, bestimmt hat. Bei vielen Ausführungsformen kann die genäherte Byte-Größenklassenlänge allgemein 1, 2 oder 3 Bytes sein. Die CMGL 220 hält für den nächsten Taktzyklus das zur PLA zugeführte Taktsignal entsprechend der genäherten Länge bei und zieht den Takt, den sie den beiden anderen PLAs zuführt, die andere Längen dekodieren, in einen Dauerzustand. Für den obengenannten nächsten Taktzyklus ist nur einer der drei speziellen Byte-Längen PLAs in Betrieb. Darüber hinaus sind die beiden anderen speziellen Byte-Längen PLAs nicht in Betrieb und verbrauchen weniger dynamische Leistung, da es in ihren entsprechenden Schaltungen keinen Stromverbrauch durch dynamisches Schalten gibt.
  • Bei einem nächsten Taktzyklus, bei dem ein nachfolgender Befehl im Befehl-1-Register 206 auf das Dekodieren wartet, findet derselbe Prozess statt. Somit verbraucht während eines bestimmten Taktzyklus höchstens eines der 1-, 2- und 3-Byte-Opcode-PLAs eine signifikante Leistung zum dynamischen Schalten. Bei vielen Ausführungsformen empfängt die PLA 218 für komplexe Befehle immer einen zugeführten Takt, da die CMGL über keine Takt-Gating-Eignung für dieses spezielle PLA verfügt.
  • Im Fall eines 1-, 2- oder 3-Byte-Dekodierens wird der Makrobefehl, sobald er durch den relevanten Byte-Längen-PLA hindurchgegangen ist und in den entsprechenden Code dekodiert wurde, durch den MUX 222 gemultiplext. Im Fall eines komplexen Befehls, der ein PLA 218 erfordert, kann das Ergebnis einen Opcode (Opcodes) vom Mikrocode Lese-Nur-Speicher (RAM) 224 produzieren. Der Ausgang des MUX 222 wird dann wieder mit dem Ausgang des PLA 218 und dem Mikrocode ROM 224 durch den MUX 226 gemultiplext. Der Opcode-Ausgang des MUX 226, der den resultierenden Opcode vom Dekoder aufweist, wird dann an der Logik 228 empfangen, die beliebige Versetzungs-Bytes und/oder einen unmittelbaren Operanden, der an den ursprünglichen Makrobefehl im Prefetch-Puffer 200 Feld-angefügt war, empfangen. Sobald die Verschiebungs-Bytes und/oder unmittelbaren Operanden behandelt sind (falls es derartige Feld-angefügt zum ursprünglichen Makrobefehl gibt), wird der Opcode aus dem Dekoder 0 und zur Befehlswarteschlange 230 ausgesandt, um auf die Ausführung zu warten.
  • Bei vielen Ausführungsformen kann die Makrobefehlsdekodierlogik 210 einen gegebenen empfangen Makrobefehl teilweise dekodieren. Die Makrobefehldekodierlogik 210 liefert auch eine Gruppe von Vordekodierbits, die während des Vordekodierprozesses auf einen bestimmten Makrobefehl erzeugt werden. Bei einigen Ausführungsformen kann die Makrobefehlsdekodierlogik 210 dazu geeignet sein, um zu bestimmen, dass basierend auf den Vordekodierbits ein zweiter Befehl, der gleichzeitig im Dekoder 1 dekodiert wurde, ungültig ist. Es gibt viele Beispiele, warm ein zweiter Befehl ungültig sein kann (z. B. ein Verzweigungsaspekt), ungeachtet des Grundes wird jedoch, sobald die Makrobefehlsdekodierlogik 210 realisiert, dass ein zweiter Befehl der in den Dekoder 1 eintritt, ungültig wird, die Makrobefehlsdekodierlogik 210 die CMGL 220 dazu veranlassen, das zum gesamten Dekoder 2 zugeführte Taktsignal zu gaten. Beispielsweise kann die CMGL 220 den Takt zu einem Dauerzustand zum Befehl-2-Register 208 hochziehen, um nicht zuzulassen, dass die Latches im Register den Befehl in den Dekoder 1 freigeben. Bei anderen Ausführungsformen kann die CMGL 220 alle größeren funktionalen Einheiten/Blöcke im Dekoder 2 basierend auf einem Takt-Baum, der in den Dekoder an einer einzelnen Stelle eintritt (nicht in 2 gezeigt) individuell versorgen. Bei diesen Ausführungsformen kann die CMGL 220 den gesamten in den Dekoder eintretenden Baum Takt-gaten. Somit kann die Vordekodier-Logik 210, falls sie feststellt, dass ein Befehl ungültig ist, im Wesentlichen die gesamte Logik im Dekoder abschalten, der dafür geplant war, den Befehl in einen Opcode durch Gaten der zur Dekoderlogik zugeführten Takte zu dekodieren.
  • Wieder zurückkommend zum Dekoder 0 empfängt eine Verzweigungs-, Fließkomma-, Felddetektorlogik (BFFDL) 232 ebenfalls den in den Dekoder 0 vom Instruktion-1-Register 206 fortgeschrittenen Makrobefehl. Die BFFDL 232 umfasst mehrere Teile einer Detektionslogik, um bei der Leistungsverwaltung im Kern zu unterstützen.
  • Wie der Name der Logik nahelegt, gibt es eine getrennte Verzweigungsdetektionslogik, Fließkommadetektionslogik und Felddetektionslogik in der BFFDL 232. Die Verzweigungsdetektionslogik stellt fest, ob der Befehl eine Verzweigungsadressberechnung erfordern wird.
  • Eine Verzweigungsadressberechnungseinheit 234 wird berechnen, was die Verzweigungsadresse für einen Verzweigungsbefehl sein wird. Falls der Makrobefehl keinerlei Form einer Verzweigung umfasst, wird diese Verzweigungsadressberechnungseinheit 234 nicht verwendet, wobei dennoch der zu dieser Einheit zugeführte Takt normalerweise betriebsfähig ist, was wiederum einen unnötigen dynamischen Schaltstromverbrauch hervorruft. Um den Stromverbrauch der Verzweigungsadressberechnungseinheit 234 zu minimieren, erkennt die BFFDL 232, dass ein nächster Befehl, der die Verzweigungsadressberechnungseinheit 234 erreichen würde, kein Verzweigungsbefehl ist. Die BFFDL 232 kann diese Information zur CMGL 220 senden, um zu bewirken, dass die CMGL 220 einen zur Verzweigungsadressberechnungseinheit 234 zugeführten Takt gatet.
  • Die Felddetektionslogik in der BFFDL 232 hat die Fähigkeit zu bestimmen, ob der spezielle Makrobefehl, der aktuell empfangen wurde, Daten in einem Versetzungs-Byte-Feld und/oder Daten in einem unmittelbaren Operandenfeld aufweist. Viele Makrobefehle verwenden diese Felder nicht. Selbst wenn die Felder nicht verwendet werden, besitzt die Logik in der gesamten Pipeline, die Opcodes behandelt, Slots für diese Felder, wobei diese Slots zufällige Abfalldaten darin aufweisen, die zusammen mit dem Opcode weitergegeben werden. Zufällige Abfalldaten bewirken einen Stromverbrauch durch dynamisches Schalten, obwohl die Daten nicht verwendet werden. Somit instruiert die BFFDL 232 bei vielen Ausführungsformen, sobald sie festgestellt hat, dass der Makrobefehl weder einen noch beide dieser Felder verwendet, die Logik 228, die nicht verwendeten Felder zu eliminieren. Dieses Eliminieren der Felder minimiert weiter den Stromverbrauch der Pipeline zwischen funktionalen Einheiten/Blöcken im Kern.
  • Die Fließkommadetektionslogik in der BFFDL 232 detektiert, ob der hereinkommende Makrobefehl eine Fließkomma-(FP)-Operation ist. Bei vielen Ausführungsformen kann eine Fließkommaeinheit 236, die Fließkommaberechnungen behandelt, ähnlich den anderen obigen Takt-gegateten Einheiten Takt-gegated sein, wobei jedoch das Takt-gaten der Fließkommaeinheit komplexer ist, da für das korrekte Funktionieren der Einheit eine Vorlaufzeit erforderlich ist und es unpraktisch ist, die gesamte FP-Einheit 236 pro Takt zu Takt-gaten. Somit wird bei vielen Ausführungsformen die FP-Einheit 236 nur dann ge-Takt-gated, wenn in der gesamten Pipeline keine FP-Operationen vorhanden sind. Die Pipeline, die die FP-Einheit betrifft, umfasst im Allgemeinen ein Beginnen an der Dekoder-Einheit (um den FP-Makrobefehl zu dekodieren) und ein Beenden an der Retirement-Einheit (welche den FP-Befehl rückordnet, nachdem die Ausführung abgeschlossen ist). Somit kann eine State-Machine implementiert werden, um ein Verfolgen eines vollen Satzes von FP-Operationen, die in der Pipeline (zwischen Dekodieren und Rückordnen) vorhanden sind, zu unterstützen.
  • Eine FP-Mikro-Op-Tracker-Einheit 238 kann beliebige in der Pipeline vorhandene FP-Befehle/Opcodes beobachten und die CMGL 220 instruieren, die FP-Einheit 236 zu Taktgaten, falls keine FP-Befehle/Opcodes vorhanden sind. Die BFFDL 232 sendet Informationen an den FP-Mikro-Op-Tracker-Einheit 238, wenn ein FP-Befehl in die Dekodierstufe eintritt. Der FP-Befehl geht dann durch die gesamte Pipeline hindurch und wird eventuell rückgeordnet. Während der Rückordnung informiert die Zuweisungs-Retirement-Einheit 240 die FP-Mikro-Op-Tracker-Einheit 238, dass der FP-Befehl rückgeordnet wurde. Sobald er rückgeordnet ist, kann die FP-Mikro-Op-Tracker-Einheit 238, falls keine weiteren FP-Befehle in den Dekoder eingetreten sind, die CMGL 220 instruieren, die in die FP-Einheit 236 eintretenden Takte abzuschalten.
  • 3 beschreibt eine Ausführungsform einer Statusmaschine, die verwendet wird, um Fließkommamikrooperationen durch eine Befehlspipeline zu verfolgen.
  • Der Anfangsstatus zeigt die Pipeline in einem Leerlaufzustand bezüglich Fließkommamikrooperationen (Status 300). Falls keine FP-Mikroperation (μOP) empfangen wird, bleibt die Statusmaschine im Leerlaufzustand, da die Pipeline keine FP μOP dekodiert (Aufgabe A). Falls eine FP μOP ankommt, dekodiert die Pipeline die FP μOP (Aufgabe B) und die Zustandsmaschine geht in den nächsten Zustand über, in dem die μOP die Dekodierstufe beendet hat und sich nun in der Befehlswarteschlange befindet (Zustand 302). Sobald sich eine FP μOP in der Befehlswarteschlange befindet, besteht der einzige Weg, um wieder in den Leerlaufzustand zurückzukehren für die FP μOP darin, rückzuordnen, ohne dass zusätzliche FP μOPs in der Pipeline verbleiben.
  • Sobald sich sie FP μOP in der Befehlswarteschlange befindet (Zustand 302) können zwei Ereignisse auftreten. Zuerst, falls sich die FP μOP immer noch in der Befehlswarteschlange befindet, während eine neue zweite FP μOP im Dekoder ankommt, hält die Zustandsmaschine die Verfolgung der ersten FP μOP an und geht stattdessen zu einer Verfolgung der zweiten FP μOP über, die gerade angekommen ist. Dies erfolgt, da die zweite FP μOP nach der ersten FP μOP rückordnen wird. Die Pipeline führt die Aufgabe des Dekodierens einer weiteren FP μOP (Aufgabe C) durch.
  • Ein weiteres potenzielles Ereignis ist, dass der μOP in der Befehlswarteschlange Ressourcen zugewiesen werden können, die ausgeführt werden sollen (Aufgabe D). In diesem Fall geht die Zustandsmaschine in den μOP-Zuweisungszustand über (Zustand 304).
  • Sobald sie sich im μOP-Zuweisungszustand befindet, können weitere drei Ereignisse auftreten. Zuerst, falls die erste FP μOP in der Zuweisungsstufe (Zustand 304) rückgeordnet werden muss und eine neue zweite FP μOP im Dekoder ankommt, hält die Zustandsmaschine das Verfolgen der ersten FP μOP an und geht stattdessen dazu über, die zweite FP μOP zu verfolgen, die gerade angekommen ist. Dies erfolgt, da die zweite FP μOP nach der ersten FP μOP rückordnen wird. Die Pipeline führt die Aufgabe der Dekodierung einer weiteren FP μOP durch (Aufgabe E). Dies bewirkt, dass die Zustandsmaschine zu der μOP zurückkehrt, die sich im Befehlswarteschlangenzustand befindet (Zustand 302), und die Zustandsmaschine nun die zweite FP μOP verfolgt.
  • Ein zweites Ereignis, das im Zustand 304 erfolgen kann, ist, dass die FP μOP-Zuweisung stattgefunden hat, jedoch die FP μOP-Rückordnung noch nicht erfolgt ist. In diesem Fall findet ein Nicht-Ereignis statt, da die Pipeline die FP μOP nicht rückordnet (Aufgabe F). Das kann während der Ausführung der FP μOP stattfinden.
  • Das dritte Ereignis, das im Zustand 304 erfolgen kann ist, dass die Pipeline die FP μOP rückordnen kann (Aufgabe G). Wenn dieses Ereignis stattfindet, bewegt sich die Zustandsmaschine zum Leerlauf zurück (Zustand 300). An jeden gegebenen Punkt, an dem sich die Zustandsmaschine im Leerlaufzustand befindet, kann der FP μOP-Tracker (238 in 2) der CMGL 220 befehlen, die FP-Einheit 236 zu Takt-gaten.
  • 4 ist ein Ablaufdiagramm einer Ausführungsform eines Prozesses zum Takt-gaten eines oder mehrerer programmierbarer Logik-Arrays in einem Dekoder, die nicht dazu konfiguriert sind, einen momentanen Befehl zu dekodieren, der in den Dekoder eintritt.
  • Der Prozess wird durch die Verarbeitungslogik durchgeführt, die Hardware-Schaltungen und/oder Mikrocode in verschiedenen Ausführungsformen aufweisen kann. Der Prozess beginnt, indem die Verarbeitungslogik einen Makrobefehl von einem Prefetch-Puffer abruft (Verarbeitungsblock 400). Der Prozess wird fortgesetzt, indem die Verarbeitungslogik eine Byte-Längenklasse des Makrobefehls bestimmt (Verarbeitungsblock 402). Basierend auf der Bestimmung Takt-gated die Verarbeitungslogik dann eine oder mehrere PLAs im Dekoder, in welcher (welchen) der Makrobefehl dekodiert werden soll (Verarbeitungsblock 404). Das/die spezielle/speziellen PLA(s), die Takt-gegated sind, sind diejenigen, die nicht zum Dekodieren von Makrobefehlen der bestimmten Byte-Längen-Klasse zugewiesen sind. Schließlich dekodiert die Verarbeitungslogik dann den Makrobefehl im Dekoder mit dem verbleibenden PLA, das nicht Takt-gegated wurde (Verarbeitungsblock 406).
  • 5 ist ein Ablaufdiagramm einer Ausführungsform eines Prozesses zum Takt-gaten einer Verzweigungseinheit, wenn ein Verzweigungsbefehl nicht dekodiert worden ist.
  • Der Prozess wird durch die Verarbeitungslogik durchgeführt, die Hardware-Schaltungen und/oder Mikrocode in verschiedenen Ausführungsformen aufweisen kann. Der Prozess beginnt, indem die Verarbeitungslogik einen Makrobefehl vom Prefetch-Puffer abruft (Verarbeitungsblock 500). Die Verarbeitungslogik bestimmt dann, ob ein Befehl ein Verzweigungsbefehl ist (Verarbeitungsblock 502). Falls der Befehl ein Verzweigungsbefehl ist, endet der Prozess. Ansonsten, falls der Befehl kein Verzweigungsbefehl ist, Takt-gated die Verarbeitungslogik die Verzweigungseinheit während des Taktzyklus, bei dem sich der Opcode, der vom Makrobefehl erzeugt wurde, an der Verzweigungsberechnungsposition in der Pipeline befindet (Verarbeitungsblock 504) und der Prozess ist beendet.
  • 6 ist ein Ablaufdiagramm einer Ausführungsform eines Prozesses zum Takt-gaten einer Fließkommaeinheit, wenn in der Befehlspipeline kein Fließkommabefehl vorhanden ist.
  • Der Prozess wird durch die Verarbeitungslogik durchgeführt, die Hardware-Schaltungen und/oder Mikrocode in verschiedenen Ausführungsformen aufweisen kann. Der Prozess beginnt, indem die Verarbeitungslogik bestimmt, ob es in der Pipeline zwischen der Dekodiereinheit und der Retirement-Einheit irgendeinen FP-Befehl gibt (Verarbeitungsblock 600). Falls es dort irgendwo einen FP-Befehl in der Pipeline gibt, kehrt der Prozess zum Block 600 zurück und es erfolgt eine erneute Überprüfung. Ansonsten, falls es keinen FP-Befehl in der Pipeline gibt, Takt-gated die Verarbeitungslogik die FP-Einheit (Verarbeitungsblock 602) und der Prozess endet. Bei vielen Ausführungsformen verwendet dieser Prozess eine Zustandsmaschine, die in 3 detailliert ist, um das Vorhandensein von FP-Befehlen in der Pipeline zu verfolgen.
  • 7 ist ein Ablaufdiagramm einer Ausführungsform eines Prozesses zum Eliminieren der unmittelbaren und Verschiebungs-Byte-Felder eines Befehls, wenn der Befehl diese Felder nicht verwendet.
  • Der Prozess wird durch eine Verarbeitungslogik durchgeführt, die Hardware-Schaltungen und/oder Microcode in verschiedenen Ausführungsformen aufweisen kann. Der Prozess beginnt, indem die Verarbeitungslogik einen Makrobefehl aus dem Prefetch-Puffer abruft (Verarbeitungsblock 700). Die Verarbeitungslogik bestimmt dann, ob der Befehl das Immediate-Feld verwendet (Verarbeitungsblock 702). Falls der Befehl das Immediate-Feld nicht verwendet, eliminiert die Verarbeitungslogik alle Daten im Immediate-Feld des Befehls (Verarbeitungsblock 704). Unabhängig davon, ob der Befehl das Immediate-Feld verwendet, bestimmt der Verarbeitungsblock als nächstes, ob der Befehl das Displacement-Bytes-Feld verwendet (Verarbeitungsblock 706). Falls er das Displacement-Bytes-Feld verwendet, ist der Prozess beendet. Ansonsten, falls der Befehl das Displacement-Bytes-Feld nicht verwendet, eliminiert die Verarbeitungslogik alle Daten im Displacement-Bytes-Feld des Befehls (Verarbeitungsblock 708) und der Prozess endet.
  • Bei vielen Ausführungsformen wird der Takt, wenn das Takt-Gaten auf einen/eine gegebenen/gegebene funktionalen/funktionale Block/Einheit ausgeführt wird, für zumindest einen Taktzyklus zu der Einheit getaktet, obwohl das Takt-Gaten über mehrere als einen Zyklus stattfinden kann, abhängig von dem speziellen Grund zum Takt-Gaten der Einheit. Beispielsweise wird das Takt-Gaten des 1-Byte-PLAs im Allgemeinen auf der Basis eines einzelnen Taktzyklus durchgeführt, da Befehle zum Dekodieren an jedem Taktzyklus hereingebracht werden. Somit kann das PLA für so wenig wie einen Taktzyklus ge-gated werden. In derselben Betrachtung können Tausende Mikrobefehle ohne eine einzelne Fließkommaoperation durch die Pipeline laufen, wobei in diesem Fall die FP-Einheit für viele Taktzyklen nacheinander Takt-gegated werden kann.
  • Elemente der Ausführungsformen der vorliegenden Erfindung können auch als ein maschinenlesbares Medium zum Speichern der maschinenlesbaren Befehle bereitgestellt werden. Das maschinenlesbare Medium kann beispielsweise einen Flash-Speicher, optische Platten, Kompaktplatten-Lese-Nur-Speicher (CD-ROM), digitale bewegliche/Videoplatten (DVD) ROM, Direktzugriffsspeicher (RAM), löschbare programmierbare Lese-Nur-Speicher (EPROM), elektrisch löschbare programmierbare Lese-Nur-Speicher (EEPROM), magnetische oder optische Karten, Ausbreitungsmedien oder andere Arten von maschinenlesbaren Medien, die zum Speichern elektronischer Befehle geeignet sind, aufweisen, ohne darauf beschränkt zu sein.
  • In der oben angegebenen Beschreibung und in den Ansprüchen können die Ausdrücke „umfassen” und „aufweisen” zusammen mit ihren Abwandlungen verwendet werden, und es ist beabsichtigt, dass sie als Synonyme betrachtet werden. Zusätzlich können in der folgenden Beschreibung und in den Ansprüchen die Ausdrücke „gekoppelt” und „verbunden” zusammen mit ihren Abwandlungen verwendet werden. Es ist zu beachten, dass diese Ausdrücke nicht als Synonyme füreinander gedacht sind. Vielmehr kann in bestimmten Ausführungsformen „gekoppelt” dazu verwendet werden, um anzuzeigen, dass sich zwei oder mehr Elemente in einem direkten physikalischen oder elektrischen Kontakt miteinander befinden. „Gekoppelt” kann bedeuten, dass sich zwei oder mehr Elemente in direktem physikalischen oder elektrischen Kontakt befinden. Jedoch kann „gekoppelt” auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander stehen, wobei sie jedoch immer noch zusammenwirken, wechselwirken oder miteinander kommunizieren können.
  • In der obigen Beschreibung wird eine bestimmte Terminologie dazu verwendet, um Ausführungsformen der Erfindung zu beschreiben. Beispielsweise ist der Ausdruck „Logik” für Hardware, Firmware, Software (oder beliebige Kombinationen daraus) repräsentativ, um eine oder mehrere Funktionen auszuführen. Beispielsweise umfassen Beispiele von „Hardware” eine integrierte Schaltung, eine endliche Zustandsmaschine oder sogar eine kombinatorische Logik, ohne darauf beschränkt zu sein. Die integrierte Schaltung kann die Form eines Prozessors, wie beispielsweise eines Mikroprozessors, einer anwendungsspezifischen integrierten Schaltung, eines digitalen Signalprozessors, eines Mikrocontrollers oder dergleichen annehmen.
  • Es ist zu beachten, dass eine Bezugnahme in dieser Beschreibung auf „eine einzelne Ausführungsform” oder „eine Ausführungsform” bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine Charakteristik, die in Verbindung mit der Ausführungsform beschrieben wurde, in zumindest einer Ausführungsform der vorliegenden Erfindung enthalten ist. Daher wird betont und sollte beachtet werden, dass zwei oder mehr Bezugnahmen auf „eine Ausführungsform” oder „eine einzelne Ausführungsform” oder „eine alternative Ausführungsform” an verschiedenen Stellen in dieser Beschreibung nicht notwendigerweise alle dieselbe Ausführungsform betreffen. Darüber hinaus können die jeweiligen Merkmale, Strukturen oder Charakteristiken in einer oder mehreren Ausführungsformen der Erfindung in geeigneter Weise kombiniert werden.
  • Gleichermaßen ist zu beachten, dass in der vorangehenden Beschreibung von Ausführungsformen der Erfindung verschiedene Merkmale manchmal miteinander in einer einzelnen Ausführungsform, Figur oder Beschreibung davon gruppiert sind, um die Beschreibung, die das Verständnis eines oder mehrerer der verschiedenen erfinderischen Aspekte unterstützt, zu rationalisieren. Jedoch ist diese Art der Offenbarung nicht dahingehend zu interpretieren, dass sie die Absicht widerspiegelt, dass der beanspruchte Gegenstand mehr Merkmale erfordert als ausdrücklich in jedem Anspruch genannt sind. Stattdessen liegen die erfinderischen Aspekte, wie durch die folgenden Ansprüche reflektiert ist, in weniger als allen Merkmalen einer vorangehend offenbarten Ausführungsform. Somit werden die der detaillierten Beschreibung folgenden Ansprüche hiermit ausdrücklich in diese detaillierte Beschreibung einbezogen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • IEEE 802.11-basierende [0021]

Claims (21)

  1. Ein Prozessor, aufweisend: einen Prefetch-Puffer zum Speichern einer Mehrzahl von Makrobefehlen; eine Taktschaltung, um ein oszillierendes Taktsignal für zumindest eine Mehrzahl von Einheiten im Prozessor bereitzustellen; eine Makrobefehlsdekodierlogik zum Bestimmen einer Klasse jedes Makrobefehls, der aus dem Prefetch-Puffer abgerufen ist; in Antwort auf die Bestimmung der Klasse eines ersten Makrobefehls der Mehrzahl von Makrobefehlen, eine Taktverarbeitungseinheit, um zu bewirken, dass das oszillierende Taktsignal in einem Dauerzustand für zumindest einen Taktzyklus bleibt, das in zumindest eine der Mehrzahl von Einheiten im Prozessor eintritt, die nicht dazu verwendet werden, um auf den ersten Makrobefehl einzuwirken; und eine erste Befehlsdekodiereinheit der Mehrzahl von Einheiten zum Dekodieren des ersten Makrobefehls in einen oder mehrere Opcodes.
  2. Prozessor nach Anspruch 1, weiter aufweisend: die erste Befehlsdekodereinheit, aufweisend eine erste programmierbare Logik-Array-(PLA)-Einheit der Mehrzahl von Einheiten, zum Dekodieren von Makrobefehlen, die vom Prefetch-Puffer abgerufen wurden, die einen Ein-Byte-Opcode produzieren; eine zweite PLA-Einheit der Mehrzahl von Einheiten zum Dekodieren von Makroinstruktionen, die vom Prefetch-Puffer abgerufen wurden, die einen Zwei-Byte-Opcode produzieren; und eine dritte PLA-Einheit der Mehrzahl von Einheiten zum Dekodieren von Makroinstruktionen, die vom Prefetch-Puffer abgerufen wurden, die einen Drei-Byte-Opcode produzieren; wobei die Makrobefehlsdekodierlogik konfiguriert ist, um eine Byte-Länge eines Opcodes zu bestimmen, der aus dem ersten Makrobefehl erzeugt wurde; und wobei die Taktverwaltungsschaltung bewirkt, dass das oszillierende Taktsignal in einem Dauerzustand für zumindest einen Taktzyklus bleibt, das in irgendeines des ersten, zweiten und dritten PLA eintritt, die Makrobefehle der bestimmten Byte-Länge nicht dekodieren.
  3. Prozessor nach Anspruch 1, weiter aufweisend: dass die Taktverwaltungseinheit bewirkt, dass das oszillierende Taktsignal in einem Dauerzustand für zumindest ein Taktzyklus bleibt, das in eine Verzweigungsadressenberechnungseinheit der Mehrzahl von Einheiten eintritt, in Antwort darauf, dass bestimmt wurde, dass eine Klasse des ersten Makrobefehls kein Verzweigungsbefehl ist.
  4. Prozessor nach Anspruch 1, weiter aufweisend: dass die Makrobefehlsdekodierlogik bestimmt, ob der erste Makrobefehl einen oder mehrere Displacement-Bytes aufweist; und ein Displacement-Byte-Feld im ersten Makrobefehl in Reaktion darauf eliminiert, dass der erste Makrobefehl keine Displacement-Bytes aufweist.
  5. Prozessor nach Anspruch 1, weiter aufweisend: dass die Makrobefehlsdekodierlogik bestimmt, ob der erste Makrobefehl einen unmittelbaren Operanden aufweist; und ein unmittelbares Operandenfeld im ersten Makrobefehl in Reaktion darauf eliminiert, dass der erste Makrobefehl keinen unmittelbaren Operanden aufweist.
  6. Prozessor nach Anspruch 1, weiter aufweisend: eine zweite Befehlsdekodiereinheit der Mehrzahl von Einheiten; dass die Makrobefehlsdekodierlogik bestimmt, ob ein zweiter Makrobefehl der Mehrzahl von Makrobefehlen nicht gültig ist, wobei der erste Makrobefehl in die erste Befehlsdekodiereinheit bei einem ersten Taktzyklus eintreten soll und der zweite Makrobefehl in die zweite Befehlsdekodiereinheit beim ersten Taktzyklus eintreten soll; und dass die Leistungsverwaltungsschaltung bewirkt, dass das oszillierende Taktsignal in einem Dauerzustand für zumindest einen Taktzyklus bleibt, das in die zweite Befehlsdekodiereinheit in Reaktion darauf eintritt, dass festgestellt ist, dass der zweite Makrobefehl nicht gültig ist.
  7. Prozessor nach Anspruch 1, weiter aufweisend: einen Fließkomma-Mikrooperations-Tracker, um eine Fließkomma-Mikrooperation zu verfolgen, wobei die Fließkomma-Mikrooperation einem Fließkommamakrobefehl der Mehrzahl von Makrobefehlen entspricht, von einer Zeit, zu der der entsprechende Fließkommamakrobefehl aus dem Vorladepuffer abgerufen wurde, bis zu einem Zeitpunkt einer Rückordnung der Fließkomma-Mikrooperation; und um ein Fließkomma-Pipeline-Clear-Flag zu setzen, das anzeigt, dass, wenn es gesetzt ist, momentan keine Fließkomma-Mikrooperationen verfolgt werden; und dass die Leistungsverwaltungsschaltung bewirkt, dass das oszillierende Taktsignal in einem Dauerzustand für zumindest einen Taktzyklus bleibt, das in eine Fließkommaeinheit der Mehrzahl von Einheiten in Reaktion darauf eintritt, dass das Fließkomma-Pipeline-Clear-Flag gesetzt ist.
  8. Verfahren, aufweisend: Speichern einer Mehrzahl von Makroinstruktionen in einem Vorabruf-Puffer; Bereistellen eines oszillierenden Taktsignals für zumindest eine Mehrzahl von Einheiten im Prozessor; Bestimmen einer Klasse jedes Makrobefehls, der aus dem Vorladepuffer abgerufen wurde; in Reaktion auf ein Bestimmen der Klasse eines ersten Makrobefehls der Mehrzahl von Makrobefehlen, Bewirken, dass das oszillierende Taktsignal in einem Dauerzustand bleibt, das zumindest in eine der Mehrzahl von Einheiten im Prozessor eintritt, die nicht dazu verwendet werden, um auf den ersten Makrobefehl zu wirken; und Dekodieren des ersten Makrobefehls in einen oder mehrere Opcodes.
  9. Verfahren nach Anspruch 8, das des Weiteren aufweist: Dekodieren von Makrobefehlen, die aus dem Vorladepuffer abgerufen wurden, die einen Ein-Byte-Opcode produzieren; Dekodieren von Makrobefehlen, die aus dem Vorladepuffer abgerufen wurden, die einen Zwei-Byte-Opcode produzieren; und Dekodieren von Makrobefehlen, die aus dem Vorladepuffer abgerufen wurden, die einen Drei-Byte-Opcode produzieren; Bestimmen einer Bytelänge eines Opcodes, der aus dem ersten Makrobefehl produziert wurde; und Bewirken, dass das oszillierende Taktsignal in einem Dauerzustand für zumindest einen Taktzyklus bleibt, das in irgendeines von dem ersten, zweiten und dritten PLA eintritt, die Makrobefehle der bestimmten Bytelänge nicht dekodieren.
  10. Verfahren nach Anspruch 8, weiter aufweisend: Bewirken, dass das oszillierende Taktsignal in einem Dauerzustand für zumindest einen Taktzyklus bleibt, das in eine Verzweigungsadressen-Berechungseinheit der Mehrzahl von Einheiten in Reaktion darauf eintritt, dass für eine Klasse des ersten Makrobefehls bestimmt wird, dass sie kein Verzweigungsbefehl ist.
  11. Verfahren nach Anspruch 8, weiter aufweisend: Bestimmen, ob der erste Makrobefehl eines oder mehrere Displacement-Bytes aufweist; und Eliminieren eines Displacement-Byte-Feldes im ersten Makrobefehl in Reaktion darauf, dass der erste Makrobefehl keine Displacement-Bytes aufweist.
  12. Verfahren nach Anspruch 8, welches des Weiteren aufweist: Bestimmen, ob der erste Makrobefehl einen unmittelbaren Operanden aufweist; und Eliminieren eines unmittelbaren Operandenfeldes im ersten Makrobefehl in Reaktion darauf, dass der erste Makrobefehl keinen unmittelbaren Operanden aufweist.
  13. Verfahren nach Anspruch 8, des Weiteren aufweisend: Bestimmen, ob der zweiter Makrobefehl der Mehrzahl von Makrobefehlen nicht gültig ist, wobei der erste Makrobefehl bei einem ersten Taktzyklus in die erste Befehlsdekodiereinheit eintritt, und der zweite Makrobefehl beim ersten Taktzyklus in eine zweite Befehlsdekodiereinheit eintritt; und Bewirken, dass das oszillierende Taktsignal in einem Dauerzustand für zumindest einen Taktzyklus bleibt, das in die zweite Befehlsdekodiereinheit in Reaktion darauf eintritt, dass der zweite Makrobefehl als nicht gültig bestimmt wird.
  14. Verfahren nach Anspruch 8, weiter aufweisend: Verfolgen einer Fließkomma-Mikrooperation, wobei die Fließkomma-Mikrooperation einem Fließkommamakrobefehl der Mehrzahl von Makrobefehlen entspricht, von einem Zeitpunkt, zu dem der entsprechende Fließkommamakrobefehl aus dem Vorladepuffer abgerufen wird, zu einem Zeitpunkt einer Rückordnung der Fließkomma-Mikrooperation; und Setzen eines Fließkomma-Pipeline-Clear-Flags, das anzeigt, dass, wenn es gesetzt ist, momentan keine Fließkommamikrooperationen verfolgt werden; und Bewirken, dass das oszillierende Taktsignal in einem Dauerzustand für zumindest einen Taktzyklus bleibt, das in eine Fließkommaeinheit der Mehrzahl von Einheiten in Reaktion darauf eintritt, dass das Fließkomma-Pipeline-Clear-Flag gesetzt ist.
  15. Prozessor, aufweisend: einen Vorladepuffer, um eine Mehrzahl von Makrobefehlen zu speichern; eine Taktschaltung, um ein oszillierendes Taktsignal für zumindest eine Mehrzahl von Einheiten im Prozessor bereitzustellen; eine Makrobefehlsdekodierlogik, um eine näherungsweise Byte-Längeklasse jedes Makrobefehls zu bestimmen, der aus dem Vorladepuffer abgerufen wird; in Reaktion auf die Bestimmung der näherungsweisen Byte-Längenklasse eines ersten Makrobefehls der Mehrzahl von Makrobefehlen, eine Taktmanagementeinheit, die bewirkt, dass das oszillierende Taktsignal in einem Dauerzustand für zumindest einen Taktzyklus bleibt, das in zumindest eine der Mehrzahl von Einheiten im Prozessor eintritt, die nicht dazu verwendet werden, um auf den ersten Makrobefehl zu wirken; eine erste Befehlsdekodiereinheit der Mehrzahl von Einheiten zum Dekodieren des ersten Makrobefehls in einen oder mehrere Opcodes; eine Volllängendekodiereinheit, um eine genaue Bytelängenklasse des ersten Makrobefehls zu bestimmen, wobei der Volllängendekodierer den ersten Makrobefehl parallel mit dem ersten Befehlsdekoder dekodiert; um die genaue Bytelängenklasse des ersten Makrobefehls mit der näherungsweisen Byte-Längenklasse des ersten Makrobefehls zu vergleichen; den einen oder die mehreren Opcodes zu invalidieren, die von der ersten Befehlsdekodiereinheit erzeugt wurden, in Reaktion darauf, dass die genaue Byte-Länge und die genäherte Byte-Länge verschiedene Längen sind.
  16. Prozessor nach Anspruch 15, welcher des Weiteren aufweist: dass die erste Befehlsdekodierlogik aufweist: eine erste programmierbare Logik-Array-(PLA)-Einheit der Mehrzahl von Einheiten zum Dekodieren von Makrobefehlen, die aus dem Vorladepuffer abgerufen wurden, die einen Ein-Byte-Opcode erzeugen; eine zweite PLA-Einheit der Mehrzahl von Einheiten zum Dekodieren von Makroinstruktionen, die aus dem Vorladepuffer abgerufen wurden, die einen Zwei-Byte-Opcode produzieren; und eine dritte PLA-Einheit der Mehrzahl von Einheiten zum Dekodieren von Makroinstruktionen, die aus dem Vorladepuffer abgerufen wurden, die einen Drei-Byte-Opcode produzieren; wobei die Makrobefehlsdekodierlogik eine Byte-Länge eines Opcodes bestimmen soll, der aus dem ersten Makrobefehl erzeugt wurde; und die Taktverwaltungsschaltung bewirken soll, dass das oszillierende Taktsignal in einem Dauerzustand für zumindest einen Taktzyklus bleibt, das in ein beliebiges von dem ersten, zweiten und dritten PLA eintritt, die Makrobefehle der bestimmten Byte-Länge nicht dekodieren.
  17. Prozessor nach Anspruch 15, weiter aufweisend: dass die Taktverwaltungsschaltung bewirken soll, dass das oszillierende Taktsignal in einem Dauerzustand für zumindest einen Taktzyklus bleibt, das in eine Verzweigungsadressberechnungseinheit der Mehrzahl von Einheiten in Reaktion darauf eintritt, dass für eine Klasse des ersten Makrobefehls bestimmt wurde, kein Verzweigungsbefehl zu sein.
  18. Prozessor nach Anspruch 15, weiter aufweisend: dass die Makrobefehlsdekodierlogik bestimmen soll, ob der erste Makrobefehl einen oder mehrere Displacement-Bytes aufweist; und ein Displacement-Byte-Feld im ersten Makrobefehl in Reaktion darauf eliminieren soll, dass der erste Makrobefehl keine Displacement-Bytes aufweist.
  19. Prozessor nach Anspruch 15, weiter aufweisend: dass die Makrobefehlsdekodierlogik bestimmen soll, ob der erste Makrobefehl einen unmittelbaren Operanden aufweist; und ein unmittelbares Operandenfeld im ersten Makrobefehl in Reaktion darauf eliminieren soll, dass der erste Makrobefehl keinen unmittelbaren Operanden aufweist.
  20. Prozessor nach Anspruch 15, weiter aufweisend: eine zweite Befehlsdekodiereinheit der Mehrzahl von Einheiten; dass die Makrobefehlsdekodierlogik bestimmen soll, ob ein zweiter Makrobefehl der Mehrzahl von Makrobefehlen nicht gültig ist, wobei der erste Makrobefehl in die erste Befehlsdekodiereinheit bei einem ersten Taktzyklus eintreten soll und der zweite Makrobefehl in die zweite Befehlsdekodiereinheit beim ersten Taktzyklus eintreten soll; und die Leistungsverwaltungsschaltung bewirken soll, dass das oszillierende Taktsignal in einem Dauerzustand für zumindest einen Taktzyklus bleibt, das in die zweite Befehlsdekodiereinheit in Reaktion darauf eintritt, dass der zweite Makrobefehl als nicht gültig bestimmt wurde.
  21. Prozessor nach Anspruch 15, weiter aufweisend: einen Fließkomma-Mikrooperations-Tracker, um eine Fließkomma-Mikrooperation zu verfolgen, wobei die Fließkomma-Mikrooperation einem Fließkomma-Makrobefehl der Mehrzahl von Makrobefehlen entspricht, von einem Zeitpunkt, zu dem der entsprechende Fließkomma-Makrobefehl aus dem Vorladepuffer abgerufen wurde, bis zu einem Zeitpunkt einer Rückordnung der Fließkomma-Makrooperation; und ein Fließkomma-Pipeline-Clear-Flag zu setzen, das anzeigt, wenn es gesetzt ist, dass momentan keine Fließkomma-Mikrooperationen verfolgt werden und dass die Leistungsverwaltungsschaltung bewirkt, dass das oszillierende Taktsignal in einem Dauerzustand für zumindest einen Taktzyklus bleibt, das in eine Fließkomma-Einheit der Mehrzahl von Einheiten in Reaktion darauf eintritt, dass das Fließkomma-Pipeline-Clear-Flag gesetzt ist.
DE112011103210T 2010-09-24 2011-09-23 Ein auf der Klasse und dem Inhalt von Instruktionen basierendes Energiemanagement für einen Prozessor Withdrawn DE112011103210T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/890,574 2010-09-24
US12/890,574 US9710277B2 (en) 2010-09-24 2010-09-24 Processor power management based on class and content of instructions
PCT/US2011/053147 WO2012040662A2 (en) 2010-09-24 2011-09-23 Processor power management based on class and content of instructions

Publications (1)

Publication Number Publication Date
DE112011103210T5 true DE112011103210T5 (de) 2013-07-04

Family

ID=45871869

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112011103210T Withdrawn DE112011103210T5 (de) 2010-09-24 2011-09-23 Ein auf der Klasse und dem Inhalt von Instruktionen basierendes Energiemanagement für einen Prozessor

Country Status (9)

Country Link
US (1) US9710277B2 (de)
JP (1) JP5735112B2 (de)
KR (1) KR101496062B1 (de)
CN (1) CN103154846B (de)
BR (1) BR112013006962A2 (de)
DE (1) DE112011103210T5 (de)
GB (1) GB2497443B (de)
TW (1) TWI567639B (de)
WO (1) WO2012040662A2 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120079249A1 (en) * 2010-09-28 2012-03-29 Wei-Han Lien Training Decode Unit for Previously-Detected Instruction Type
CN104281413B (zh) * 2013-07-10 2017-10-20 群联电子股份有限公司 命令队列管理方法、存储器控制器及存储器储存装置
KR102270791B1 (ko) * 2014-12-10 2021-06-29 삼성전자주식회사 매크로 명령어를 처리하는 방법 및 장치
WO2017145341A1 (ja) * 2016-02-25 2017-08-31 富士通株式会社 端末装置、給電判定装置及び給電判定方法
CN105929928B (zh) * 2016-04-25 2018-11-27 天津大学 一种指令级并行处理器低功耗设计优化方法
US9977680B2 (en) * 2016-09-30 2018-05-22 International Business Machines Corporation Clock-gating for multicycle instructions
WO2019105332A1 (en) * 2017-11-28 2019-06-06 Bitmain Technologies Inc. Computational integrated circuit chip and corresponding circuit board
CN109086875A (zh) * 2018-08-16 2018-12-25 郑州云海信息技术有限公司 一种基于宏指令集的卷积网络加速方法及装置
CN112540796B (zh) * 2019-09-23 2024-05-07 阿里巴巴集团控股有限公司 一种指令处理装置、处理器及其处理方法
CN111124499B (zh) * 2019-11-22 2022-11-01 中国科学院计算技术研究所 一种兼容多指令系统的处理器及其运行方法
US11907712B2 (en) * 2020-09-25 2024-02-20 Intel Corporation Methods, systems, and apparatuses for out-of-order access to a shared microcode sequencer by a clustered decode pipeline
US20230185572A1 (en) * 2021-12-13 2023-06-15 Intel Corporation Instruction decode cluster offlining

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5374855A (en) 1976-12-15 1978-07-03 Fujitsu Ltd Data processor
JPS6145354A (ja) * 1984-08-10 1986-03-05 Nec Corp マイクロプロセツサ
JPH03167615A (ja) 1989-11-28 1991-07-19 Nec Corp マイクロプロセッサ
US5241637A (en) * 1990-01-05 1993-08-31 Motorola, Inc. Data processor microsequencer having multiple microaddress sources and next microaddress source selection
JP2834289B2 (ja) * 1990-07-20 1998-12-09 株式会社日立製作所 マイクロプロセッサ
JPH05143322A (ja) * 1991-11-15 1993-06-11 Sanyo Electric Co Ltd マイクロコンピユータ
US5392437A (en) * 1992-11-06 1995-02-21 Intel Corporation Method and apparatus for independently stopping and restarting functional units
US5623615A (en) * 1994-08-04 1997-04-22 International Business Machines Corporation Circuit and method for reducing prefetch cycles on microprocessors
US5666537A (en) * 1994-08-12 1997-09-09 Intel Corporation Power down scheme for idle processor components
US5872947A (en) * 1995-10-24 1999-02-16 Advanced Micro Devices, Inc. Instruction classification circuit configured to classify instructions into a plurality of instruction types prior to decoding said instructions
US5726921A (en) * 1995-12-22 1998-03-10 Intel Corporation Floating point power conservation
US5867681A (en) * 1996-05-23 1999-02-02 Lsi Logic Corporation Microprocessor having register dependent immediate decompression
AU3480897A (en) * 1996-06-10 1998-01-07 Lsi Logic Corporation An apparatus and method for detecting and decompressing instructions from a variable-length compressed instruction set
US5941980A (en) * 1996-08-05 1999-08-24 Industrial Technology Research Institute Apparatus and method for parallel decoding of variable-length instructions in a superscalar pipelined data processing system
US6385715B1 (en) * 1996-11-13 2002-05-07 Intel Corporation Multi-threading for a processor utilizing a replay queue
JP2886838B2 (ja) * 1997-01-14 1999-04-26 財団法人工業技術研究院 スーパースカラパイプライン式データ処理装置の可変長命令の並列デコーディング装置及び方法
GB2323188B (en) 1997-03-14 2002-02-06 Nokia Mobile Phones Ltd Enabling and disabling clocking signals to elements
JP3961619B2 (ja) * 1997-06-03 2007-08-22 株式会社東芝 コンピュータシステムおよびその処理速度制御方法
US6275948B1 (en) 1997-11-14 2001-08-14 Agere Systems Guardian Corp. Processor powerdown operation using intermittent bursts of instruction clock
US6609193B1 (en) * 1999-12-30 2003-08-19 Intel Corporation Method and apparatus for multi-thread pipelined instruction decoder
US7516334B2 (en) 2001-03-22 2009-04-07 Sony Computer Entertainment Inc. Power management for processing modules
TW586666U (en) 2001-04-03 2004-05-01 Univ Nat Chiao Tung Microprocessor command reading structure
GB2375695B (en) * 2001-05-19 2004-08-25 At & T Lab Cambridge Ltd Improved power efficency in microprocessors
JP2003058365A (ja) * 2001-08-17 2003-02-28 Matsushita Electric Ind Co Ltd 命令デコード装置
JP4026753B2 (ja) * 2002-07-25 2007-12-26 株式会社日立製作所 半導体集積回路
US7194601B2 (en) * 2003-04-03 2007-03-20 Via-Cyrix, Inc Low-power decode circuitry and method for a processor having multiple decoders
US20040255103A1 (en) 2003-06-11 2004-12-16 Via-Cyrix, Inc. Method and system for terminating unnecessary processing of a conditional instruction in a processor
US7197655B2 (en) * 2003-06-26 2007-03-27 International Business Machines Corporation Lowered PU power usage method and apparatus
US7917734B2 (en) * 2003-06-30 2011-03-29 Intel Corporation Determining length of instruction with multiple byte escape code based on information from other than opcode byte
US7246219B2 (en) * 2003-12-23 2007-07-17 Intel Corporation Methods and apparatus to control functional blocks within a processor
WO2006000979A2 (en) 2004-06-25 2006-01-05 Koninklijke Philips Electronics N.V. Instruction processing circuit
US7263621B2 (en) * 2004-11-15 2007-08-28 Via Technologies, Inc. System for reducing power consumption in a microprocessor having multiple instruction decoders that are coupled to selectors receiving their own output as feedback
TWI286705B (en) 2005-09-06 2007-09-11 Via Tech Inc Power management method of central processing unit
JP5496602B2 (ja) * 2009-10-30 2014-05-21 ルネサスエレクトロニクス株式会社 データプロセッサ
US8850166B2 (en) * 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
IEEE 802.11-basierende

Also Published As

Publication number Publication date
GB2497443A (en) 2013-06-12
CN103154846A (zh) 2013-06-12
GB2497443B (en) 2019-06-12
TW201218074A (en) 2012-05-01
US9710277B2 (en) 2017-07-18
TWI567639B (zh) 2017-01-21
KR101496062B1 (ko) 2015-02-25
KR20130054375A (ko) 2013-05-24
US20120079242A1 (en) 2012-03-29
JP2013546036A (ja) 2013-12-26
GB201302383D0 (en) 2013-03-27
WO2012040662A2 (en) 2012-03-29
BR112013006962A2 (pt) 2016-07-26
CN103154846B (zh) 2015-11-25
JP5735112B2 (ja) 2015-06-17
WO2012040662A3 (en) 2012-05-18

Similar Documents

Publication Publication Date Title
DE112011103210T5 (de) Ein auf der Klasse und dem Inhalt von Instruktionen basierendes Energiemanagement für einen Prozessor
DE69633166T2 (de) Integrierter schaltkreis mit mehreren funktionen und gemeinsamer verwendung mehrerer interner signalbusse zur verteilung der steuerung des buszugriffes und der arbitration
DE102020120019A1 (de) Proaktive di/dt-spannungs-dachabfall-abschwächung
DE60038693T2 (de) Verfahren und vorrichtung zur ausschaltung eines taktsignals in einem vielfadenprozessor
DE69631778T2 (de) Flexible implementierung eines systemverwaltungsmodus in einem prozessor
KR101847857B1 (ko) 스레드 일시중지 프로세서들, 방법들, 시스템들 및 명령어들
DE112011103219T5 (de) Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehle, Vorrichtungen, Verfahren und Systeme
DE112016007566T5 (de) Systeme, Verfahren und Vorrichtungen zur heterogenen Berechnung
DE102010034555A1 (de) Bereitstellen von Zustandsspeicher in einem Prozessor für Systemmanagement-Modus
DE112013003731T5 (de) Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading
DE112012007119T5 (de) Threadmigration-Unterstützung für Kerne unterschiedlicher Architektur
DE102015002582A1 (de) Architekturübergreifendes Kompatibilitätsmodul, um zuzulassen, dass ein Codemodul einer Architektur ein Bibliotheksmodul einer anderen Architektur verwendet
DE112017000721T5 (de) Verfahren, einrichtung und befehle für thread-aussetzung auf benutzerebene
DE102015002383A1 (de) Verfahren und Vorrichtung zum Implementieren einer dynamischen Out-of-order-Prozessorpipeline
DE112017001825T5 (de) Prozessoren, verfahren, systeme und instruktionen zum atomischen speichern von daten, die breiter als eine nativ unterstützte datenbreite sind, in einem speicher
DE112012007115T5 (de) Wahlweise Logikprozessor-Zählung und Typauswahl für eine gegebene Arbeitsbelastung basierend auf Wärme- und Leistungsbudget-Einschränkungen der Plattform
DE112004001854T5 (de) System und Verfahren zur Handhabung von Sonderinstruktionen in einem Prozessor auf Grundlage eines Cache-Speichers mit Ablaufverfolgung
DE112006003632B4 (de) Dynamische selbstzerfallende Bauteilarchitektur
DE112016007516T5 (de) Vorrichtungen und verfahren für eine prozessorarchitektur
DE112006001290T5 (de) Dynamisches Busparken
DE102018132521A1 (de) Vorrichtung und verfahren zur verflachung und reduktion von schleifen in einer single instruction, multiple data- (simd-) pipeline
DE112017001700T5 (de) Prozessoren, Verfahren, Systeme und Anweisungen zum Abruf von Daten auf der angegebenen Cache-Ebene mit garantiertem Abschluss
DE102018002525A1 (de) Hybridatomaritätsunterstützung für einen binärübersetzungsbasierten mikroprozessor
DE102018002294A1 (de) Effizientes bereichsbasiertes speicher-rückschreiben zum verbessern der host-zu-geräte-kommunikation für optimale energie und leistung
DE102018004726A1 (de) Dynamisches Ausschalten und Einschalten von Prozessorkernen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee