DE112017006568T5 - Auslegung einer Basistaktfrequenz eines Prozessors auf der Basis von Nutzungsparametern - Google Patents

Auslegung einer Basistaktfrequenz eines Prozessors auf der Basis von Nutzungsparametern Download PDF

Info

Publication number
DE112017006568T5
DE112017006568T5 DE112017006568.2T DE112017006568T DE112017006568T5 DE 112017006568 T5 DE112017006568 T5 DE 112017006568T5 DE 112017006568 T DE112017006568 T DE 112017006568T DE 112017006568 T5 DE112017006568 T5 DE 112017006568T5
Authority
DE
Germany
Prior art keywords
clock frequency
base clock
frequency value
processing device
processing
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.)
Pending
Application number
DE112017006568.2T
Other languages
English (en)
Inventor
Vasudevan Srinivasan
Krishnakanth V. Sistla
Corey D. Gough
Ian M. Steiner
Nikhil Gupta
Vivek Garg
Ankush Varma
Sujal A. Vora
David P. Lerner
Joseph M. Sullivan
Nagasubramanian Gurumoorthy
William J. Bowhill
Venkatesh Ramamurthy
Chris Macnamara
John J. Browne
Ripan Das
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 DE112017006568T5 publication Critical patent/DE112017006568T5/de
Pending 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
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • 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
    • 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/324Power saving characterised by the action undertaken by lowering clock frequency
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)
  • Microcomputers (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Eine Verarbeitungsvorrichtung umfasst eine Vielzahl von Verarbeitungskernen, ein Steuerregister, das mit einem ersten Verarbeitungskern der Vielzahl von Verarbeitungskernen assoziiert ist, um einen ersten Basistaktfrequenzwert zu speichern, auf dem der erste Verarbeitungskern zu laufen hat, und eine Energieverwaltungsschaltung, um eine Basistaktfrequenzanforderung zu empfangen, die einen zweiten Basistaktfrequenzwert umfasst, den zweiten Basistaktfrequenzwert in dem Steuerregister zu speichern, um zu bewirken, dass der erste Verarbeitungskern auf dem zweiten Basistaktfrequenzwert läuft, und den zweiten Basistaktfrequenzwert auf einer Hardware-Schnittstelle zu exponieren, die mit der Energieverwaltungsschaltung assoziiert ist.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung betrifft Prozessoren und spezifischer die Auslegung der Basisfrequenz eines Prozessors auf der Basis von Nutzungsparametern.
  • ALLGEMEINER STAND DER TECHNIK
  • Eine Rechnervorrichtung kann einen oder mehrere Verarbeitungskerne in einem oder mehreren Prozessoren (wie Zentraleinheiten (CPUs)) zur Ausführung von Instruktionen aufweisen. Die Rechnervorrichtung kann auch eine Speichervorrichtung (wie einen Speicher mit wahlfreiem Zugriff (RAM)) zum Speichern von Instruktionen und Daten aufweisen, die mit dem Vornehmen von Aufgaben (umfassend Benutzeranwendungen und Systemanwendungen, wie den Kernel eines Betriebssystems) in dem einen oder den mehreren Verarbeitungskernen assoziiert sind. Ein Hersteller kann einen Prozessor ausbilden, um auf einem Basistaktfrequenzwert betrieben zu werden, wobei der Basistaktfrequenzwert eine garantierte Taktgeschwindigkeit ist, bei welcher der Prozessor mit voller Arbeitslast laufen kann, ohne die thermische Verlustleistungs-(TDP) Anforderung des Prozessors zu verletzen. Die TDP zeigt die maximale Menge an Wärme an, die von dem Prozessor generiert wird, und die das Kühlsystem, das mit dem Prozessor assoziiert ist, adäquat abführen kann. Der Hersteller kann den Prozessor mit dem Basistaktfrequenzwert markieren.
  • Figurenliste
  • Die Offenbarung wird durch die im Nachstehenden angegebene detaillierte Beschreibung und durch die beigeschlossenen Zeichnungen verschiedener Ausführungsformen der Offenbarung besser verständlich. Die Zeichnungen sind jedoch nicht als Beschränkung der Offenbarung auf die spezifischen Ausführungsformen auszulegen, sondern dienen nur der Erläuterung und dem Verständnis.
    • 1 veranschaulicht ein System gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 2A veranschaulicht einen Prozess zum Erstellen einer Basistaktfrequenz während des Hochfahrens des Systems gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 2B veranschaulicht einen Prozess zum Ändern einer Basistaktfrequenz auf der Basis von Nutzungsszenarios während der Laufzeit gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 3 veranschaulicht einen Prozess zum Einstellen der Basistaktfrequenzwerte in einigen oder selektiven Kernen, um einen Ziel-Service Level zu erfüllen, gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 4 ist ein Blockbild eines Verfahrens zum Einstellen des Basistaktfrequenzwerts auf der Basis eines Ziel-Service Levels gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 5A ist ein Blockbild, das eine Mikroarchitektur für einen Prozessor veranschaulicht, der einen heterogenen Kern aufweist, in dem eine Ausführungsform der Offenbarung verwendet werden kann.
    • 5B ist ein Blockbild, das eine In-order Pipeline und eine Registerumbenennungsstufe-, Out-of-order Ausgabe/Ausführungs-Pipeline veranschaulicht, die gemäß mindestens einer Ausführungsform der Offenbarung implementiert werden.
    • 6 veranschaulicht ein Blockbild der Mikroarchitektur für einen Prozessor, der Logik aufweist, gemäß einer Ausführungsform der Offenbarung.
    • 7 ist ein Blockbild, das ein System veranschaulicht, in dem eine Ausführungsform der Offenbarung verwendet werden kann.
    • 8 ist ein Blockbild eines Systems, in dem eine Ausführungsform der Offenbarung betrieben werden kann.
    • 9 ist ein Blockbild eines Systems, in dem eine Ausführungsform der Offenbarung betrieben werden kann.
    • 10 ist ein Blockbild eines System-on-a-Chip (SoC) gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 11 ist ein Blockbild einer Ausführungsform einer SoC Ausbildung gemäß der vorliegenden Offenbarung.
    • 12 veranschaulicht ein Blockbild einer Ausführungsform eines Computersystems.
    • 13 veranschaulicht den Inhalt, der in Steuerregister gespeichert ist, gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • DETAILLIERTE BESCHREIBUNG
  • Der Hersteller bestimmt einen Basistaktfrequenzwert für einen Prozessor durch Ausbildungs- und Testprozesse, und kann den Basistaktfrequenzwert auf dem Prozessor markieren. Der Basistaktfrequenzwert, der von dem Hersteller zugewiesen wird, wird typischerweise auf der Basis eines bestimmten Nutzungsszenarios bestimmt. Ein Beispiel des bestimmten Nutzungsszenarios kann eine spezifische Kombination der Worst Case Arbeitslast, eines TDP Ziels, eines Zuverlässigkeitsziels usw. sein. Der Hersteller liefert einem Endverbraucher üblicherweise keinen Mechanismus, um den Basistaktfrequenzwert des Prozessors zu ändern (z.B. auf einen höheren Wert als den zugewiesenen Basistaktfrequenzwert). Diese Einschränkung dient dazu, Verletzungen der TDP Anforderung des Prozessors zu verhindern. Obwohl ein Prozessor Hardware-Merkmale aufweisen kann (z.B. die Turbo Boost Technologie), die es dem Prozessor gestatten, opportunistisch über dem Basistaktfrequenzwert zu laufen, der von dem Hersteller markiert wird, garantieren diese Hardware-Merkmale nicht, dass der Prozessor auf einer höheren Taktgeschwindigkeit als dem Basistaktfrequenzwert für eine gegebene Arbeitslast läuft. Da die Turbo Boost Technologie keine anhaltende Taktgeschwindigkeit für die Arbeitslast garantiert, kann ein Cloud Service Anbieter keinen Preis für das gelieferte Cloud Service unter Verwendung dieser opportunistischen hohen Taktfrequenzen festlegen, wenn er eine Service Level Vereinbarung (SLA) mit einem Kunden abschließt.
  • Ausführungsformen der vorliegenden Offenbarung behandeln die im Vorstehenden angeführten und andere Mängel, indem für Endverbraucher Optionen bereitgestellt werden, um die Basistaktfrequenz eines Prozessors auf einen Wert über oder unter dem vom Hersteller zugewiesenen Basistaktfrequenzwert für verschiedene Nutzungsszenarien einzustellen. Ein Nutzungsszenario kann durch einen Satz von Parametern spezifiziert werden, die zum Beispiel eine Zielanzahl von Verarbeitungskernen in dem Prozessor, die zu verwenden sind, eine thermische Verlustleistungs- (TDP) Zielgröße, eine Ziel-Arbeitslast (z.B. als Prozentsatz der TDP) und eine Ziel-Zuverlässigkeitsmessung (z.B. Nutzungsdauer des Prozessors) umfassen. Ausführungsformen können eine Benutzerschnittstelle umfassen, die für einen Benutzer die Optionen bereitstellen kann, um ein Zielnutzungsszenario aus einer Liste von Nutzungsszenarios auszuwählen. Zum Beispiel kann die Benutzerschnittstelle diese Optionen während des Booting Prozesses umfassen. Alternativ dazu kann eine Anwendung, die auf dem Prozessor läuft, diese Optionen bereitstellen. Der Prozessor oder eine Steuerschaltung, die mit dem Prozessor assoziiert ist, kann das ausgewählte Nutzungsszenario verwenden, um einen Ziel-Basistaktfrequenzwert für einen Satz von Verarbeitungskernen in dem Prozessor zu bestimmen. Der Satz von Verarbeitungskernen kann kleiner sein als alle der Verarbeitungskerne in dem Prozessor (z.B. 2 von 6 Verarbeitungskernen). Der Prozessor oder eine Steuereinheit kann die Nutzungsszenarios auch verwenden, um einen Satz von Ziel-Basistaktfrequenzwerten für mehrere nicht verbundene Sätze von Verarbeitungskernen in dem Prozessor zu bestimmen (z.B. 2 von 6 Verarbeitungskernen auf einem ersten Basistaktfrequenzwert (X), und übrige 4 von 6 Verarbeitungskernen auf einem zweiten Basistaktfrequenzwert (Y)). Ferner kann der Prozessor den Basistaktfrequenzwert, der von einer Firmware (PCU Firmware) verwendet wird, die auf einer mit dem Prozessor assoziierten Energieverwaltungsschaltung läuft, auf den Ziel-Basistaktfrequenzwert aktualisieren. Die PCU Firmware kann den Energieverbrauch und die Wärmegenerierung auf der Basis des Ziel-Basistaktfrequenzwerts für den Satz von Verarbeitungskernen berechnen. Ansprechend auf das Einstellen der PCU Berechnung gemäß dem Ziel-Basistaktfrequenzwert kann der Prozessor den Satz von Verarbeitungskernen auslegen, um auf dem Ziel-Basistaktfrequenzwert zu laufen, und es dem Satz von Verarbeitungskernen zu ermöglichen, auf dem Ziel-Basistaktfrequenzwert zu laufen. Auf diese Weise kann ein Cloud Service Anbieter einen Preis für den verstärkten Ziel-Basistaktfrequenzwert mit dem Endverbraucher in einer Service Level Vereinbarung festlegen.
  • 1 veranschaulicht ein System 100 gemäß einer Ausführungsform der vorliegenden Offenbarung. Wie in 1 gezeigt, kann ein Verarbeitungssystem 100 (z.B. ein System-on-a-Chip (SOC) oder eine Mutterplatine eines Computersystems) einen Prozessor 102 und eine Speichervorrichtung 104 aufweisen, die kommunikativ mit dem Prozessor 102 gekoppelt ist. Der Prozessor 102 kann eine Hardware-Verarbeitungsvorrichtung sein, wie zum Beispiel eine Zentraleinheit (CPU) oder eine grafische Verarbeitungseinheit (GPU), die einen oder mehrere Verarbeitungskerne 108 aufweist, um Software-Anwendungen auszuführen. Das System 100 kann auch einen Basic Input Output System (BIOS) Chipsatz 106 aufweisen, um Systeminitiierungsinstruktionen während des Booting des Systems (z.B. eines Hochfahrens) zu speichern. Der BIOS Chipsatz 106 kann ein Nurlesespeicher (ROM) oder ein Flash-Speicher sein, um diese Instruktionen zu speichern.
  • Der Prozessor 102 kann ferner Verarbeitungskerne 108, eine Energieverwaltungsschaltung 110 (wie zum Beispiel die Energiesteuereinheit (PCU) von x86 Prozessoren) und Steuerregister 112, 114, 126 aufweisen. Die Verarbeitungskerne 108 in verschiedenen Implementierungen können durch In-order Kerne oder Out-of-order Kerne bereitgestellt werden. In einem veranschaulichenden Beispiel kann der Verarbeitungskern 108 eine Mikroarchitektur aufweisen, die Prozessorlogik und Schaltungen aufweist, welche verwendet werden, um eine Instruktionssatzarchitektur (ISA) zu implementieren. Die Prozessoren 102 mit verschiedenen Mikroarchitekturen können mindestens einen Abschnitt eines gemeinsamen Instruktionssatzes gemeinsam nutzen. Zum Beispiel kann dieselbe Registerarchitektur der ISA auf verschiedene Weise in verschiedenen Mikroarchitekturen unter Verwendung verschiedener Techniken implementiert werden, umfassend dedizierte physikalische Register, ein oder mehrere dynamisch zugeordnete physikalische Register unter Verwendung eines Registerumbenennungsmechanismus (z.B. Verwendung einer Register-Alias-Tabelle (RAT), eines Umordnungspuffers (ROB) und einer Stilllegungsregisterdatei), wie in 6 bis 7 veranschaulicht.
  • Wie oben diskutiert, kann der Hersteller während der Herstellung und des Testens des Prozessors einen Basistaktfrequenzwert für den Prozessor 102 bestimmen. Ein Basistaktfrequenzwert ist die höchste zertifizierte Taktgeschwindigkeit, bei welcher der Prozessor 102 mit einer vorherbestimmten Arbeitslast (z.B. einer schlimmsten Arbeitslast) laufen kann. Eine Arbeitslast einer Aufgabe, die auf dem Prozessor 102 läuft, kann hinsichtlich der Anzahl von Taktzyklen gemessen werden, die verwendet werden, um die Aufgabe vorzunehmen. Die obere Grenze von Instruktionen, die pro Taktzyklus ausgeführt werden können, wird auf der Basis vieler Faktoren bestimmt, welche die Wärme umfassen, die von der Ausführung dieser Instruktionen generiert wird. In einer Ausführungsform kann der Prozessor 102 ein Steuerregister 112 aufweisen (das als Prozessor-Basistaktfrequenz- (BCF) Register bezeichnet wird), um den Basistaktfrequenzwert zu speichern, der dem Prozessor 102 zugewiesen wird. Der vorherbestimmte Basistaktfrequenzwert ist der Vorgabe-, Initialwert, der in dem Speicherregister 112 gespeichert wird. In einer Ausführungsform kann jeder der Verarbeitungskerne 108 mit einem jeweiligen Steuerregister 114 assoziiert werden, um einen entsprechenden Basistaktfrequenzwert für den entsprechenden Kern 108 zu speichern. Jedes Steuerregister 114, das vom Hersteller erhalten wird, kann den Vorgabe-Basistaktfrequenzwert speichern, der dem Prozessor 102 zugewiesen wird. Zusätzlich kann das Steuerregister 126 eine Affinitätsmaske speichern, um anzuzeigen, welche Verarbeitungskerne 108 aktiv sind. In einer Ausführungsform ist die Affinitätsmaske 126 eine Bitmap, wobei jedes Bit einen Aktivitätsstatus für einen entsprechenden Verarbeitungskern speichert. Wenn zum Beispiel ein Bit in einen aktiven Status gesetzt wird (z.B. „1“), hat der entsprechende Verarbeitungskern gemäß dem Basistaktfrequenzwert zu laufen, der mit dem Verarbeitungskern assoziiert ist. Wenn das Bit in einen inaktiven Status gesetzt wird (z.B. „0“), ist der entsprechende Verarbeitungskern für Software-Anwendungen nicht verfügbar oder ist ungenutzt. In einer Ausführungsform kann die Energieverwaltungsschaltung 110 bestimmen, welche Prozessorkerne 108 aktiv sind, und um Bits in der Affinitätsmaske entsprechend aktiven Prozessorkernen in den aktiven Zustand zu setzen, und Bits entsprechend inaktiven Verarbeitungskernen in den inaktiven Status. In einer anderen Ausführungsform (wie in Verbindung mit 3 diskutiert) kann die System-Software 122 die Affinitätsmaske einstellen.
  • In einer anderen Ausführungsform kann das Prozessor-BCF-Register 112 eine Datenstruktur speichern, die Datenelemente umfasst, wobei jedes Datenelement einen Verarbeitungskernidentifikator und einen entsprechenden Basistaktfrequenzwert pro Kern sowie das Affinitätsmaskenbit enthalten kann. In einer anderen Ausführungsform kann das BCF Register 112 eine Referenz auf eine Datenstruktur speichern, die in einem Speicher gespeichert ist, wobei die Datenstruktur die Datenelemente aufweist. Somit können Verarbeitungskerne 108 gemäß den Basistaktfrequenzwerten pro Kern betrieben werden, die in der Datenstruktur gespeichert sind. Die Basistaktfrequenzwerte pro Kern ermöglichen es jedem Verarbeitungskern, auf seiner eigenen Basistaktfrequenz betrieben zu werden, die von einem anderen Verarbeitungskern oder von dem Basistaktfrequenzwert des Prozessors 102 verschieden sein kann.
  • Die Energieverwaltungsschaltung 110 kann eine Mikrosteuereinheit sein, die mit einer Energiesteuereinheit- (PCU) Firmware 116 programmiert ist. Die PCU Firmware 116 kann Code umfassen, der Funktionalitäten codiert, die mit der Verwaltungsprozessortemperatur assoziiert sind, auf der Basis des Basistaktfrequenzwerts des Prozessors 102 und/oder der Basistaktfrequenzwerte pro Kern der Verarbeitungskerne 108. In einer Ausführungsform kann die Energieverwaltungsschaltung 110, welche die PCU Firmware 116 ausführt, während des Booting BIOS Instruktionen 120 lesen, die in dem BIOS Chipsatz 106 gespeichert sind, um die Initialisierung des Systems 100 vorzunehmen. Die PCU Firmware 116 kann auch Code umfassen, um, auf der Basis der thermischen Sensordaten und Arbeitslastanforderungen, die von der System-Software 122 generiert werden, Basistaktfrequenzwerte zu verwalten, die mit dem Prozessor 102 und/oder den Verarbeitungskernen 108 assoziiert sind. Zum Beispiel kann die PCU Firmware 116 inaktive Verarbeitungskerne abschalten und die übrige Energie zu aktiven Verarbeitungskernen umleiten. Die PCU Firmware 116 kann auch, auf der Basis eines thermischen Generierungsmodells der Verarbeitungsvorrichtung, eine thermische Energie berechnen, die von der Verarbeitungsvorrichtung generiert wird. Das thermische Generierungsmodell kann die Basistaktfrequenzwerte aktiver Verarbeitungskerne als Eingabeparameter verwenden.
  • Der Hersteller kann den Basistaktfrequenzwert des Prozessors 102 auf der Basis eines vorherbestimmten Satzes von Nutzungsszenarios für den Prozessor unter Verwendung aller der Verarbeitungskerne 108 bestimmen. Im Betrieb können sich die Zielnutzungsszenarios von dem vorherbestimmten Satz von Nutzungsbedingungen unterscheiden, die vom Hersteller getestet wurden. In einigen Situationen kann das Zielnutzungsszenario es dem Prozessor 102 oder einigen Verarbeitungskernen 108 des Prozessors 102 ermöglichen, auf einem Ziel-Basistaktfrequenzwert zu laufen, der höher ist als der Basistaktfrequenzwert, der von dem Hersteller zugewiesen wurde. In einer Ausführungsform der vorliegenden Offenbarung kann der Prozessor 102 für die Firmware (z.B. PCU Firmware 116 während des BIOS Booting) eine Hardware-Schnittstelle bereitstellen, um eine Änderung des Basistaktfrequenzwerts zu gestatten, der in dem Steuerregister 112 des Prozessors 102 gespeichert ist, und/oder von Werten, die in den Steuerregistern 114 der Verarbeitungskerne 108 gespeichert sind (umfassend die Affinitätsmaske, die in dem Steuerregister 126 gespeichert ist). Ferner kann der Prozessor 102 auch eine Anwendungsprogrammierungsschnittstelle (API) einer System-Software 122 aussetzen (z.B. dem Betriebssystem oder dem virtuellen Maschinenmonitor (VMM)), um es der System-Software zu ermöglichen, das Nutzungsszenario zu identifizieren und eine Basistaktfrequenzanforderung, unter Verwendung der API, an die Energieverwaltungsschaltung 110 zu senden. Die Anforderung kann den Ziel-Basistaktfrequenzwert umfassen, der von der System-Software 122 für ein Nutzungsszenario bestimmt wird. Die Energieverwaltungsschaltung 110 kann die Ziel-Basistaktfrequenz für einen oder mehrere Verarbeitungskerne auf der Basis der Anforderung einstellen.
  • In einer Ausführungsform kann der BIOS Chipsatz 106 die Basistaktfrequenzanforderung während des Boot Prozesses des Verarbeitungssystems 100 generieren. In einer weiteren Ausführungsform kann die System-Software (z.B. das Betriebssystem oder der VMM) 122 die Basistaktfrequenzanforderung ansprechend auf eine Änderung des Nutzungsszenarios generieren (z.B. Hinzufügen/Entfernen einer virtuellen Maschine). Die Basistaktfrequenzanforderung, die von der Energieverwaltungsschaltung 110 empfangen wird, kann eine Anzahl von Verarbeitungskernen umfassen, die (ein Teilsatz von oder alle verfügbaren Verarbeitungskerne) auf der Basis eines Nutzungsszenarios und des Ziel-Basisfrequenzwerts bestimmt werden, die mit diesen Verarbeitungskernen assoziiert sind. Ansprechend auf das Empfangen der Basistaktfrequenzanforderung kann die PCU Firmware 116, die auf der Energieverwaltungsschaltung 110 läuft, den Ziel-Basisfrequenzwert, der mit diesen Verarbeitungskernen assoziiert ist, und die entsprechenden Bits in der Affinitätsmaske einstellen. In einer Ausführungsform kann die PCU Firmware 116 den Basistaktfrequenzwert des Prozessors 102 ändern, indem der Ziel-Basistaktfrequenzwert in dem Steuerregister 112 gespeichert wird, und die Basistaktfrequenz des Verarbeitungskerns 108 ändern, indem der Ziel-Basistaktfrequenzwert in einem entsprechenden Steuerregister 114 gespeichert wird.
  • In einer Ausführungsform kann das Verarbeitungssystem 100, während des System-Boot-Prozesses, einem Endverbraucher Optionen anzeigen, um ein Nutzungsszenario auszuwählen, um, auf der Basis der Endbenutzerauswahl, eine Basistaktfrequenzanforderung an die Energieverwaltungsschaltung 110 zu generieren. Wie in 1 gezeigt, kann der BIOS Chipsatz 106 Instruktionen speichern, die, wenn sie während des Boot Prozesses ausgeführt werden, eine BIOS Benutzerschnittstelle 118 auf einer Eingabe/Ausgabe-Vorrichtung anzeigen (z.B. Anzeigevorrichtung und eine Tastatur oder eine Maus), und ferner BIOS Instruktionen 120 zum Einrichten verschiedener Vorrichtungen des Verarbeitungssystems 100 speichern. Die BIOS Benutzerschnittstelle 118 kann, auf einer Schnittstellenvorrichtung (z.B. einer Anzeigevorrichtung), den Status in verschiedenen Stufen des Boot Prozesses präsentieren. In einer Ausführungsform kann die BIOS Benutzerschnittstelle 118 dem Benutzer eine Liste von Nutzungsszenarios präsentieren. Ansprechend auf das Empfangen einer Auswahl eines Nutzungsszenarios kann der Boot Prozess die Ausführung von Instruktionen (z.B. durch die Energieverwaltungsschaltung 116) umfassen, um eine Basistaktfrequenzanforderung an die Energieverwaltungsschaltung 110 zu generieren. Die Basistaktfrequenzanforderung kann den Ziel-Basistaktfrequenzwert und gegebenenfalls die Anzahl von Verarbeitungskernen umfassen, um auf dem Ziel-Basistaktfrequenzwert zu laufen. Die Energieverwaltungsschaltung 110 kann dann den Prozessor 102 auf der Basis der empfangenen Basistaktfrequenzanforderung einrichten.
  • 2A veranschaulicht einen Prozess 200 zum Einrichten der Basistaktfrequenz während des System-Boot-Prozesses gemäß einer Ausführungsform der vorliegenden Offenbarung. Wie in 2A gezeigt, kann bei 202 das System 100 den Boot-Prozess starten. Eine Steuereinheit (z.B. die Energieverwaltungsschaltung 110) des Prozessors 102 kann die Sequenz von Instruktionen lesen, die in dem BIOS Chipsatz gespeichert sind, um verschiedene Vorrichtungen einzurichten, die mit dem System 100 assoziiert sind. Der Boot Prozess kann auch den Status des Boot Prozesses auf einer Anzeigevorrichtung präsentieren. Ansprechend auf das Ausführen von Instruktionen, um den Prozessor 102 des Systems 100 einzurichten, kann bei 204 der Boot Prozess, auf der Anzeigevorrichtung, eine Liste von Nutzungsszenarien für den Benutzer zur Auswahl anzeigen. Jedes Nutzungsszenario kann einen Satz von Parametern spezifizieren, die zum Beispiel eine Zielanzahl von Verarbeitungskernen in dem Prozessor, die zu verwenden sind, eine thermische Ziel-Verlustleistung (TDP), eine Ziel-Arbeitslast (z.B. als Prozentsatz der TDP) und eine Ziel-Zuverlässigkeitsmessung anzeigen. Der Benutzer kann, aus der Liste von Nutzungsszenarios, ein Nutzungsszenario auswählen, das mit seinem Bedarf übereinstimmt. Bei 206 können die System-Boot-Instruktionen die Auswahl empfangen, und bei 208 ferner bestimmen, ob das ausgewählte Nutzungsszenario ein Vorgabe-Nutzungsszenario ist, wobei das Vorgabe-Nutzungsszenario eines jener Szenarien ist, die vom Hersteller getestet wurden und mit dem Basistaktfrequenzwert zugewiesen wurden, der auf dem Prozessor markiert ist. Ansprechend auf das Bestimmen, dass das ausgewählte Nutzungsszenario das Vorgabe-Nutzungsszenario ist, kann bei 222 der Boot Prozess mit anderen Instruktionen fortfahren, um andere Vorrichtungen als den Prozessor 102 einzurichten, während der Prozessor 102 auf der zugewiesenen Basistaktfrequenz zu laufen hat und die System-Software zu übergeben hat, nachdem der Boot Prozess vollendet ist.
  • Ansprechend auf das Bestimmen, dass das ausgewählte Nutzungsszenario nicht das Vorgabe-Nutzungsszenario ist, kann bei 210 der Boot Prozess mit der Ausführung von Instruktionen fortfahren, um eine Ziel-Basistaktfrequenz auf der Basis des ausgewählten Nutzungsszenarios zu bestimmen. Die Liste von Nutzungsszenarios kann während der Herstellung des Prozessors als zusätzliche Nutzungsszenarios konstruiert werden und der bestimmten Basistaktfrequenz entsprechen. Die Steuereinheit (z.B. Energieverwaltungsschaltung 110, welche die PCU Firmware 116 ausführt) kann den Ziel-Basistaktfrequenzwert für das ausgewählte Nutzungsszenario bestimmen. In einer Ausführungsform kann dies als Umwandlungstabelle implementiert werden, die Mappings von Benutzerszenarios auf Ziel-Basistaktfrequenzwerte aufweist. Zum Beispiel kann die Tabelle eine Liste aktiver Kernzählungen und eines entsprechenden Basisfrequenzwerts enthalten. In Abhängigkeit von der ausgewählten Anzahl aktiver Kernzählungen wird der entsprechende Basisfrequenzwert verwendet. Der bestimmte Ziel-Basistaktfrequenzwert kann mit dem Prozessor 102 assoziiert werden (somit für alle Verarbeitungskerne 108 in dem Prozessor 102). Der bestimmte Ziel-Basistaktfrequenzwert kann auch mit weniger als allen der Verarbeitungskerne 108 in dem Prozessor 102 assoziiert werden. Bei 212 kann der Boot Prozess mit der Ausführung von Instruktionen fortsetzen, um eine Basistaktfrequenzanforderung an die Energieverwaltungsschaltung 110 zu übertragen. Die Basistaktfrequenzanforderung kann den Ziel-Basistaktfrequenzwert und gegebenenfalls die Anzahl von Verarbeitungskernen umfassen, die mit dem Ziel-Basistaktfrequenzwert assoziiert sind.
  • Bei 214 kann die Energieverwaltungsschaltung 110 die Basistaktfrequenzanforderung von der Ausführung von Instruktionen empfangen, die in dem BIOS Chipsatz 106 gespeichert sind. Bei 216 kann die Energieverwaltungsschaltung 110 zuerst den Basistaktfrequenzwert (welcher der am Anfang zugewiesene ist), der in verschiedenen Algorithmen in der PCU Firmware 116 verwendet wird, auf den Ziel-Basistaktfrequenzwert in der empfangenen Anforderung aktualisieren. Dieser Algorithmus in der PCU Firmware kann, auf der Basis eines thermischen Generierungsmodells der Verarbeitungsvorrichtung, die thermische Energie berechnen, die von verschiedenen Anwendungen generiert wird, welche auf dem Prozessor 102 laufen, und kann die Prozessor-Arbeitslast einstellen, um sicherzustellen, dass die generierte thermische Energie die TDP nicht verletzt, die mit dem Prozessor 102 assoziiert ist. Die Arbeitslast kann eingestellt werden, indem die Aufgabe auf eine andere Verarbeitungsvorrichtung abgeladen wird oder die Basistaktfrequenzwerte von Verarbeitungskernen reduziert werden. Die Energieverwaltungsschaltung 110 kann ferner die Basistaktfrequenzwerte für den Prozessor 102 und/oder einen oder mehrere Verarbeitungskerne 108 einrichten. In einer Ausführungsform kann bei 218 die Energieverwaltungsschaltung 110 den Ziel-Basisfrequenzwert auf einer Hardware- (oder Firmware-) Schnittstelle exponieren. Ein Beispiel einer solchen Hardware-Schnittstelle könnte die CPUID Instruktion sein, die den Basistaktfrequenzwert des Prozessors oder eines modellspezifischen Registers (MSR) innerhalb jedes Verarbeitungskerns exponieren kann, das, wenn es gelesen wird, den neuen Basistaktfrequenzwert zurückführt. Die Exposition der Ziel-Basistaktfrequenz kann erzielt werden, indem das Steuerregister 112 und/oder die Steuerregister 114 (umfassend die Affinitätsmaske 126) für die System-Software 122 sichtbar gemacht werden. Dies kann es der System-Software 122 ermöglichen, die Ziel-Basisfrequenzwerte abzufragen.
  • Wenn die Energieverwaltungsschaltung 110 die Basistaktfrequenzanforderung empfängt, die den Ziel-Basistaktfrequenzwert für den Prozessor 102 umfasst (d.h. alle Verarbeitungskerne 108), kann die Energieverwaltungsschaltung 110 den Ziel-Basistaktfrequenzwert in dem Steuerregister 112 speichern. Der Prozessor 102 (und alle Verarbeitungskerne 108) können gemäß dem Ziel-Basistaktfrequenzwert laufen, wobei der Ziel-Basistaktfrequenzwert höher sein kann als der markierte Wert. Wenn die Energieverwaltungsschaltung 110 die Basistaktfrequenzanforderung empfängt, die einen Satz (z.B. weniger als alle) der Verarbeitungskerne 108 und ihre entsprechenden Ziel-Basistaktfrequenzwerte umfasst, kann die Energieverwaltungsschaltung 110 diese Ziel-Basistaktfrequenzwerte in den entsprechenden Steuerregistern 114 speichern. Die Energieverwaltungsschaltung 110 kann auch den Aktivitätszustand (z.B. entsprechende Bits in der Affinitätsmaske), der mit dem Satz von Verarbeitungskernen 108 assoziiert ist, in den aktiven Zustand setzen, wodurch es ihnen ermöglicht wird, auf den Ziel-Basistaktfrequenzwerten zu laufen. Diese Ziel-Basistaktfrequenzwerte können von dem markierten Wert verschieden sein (z.B. höher sein).
  • Bei 220 kann die Energieverwaltungsschaltung 110 gegebenenfalls andere Hardware-Komponenten einstellen, die auf der Basis der Basistaktfrequenz laufen. Zum Beispiel kann die Energieverwaltungsschaltung 110 einen Zeitstempelzähler (TSC) einrichten, um auf dem Ziel-Basistaktfrequenzwert zu laufen. Ansprechend auf die Einrichtung aller Hardware-Komponenten, um auf der Ziel-Basistaktfrequenz zu laufen, kann der Boot Prozess bei 222 mit anderen Instruktionen fortsetzen, um andere Vorrichtungen als den Prozessor 102 einzurichten.
  • In einer anderen Ausführungsform kann die System-Software 122 während des Betriebs auch die Auswahl von Nutzungsszenarios für den Benutzer zur Auswahl präsentieren. Auf der Basis der Benutzerauswahl kann die System-Software 122, über eine API, eine Basistaktfrequenzanforderung an die Energieverwaltungsschaltung 110 übertragen, um eine Änderung des Basistaktfrequenzwerts für den Prozessor 102 und/oder einen oder mehrere Verarbeitungskerne 108 anzufordern. Die Energieverwaltungsschaltung 110 kann ähnlich den Prozessor 102 und/oder einen oder mehrere Verarbeitungskerne 108 einrichten, um auf der Ziel-Basistaktfrequenz zu laufen.
  • In anderen Ausführungsformen kann die System-Software 122 (oder der BIOS Chipsatz 106) das Ziel-Nutzungsszenario (anstelle der Basistaktfrequenzanforderung) an die Energieverwaltungsschaltung 110 des Prozessors 102 übertragen. Wie in 1 gezeigt, kann die System-Software 122 (z.B. das Betriebssystem oder der VMM), die auf dem Prozessor 102 läuft, Anwendungen unterstützen. Zum Beispiel kann ein Betriebssystem die Ausführung mehrerer Software-Anwendungen verwalten, die auf dem Prozessor 102 laufen. In einem virtualisierten System kann der VMM virtuelle Maschinen (VMs) 124 unterstützen. Jede VM 124 kann auf einer oder mehreren Software-Anwendungen laufen. Die System-Software 122 kann das Software-Nutzungsszenario überwachen, das mit dem Prozessor 102 assoziiert ist. Das Software-Nutzungsszenario kann eine Anzahl von Verarbeitungskernen in dem Prozessor umfassen, die zu verwenden sind, eine thermische Verlustleistung, eine Arbeitslast (z.B. als Prozentsatz der TDP) und eine Zuverlässigkeitsmessung. Ansprechend auf das Bestimmen einer Änderung des Nutzungsszenarios, das mit dem Prozessor 102 assoziiert ist, kann die System-Software 122, über eine API, die Änderung an die PCU Firmware 116 übertragen. Zum Beispiel kann die Änderung des Nutzungsszenarios durch das Hinzufügen (oder den Austritt) einer oder mehrerer VMs verursacht werden, wodurch die Anzahl aktiver VMs, die von dem VMM unterstützt werden, zunimmt (oder abnimmt). Die Änderung kann auch durch die Installation (oder Deinstallation) einer Software-Anwendung verursacht werden.
  • Die PCU Firmware 116, die auf der Energieverwaltungsschaltung 110 läuft, kann ein Nutzungsszenario verwenden, um den Ziel-Basistaktfrequenzwert auf der Basis des Nutzungsszenarios zu bestimmen und die Basistaktfrequenz des Prozessors 102 und/oder eines oder mehrerer Verarbeitungskerne 108 auf den Ziel-Basistaktfrequenzwert zu aktualisieren. Die Energieverwaltungsschaltung 110 kann den Ziel-Basistaktfrequenzwert der System-Software 122 ankündigen. Zum Beispiel kann die Energieverwaltungsschaltung 110 dynamisch die Basistaktfrequenz auf den Zielwert aktualisieren und Unterbrechungen generieren, um die System-Software 122 über die Aktualisierung zu informieren.
  • 2B veranschaulicht einen Prozess 230, um die Basistaktfrequenz auf der Basis von Nutzungsszenarios zu ändern, gemäß einer Ausführungsform der vorliegenden Offenbarung. Wie in 2B gezeigt, kann sich das Nutzungsszenario des Prozessors 102 bei 232 aufgrund einer Änderung in der Software-Umgebung ändern. Bei 234 kann, ansprechend auf das Detektieren der Nutzungsszenarioänderung (z.B. Änderung von einem ersten Nutzungsszenario zu einem zweiten Nutzungsszenario), die System-Software 122 ein neues Nutzungsszenario für den Prozessor 102 bestimmen. Das neue Nutzungsszenario kann eine Zielanzahl von Verarbeitungskernen in dem Prozessor spezifizieren, die zu verwenden sind, eine thermische Ziel-Verlustleistung, eine Ziel-Arbeitslast (z.B. als Prozentsatz der TDP) und eine Ziel-Zuverlässigkeitsmessung. Bei 236 kann die System-Software 122, die auf dem Prozessor 102 läuft, über eine API das neue Nutzungsszenario an die Energieverwaltungsschaltung 110 übertragen, wobei eine Aktualisierung des Basistaktfrequenzwerts für den Prozessor 102 und/oder einen oder mehrere Verarbeitungskerne 108 angefordert wird.
  • Bei 238 kann die Energieverwaltungsschaltung 110 das neue Nutzungsszenario empfangen und einen Ziel-Basistaktfrequenzwert und gegebenenfalls eine Anzahl von Verarbeitungskernen berechnen, um auf dem Ziel-Basistaktfrequenzwert betrieben zu werden. Ähnlich dem Booting Prozess kann bei 240 die Energieverwaltungsschaltung 110 Parameter aktualisieren, die mit der PCU Firmware 116 assoziiert sind, um den Ziel-Basistaktfrequenzwert zu reflektieren. Somit kann die PCU Firmware 116 die thermische Energie überwachen, die von dem Prozessor 102 generiert wird, auf der Basis des Ziel-Basistaktfrequenzwerts. Bei 242 kann die Energieverwaltungsschaltung 110 die Energieverwaltungsschaltung 110 in dem Steuerregister 112 und/oder den Steuerregistern 114 (umfassend die Affinitätsmaske 126) speichern, die mit diesen Ziel-Verarbeitungskernen 118 assoziiert sind, wodurch der Prozessor 102 und/oder ein oder mehrere Verarbeitungskerne 118 bereit gemacht werden, um auf dem Ziel-Basistaktfrequenzwert unter dem neuen Nutzungsszenario zu laufen. Ansprechend darauf, dass der Prozessor 102 bereit gemacht wird, auf dem Ziel-Basistaktfrequenzwert zu laufen, kann die Energieverwaltungsschaltung 110, über eine Hardware- (oder Firmware-) Schnittstelle, die System-Software 122 über die Basistaktfrequenzwert-Aktualisierung benachrichtigen. In einer Ausführungsform kann die Energieverwaltungsschaltung 110 die Benachrichtigung senden, indem ein Unterbrechungsereignis ausgelöst wird, das von der System-Software 122 eingefangen werden kann.
  • Bei 244 kann die System-Software 122, die auf dem Prozessor 102 läuft, die Benachrichtigung über die Basistaktfrequenzwert-Aktualisierung empfangen (z.B. durch Detektieren des Unterbrechungsereignisses). Die Benachrichtigung kann den Ziel-Basistaktfrequenzwert umfassen, auf dem der Prozessor 102 (oder ein Satz von Verarbeitungskernen 108) zu laufen hat. Auf diese Weise kann das System 100 dynamisch seinen Basistaktfrequenzwert auf der Basis des Nutzungsszenarios ändern.
  • Die Flexibilität zur Neuauslegung der Basistaktfrequenz eines Prozessors und/oder eines oder mehrerer Verarbeitungskerne darin ermöglicht es einem Rechendienstanbieter (z.B. einem Cloud Service Anbieter oder einem Enterprise-Level Service Anbieter), variable Service Level für Kunden bereitzustellen und die Dienste entsprechend zu ändern. Der Rechendienstanbieter und Kunden können eine Service Level Vereinbarung (SLA) abschließen, die ein Vertrag ist, der Dienstqualitätsgarantien spezifiziert, die von dem Rechendienstanbieter gegenüber dem Kunden abgegeben werden. Der gelieferte Dienst kann das Bereitstellen eines oder mehrerer Typen von Software-Objekten umfassen, wie zum Beispiel virtueller Maschinen und virtualisierter Instanzen des Betriebssystems (die als Container bezeichnet werden). Jedes dieser Software-Objekte kann auf einem Ziel-Service Level laufen, der von den Verarbeitungskernen bereitgestellt werden kann, die auf verschiedenen Basistaktfrequenzwerten laufen. Der Ziel-Service Level kann auch andere Parameter umfassen, wie zum Beispiel die zulässige Energie, die von der Software verbraucht werden darf (wie das Verhältnis zur TDP), die zulässige Software-Objekt-Instruktionsmischung, die zulässige Zuverlässigkeits/Abnutzungsrate und die Exklusivität der Verwendung eines Verarbeitungskerns. Die System-Software 122 kann, über eine API, den Prozessor 102 abfragen, um zu bestimmen, ob der Prozessor 102 den Ziel-Service Level sicherstellen kann und Parameter des Ziel-Service Levels in einer Service Level Datenstruktur speichern kann, die mit der System-Software 122 assoziiert ist. In einigen Implementierungen gilt, je höher der Ziel-Service Level (z.B. je höher die Zielanzahl von Verarbeitungskernen und/oder je höher die Basistaktfrequenz), desto höher sind die Kosten, die mit der Bereitstellung des Ziel-Service Levels assoziiert sind.
  • Ausführungsformen der vorliegenden Offenbarung ermöglichen es Rechendienstanbietern, die Basistaktfrequenzwerte zu erhöhen, die mit einem oder mehreren Verarbeitungskernen assoziiert sind, um den von Kunden spezifizierten Ziel-Service Level zu erfüllen. In einer Ausführungsform kann die System-Software 122 bestimmen, ob der aktuelle Service Level, der in der Service Level Datenstruktur gespeichert ist, die Anforderung eines Kunden erfüllt, und, wenn nicht, die Bedingungen, um die Kundenanforderung zu erfüllen. Ansprechend auf das Bestimmen, dass ein höherer Basistaktfrequenzwert benötigt wird, um die Anforderung des Kunden zu erfüllen, kann die System-Software 122 ferner bestimmen, ob der Basistaktfrequenzwert des Prozessors und/oder eines oder mehrerer Verarbeitungskerne erhöht werden kann, um die Anforderung zu erfüllen. Auf diese Weise kann die System-Software 122 den Basistaktfrequenzwert einstellen, der mit dem Prozessor 102 assoziiert ist, um einen Ziel-Service Level zu erfüllen, der von einem Kunden angefordert wird.
  • 3 veranschaulicht einen Prozess 300, um die Basistaktfrequenzwerte einzustellen, um einen Ziel-Service Level zu erfüllen, gemäß einer Ausführungsform der vorliegenden Offenbarung. Wie in 3 gezeigt, kann bei 302 ein Kunde (der durch eine SLA mit dem Cloud Service Anbieter gebunden ist) über eine Benutzerschnittstelle einen Satz von Software-Objekten anfordern (z.B. VMs, Container und/oder Prozesse), und einen Ziel-Service Level spezifizieren, unter dem der Satz von Software-Objekten läuft. Der Ziel-Service Level kann die Zeit umfassen, die erforderlich ist, um eine spezifische Aufgabe zu erfüllen. Somit kann der Ziel-Service Level erfüllt werden, indem verschiedene Kombinationen von Verarbeitungskernen verwendet werden, die auf verschiedenen Basistaktfrequenzwerten laufen. Bei 304 kann die System-Software 122, die auf dem Prozessor 102 ausgeführt wird, den Satz von Software-Objekten generieren (z.B. VMs oder Container), und den Ziel-Service Level in der Service Level Datenstruktur speichern. Bei 306 kann die System-Software 122, die auf dem Prozessor 102 ausgeführt wird, über eine API, bestimmen, welche verfügbaren Verarbeitungskerne 108 auf ihren aktuellen Basistaktfrequenzwerten den Ziel-Service Level unterstützen können, der in der Service Level Datenstruktur gespeichert ist.
  • Bei 306 kann die System-Software 122, die auf dem Prozessor 102 ausgeführt wird, ferner bestimmen, ob es genügend verfügbare Verarbeitungskerne gibt, um den Ziel-Service Level zu unterstützen. Ansprechend auf das Bestimmen, dass es genügend Verarbeitungskerne 108 gibt, um den Ziel-Service Level zu unterstützen, der von dem Kunden angefordert wird, kann bei 310 die System-Software 122, die auf dem Prozessor 102 ausgeführt wird, über die API, die Energieverwaltungsschaltung 110 benachrichtigen und bewirken, dass die Energieverwaltungsschaltung 110 diese unterstützten Verarbeitungskerne einrichtet, um auf ihren aktuellen Basistaktfrequenzwerten zu laufen. Bei 312 kann die System-Software 122, die auf dem Prozessor 102 ausgeführt wird, ferner Instruktionen ausführen, um die Affinitätsmaske einzurichten, um für den Kunden bereitgestellte Dienste einzuschränken, die von diesen verfügbaren und fähigen Verarbeitungskernen geliefert werden, welche bei 306 und 308 identifiziert werden. Bei 314 kann die System-Software 122, die auf dem Prozessor 102 ausgeführt wird, Software-Objekte an den Prozessor 102 anwenden, die auf den identifizierten Verarbeitungskernen gemäß der Affinitätsmaske laufen können.
  • Ansprechend auf das Bestimmen, dass es nicht genügend Verarbeitungskerne gibt, um den Ziel-Service Level zu unterstützen, der von dem Kunden angefordert wird, kann bei 316 die System-Software 122, die auf dem Prozessor 102 ausgeführt wird, die Energieverwaltungsschaltung 110 anweisen, die Basistaktfrequenz für die verfügbaren Verarbeitungskerne auf einen Ziel-Basistaktfrequenzwert zu erhöhen, wodurch der Ziel-Service Level erfüllt wird, der von dem Kunden angefordert wird. Bei 318 kann die Energieverwaltungsschaltung 110 bestimmen, ob sie Hardware-Änderungsoptionen erschöpft hat, um den Ziel-Service Level zu erfüllen. In einer Ausführungsform kann die Bestimmung darauf basieren, dass die Anzahl von Malen, um den Basistaktfrequenzwert zu erhöhen, einen Schwellenwert überschritten hat. In einer anderen Ausführungsform kann die Bestimmung darauf basieren, dass der erhöhte Basistaktfrequenzwert eine obere Grenze erreicht. Wenn die Energieverwaltungsschaltung 110 bestimmt, dass Hardware-Änderungsoptionen nicht erschöpft sind, kann die Energieverwaltungsschaltung 110 die System-Software 122 benachrichtigen (z.B. durch Senden eines Unterbrechungsereignisses), um zu bestimmen, ob der Prozessor 102 genügend Software-Objekte hat, um Aufgaben auf dem Ziel-Service Level vorzunehmen. Wenn die Energieverwaltungsschaltung 110 bestimmt, dass die Hardware-Änderungsoptionen erschöpft sind, kann die Energieverwaltungsschaltung 110 bei 320 die System-Software 122 benachrichtigen (z.B. durch Senden eines Unterbrechungsereignisses), die Verwendung von Software-Objekten abzulehnen, die von dem Kunden angefordert werden, oder alternativ dazu die Software-Objekte für andere Systeme offline stellen.
  • 4 ist ein Blockbild eines Verfahrens 400, um den Basistaktfrequenzwert auf der Basis eines Ziel-Service Levels einzustellen, gemäß einer Ausführungsform der vorliegenden Offenbarung. Das Verfahren 400 kann vorgenommen werden, indem Logik verarbeitet wird, die Hardware (z.B. Schaltungen, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (wie Instruktionen, die auf einer Verarbeitungsvorrichtung, einem Universal-Computersystem oder einer dedizierten Maschine laufen), Firmware oder eine Kombination davon umfassen kann. In einer Ausführungsform kann das Verfahren 400 teilweise von dem Prozessor 102 und der Energieverwaltungsschaltung 110 vorgenommen werden, wie in 1 gezeigt.
  • Der einfachen Erläuterung halber wird das Verfahren 400 als Serie von Handlungen dargestellt und beschrieben. Handlungen gemäß dieser Offenbarung können jedoch in verschiedenen Reihenfolgen und/oder gleichzeitig und mit anderen Handlungen, die hier nicht dargestellt und beschrieben werden, auftreten. Ferner können nicht alle veranschaulichten Handlungen vorgenommen werden, um das Verfahren 400 gemäß dem offenbarten Gegenstand zu implementieren. Zusätzlich ist es für Fachleute klar und verständlich, dass das Verfahren 400 alternativ dazu als Serie von miteinander zusammenhängenden Zuständen über ein Zustandsdiagramm oder Ereignisse dargestellt werden könnte.
  • Mit Bezugnahme auf 4 kann der Prozessor 102 bei 402 eine Spezifikation empfangen, die einen Ziel-Service Level umfasst, der mit einem Software-Objekt assoziiert ist, wobei der Ziel-Service Level einen ersten Basistaktfrequenzwert umfasst, der mit einer Vielzahl von Verarbeitungskernen der Verarbeitungsvorrichtung assoziiert ist.
  • Bei 404 kann der Prozessor 102 bestimmen, ob genügend Verarbeitungskerne in dem Prozessor verfügbar sind, um den Ziel-Service Level zu unterstützen.
  • Bei 406, ansprechend auf das Bestimmen, dass die Verarbeitungsvorrichtung nicht genügend aufweist, kann der Prozessor 102 eine Anforderung an eine Energieverwaltungsschaltung der Verarbeitungsvorrichtung übertragen, um zu bewirken, dass die verfügbaren Verarbeitungskerne auf einem zweiten Basistaktfrequenzwert laufen, der höher ist als der erste Basistaktfrequenzwert.
  • 5A ist ein Blockbild, das eine Mikroarchitektur für einen Prozessor 500 veranschaulicht, welche die Verarbeitungsvorrichtung implementiert, die heterogene Kerne umfasst, gemäß einer Ausführungsform der Offenbarung. Spezifisch zeigt der Prozessor 500 einen In-order Architekturkern und eine Registerumbenennungslogik-, Out-of-order Ausgabe/Ausführungslogik, die in einen Prozessor einzuschließen ist, gemäß mindestens einer Ausführungsform der Offenbarung.
  • Der Prozessor 500 umfasst eine Front End Einheit 530, die mit einer Ausführungsmaschineneinheit 550 gekoppelt ist, und beide sind mit einer Speichereinheit 570 gekoppelt. Der Prozessor 500 kann einen Reduced Instruction Set Computing (RISC) Kern, einen Complex Instruction Set Computing (CISC) Kern, einen Very Long Instruction Word (VLIW) Kern oder einen hybriden oder alternativen Kerntyp umfassen. Als noch weitere Option kann der Prozessor 500 einen Spezialkern umfassen, wie zum Beispiel einen Netz- oder Kommunikationskern, eine Kompressionsmaschine, einen Grafikkern oder dergleichen. In einer Ausführungsform kann der Prozessor 500 ein Mehrkernprozessor sein oder kann ein Teil eines Mehrprozessorsystems sein.
  • Die Front End Einheit 530 umfasst eine Verzweigungsvorhersageeinheit 532, die mit einer Instruktions-Cache-Einheit 534 gekoppelt ist, welche mit einem Instruktionsübersetzungs-Nachschlagepuffer (TLB) 536 gekoppelt ist, der mit einer Instruktionsabrufeinheit 538 gekoppelt ist, die mit einer Decodiereinheit 540 gekoppelt ist. Die Decodiereinheit 540 (auch als Decoder bekannt) kann Instruktionen decodieren und als Ausgang eine oder mehrere Mikrooperationen, Mikrocode-Eintrittspunkte, Mikroinstruktionen, andere Instruktionen oder andere Steuersignale generieren, die aus den ursprünglichen Instruktionen decodiert werden, diese auf andere Weise reflektieren oder von diesen abgeleitet sind. Der Decoder 540 kann unter Verwendung verschiedener Mechanismen implementiert werden. Beispiele geeigneter Mechanismen umfassen, sind jedoch nicht beschränkt auf, Nachschlagetabellen, Hardware-Implementierungen, programmierbare Logik-Anordnungen (PLAs), Mikrocode-Nurlesespeicher (ROMs) usw. Die Instruktions-Cache-Einheit 534 ist ferner mit der Speichereinheit 570 gekoppelt. Die Decodiereinheit 540 ist mit einer Umbenennungs-/Zuordnereinheit 552 in der Ausführungsmaschineneinheit 550 gekoppelt.
  • Die Ausführungsmaschineneinheit 550 umfasst die Umbenennungs-/Zuordnereinheit 552, die mit einer Stilllegungseinheit 554 gekoppelt ist, und einen Satz von einer oder mehreren Scheduler-Einheiten 556. Die Scheduler-Einheiten 556 repräsentieren eine beliebige Anzahl verschiedener Scheduler, umfassend Reservierungsstationen (RS), zentrale Instruktionsfenster usw. Die Scheduler-Einheit(en) 556 ist (sind) mit der (den) physikalischen Registerdateieinheit(en) 558 gekoppelt. Jede (der) physikalische(n) Registerdateieinheit(en) 558 repräsentiert (repräsentieren) eine oder mehrere physikalische Registerdateien, verschiedene von welchen einen oder mehrere verschiedene Datentypen speichern, wie eine skalare Ganzzahl, skalares Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektorganzzahl, Vektorgleitkomma usw., Status (z.B. ein Instruktionszeiger, der die Adresse der nächsten Instruktion ist, die auszuführen ist) usw. Die physikalische(n) Registerdateieinheit(en) 558 wird (werden) von der Stilllegungseinheit 554 überlappt, um verschiedene Wege zu veranschaulichen, in denen eine Registerumbenennung und Out-of-order Ausführung implementiert werden können (z.B. unter Verwendung eines oder mehrerer Umordnungspuffer und einer oder mehrerer Stillegungsregisterdatei(en), unter Verwendung einer oder mehrerer Zukunftsdatei(en), Verlaufpuffer(n) und einer oder mehrerer Stillegungsregisterdateien; unter Verwendung von Registerkarten und eines Pools von Registern usw.).
  • In einer Implementierung kann der Prozessor 500 derselbe sein wie der Prozessor 102, der mit Bezugnahme auf 1 beschrieben wird. Insbesondere kann der Prozessor 500 die Energieverwaltungsschaltung 110 aufweisen, welche die Basistaktfrequenzwerte für Verarbeitungskerne 108 einzustellen hat, wie in 1 gezeigt.
  • Allgemein sind die Architekturregister von der Außenseite des Prozessors oder aus der Perspektive eines Programmierers sichtbar. Die Register sind nicht auf irgendeinen bekannten bestimmten Typ einer Schaltung begrenzt. Verschiedene unterschiedliche Typen von Registern sind geeignet, solange sie in der Lage sind, Daten zu speichern und zu liefern, wie hier beschrieben. Beispiele geeigneter Register umfassen, sind jedoch nicht beschränkt auf, dedizierte physikalische Register, dynamisch zugeordnete physikalische Register unter Verwendung einer Registerumbenennung, Kombinationen dedizierter und dynamisch zugeordneter physikalischer Register usw. Die Stilllegungseinheit 554 und die physikalische(n) Registerdateieinheit(en) 558 sind mit dem (den) Ausführungs-Cluster(n) 560 gekoppelt. Der (die) Ausführungs-Cluster 560 umfasst (umfassen) einen Satz von einer oder mehreren Ausführungseinheiten 562 und einen Satz von einer oder mehreren Speicherzugriffseinheiten 564. Die Ausführungseinheiten 562 können verschiedene Operationen vornehmen (z.B. Verschiebungen, Addition, Subtraktion, Multiplikation) und an verschiedenen Datentypen arbeiten (z.B. skalares Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektorganzzahl, Vektorgleitkomma).
  • Obwohl einige Ausführungsformen eine Anzahl von Ausführungseinheiten aufweisen können, die für spezifische Funktionen oder Sätze von Funktionen dediziert sind, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten aufweisen, die alle Funktionen vornehmen. Die Scheduler-Einheit(en) 556, die physikalische(n) Registerdateieinheit(en) 558 und der (die) Ausführungs-Cluster 560 sind also möglicherweise mehrfach gezeigt, da bestimmte Ausführungsformen getrennte Pipelines für bestimmte Typen von Daten/Operationen erzeugen (z.B. eine skalare ganzzahlige Pipeline, eine skalare Gleitkommalgepackte Ganzzahl/gepacktes GleitkommalVektorganzzahl/Vektorgleitkomma-Pipeline, und/oder eine Speicherzugriffs-Pipeline, die jeweils ihre eigene Scheduler-Einheit, physikalische Registerdateieinheit(en) und/oder Ausführungs-Cluster aufweisen - und im Fall einer getrennten Speicherzugriffs-Pipeline werden bestimmte Ausführungsformen implementiert, bei denen nur der Ausführungs-Cluster dieser Pipeline die Speicherzugriffseinheit(en) 564 aufweist). Es ist auch klar, dass, wo getrennte Pipelines verwendet werden, eine oder mehrerer dieser Pipelines Out-of-order Ausgabe/Ausführung und der Rest In-order sein können.
  • Der Satz von Speicherzugriffseinheiten 564 ist mit der Speichereinheit 570 gekoppelt, die einen Datenvorabrufer 580, eine Daten-TLB-Einheit 572, eine Daten-Cache-Einheit (DCU) 574 und eine Level 2 (L2) Cache-Einheit 576 aufweisen können, um einige Beispiele zu nennen. In einigen Ausführungsformen ist die DCU 574 auch als Frist Level Daten-Cache (L1 Cache) bekannt. Die DCU 574 kann mehrere ausstehende Cache-Fehlschläge handhaben und fortsetzen, ankommende Speicherungen und Lasten zu bedienen. Sie unterstützt auch die Aufrechterhaltung der Cache-Kohärenz. Die Daten-TLB-Einheit 572 ist ein Cache, der verwendet wird, um die virtuelle Adressenübersetzungsgeschwindigkeit durch Mappen virtueller und physikalischer Adressenräume zu verbessern. In einem Beispiel einer Ausführungsform können die Speicherzugriffseinheiten 564 eine Lasteinheit, eine Speicheradresseneinheit und eine Speicherdateneinheit aufweisen, von denen jede mit der Daten-TLB-Einheit 572 in der Speichereinheit 570 gekoppelt ist. Die L2 Cache-Einheit 576 kann mit einem oder mehreren anderen Cache-Levels und letztlich mit einem Hauptspeicher gekoppelt sein.
  • In einer Ausführungsform lädt der Datenvorabrufer 580 spekulativ Daten in die DCU 574 oder ruft diese zuvor ab, indem automatisch vorhergesagt wird, welche Daten ein Programm verbrauchen wird. Das Vorabrufen kann sich auf das Transferieren von Daten beziehen, die in einem Speicherort einer Speicherhierarchie (z.B. Lower Level Caches oder Speicher) gespeichert sind, zu einem Higher Level Speicherort, der näher liegt (z.B. eine geringere Zugriffslatenz ergibt), zu einem Prozessor, bevor die Daten tatsächlich von dem Prozessor verlangt werden. Spezifischer kann sich das Vorabrufen auf das frühe Abrufen von Daten von einem der Lower Level Caches/Speicher in einen Daten-Cache und/oder Vorabrufpuffer beziehen, bevor der Prozessor eine Anfrage für die spezifischen Daten stellt, die zurückgeführt werden.
  • Der Prozessor 500 kann einen oder mehrere Instruktionssätze (z.B. den x86 Instruktionssatz) unterstützen (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden); den MIPS Instruktionssatz von MIPS Technologies of Sunnyvale, CA; den ARM Instruktionssatz (mit optionalen zusätzlichen Erweiterungen wie NEON) von ARM Holdings of Sunnyvale, CA).
  • Es ist klar, dass der Kern ein Multithreading unterstützen kann (Ausführen von zwei oder mehreren parallelen Sätzen von Operationen oder Strängen) und dies auf verschiedenste Weise tun kann, umfassend zeitgeteiltes Multithreading, gleichzeitiges Multithreading (wo ein einzelner physikalischer Kern einen logischen Kern für jeden der Stränge bereitstellt, an denen der physikalische Kern gleichzeitig ein Multithreading vornimmt), oder eine Kombination davon (z.B. zeitgeteiltes Abrufen und Decodieren und gleichzeitiges Multithreading danach, wie bei der Intel® Hyperthreading Technologie).
  • Obwohl eine Registerumbenennung im Kontext einer Out-of-order Ausführung beschrieben wird, ist es klar, dass eine Registerumbenennung in einer In-order Architektur verwendet werden kann. Obwohl die veranschaulichte Ausführungsform des Prozessors auch eine getrennte Instruktion und Daten-Cache-Einheiten und eine gemeinsam genutzte L2 Cache-Einheit aufweist, können alternative Ausführungsformen einen einzelnen internen Cache für sowohl Instruktionen als auch Daten, wie zum Beispiel einen Level 1 (L1) internen Cache, oder mehrere Level eines internen Caches aufweisen. In einigen Ausführungsformen kann das System eine Kombination eines internen Caches und eines externen Caches aufweisen, der extern von dem Kern und/oder dem Prozessor ist. Alternativ dazu kann der gesamte Cache extern von dem Kern und/oder dem Prozessor sein.
  • 5B ist ein Blockbild, das eine In-order Pipeline und eine Registerumbenennungsstufen-, Out-of-order Ausgabe/Ausführungs-Pipeline veranschaulicht, die von dem Prozessor 500 von 5A implementiert wird, gemäß einigen Ausführungsformen der Offenbarung. Die Kästchen mit durchgehenden Linien in 5B veranschaulichen eine In-order Pipeline, während die Kästchen mit gestrichelten Linien eine Registerumbenennungs-, Out-of-order Ausgabe/Ausführungs-Pipeline veranschaulichen. In 5B umfasst ein Prozessor 500 als Pipeline eine Abrufstufe 502, eine Längendecodierungsstufe 504, eine Decodierungsstufe 506, eine Zuordnungsstufe 508, eine Umbenennungsstufe 510, eine Scheduling- (auch bekannt als Sende- oder Ausgabe-) Stufe 512, eine Registerlese/Speicherlesestufe 514, eine Ausführungsstufe 516, eine Rückschreib/Speicherschreibstufe 518, eine Ausnahmebehandlungsstufe 522 und eine Festlegungsstufe 524. In einigen Ausführungsformen kann die Reihenfolge der Stufen 502 bis 524 anders sein als veranschaulicht und ist nicht auf die spezifische Reihenfolge begrenzt, die in 5B gezeigt ist.
  • 6 veranschaulicht ein Blockbild der Mikroarchitektur für einen Prozessor 600, der hybride Kerne aufweist, gemäß einer Ausführungsform der Offenbarung. In einigen Ausführungsformen kann eine Instruktion gemäß einer Ausführungsform implementiert werden, um an Datenelementen zu arbeiten, die Größen von Byte, Wort, Doppelwort, Quadwort usw. aufweisen, sowie an Datentypen, wie einzelne und doppelte Präzisionsganzzahl und, und Gleitkomma-Datentypen. In einer Ausführungsform ist das In-order Front End 601 der Teil des Prozessors 600, der Instruktionen abruft, um ausgeführt zu werden, und diese vorbereitet, um später in der Prozessor-Pipeline verwendet zu werden.
  • Das Front End 601 kann einige Einheiten umfassen. In einer Ausführungsform ruft der Instruktionsvorabrufer 626 Instruktion aus dem Speicher ab und führt sie einem Instruktionsdecoder 628 zu, der sie seinerseits decodiert oder interpretiert. Zum Beispiel decodiert in einer Ausführungsform der Decoder eine empfangene Instruktion in eine oder mehrere Operationen, die als „Mikroinstruktionen“ oder „Mikrooperationen“ bezeichnet werden (auch Micro op oder Uops genannt), welche die Maschine ausführen kann. In anderen Ausführungsformen zergliedert der Decoder die Instruktion in einen Opcode und entsprechende Daten und Steuerfelder, die von der Mikroarchitektur verwendet werden, um Operationen gemäß einer Ausführungsform vorzunehmen. In einer Ausführungsform nimmt der Trace Cache 630 decodierte Uops und assembliert sie in programmgeordnete Sequenzen oder Spuren in der Uop-Warteschlange 634 zur Ausführung. Wenn der Trace Cache 630 auf eine komplexe Instruktion trifft, liefert der Mikrocode-ROM 632 die Uops, die erforderlich sind, um die Operation zu vollenden.
  • Einige Instruktionen werden in eine einzelne Mikro op konvertiert, während andere einige Mikro ops benötigen, um die volle Operation zu vollenden. Wenn in einer Ausführungsform mehr als vier Mikro ops notwendig sind, um eine Instruktion zu vollenden, greift der Decoder 628 auf den Mikrocode ROM 632 zu, um die Instruktion auszuführen. Für eine Ausführungsform kann eine Instruktion in eine kleine Anzahl von Mikro ops zur Verarbeitung in dem Instruktionsdecoder 628 decodiert werden. In einer anderen Ausführungsform kann eine Instruktion innerhalb des Mikrocode ROM 632 gespeichert werden, sollte eine Anzahl von Mikro ops notwendig sein, um die Operation zu erzielen. Der Trace Cache 630 bezieht sich auf eine Eintrittspunktprogrammierbare Logik-Anordnung (PLA), um einen korrekten Mikroinstruktionszeiger zum Lesen der Mikrocodesequenzen zu bestimmen, um eine oder mehrere Instruktionen gemäß einer Ausführungsform aus dem Mikrocode-ROM 632 zu vollenden. Nachdem der Mikrocode-ROM 632 die Sequenzierung von Mikro ops für eine Instruktion beendet, nimmt das Front End 601 der Maschine das Abrufen von Mikro ops aus dem Trache Cache 630 wieder auf.
  • Die Out-of-order Ausführungsmaschine 603 ist, wo die Instruktionen zur Ausführung vorbereitet werden. Die Out-of-order Ausführungslogik hat eine Anzahl von Puffern, um den Strom von Instruktionen zu glätten und umzuordnen, um die Leistung zu optimieren, während sie die Pipeline abwärts gehen und zur Ausführung geplant werden. Die Zuordnerlogik ordnet die Maschinenpuffer und Ressourcen zu, die jede Uop benötigt, um ausgeführt zu werden. Die Registerumbenennungslogik benennt Logikregister auf Einträge in einer Registerdatei um. Der Zuordner ordnet auch einen Eintrag für jede Uop in einer der beiden Uop Warteschlangen zu, einen für Speicheroperationen und einen für Nicht-Speicheroperationen, vor den Instruktions-Schedulern: Speicher-Scheduler, schneller Scheduler 602, langsamer/allgemeiner Gleitkomma-Scheduler 604 und einfacher Gleitkomma-Scheduler 606. Die Uop Scheduler 602, 604, 606 bestimmen, wann eine Uop bereit ist, ausgeführt zu werden, auf der Basis der Bereitschaft ihrer abhängigen Eingaberegister-Operandenquellen und der Verfügbarkeit der Ausführungsressourcen, welche die Uops benötigen, um ihren Betrieb zu vollenden. Der schnelle Scheduler 602 einer Ausführungsform kann auf jeder Hälfte des Haupttaktzyklus planen, während die anderen Scheduler nur einmal pro Hauptprozessor-Taktzyklus planen können. Die Scheduler arbitrieren für die Sendeports, um Uops zur Ausführung zu planen.
  • Die Registerdateien 608, 610 sitzen zwischen den Schedulern 602, 604, 606 und den Ausführungseinheiten 612, 614, 616, 618, 620, 622, 624 in dem Ausführungsblock 611. Es gibt eine getrennte Registerdatei 608, 610 jeweils für Ganzzahl- und Gleitkommaoperationen. Jede Registerdatei 608, 610 einer Ausführungsform umfasst auch ein Bypass-Netz, das soeben vollendete Ergebnisse, die noch nicht in die Registerdatei geschrieben wurden, umgehen oder zu neuen abhängigen Uops weiterleiten kann. Die Ganzzahl-Registerdatei 608 und die Gleitkomma-Registerdatei 610 sind auch in der Lage, miteinander zu kommunizieren. Für eine Ausführungsform wird die Ganzzahl-Registerdatei 608 in zwei getrennte Registerdateien geteilt, eine Registerdatei für die 32 Datenbits niedrigerer Ordnung und eine zweite Registerdatei für die 32 Datenbits höherer Ordnung. Die Gleitkomma-Registerdatei 610 einer Ausführungsform hat 128 Bit breite Einträge, da Gleitkomma-Instruktionen typischerweise Operanden mit einer Breite von 64 bis 128 Bits aufweisen.
  • Der Ausführungsblock 611 umfasst die Ausführungseinheiten 612, 614, 616, 618, 620, 622, 624, wo die Instruktionen tatsächlich ausgeführt werden. Diese Sektion umfasst die Registerdateien 608, 610, welche die Ganzzahl- und Gleitkomma-Datenoperandenwerte speichern, die von den Mikroinstruktionen auszuführen sind. Der Prozessor 600 einer Ausführungsform besteht aus einer Anzahl von Ausführungseinheiten: der Adressengenerierungseinheit (AGU) 612, AGU 614, schnellen ALU 616, schnellen ALU 618, langsamen ALU 620, Gleitkomma-ALU 622, Gleitkomma-Bewegungseinheit 624. Für eine Ausführungsform führen die Gleitkomma-Ausführungsblöcke 622, 624 Gleitkomma-, MMX, SIMD und SSE oder andere Operationen aus. Die Gleitkomma-ALU 622 einer Ausführungsform umfasst einen 64 Bit mal 64 Bit Gleitkomma-Teiler, um eine Teilung, Quadratwurzel und Rest-Mikro ops auszuführen. Für Ausführungsformen der vorliegenden Offenbarung können Instruktionen, die einen Gleitkommawert involvieren, mit der Gleitkomma-Hardware gehandhabt werden.
  • In einer Ausführungsform gehen die ALU Operationen zu den Hochgeschwindigkeits-ALU-Ausführungseinheiten 616, 618. Die schnellen ALUs 616, 618 einer Ausführungsform können schnelle Operationen mit einer effektiven Latenz eines halben Taktzyklus ausführen. Für eine Ausführungsform gehen komplexeste Ganzzahloperationen zu der langsamen ALU 620, da die langsame ALU 620 Ganzzahl-Ausführungs-Hardware für Operationen des langen Latenztyps aufweist, wie einen Vervielfacher, Verschiebungen, Flaggenlogik und Verzweigungsverarbeitung. Speicherlast/Speicheroperationen werden von den AGUs 612, 614 ausgeführt. Für eine Ausführungsform werden die Ganzzahl-ALUs 616, 618, 620 im Kontext des Vornehmens von Ganzzahloperationen an 64 Bit Datenoperanden beschrieben. In alternativen Ausführungsformen können die ALUs 616, 618, 620 implementiert werden, um verschiedenste Datenbits, umfassend 16, 32, 128, 256 usw., zu unterstützen. Ähnlich können die Gleitkomma-Einheiten 622, 624 implementiert werden, um einen Bereich von Operanden mit Bits mit unterschiedlichen Breiten zu unterstützen. Für eine Ausführungsform können die Gleitkomma-Einheiten 622, 624 an 128 Bit breiten gepackten Datenoperanden in Verbindung mit SIMD und Multimedia-Instruktionen arbeiten.
  • In einer Ausführungsform senden die Uops Scheduler 602, 604, 606 abhängige Operationen, bevor die Stammlast die Ausführung beendet hat. Da Uops spekulativ geplant und in dem Prozessor 600 ausgeführt werden, umfasst der Prozessor 600 auch Logik, um Speicherfehlschläge zu handhaben. Wenn eine Datenlast in dem Daten-Cache fehlschlägt, kann es abhängige Operationen im Flug in der Pipeline geben, die den Scheduler mit temporär inkorrekten Daten verlassen haben. Ein Wiederholungsmechanismus verfolgt Instruktionen, die inkorrekte Daten verwenden, und führt diese erneut aus. Nur die abhängigen Operationen müssen wiederholt werden, und es wird gestattet, dass die unabhängigen vollendet werden. Die Scheduler und der Wiederholungsmechanismus einer Ausführungsform eines Prozessors sind auch ausgebildet, Instruktionssequenzen für Textstrang-Vergleichsoperationen abzufangen.
  • Der Prozessor 600 umfasst auch Logik, um die Speicheradressenvorhersage für eine Speicherdisambiguierung zu implementieren, gemäß Ausführungsformen der Offenbarung. In einer Ausführungsform kann der Ausführungsblock 611 des Prozessors 600 einen Speicheradressenprädiktor (nicht gezeigt) zur Implementierung der Speicheradressenvorhersage zur Speicherdisambiguierung aufweisen.
  • Der Ausdruck „Register“ kann sich auf die On-board Speicherorte beziehen, die als Teil der Instruktionen verwendet werden, um Operanden zu identifizieren. Mit anderen Worten, Register können jene sein, die von der Außenseite des Prozessors (aus der Perspektive eines Programmierers) verwendbar sind. Die Register einer Ausführungsform sollten jedoch in der Bedeutung nicht auf einen bestimmten Schaltungstyp begrenzt sein. Stattdessen ist ein Register einer Ausführungsform in der Lage, Daten zu speichern und zu liefern, und die hier beschriebenen Funktionen vorzunehmen. Die hier beschriebenen Register können durch Schaltungen innerhalb eines Prozessors unter Verwendung einer beliebigen Anzahl verschiedener Techniken implementiert werden, wie dedizierte physikalische Register, dynamisch zugeordnete physikalische Register unter Verwendung einer Registerumbenennung, Kombinationen dedizierter und dynamisch zugeordneter physikalischer Register usw. In einer Ausführungsform speichern Ganzzahl-Register 32 Bit Ganzzahldaten. Eine Registerdatei einer Ausführungsform enthält auch 8 Multimedia-SIMD-Register für gepackte Daten.
  • Für die nachstehende Diskussion werden Register als Datenregister verstanden, die ausgebildet sind, gepackte Daten zu halten, wie 64 Bit breite MMXTM Register (in einigen Fällen auch als „mm“ Register bezeichnet) in Mikroprozessoren, die mit der MMX Technologie von Intel Corporation of Santa Clara, Californien, aktivert werden. Diese MMX Register, die sowohl in der Ganzzahl- als auch Gleitkomma-Form erhältlich sind, können mit gepackten Datenelementen arbeiten, die SIMD und SSE Instruktionen begleiten. Ähnlich können auch 128 Bit breite XMM Register in Bezug auf die SSE2, SSE3, SSE4 oder höhere (generisch als „SSEx“ bezeichnete) Technologie verwendet werden, um solche gepackten Datenoperanden zu halten. In einer Ausführungsform müssen beim Speichern von gepackten Daten und Ganzzahldaten die Register nicht zwischen den beiden Datentypen differenzieren. In einer Ausführungsform sind Ganzzahl und Gleitkomma entweder in derselben Registerdatei oder in verschiedenen Registerdateien enthalten. Ferner können in einer Ausführungsform Gleitkomma- und Ganzzahldaten in verschiedenen Registern oder in denselben Registern gespeichert werden.
  • Mit nunmehriger Bezugnahme auf 7 ist ein Blockdiagramm gezeigt, das ein System 700 veranschaulicht, in dem eine Ausführungsform der Offenbarung verwendet werden kann. Wie in 7 gezeigt, ist das Mehrprozessorsystem 700 ein Punkt-zu-Punkt-Zwischenverbindungssystem und umfasst einen ersten Prozessor 770 und einen zweiten Prozessor 780, die über eine Punkt-zu-Punkt-Zwischenverbindung 750 gekoppelt sind. Obwohl nur mit zwei Prozessoren 770, 780 gezeigt, ist es klar, dass der Umfang von Ausführungsformen der Offenbarung nicht so eingeschränkt ist. In anderen Ausführungsformen kann oder können ein oder mehrere zusätzliche Prozessoren in einem gegebenen Prozessor vorhanden sein. In einer Ausführungsform kann das Mehrprozessorsystem 700 hybride Kerne implementieren, wie hier beschrieben.
  • Von den Prozessoren 770 und 780 ist gezeigt, dass sie integrierte Speichersteuereinheiten 772 bzw. 782 umfassen. Der Prozessor 770 umfasst auch als Teil seiner Bussteuereinheiten Punkt-zu-Punkt- (P-P-) Schnittstellen 776 und 778; ähnlich umfasst der zweite Prozessor 780 P-P-Schnittstellen 786 und 788. Die Prozessoren 770, 780 können Informationen über eine Punkt-zu-Punkt- (P-P-) Schnittstelle 750 unter Verwendung von P-P-Schnittstellenschaltungen 778, 788 austauschen. Wie in 7 gezeigt, koppeln IMCs 772 und 782 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 732 und einem Speicher 734, die Abschnitte des Hauptspeichers sein können, und die lokal an den jeweiligen Prozessoren angebracht sind.
  • Die Prozessoren 770, 780 können Informationen mit einem Chipsatz 790 über einzelne P-P-Schnittstellen 752, 754 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 776, 794, 786, 798 austauschen. Der Chipsatz 790 kann auch Informationen mit einer Hochleistungs-Grafikschaltung 738 über eine Hochleistungs-Grafikschnittstelle 739 austauschen.
  • Ein gemeinsam genutzter Cache (nicht gezeigt) kann in einem der Prozessoren oder außerhalb beider Prozessoren enthalten sein, jedoch mit den Prozessoren über eine P-P-Zwischenverbindung verbunden sein, so dass lokale Cache-Informationen eines der oder beider Prozessoren in dem gemeinsam genutzten Cache gespeichert werden können, wenn der Prozessor in einen Niedrigenergiemodus versetzt wird.
  • Der Chipsatz 790 kann mit einem ersten Bus 716 über eine Schnittstelle 796 gekoppelt sein. In einer Ausführungsform kann der erste Bus 716 ein Peripheral Component Interconnect (PCI) Bus oder ein Bus wie ein PCI Express Bus oder ein anderer I/O-Zwischenverbindungsbus der dritten Generation sein, obwohl der Umfang der vorliegenden Offenbarung nicht so eingeschränkt ist.
  • Wie in 7 gezeigt, können verschiedene I/O-Vorrichtungen 714 mit dem ersten Bus 716 gekoppelt sein, gemeinsam mit einer Busbrücke 718, die den ersten Bus 716 mit einem zweiten Bus 720 koppelt. In einer Ausführungsform kann der zweite Bus 720 ein Low Pin Count (LPC) Bus sein. Verschiedene Vorrichtungen können mit dem zweiten Bus 720 gekoppelt sein, umfassend zum Beispiel eine Tastatur und/oder eine Maus 722, Kommunikationsvorrichtungen 727 und eine Speichereinheit 728, wie ein Plattenlaufwerk oder eine andere Massenspeichervorrichtung, die in einer Ausführungsform Instruktionen/Code und Daten 730 umfassen kann. Ferner kann eine Audio I/O 724 mit dem zweiten Bus 720 gekoppelt sein. Es ist zu beachten, dass andere Architekturen möglich sind. Zum Beispiel kann anstelle der Punkt-zu-Punkt-Architektur von 7 ein System einen Multi-Drop Bus oder eine andere derartige Architektur implementieren.
  • Mit nunmehriger Bezugnahme auf 8 ist ein Blockbild eines Systems 800 gezeigt, in dem eine Ausführungsform der Offenbarung betrieben werden kann. Das System 800 kann einen oder mehrere Prozessoren 810, 815 aufweisen, die mit einem Grafikspeicher-Steuereinheit-Hub (GMCH) 820 gekoppelt sind. Die optionale Beschaffenheit zusätzlicher Prozessoren 815 ist in 8 mit gestrichelten Linien dargestellt. In einer Ausführungsform implementieren die Prozessoren 810, 815 hybride Kerne gemäß Ausführungsformen der Offenbarung.
  • Jeder Prozessor 810, 815 kann irgendeine Version der Schaltung, integrierten Schaltung, des Prozessors und/oder einer Silicium-integrierten Schaltung sein, wie oben beschrieben. Es ist jedoch zu beachten, dass es unwahrscheinlich ist, dass integrierte Grafiklogik- und integrierte Speichersteuereinheiten in den Prozessoren 810, 815 vorliegen. 8 veranschaulicht, dass der GMCH 820 mit einem Speicher 840 gekoppelt sein kann, der zum Beispiel ein dynamischer Speicher mit wahlfreiem Zugriff (DRAM) sein kann. Der DRAM kann für mindestens eine Ausführungsform mit einem nicht flüchtigen Cache assoziiert sein.
  • Der GMCH 820 kann ein Chipsatz oder ein Abschnitt eines Chipsatzes sein. Der GMCH 820 kann mit dem (den) Prozessor(en) 810, 815 kommunizieren und die Interaktion zwischen dem (den) Prozessor(en) 810, 815 und dem Speicher 840 steuern. Der GMCH 820 kann auch als beschleunigte Busschnittstelle zwischen dem (den) Prozessor(en) 810, 815 und anderen Elementen des Systems 800 dienen. Für mindestens eine Ausführungsform kommuniziert der GMCH 820 mit dem (den) Prozessor(en) 810, 815 über einen Multi-drop Bus, wie einen Frontside Bus (FSB) 895.
  • Ferner ist der GMCH 820 mit einer Anzeige 845 (wie einem Flachbildschirm oder einer Berührungsbildschirmanzeige) gekoppelt. Der GMCH 820 kann einen integrierten Grafikbeschleuniger aufweisen. Der GMCH 820 ist ferner mit einem Eingabe/Ausgabe- (I/O-) Steuereinheit-Hub (ICH) 850 gekoppelt, der verwendet werden kann, um verschiedene periphere Vorrichtungen mit dem System 800 zu koppeln. In der Ausführungsform von 8 ist zum Beispiel eine externe Grafikvorrichtung 860 gezeigt, die eine diskrete Grafikvorrichtung sein kann, welche mit dem ICH 850 gekoppelt ist, gemeinsam mit einer anderen peripheren Vorrichtung 870.
  • Alternativ dazu können auch zusätzliche oder andere Prozessoren in dem System 800 vorhanden sein. Zum Beispiel kann oder können der oder die zusätzlichen Prozessoren 815 einen zusätzlichen Prozessor oder Prozessoren umfassen, die gleich dem Prozessor 810 sind, einen zusätzlichen Prozessor oder Prozessoren, die heterogen oder asymmetrisch zu dem Prozessor 810 sind, Beschleuniger (wie z.B. ein Grafikbeschleuniger oder digitale Signalverarbeitungs- (DSP-) Einheiten), feldprogrammierbare Gate-Anordnungen oder irgendein anderer Prozessor. Es kann verschiedenste Unterschiede zwischen dem (den) Prozessor(en) 810, 815 hinsichtlich eines Metrik-Merit-Spektrums geben, umfassend Architektur-, Mikroarchitektur-, thermische Energieverbrauchscharakteristiken und dergleichen. Diese Unterschiede können sich effektiv als Asymmetrie und Heterogenität unter den Prozessoren 810, 815 manifestieren. Für mindestens eine Ausführungsform können die verschiedenen Prozessoren 810, 815 in derselben Chippackung residieren.
  • Mit nunmehriger Bezugnahme auf 9 ist ein Blockbild eines Systems 900 gezeigt, in dem eine Ausführungsform der Offenbarung betrieben werden kann. 9 veranschaulicht die Prozessoren 970, 980. In einer Ausführungsform können die Prozessoren 970, 980 hybride Kerne implementieren, wie im Vorstehenden beschrieben. Die Prozessoren 970, 980 können einen integrierten Speicher und I/O-Steuerlogik („CL“) 972 bzw. 982 umfassen und miteinander über eine Punkt-zu-Punkt-Zwischenverbindung 950 zwischen Punkt-zu-Punkt- (P-P-) Schnittstellen 978 bzw. 988 kommunizieren. Die Prozessoren 970, 980 kommunizieren jeweils mit dem Chipsatz 990 über Punkt-zu-Punkt-Zwischenverbindungen 952 und 954 durch die jeweiligen P-P-Schnittstellen 976 bis 994 und 986 bis 998, wie gezeigt. Für mindestens eine Ausführungsform kann die CL 972, 982 integrierte Speichersteuereinheiten umfassen. Die CLs 972, 982 können I/O-Steuerlogik umfassen. Wie dargestellt, sind die Speicher 932, 934 mit den CLs 972, 982 gekoppelt, und I/O-Vorrichtungen 914 sind auch mit der Steuerlogik 972, 982 gekoppelt. Legacy I/O-Vorrichtungen 915 sind mit dem Chipsatz 990 über die Schnittstelle 996 gekoppelt.
  • Ausführungsformen können in vielen verschiedenen Systemtypen implementiert werden. 10 ist ein Blockbild eines SoC 1000 gemäß einer Ausführungsform der vorliegenden Offenbarung. Kästchen mit gestrichelten Linien sind optionale Merkmale auf komplexeren SoCs. In einigen Implementierungen umfasst das SoC 1000, wie in 10 gezeigt, Merkmale des SoC 100, das in 1 gezeigt ist. In 10 ist eine Zwischenverbindungseinheit(en) 1012 gekoppelt mit: einem Anwendungsprozessor 1020, der einen Satz von einem oder mehreren Kernen 1002A-N und (eine) gemeinsam genutzte Cache-Einheit(en) 1006 umfasst; einer Systemagenteneinheit 1010; (einer) Bussteuereinheit(en) 1016; (einer) integrierten Speichersteuereinheit(en) 1014; einem Satz von oder einem oder mehreren Multimedia-Prozessoren 1018, die integrierte Grafiklogik 1008, einen Bildprozessor 1024 zur Bereitstellung einer Standbild- und/oder Videokamerafunktionalität, einen Audio-Prozessor 1026 zur Bereitstellung einer Hardware-Audio-Beschleunigung und einen Videoprozessor 1028 zur Bereitstellung einer Videocodierungs/Decodierungsbeschleunigung umfassen können; eine statische Speichereinheit mit wahlfreiem Zugriff (SRAM) 1030; eine direkte Speicherzugriffseinheit (DMA) 1032; und eine Anzeigeeinheit 1040 zum Koppeln mit einer oder mehreren externen Anzeigen. In einer Ausführungsform kann ein Speichermodul in der (den) integrierten Speichersteuereinheit(en) 1014 enthalten sein. In einer anderen Ausführungsform kann das Speichermodul in einer oder mehreren anderen Komponenten des SoC 1000 enthalten sein, die verwendet werden können, um auf einen Speicher zuzugreifen und/oder diesen zu steuern. Der Anwendungsprozessor 1020 kann einen Speicheradressenprädiktor zur Implementierung von hybriden Kernen umfassen, wie hier in Ausführungsformen beschrieben.
  • Die Speicherhierarchie umfasst einen oder mehrere Cache Level innerhalb der Kerne, einen Satz von einer oder mehreren gemeinsam genutzten Cache-Einheiten 1006 und einen externen Speicher (nicht gezeigt), der mit dem Satz von integrierten Speichersteuereinheiten 1014 gekoppelt ist. Der Satz von gemeinsam genutzten Cache-Einheiten 1006 kann einen oder mehrere Mid-Level Caches, wie Level 2 (L2), Level 3 (L3), Level 4 (L4) oder andere Cache Level, einen Last Level Cache (LLC) und/oder Kombinationen davon umfassen.
  • In einigen Ausführungsformen ist oder sind ein oder mehrere der Kerne 1002A-N Multithreading-fähig. Der Systemagent 1010 umfasst jene Komponenten, welche die Kerne 1002A-N koordinieren und betreiben. Die Systemagenteneinheit 1010 kann zum Beispiel eine Energiesteuereinheit (PCU) und eine Anzeigeeinheit umfassen. Die PCU kann Logik und Komponenten sein oder umfassen, die zur Regelung des Energiezustands der Kerne 1002A-N und der integrierten Grafiklogik 1008 benötigt werden. Die Anzeigeeinheit dient zum Treiben einer oder mehrerer extern verbundener Anzeigen.
  • Die Kerne 1002A-N können homogen oder heterogen hinsichtlich der Architektur und/oder des Instruktionssatzes sein. Zum Beispiel können einige der Kerne 1002A-N In-order sein, während andere Out-of-order sind. Als weiteres Beispiel können zwei oder mehr der Kerne 1002A-N in der Lage sein, denselben Instruktionssatz auszuführen, während andere in der Lage sein können, nur einen Teilsatz dieses Instruktionssatzes oder einen anderen Instruktionssatz auszuführen.
  • Der Anwendungsprozessor 1020 kann ein Universalprozessor sein, wie ein Core™ i3, i5, i7, 2 Duo and Quad, Xeon™, Itanium™, Atom™ oder Quark™ Prozessor, die von Intel™ Corporation of Santa Clara, Calif., vertrieben werden. Alternativ dazu kann der Anwendungsprozessor 1020 von einer anderen Firma sein, wie ARM Holdings™, Ltd, MIPS™ usw. Der Anwendungsprozessor 1020 kann ein Universalprozessor sein, wie zum Beispiel ein Netz- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Grafikprozessor, ein Co-Prozessor, ein eingebetteter Prozessor oder dergleichen. Der Anwendungsprozessor 1020 kann auf einem oder mehreren Chips implementiert werden. Der Anwendungsprozessor 1020 kann ein Teil von oder implementiert auf einem oder mehreren Substraten sein, wobei eine beliebige von mehreren Prozesstechnologien verwendet wird, wie zum Beispiel BiCMOS, CMOS oder NMOS.
  • 11 ist ein Blockbild einer Ausführungsform einer System-on-Chip- (SoC-) Ausbildung gemäß der vorliegenden Offenbarung. Als spezifisches veranschaulichendes Beispiel ist das SoC 1100 in einer Benutzerausrüstung (UE) enthalten. In einer Ausführungsform bezieht sich UE auf eine beliebige Vorrichtung, die von einem Endverbraucher zu verwenden ist, um zu kommunizieren, wie ein Handtelefon, SmartPhone, Tablet, ultradünnes Notebook, Notebook mit Breitbandadapter, oder irgendeine andere ähnliche Kommunikationsvorrichtung. Häufig verbindet sich die UE mit einer Basisstation oder einem Knoten, der potentiell in der Beschaffenheit einer Mobilstation (MS) in einem GSM Netz entspricht.
  • Hier umfasst das SoC 1100 2 Kerne - 1106 und 1107. Die Kerne 1106 und 1107 können konform sein mit einer Instruktionssatzarchitektur, wie einem Intel® Architecture Core™-basierten Prozessor, einem Advanced Micro Devices, Inc. (AMD) Prozessor, einem MIPS-basierten Prozessor, einer ARM-basierten Prozessorausbildung oder einem Kunden davon, sowie ihren Lizenznehmern oder Anwendern. Die Kerne 1106 und 1107 sind mit der Cache-Steuereinheit 1108 gekoppelt, die mit der Busschnittstelleneinheit 1109 und dem L2 Cache 1110 assoziiert ist, um mit anderen Teilen des Systems 1100 zu kommunizieren. Die Zwischenverbindung 1110 umfasst eine chipeigene Zwischenverbindung, wie IOSF, AMBA oder eine andere oben diskutierte Zwischenverbindung, die potentiell einen oder mehrere Aspekte der beschriebenen Offenbarung implementiert. In einer Ausführungsform können die Kerne 1106, 1107 hybride Kerne implementieren, wie hier in Ausführungsformen beschrieben.
  • Die Zwischenverbindung 1110 stellt Kommunikationskanäle zu den anderen Komponenten bereit, wie Subscriber Identity Module (SIM) 1130, um eine Schnittstelle mit einer SIM Karte zu bilden, einem Boot ROM 1135, um Boot Code zur Ausführung durch die Kerne 1106 und 1107 zu halten, um das SoC 1100 zu initialisieren und zu booten, einer SDRAM Steuereinheit 1140, um eine Schnittstelle mit einem externen Speicher zu bilden (z.B. DRAM 1160), einer Flash-Steuereinheit 1145, um eine Schnittstelle mit einem nicht flüchtigen Speicher zu bilden (z.B. Flash 1165), einer peripheren Steuerung 1150 (z.B. Serial Peripheral Interface), um eine Schnittstelle mit peripheren Vorrichtungen zu bilden, Video-Codecs 1120 und einer Videoschnittstelle 1125, um eine Eingabe (z.B. durch eine Berührung freigegebene Eingabe) anzuzeigen und zu empfangen, einer GPU 1115, um grafikbezogene Berechnungen vorzunehmen, usw. Jede dieser Schnittstellen kann Aspekte der hier beschriebenen Offenbarung einschließen. Zusätzlich veranschaulicht das System 1100 periphere Vorrichtungen zur Kommunikation, wie ein Bluetooth Modul 1170, 3G Modem 1175, GPS 1180 und Wi-Fi 1185.
  • 12 veranschaulicht eine Diagrammdarstellung einer Maschine in der Beispielform eines Computersystems 1200, in dem ein Satz von Instruktionen ausgeführt werden kann, um zu bewirken, dass die Maschine irgendeine oder mehrere der hier diskutierten Methodologien vornimmt. In alternativen Ausführungsformen kann die Maschine mit anderen Maschinen in einem LAN, Intranet, Extranet oder dem Internet verbunden sein (z.B. vernetzt). Die Maschine kann in der Eigenschaft einer Server- oder Client-Vorrichtung in einer Client-Server-Netzumgebung oder als Peer Maschine in einer Peer-to-Peer- (oder verteilten) Netzumgebung betrieben werden. Die Maschine kann ein Personalcomputer (PC), ein Tablet PC, eine Set-top Box (STB), ein Personal Digital Assistant (PDA), ein Zellulartelefon, eine Webanwendung, ein Server, ein Netz-Router, ein Schalter oder eine Brücke sein, oder irgendeine Maschine, die in der Lage ist, einen Satz von Instruktionen (sequentiell oder auf andere Weise) auszuführen, die Handlungen spezifizieren, welche von dieser Maschine vorzunehmen sind. Obwohl nur eine einzelne Maschine veranschaulicht ist, ist ferner der Ausdruck „Maschine“ so auszulegen, dass er eine beliebige Ansammlung von Maschinen umfasst, die einzeln oder gemeinsam einen Satz (oder mehrere Sätze) von Instruktionen ausführen, um irgendeine oder mehrere der hier diskutierten Methodologien vorzunehmen.
  • Das Computersystem 1200 umfasst eine Verarbeitungsvorrichtung 1202, einen Hauptspeicher 1204 (z.B. Nurlesespeicher (ROM)), einen Flash-Speicher, einen dynamischen Speicher mit wahlfreiem Zugriff (DRAM) (wie einen synchronen DRAM (SDRAM) oder DRAM (RDRAM) usw.), einen statischen Speicher 1206 (z.B. Flash-Speicher, statischen Speicher mit wahlfreiem Zugriff (SRAM) usw.) und eine Datenspeichervorrichtung 1218, die miteinander über einen Bus 1230 kommunizieren.
  • Die Verarbeitungsvorrichtung 1202 repräsentiert eine oder mehrere Universal-Verarbeitungsvorrichtungen, wie einen Mikroprozessor, eine Zentraleinheit oder dergleichen. Insbesondere kann die Verarbeitungsvorrichtung ein Complex Instruction Set Computing (CISC) Mikroprozessor, Reduced Instruction Set Computer (RISC) Mikroprozessor, Very Long Instruction Word (VLIW) Mikroprozessor oder ein Prozessor sein, der andere Instruktionssätze implementiert, oder Prozessoren, die eine Kombination von Instruktionssätzen implementieren. Die Verarbeitungsvorrichtung 1202 kann auch eine oder mehrere Spezial-Verarbeitungsvorrichtungen sein, wie eine anwendungsspezifische integrierte Schaltung (ASIC), eine feldprogrammierbare Gate-Anordnung (FPGA), ein digitaler Signalprozessor (DSP), ein Netzprozessor oder dergleichen. In einer Ausführungsform kann die Verarbeitungsvorrichtung 1202 einen oder mehrere Verarbeitungskerne umfassen. Die Verarbeitungsvorrichtung 1202 ist ausgelegt, die Verarbeitungslogik 1226 auszuführen, um die hier diskutierten Operationen und Schritte vorzunehmen. In einer Ausführungsform ist die Verarbeitungsvorrichtung 1202 gleich wie die Prozessorarchitektur 100, die mit Bezugnahme auf 1 beschrieben wird, wie hier mit Ausführungsformen der Offenbarung beschrieben.
  • Das Computersystem 1200 kann ferner eine Netzschnittstellenvorrichtung 1208 umfassen, die kommunizierbar mit einem Netz 1220 gekoppelt ist. Das Computersystem 1200 kann auch eine Videoanzeigeeinheit 1210 (z.B. eine Flüssigkristallanzeige (LCD) oder eine Kathodenstrahlröhre (CRT)), eine alphanumerische Eingabevorrichtung 1212 (z.B. eine Tastatur), eine Cursor-Steuervorrichtung 1214 (z.B. eine Maus) und eine Signalgenerierungsvorrichtung 1216 (z.B. einen Lautsprecher) umfassen. Ferner kann das Computersystem 1200 eine Grafikverarbeitungseinheit 1222, eine Videoverarbeitungseinheit 1228 und eine Audio-Verarbeitungseinheit 1232 umfassen.
  • Die Datenspeichervorrichtung 1218 kann ein maschinenzugängliches Speichermedium 1224 umfassen, auf dem Software 1226 gespeichert ist, die irgendeine oder mehrere der Methodologien hier beschriebener Funktionen implementiert, wie die Implementierung einer Speicheradressenvorhersage für eine Speicherdesambiguierung, wie im Vorstehenden beschrieben. Die Software 1226 kann auch innerhalb des Hauptspeichers 1204 als Instruktionen 1226 und/oder innerhalb der Verarbeitungsvorrichtung 1202 als Verarbeitungslogik 1226 während der Ausführung davon durch das Computersystem 1200 vollständig oder mindestens teilweise residieren; der Hauptspeicher 1204 und die Verarbeitungsvorrichtung 1202 stellen auch maschinenzugängliche Speichermedien dar.
  • Das maschinenlesbare Speichermedium 1224 kann auch verwendet werden, um Instruktionen 1226 zu speichern, die eine Speicheradressenvorhersage für hybride Kerne implementieren, wie gemäß Ausführungsformen der Offenbarung beschrieben. Obwohl von dem maschinenzugänglichen Speichermedium 1128 in einem Beispiel einer Ausführungsform gezeigt ist, dass es ein einzelnes Medium ist, ist der Ausdruck „maschinenzugängliches Speichermedium“ so auszulegen, dass er ein einzelnes Medium oder mehrere Medien umfasst (z.B. eine zentralisierte oder verteilte Datenbank und/oder assoziierte Caches und Server), welche den einen oder mehrere Sätze von Instruktionen speichern. Der Ausdruck „maschinenzugängliches Speichermedium“ ist auch so auszulegen, dass er ein beliebiges Medium umfasst, das in der Lage ist, einen Satz von Instruktionen zur Ausführung durch die Maschine zu speichern, zu codieren oder zu tragen, und die bewirken, dass die Maschine irgendeine oder mehrere der Methodologien der vorliegenden Offenbarung vornimmt. Der Ausdruck „maschinenzugängliches Speichermedium“ ist demgemäß so auszulegen, dass er Solid State Speicher und optische und magnetischen Medien umfasst, jedoch nicht darauf beschränkt ist.
  • Die folgenden Beispiele gehören zu weiteren Ausführungsformen. Beispiel 1 ist ein Prozessor, umfassend: eine Vielzahl von Verarbeitungskernen; ein Steuerregister, das mit einem ersten Verarbeitungskern der Vielzahl von Verarbeitungskernen assoziiert ist, um einen ersten Basistaktfrequenzwert zu speichern, auf dem der erste Verarbeitungskern zu laufen hat; und eine Energieverwaltungsschaltung, um: eine Basistaktfrequenzanforderung zu empfangen, die einen zweiten Basistaktfrequenzwert umfasst; den zweiten Basistaktfrequenzwert in dem Steuerregister zu speichern, um zu bewirken, dass der erste Verarbeitungskern auf dem zweiten Basistaktfrequenzwert läuft; und den zweiten Basistaktfrequenzwert auf einer Hardware-Schnittstelle zu exponieren, die mit der Energieverwaltungsschaltung assoziiert ist.
  • In Beispiel 2 kann der Gegenstand von Beispiel 1 ferner bereitstellen, dass der erste Basistaktfrequenzwert und der zweite Basistaktfrequenzwert Taktgeschwindigkeiten sind, bei denen die Verarbeitungsvorrichtung auf einem vorherbestimmten Arbeitslastniveau innerhalb einer thermischen Verlustleistungs- (TDP) Grenze der Verarbeitungsvorrichtung zu arbeiten hat.
  • In Beispiel 3 kann der Gegenstand von Beispiel 1 ferner bereitstellen, dass der zweite Basistaktfrequenzwert von dem ersten Basistaktfrequenzwert verschieden ist.
  • In Beispiel 4 kann der Gegenstand von Beispiel 1 ferner bereitstellen, dass die Energieverwaltungsschaltung die Basistaktfrequenzanforderung von mindestens einer von einer Steuereinheit, die eine Basic Input/Output System (BIOS) Instruktion ausführt, oder von einer System-Software-Anwendung, die auf der Verarbeitungsvorrichtung ausgeführt wird, zu empfangen hat.
  • In Beispiel 5 kann der Gegenstand eines der Beispiele 1 und 4 ferner bereitstellen, dass die Steuereinheit, welche die BIOS Instruktion ausführt: auf einer Ausgabevorrichtung eine Vielzahl von Nutzungsszenarios anzuzeigen hat, wobei ein Nutzungsszenario mindestens einen von einer Anzahl von Verarbeitungskernen, die zu verwenden sind, einen Ziel-Basistaktfrequenzwert, auf dem ein Verarbeitungskern betrieben zu werden hat, eine Ziel-Arbeitslast oder eine Ziel-Zuverlässigkeitsmetrik zu spezifizieren hat; ansprechend auf das Empfangen einer Auswahl eines der Vielzahl von Nutzungsszenarios, auf der Basis des ausgewählten Nutzungsszenarios, den zweiten Basistaktfrequenzwert zu bestimmen hat, und, an die Energieverwaltungsschaltung, die Basistaktfrequenzanforderung zu übertragen hat, die den zweiten Basistaktfrequenzwert umfasst.
  • In Beispiel 6 kann der Gegenstand eines der Beispiele 1 und 4 ferner bereitstellen, dass die Steuereinheit, welche die BIOS Instruktion ausführt: an die Energieverwaltungsschaltung, die Basistaktfrequenzanforderung, die den zweiten Basistaktfrequenzwert umfasst, und einen Identifikator, der mit dem ersten Verarbeitungskern assoziiert ist, zu übertragen hat.
  • In Beispiel 7 kann der Gegenstand eines der Beispiele 1 und 4 ferner bereitstellen, dass die System-Software-Anwendung eines von einem Betriebssystem oder einem virtuellen Maschinenmonitor (VMM) ist, und wobei die Verarbeitungsvorrichtung die System-Software auszuführen hat, um: ein zweites Nutzungsszenario zu detektieren, das mit der Verarbeitungsvorrichtung assoziiert ist; auf der Basis des zweiten Nutzungsszenarios, den zweiten Basistaktfrequenzwert zu bestimmen; und, an die Energieverwaltungsschaltung, die Basistaktfrequenzanforderung zu übertragen, die den zweiten Basistaktfrequenzwert umfasst.
  • In Beispiel 8 kann der Gegenstand eines der Beispiele 1 und 4 ferner bereitstellen, dass die Verarbeitungsvorrichtung die System-Software-Anwendung auszuführen hat, um den zweiten Basistaktfrequenzwert über die Hardware-Schnittstelle abzurufen.
  • In Beispiel 9 kann der Gegenstand von Beispiel 1 ferner ein zweites Steuerregister umfassen, um eine Affinitätsmaske zu speichern, welche eine Bitflagge umfasst, die einen Aktivitätsstatus des ersten Verarbeitungskerns darstellt, und wobei, ansprechend auf das Speichern des zweiten Basistaktfrequenzwerts in dem Steuerregister, die Energieverwaltungsschaltung die Bitflagge in einen aktiven Status zu versetzen hat.
  • In Beispiel 10 kann der Gegenstand von Beispiel 1 ferner bereitstellen, dass, ansprechend auf das Empfangen der Basistaktfrequenzanforderung, die Energieverwaltungsschaltung Energiesteuer-Firmware gemäß dem zweiten Basistaktwert laufen zu lassen hat.
  • In Beispiel 11 kann der Gegenstand von Beispiel 1 ferner bereitstellen, dass das Steuerregister mit der Verarbeitungsvorrichtung assoziiert ist, um den ersten Basistaktfrequenzwert zu speichern, auf dem die Vielzahl von Verarbeitungskernen zu laufen hat.
  • In Beispiel 12 kann der Gegenstand von Beispiel 1 ferner ein zweites Steuerregister umfassen, um eine Referenz auf eine Datenstruktur zu speichern, die in einem Speicher gespeichert ist, wobei die Datenstruktur den ersten Basistaktfrequenzwert zu speichern hat, auf dem die Vielzahl von Verarbeitungskernen zu laufen hat.
  • Beispiel 13 ist ein System, umfassend: einen Basic Input/Output System (BIOS) Chipsatz, um BIOS Instruktionen zu speichern; eine Verarbeitungsvorrichtung, umfassend: eine Vielzahl von Verarbeitungskernen; ein Steuerregister, das mit einem ersten Verarbeitungskern der Vielzahl von Verarbeitungskernen assoziiert ist, um einen ersten Basistaktfrequenzwert zu speichern, auf dem der erste Verarbeitungskern zu laufen hat; und eine Energieverwaltungsschaltung zur Berechnung, um: ein Nutzungsszenario der Verarbeitungsvorrichtung zu empfangen; auf der Basis des Nutzungsszenarios, einen zweiten Basistaktfrequenzwert zu bestimmen; den zweiten Basistaktfrequenzwert in dem Steuerregister zu speichern, um zu bewirken, dass der erste Verarbeitungskern auf dem zweiten Basistaktfrequenzwert läuft; und den zweiten Basistaktfrequenzwert auf einer Hardware-Schnittstelle zu exponieren, die mit der Energieverwaltungsschaltung assoziiert ist.
  • In Beispiel 14 kann der Gegenstand von Beispiel 13 ferner bereitstellen, dass der zweite Basistaktfrequenzwert von dem ersten Basistaktfrequenzwert verschieden ist.
  • In Beispiel 15 kann der Gegenstand von Beispiel 13 ferner bereitstellen, dass die Energieverwaltungsschaltung die Basistaktfrequenzanforderung von mindestens einer von einer Steuereinheit, die eine Basic Input/Output System (BIOS) Instruktion ausführt, oder von einer System-Software-Anwendung, die auf der Verarbeitungsvorrichtung ausgeführt wird, zu empfangen hat.
  • In Beispiel 16 kann der Gegenstand eines der Beispiele 13 und 15 ferner bereitstellen, dass die System-Software-Anwendung eines von einem Betriebssystem oder einem virtuellen Maschinenmonitor (VMM) ist, und wobei die Verarbeitungsvorrichtung die System-Softwareanwendung auszuführen hat, um den zweiten Basistaktfrequenzwertwert über die Hardware-Schnittstelle abzurufen.
  • In Beispiel 17 kann der Gegenstand von Beispiel 13 ferner bereitstellen, dass das Steuerregister mit der Verarbeitungsvorrichtung assoziiert ist, um den ersten Basistaktfrequenzwert zu speichern, auf dem die Vielzahl von Verarbeitungskernen zu laufen hat.
  • In Beispiel 18 kann der Gegenstand von Beispiel 13 ferner bereitstellen, dass die Verarbeitungsvorrichtung ferner umfasst: ein zweites Steuerregister, um eine Referenz auf eine Datenstruktur zu speichern, die in einem Speicher gespeichert ist, wobei die Datenstruktur den ersten Basistaktfrequenzwert zu speichern hat, auf dem die Vielzahl von Verarbeitungskernen zu laufen hat.
  • Beispiel 19 ist ein Verfahren, umfassend: Empfangen, durch eine Verarbeitungsvorrichtung, einer Spezifikation, die einen Ziel-Service Level umfasst, der mit einem Software-Objekt assoziiert ist, wobei der Ziel-Service Level einen ersten Basistaktfrequenzwert umfasst, der mit einer Vielzahl von Verarbeitungskernen der Verarbeitungsvorrichtung assoziiert ist; Bestimmen, ob die Verarbeitungsvorrichtung genügend Verarbeitungskerne umfasst, die verfügbar sind, um den Ziel-Service Level zu unterstützen; und, ansprechend auf das Bestimmen, dass die Verarbeitungsvorrichtung nicht genügend Verarbeitungskerne aufweist, die verfügbar sind, um den Ziel-Service Level zu unterstützen, Übertragen einer Anforderung, an eine Energieverwaltungsschaltung der Verarbeitungsvorrichtung, um zu bewirken, dass die verfügbaren Verarbeitungskerne auf einem zweiten Basistaktfrequenzwert laufen, der höher ist als der erste Basistaktfrequenzwert.
  • In Beispiel 20 kann der Gegenstand von Beispiel 19 ferner bereitstellen, dass das Software-Objekt eines von einer virtuellen Maschine oder einem Containerobjekt ist.
  • Beispiel 21 ist eine Vorrichtung, umfassend: Mittel zum Vornehmen des Verfahrens von einem der Beispiele 19 und 20.
  • Beispiel 22 ist ein maschinenlesbares, nicht transitorisches Medium, das darauf gespeichert Programmcode aufweist, der, wenn er ausgeführt wird, Operationen vornimmt, umfassend: Empfangen, durch eine Verarbeitungsvorrichtung, einer Spezifikation, die einen Ziel-Service Level umfasst, der mit einem Software-Objekt assoziiert ist, wobei der Ziel-Service Level einen ersten Basistaktfrequenzwert umfasst, der mit einer Vielzahl von Verarbeitungskernen der Verarbeitungsvorrichtung assoziiert ist; Bestimmen, ob die Verarbeitungsvorrichtung genügend Verarbeitungskerne umfasst, die verfügbar sind, um den Ziel-Service Level zu unterstützen; und, ansprechend auf das Bestimmen, dass die Verarbeitungsvorrichtung nicht genügend Verarbeitungskerne aufweist, die verfügbar sind, um den Ziel-Service Level zu unterstützen, Übertragen einer Anforderung, an eine Energieverwaltungsschaltung der Verarbeitungsvorrichtung, um zu bewirken, dass die verfügbaren Verarbeitungskerne auf einem zweiten Basistaktfrequenzwert laufen, der höher ist als der erste Basistaktfrequenzwert.
  • In Beispiel 23 kann der Gegenstand von Beispiel 22 ferner bereitstellen, dass das Software-Objekt eines von einer virtuellen Maschine oder einem Containerobjekt ist.
  • Eine Ausbildung kann verschiedene Stufen durchlaufen, von der Erzeugung zur Simulation zur Herstellung. Daten, die ein Design repräsentieren, können das Design in verschiedener Weise repräsentieren. Zuerst kann, wie es bei Simulationen nützlich ist, die Hardware unter Verwendung einer Hardware-Beschreibungssprache oder einer anderen funktionellen Beschreibungssprache repräsentiert werden. Zusätzlich kann ein Modell auf Schaltungsebene mit Logik und/oder Transistor-Gates in einigen Stufen des Ausbildungsprozesses erzeugt werden. Ferner erreichen die meisten Designs in irgendeiner Stufe eine Ebene von Daten, welche die physikalische Platzierung verschiedener Vorrichtungen in dem Hardware-Modell repräsentieren. In dem Fall, wo herkömmliche Halbleiter-Herstellungstechniken verwendet werden, können die Daten, die das Hardware-Modell repräsentieren, die Daten sein, welche die Anwesenheit oder Abwesenheit verschiedener Merkmale auf verschiedenen Maskenschichten für Masken spezifizieren, die zur Herstellung der integrierten Schaltung verwendet werden. In einer beliebigen Darstellung des Designs können die Daten in einer beliebigen Form eines maschinenlesbaren Mediums gespeichert werden. Ein Speicher oder ein magnetischer oder optischer Speicher, wie eine Platte, kann das maschinenlesbare Medium sein, um Informationen zu speichern, die über optische oder elektrische Wellenmodulation übertragen werden oder auf andere Weise generiert werden, um solche Informationen zu übertragen. Wenn eine elektrische Trägerwelle übertragen wird, die den Code oder das Design anzeigt oder trägt, in dem Ausmaß, dass ein Kopieren, Puffern oder eine erneute Übertragung des elektrischen Signals vorgenommen wird, wird eine neue Kopie erstellt. Somit kann ein Kommunikationsanbieter oder ein Netzanbieter auf einem greifbaren, maschinenlesbaren Medium, mindestens temporär, einen Artikel speichern, wie Informationen, die in einer Trägerwelle codiert sind, wobei Techniken von Ausführungsformen der vorliegenden Offenbarung verkörpert werden.
  • Ein Modul, wie hier verwendet, bezieht sich auf eine beliebige Kombination von Hardware, Software und/oder Firmware. Als Beispiel umfasst ein Modul Hardware, wie eine Mikrosteuereinheit, die mit einem nicht transitorischen Medium assoziiert ist, um Code zu speichern, der geeignet ist, von der Mikrosteuereinheit ausgeführt zu werden. Daher bezieht sich eine Bezugnahme auf ein Modul in einer Ausführungsform auf die Hardware, die spezifisch ausgelegt ist, den Code zu erkennen und/oder auszuführen, um auf einem nicht transitorischen Medium gehalten zu werden. Ferner bezieht sich in einer anderen Ausführungsform die Verwendung eines Moduls auf ein nicht transitorisches Medium, das den Code umfasst, der spezifisch geeignet ist, von der Mikrosteuereinheit ausgeführt zu werden, um eine vorherbestimmte Operation vorzunehmen. Wie abgeleitet werden kann, kann sich in noch einer anderen Ausführungsform der Ausdruck Modul (in diesem Beispiel) auf die Kombination der Mikrosteuereinheit und des nicht transitorischen Mediums beziehen. Häufig variieren üblicherweise Modulgrenzen, die als getrennt veranschaulicht werden, und überlappen potentiell. Zum Beispiel können ein erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination davon gemeinsam nutzen, während bestimmte unabhängige Hardware, Software oder Firmware potentiell beibehalten wird. In einer Ausführungsform umfasst die Verwendung des Ausdrucks Logik Hardware, wie Transistoren, Register oder andere Hardware, wie programmierbare Logikvorrichtungen.
  • Die Verwendung der Phrase „ausgelegt, um“ bezieht sich in einer Ausführungsform auf das Anordnen, Zusammensetzen, Herstellen, Inverkehrbringen, Importieren und/oder Ausbilden einer Vorrichtung, Hardware, Logik oder eines Elements, um eine ausgebildete oder bestimmte Aufgabe vorzunehmen. In diesem Beispiel ist eine Vorrichtung oder ein Element davon, das nicht in Betrieb ist, weiterhin „ausgelegt, um“ eine bezeichnete Aufgabe vorzunehmen, wenn es ausgebildet, gekoppelt und/oder zwischenverbunden ist, um die ausgebildete Aufgabe vorzunehmen. Als rein veranschaulichendes Beispiel kann ein Logik-Gate eine 0 oder 1 während des Betriebs liefern. Ein Logik-Gate, das „ausgelegt ist, um“ ein Freigabesignal für einen Takt zu liefern, umfasst jedoch nicht jedes potentielle Logikgate, das eine 1 oder 0 liefern kann. Stattdessen ist das Logik-Gate eines, das in irgendeiner Weise gekoppelt ist, so dass während des Betriebs die ausgegebene 1 oder 0 den Takt freizugeben hat. Es ist wiederum zu beachten, dass die Verwendung des Ausdrucks „ausgelegt, um“ keine Operation erfordert, sondern stattdessen auf dem latenten Zustand einer Vorrichtung, einer Hardware und/oder eines Elements fokussiert ist, wobei in dem latenten Zustand die Vorrichtung, die Hardware und/oder das Element ausgebildet ist, eine bestimmte Aufgabe vorzunehmen, wenn die Vorrichtung, die Hardware und/oder das Element in Betrieb ist.
  • Ferner bezieht sich die Verwendung der Phrasen „um zu“, „in der Lage zu/um zu“ und/oder „betreibbar, um“ in einer Ausführungsform auf irgendeine Vorrichtung, eine Logik, eine Hardware und/oder ein Element, die oder das derart ausgebildet ist, dass die Verwendung der Vorrichtung, der Hardware und/oder des Elements auf spezifische Weise ermöglicht wird. Es ist, wie im Vorstehenden, zu beachten, dass sich die Verwendung von „um zu“, „in der Lage zu/um zu“ und/oder „betreibbar, um“ in einer Ausführungsform auf den latenten Zustand einer Vorrichtung, einer Hardware und/oder eines Elements bezieht, wo die Vorrichtung, die Hardware und/oder das Element nicht in Betrieb ist, sondern derart ausgebildet ist, dass die Verwendung einer Vorrichtung in einer spezifizierten Weise ermöglicht wird.
  • Ein Wert, wie hier verwendet, umfasst irgendeine bekannte Darstellung einer Zahl, eines Zustands, eines Logikzustands oder eines binären Logikzustands. Häufig wird die Verwendung von Logikpegeln, Logikwerten oder logischen Werten auch als 1 oder 0 bezeichnet, die einfach binäre Logikzustände darstellen. Zum Beispiel bezieht sich 1 auf einen hohen Logikpegel, und 0 bezieht sich auf einen niedrigen Logikpegel. In einer Ausführungsform kann eine Speicherzelle, wie eine Transistor- oder Flash-Zelle, in der Lage sein, einen einzelnen logischen Wert oder mehrere logische Werte zu halten. Andere Darstellungen von Werten in Computersystemen wurden jedoch verwendet. Zum Beispiel kann die Dezimalzahl zehn auch als binärer Wert von 910 und als Hexadezimalbuchstabe A dargestellt werden. Daher umfasst ein Wert eine beliebige Darstellung von Informationen, die in einem Computersystem gehalten werden können.
  • Außerdem können Zustände durch Werte oder Abschnitte von Werten dargestellt werden. Als Beispiel kann ein erster Wert, wie ein logischer, einen Vorgabe- oder Initial-Zustand darstellen, während ein zweiter Wert, wie eine logische Null, einen Nicht-Vorgabe-Zustand darstellen kann. Zusätzlich beziehen sich die Ausdrücke rücksetzen und setzen in einer Ausführungsform jeweils auf einen Vorgabe- und einen aktualisierten Wert oder Zustand. Zum Beispiel umfasst ein Vorgabe-Wert potentiell einen hohen logischen Wert, d.h. rücksetzen, während ein aktualisierter Wert potentiell niedrigen logischen Wert, d.h. setzen, umfasst. Es ist zu beachten, dass eine beliebige Kombination von Werten verwendet werden kann, um irgendeine Anzahl von Zuständen darzustellen.
  • Die Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code, die im Vorstehenden ausgeführt sind, können über Instruktionen oder Code implementiert werden, die auf einem maschinenzugänglichen, maschinenlesbaren, computerzugänglichen oder computerlesbaren Medium gespeichert sind, und die durch ein Verarbeitungselement ausgeführt werden können. Ein nicht transitorisches, maschinenzugängliches/lesbares Medium umfasst irgendeinen Mechanismus, der Informationen in einer Form liefert (d.h. speichert und/oder überträgt), die von einer Maschine gelesen werden kann, wie einem Computer oder elektronischen System. Zum Beispiel umfasst ein nicht transitorisches, maschinenzugängliches Medium einen Speicher mit wahlfreiem Zugriff (RAM), wie einen statischen RAM (SRAM) oder einen dynamischen RAM (DRAM); einen ROM; ein magnetisches oder optisches Speichermedium; Flash-Speichervorrichtungen; elektrische Speichervorrichtungen; optische Speichervorrichtungen; akustische Speichervorrichtungen; anderen Formen von Speichervorrichtungen zum Halten von Informationen, die von transitorischen (propagierten) Signalen (z.B. Trägerwellen, Infrarotsignalen, digitalen Signalen) geliefert werden, usw., welche von den nicht transitorischen Medien zu unterscheiden sind, die Informationen von diesen empfangen können.
  • Instruktionen, die verwendet werden, um Logik zu programmieren, um Ausführungsformen der Offenbarung vorzunehmen, können innerhalb eines Speichers in dem System gespeichert werden, wie einem DRAM, Cache, Flash-Speicher oder anderen Speicher. Ferner können die Instruktionen über ein Netz oder mittels anderer computerlesbarer Medien verteilt werden. Somit kann ein maschinenlesbares Medium irgendeinen Mechanismus zum Speichern oder Übertragen von Informationen in der Form umfassen, die von einer Maschine (z.B. einem Computer) gelesen werden kann, ist jedoch nicht beschränkt auf Disketten, optische Platten, Compact Disc, Nurlesespeicher (CD-ROMs) und magnetooptische Platten, Nurlesespeicher (ROMs), Speicher mit wahlfreiem Zugriff (RAM), löschbaren programmierbaren Nurlesespeicher (EPROM), elektrisch löschbaren programmierbaren Nurlesespeicher (EEPROM), magnetische oder optische Karten, Flash-Speicher oder einen greifbaren, maschinenlesbaren Speicher, der bei der Übertragung von Informationen über das Internet über elektrische, optische, akustische oder andere Formen propagierter Signale verwendet wird (z.B. Trägerwellen, Infrarotsignale, digitale Signale usw.). Demgemäß umfasst das computerlesbare Medium einen beliebigen Typ eines greifbaren maschinenlesbaren Mediums, das zum Speichern oder Übertragen elektronischer Instruktionen oder Informationen in einer Form geeignet ist, die von einer Maschine (z.B. einem Computer) gelesen werden kann.
  • In dieser gesamten Beschreibung bedeutet die Bezugnahme auf „eine einzelne Ausführungsform“ oder „eine Ausführungsform“, dass ein bestimmtes Merkmal, eine Struktur oder eine Charakteristik, die in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform der vorliegenden Offenbarung eingeschlossen ist. Somit bezieht sich das Auftreten der Phrasen „in einer einzelnen Ausführungsform“ oder „in einer Ausführungsform“ an verschiedenen Stellen in dieser gesamten Beschreibung nicht unbedingt immer auf dieselbe Ausführungsform. Ferner können die bestimmten Merkmale, Strukturen oder Charakteristiken in irgendeiner geeigneten Weise in einer oder mehreren Ausführungsformen kombiniert werden.
  • In der vorstehenden Beschreibung erfolgte eine detaillierte Beschreibung mit Bezugnahme auf spezifische Beispiele von Ausführungsformen. Es ist jedoch klar, dass verschiedene Modifikationen und Änderungen daran vorgenommen werden können, ohne vom breiteren Grundgedanken und Umfang der Offenbarung abzuweichen, wie in den beigeschlossenen Ansprüchen ausgeführt. Die Beschreibung und die Zeichnungen sind demgemäß in einem veranschaulichenden Sinn auszulegen anstatt in einem einschränkenden Sinn. Ferner bezieht sich die vorhergehende Verwendung einer Ausführungsform und andere Beispielsprache nicht unbedingt auf dieselbe Ausführungsform oder dasselbe Beispiel, sondern kann sich auf verschiedene und unterschiedliche Ausführungsformen sowie potentiell auf dieselbe Ausführungsform beziehen.

Claims (23)

  1. Verarbeitungsvorrichtung, umfassend: eine Vielzahl von Verarbeitungskernen; ein Steuerregister, das mit einem ersten Verarbeitungskern der Vielzahl von Verarbeitungskernen assoziiert ist, um einen ersten Basistaktfrequenzwert zu speichern, auf dem der erste Verarbeitungskern zu laufen hat; und eine Energieverwaltungsschaltung, um: eine Basistaktfrequenzanforderung zu empfangen, die einen zweiten Basistaktfrequenzwert umfasst; den zweiten Basistaktfrequenzwert in dem Steuerregister zu speichern, um zu bewirken, dass der erste Verarbeitungskern auf dem zweiten Basistaktfrequenzwert läuft; und den zweiten Basistaktfrequenzwert auf einer Hardware-Schnittstelle zu exponieren, die mit der Energieverwaltungsschaltung assoziiert ist.
  2. Verarbeitungsvorrichtung nach Anspruch 1, wobei der erste Basistaktfrequenzwert und der zweite Basistaktfrequenzwert Taktgeschwindigkeiten sind, bei denen die Verarbeitungsvorrichtung auf einem vorherbestimmten Arbeitslastniveau innerhalb einer thermischen Verlustleistungs- (TDP) Grenze der Verarbeitungsvorrichtung zu arbeiten hat.
  3. Verarbeitungsvorrichtung nach Anspruch 1, wobei der zweite Basistaktfrequenzwert von dem ersten Basistaktfrequenzwert verschieden ist.
  4. Verarbeitungsvorrichtung nach Anspruch 1, wobei die Energieverwaltungsschaltung die Basistaktfrequenzanforderung von mindestens einer von einer Steuereinheit, die eine Basic Input/Output System (BIOS) Instruktion ausführt, oder von einer System-Software-Anwendung, die auf der Verarbeitungsvorrichtung ausgeführt wird, zu empfangen hat.
  5. Verarbeitungsvorrichtung nach einem der Ansprüche 1 und 4, wobei die Steuereinheit, welche die BIOS Instruktion ausführt: auf einer Ausgabevorrichtung, eine Vielzahl von Nutzungsszenarios anzuzeigen hat, wobei ein Nutzungsszenario mindestens eine Anzahl von Verarbeitungskernen, die zu verwenden sind, einen Ziel-Basistaktfrequenzwert, auf dem ein Verarbeitungskern betrieben zu werden hat, eine Ziel-Arbeitslast oder eine Ziel-Zuverlässigkeitsmetrik zu spezifizieren hat; ansprechend auf das Empfangen einer Auswahl eines der Vielzahl von Nutzungsszenarios, auf der Basis des ausgewählten Nutzungsszenarios, den zweiten Basistaktfrequenzwert zu bestimmen hat; und an die Energieverwaltungsschaltung, die Basistaktfrequenzanforderung zu übertragen hat, die den zweiten Basistaktfrequenzwert umfasst.
  6. Verarbeitungsvorrichtung nach einem der Ansprüche 1 und 4, wobei die Steuereinheit, welche die BIOS Instruktion ausführt: an die Energieverwaltungsschaltung, die Basistaktfrequenzanforderung, die den zweiten Basistaktfrequenzwert umfasst, und einen Identifikator, der mit dem ersten Verarbeitungskern assoziiert ist, zu übertragen hat.
  7. Verarbeitungsvorrichtung nach einem der Ansprüche 1 und 4, wobei die System-Software-Anwendung eines von einem Betriebssystem oder einem virtuellen Maschinenmonitor (VMM) ist, und wobei die Verarbeitungsvorrichtung die System-Software auszuführen hat, um: ein zweites Nutzungsszenario zu detektieren, das mit der Verarbeitungsvorrichtung assoziiert ist; auf der Basis des zweiten Nutzungsszenarios, den zweiten Basistaktfrequenzwert zu bestimmen; und an die Energieverwaltungsschaltung, die Basistaktfrequenzanforderung zu übertragen, die den zweiten Basistaktfrequenzwert umfasst.
  8. Verarbeitungsvorrichtung nach einem der Ansprüche 1 und 4, wobei die Verarbeitungsvorrichtung die System-Software-Anwendung auszuführen hat, um den zweiten Basistaktfrequenzwert über die Hardware-Schnittstelle abzurufen.
  9. Verarbeitungsvorrichtung nach Anspruch 1, ferner umfassend: ein zweites Steuerregister, um eine Affinitätsmaske zu speichern, welche eine Bitflagge umfasst, die einen Aktivitätsstatus des ersten Verarbeitungskerns darstellt, und wobei, ansprechend auf das Speichern des zweiten Basistaktfrequenzwerts in dem Steuerregister, die Energieverwaltungsschaltung die Bitflagge in einen aktiven Status zu versetzen hat.
  10. Verarbeitungssystem nach Anspruch 1, wobei, ansprechend auf das Empfangen der Basistaktfrequenzanforderung, die Energieverwaltungsschaltung Energiesteuer-Firmware gemäß dem zweiten Basistaktwert laufen zu lassen hat.
  11. Verarbeitungsvorrichtung nach Anspruch 1, wobei das Steuerregister mit der Verarbeitungsvorrichtung assoziiert ist, um den ersten Basistaktfrequenzwert zu speichern, auf dem die Vielzahl von Verarbeitungskernen zu laufen hat.
  12. Verarbeitungsvorrichtung nach Anspruch 1, ferner umfassend: ein zweites Steuerregister, um eine Referenz auf eine Datenstruktur zu speichern, die in einem Speicher gespeichert ist, wobei die Datenstruktur den ersten Basistaktfrequenzwert zu speichern hat, auf dem die Vielzahl von Verarbeitungskernen zu laufen hat.
  13. System, umfassend: einen Basic Input/Output System (BIOS) Chipsatz, um BIOS Instruktionen zu speichern; eine Verarbeitungsvorrichtung, umfassend: eine Vielzahl von Verarbeitungskernen; ein Steuerregister, das mit einem ersten Verarbeitungskern der Vielzahl von Verarbeitungskernen assoziiert ist, um einen ersten Basistaktfrequenzwert zu speichern, auf dem der erste Verarbeitungskern zu laufen hat; und eine Energieverwaltungsschaltung zur Berechnung, um: ein Nutzungsszenario der Verarbeitungsvorrichtung zu empfangen; auf der Basis des Nutzungsszenarios, einen zweiten Basistaktfrequenzwert zu bestimmen; den zweiten Basistaktfrequenzwert in dem Steuerregister zu speichern, um zu bewirken, dass der erste Verarbeitungskern auf dem zweiten Basistaktfrequenzwert läuft; und den zweiten Basistaktfrequenzwert auf einer Hardware-Schnittstelle zu exponieren, die mit der Energieverwaltungsschaltung assoziiert ist.
  14. System nach Anspruch 13, wobei der zweite Basistaktfrequenzwert von dem ersten Basistaktfrequenzwert verschieden ist.
  15. System nach Anspruch 13, wobei die Energieverwaltungsschaltung die Basistaktfrequenzanforderung von mindestens einer von einer Steuereinheit, die eine Basic Input/Output System (BIOS) Instruktion ausführt, oder von einer System-Software-Anwendung, die auf der Verarbeitungsvorrichtung ausgeführt wird, zu empfangen hat.
  16. System nach einem der Ansprüche 13 und 15, wobei die System-Software-Anwendung eines von einem Betriebssystem oder einem virtuellen Maschinenmonitor (VMM) ist, und wobei die Verarbeitungsvorrichtung die System-Softwareanwendung auszuführen hat, um den zweiten Basistaktfrequenzwert über die Hardware-Schnittstelle abzurufen.
  17. System nach Anspruch 13, wobei das Steuerregister mit der Verarbeitungsvorrichtung assoziiert ist, um den ersten Basistaktfrequenzwert zu speichern, auf dem die Vielzahl von Verarbeitungskernen zu laufen hat.
  18. System nach Anspruch 13, wobei die Verarbeitungsvorrichtung ferner umfasst: ein zweites Steuerregister, um eine Referenz auf eine Datenstruktur zu speichern, die in einem Speicher gespeichert ist, wobei die Datenstruktur den ersten Basistaktfrequenzwert zu speichern hat, auf dem die Vielzahl von Verarbeitungskernen zu laufen hat.
  19. Verfahren, umfassend: Empfangen, durch eine Verarbeitungsvorrichtung, einer Spezifikation, die einen Ziel-Service Level umfasst, der mit einem Software-Objekt assoziiert ist, wobei der Ziel-Service Level einen ersten Basistaktfrequenzwert umfasst, der mit einer Vielzahl von Verarbeitungskernen der Verarbeitungsvorrichtung assoziiert ist; Bestimmen, ob die Verarbeitungsvorrichtung genügend Verarbeitungskerne umfasst, die verfügbar sind, um den Ziel-Service Level zu unterstützen; und ansprechend auf das Bestimmen, dass die Verarbeitungsvorrichtung nicht genügend Verarbeitungskerne aufweist, die verfügbar sind, um den Ziel-Service Level zu unterstützen, Übertragen einer Anforderung, an eine Energieverwaltungsschaltung der Verarbeitungsvorrichtung, um zu bewirken, dass die verfügbaren Verarbeitungskerne auf einem zweiten Basistaktfrequenzwert laufen, der höher ist als der erste Basistaktfrequenzwert.
  20. Verfahren nach Anspruch 19, wobei das Software-Objekt eines von einer virtuellen Maschine oder einem Containerobjekt ist.
  21. Einrichtung, umfassend: Mittel zum Vornehmen des Verfahrens nach einem der Ansprüche 19 und 20.
  22. Maschinenlesbares, nicht transitorisches Medium, das darauf gespeichert Programmcode aufweist, der, wenn er ausgeführt wird, Operationen vornimmt, umfassend: Empfangen, durch eine Verarbeitungsvorrichtung, einer Spezifikation, die einen Ziel-Service Level umfasst, der mit einem Software-Objekt assoziiert ist, wobei der Ziel-Service Level einen ersten Basistaktfrequenzwert umfasst, der mit einer Vielzahl von Verarbeitungskernen der Verarbeitungsvorrichtung assoziiert ist; Bestimmen, ob die Verarbeitungsvorrichtung genügend Verarbeitungskerne umfasst, die verfügbar sind, um den Ziel-Service Level zu unterstützen; und ansprechend auf das Bestimmen, dass die Verarbeitungsvorrichtung nicht genügend Verarbeitungskerne aufweist, die verfügbar sind, um den Ziel-Service Level zu unterstützen, Übertragen einer Anforderung, an eine Energieverwaltungsschaltung der Verarbeitungsvorrichtung, um zu bewirken, dass die verfügbaren Verarbeitungskerne auf einem zweiten Basistaktfrequenzwert laufen, der höher ist als der erste Basistaktfrequenzwert.
  23. Maschinenlesbares, nicht transitorisches Medium nach Anspruch 22, wobei das Software-Objekt eines von einer virtuellen Maschine oder einem Containerobjekt ist.
DE112017006568.2T 2017-02-24 2017-02-24 Auslegung einer Basistaktfrequenz eines Prozessors auf der Basis von Nutzungsparametern Pending DE112017006568T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2017/019484 WO2018156153A1 (en) 2017-02-24 2017-02-24 Configuration of base clock frequency of processor based on usage parameters

Publications (1)

Publication Number Publication Date
DE112017006568T5 true DE112017006568T5 (de) 2019-10-10

Family

ID=63253957

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017006568.2T Pending DE112017006568T5 (de) 2017-02-24 2017-02-24 Auslegung einer Basistaktfrequenz eines Prozessors auf der Basis von Nutzungsparametern

Country Status (4)

Country Link
US (3) US11169560B2 (de)
CN (2) CN110199242B (de)
DE (1) DE112017006568T5 (de)
WO (1) WO2018156153A1 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110199242B (zh) * 2017-02-24 2023-08-29 英特尔公司 基于使用参数配置处理器的基本时钟频率
US10509457B2 (en) * 2017-04-06 2019-12-17 International Business Machines Corporation Adaptive frequency optimization in processors
US10884811B2 (en) 2017-06-04 2021-01-05 Apple Inc. Scheduler for AMP architecture with closed loop performance controller using static and dynamic thread grouping
US11144086B1 (en) * 2018-01-22 2021-10-12 Marvell Israel (M.I.S.L) Ltd. Systems and methods for dynamic configuration of a device clock
US10976801B2 (en) * 2018-09-20 2021-04-13 Intel Corporation System, apparatus and method for power budget distribution for a plurality of virtual machines to execute on a processor
CN111857236B (zh) * 2020-06-30 2022-03-22 浪潮电子信息产业股份有限公司 一种fpga***时钟频率设定***
US11636210B2 (en) * 2020-07-01 2023-04-25 Meta Platforms Technologies, Llc Artificial reality system with multi-stage boot process
US11493975B2 (en) * 2020-09-24 2022-11-08 Intel Corporation System, apparatus and method for providing power monitoring isolation in a processor
KR20220145004A (ko) * 2021-04-21 2022-10-28 삼성전자주식회사 클록 관리 회로 및 이를 포함하는 멀티-코어 시스템
US11733729B2 (en) * 2021-09-27 2023-08-22 International Business Machines Corporation Centralized imposing of multi-cloud clock speeds
US11768531B2 (en) * 2021-12-30 2023-09-26 Western Digital Technologies, Inc. Power management for storage controllers
CN116027879B (zh) * 2022-05-16 2023-10-20 荣耀终端有限公司 确定参数的方法、电子设备和计算机可读存储介质
CN114985239B (zh) * 2022-05-30 2024-03-26 青岛海信医疗设备股份有限公司 超声抗干扰方法及超声设备
CN116755783B (zh) * 2023-06-19 2024-04-09 合芯科技有限公司 一种多核芯片启动方法、控制器及***

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7100061B2 (en) 2000-01-18 2006-08-29 Transmeta Corporation Adaptive power control
US6754837B1 (en) * 2000-07-17 2004-06-22 Advanced Micro Devices, Inc. Programmable stabilization interval for internal stop grant state during which core logic is supplied with clocks and power to minimize stabilization delay
US6886093B2 (en) * 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US7739532B2 (en) * 2004-06-07 2010-06-15 Intel Corporation Method, apparatus and system for enhanced CPU frequency governers
US7512828B2 (en) * 2006-02-24 2009-03-31 Agere Systems Inc. Processor with flexible clock configuration
US8055822B2 (en) * 2007-08-21 2011-11-08 International Business Machines Corporation Multicore processor having storage for core-specific operational data
CN100476694C (zh) * 2007-09-28 2009-04-08 中国科学院计算技术研究所 一种多核处理器及其变频装置和核间通信方法
US8489904B2 (en) * 2010-03-25 2013-07-16 International Business Machines Corporation Allocating computing system power levels responsive to service level agreements
US8793512B2 (en) * 2010-10-29 2014-07-29 Advanced Micro Devices, Inc. Method and apparatus for thermal control of processing nodes
US9261949B2 (en) * 2010-10-29 2016-02-16 Advanced Micro Devices, Inc. Method for adaptive performance optimization of the soc
US9052901B2 (en) * 2011-12-14 2015-06-09 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including configurable maximum processor current
US8984313B2 (en) * 2012-08-31 2015-03-17 Intel Corporation Configuring power management functionality in a processor including a plurality of cores by utilizing a register to store a power domain indicator
US9348401B2 (en) * 2013-06-25 2016-05-24 Intel Corporation Mapping a performance request to an operating frequency in a processor
US20150134572A1 (en) * 2013-09-18 2015-05-14 Tactual Labs Co. Systems and methods for providing response to user input information about state changes and predicting future user input
US20150149800A1 (en) * 2013-11-27 2015-05-28 Alexander Gendler Performing an operating frequency change using a dynamic clock control technique
KR101864980B1 (ko) * 2014-06-24 2018-06-05 인텔 코포레이션 가상 머신 전력 관리
US10146726B2 (en) * 2014-07-21 2018-12-04 Asustek Computer Inc. Motherboard and electronic device using the same
US9690340B2 (en) * 2014-09-25 2017-06-27 Intel Corporation System and method for adaptive thermal and performance management in electronic devices
US10025641B2 (en) * 2015-09-15 2018-07-17 Qualcomm Incorporated Workload differentiation for processor frequency scaling
US10073718B2 (en) * 2016-01-15 2018-09-11 Intel Corporation Systems, methods and devices for determining work placement on processor cores
US10579125B2 (en) * 2016-02-27 2020-03-03 Intel Corporation Processors, methods, and systems to adjust maximum clock frequencies based on instruction type
CN110199242B (zh) * 2017-02-24 2023-08-29 英特尔公司 基于使用参数配置处理器的基本时钟频率

Also Published As

Publication number Publication date
WO2018156153A1 (en) 2018-08-30
US11169560B2 (en) 2021-11-09
CN114237382B (zh) 2024-03-22
US11703906B2 (en) 2023-07-18
US20220129031A1 (en) 2022-04-28
CN110199242B (zh) 2023-08-29
CN114237382A (zh) 2022-03-25
US20190384348A1 (en) 2019-12-19
US20230315143A1 (en) 2023-10-05
CN110199242A (zh) 2019-09-03

Similar Documents

Publication Publication Date Title
DE112017006568T5 (de) Auslegung einer Basistaktfrequenz eines Prozessors auf der Basis von Nutzungsparametern
DE102018000886A1 (de) Virtuelle Maschinenkommunikation auf Hardware-Basis
DE112013007701T5 (de) Ein-Chip-System (SOC), das Hybridprozessorkerne enthält
US10108556B2 (en) Updating persistent data in persistent memory-based storage
DE102018001229A1 (de) Beschleunigerschaltung mit variabler Wortlänge für ein neuronales Netzwerk
DE102018125257A1 (de) Defragmentierter und effizienter mikrooperationscache
DE112017000677T5 (de) Prozessorerweiterungen zum Schutz von Stapeln während Ringübergängen
US20150277949A1 (en) Securing shared interconnect for virtual machine
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
DE102014003689A1 (de) Verfolgung des kontrollflusses von befehlen
DE102018003221A1 (de) Unterstützung gelernter Sprungprädiktoren
DE112016004960T5 (de) Befehl und logik, um informationen im voraus aus einem beständigen speicher zu holen
DE102014003795A1 (de) Verfahren und Vorrichtungen für Fusionsbefehle zur Bereitstellung der OR-Test- und AND-Test-Funktionalität auf mehreren Testquellen
DE112013004867T5 (de) Befehl und Logik zum Bereitstellen von Push-Puffer-Kopier- und Speicher-Funktionalität
DE102014003563A1 (de) Fusionierbare befehle und logik zum versehen mit or-test- und and-test-funktionalität unter benutzen von mehrfachtestquellen
CN106716949B (zh) 用于管理高速缓存的方法和装置
DE102018002525A1 (de) Hybridatomaritätsunterstützung für einen binärübersetzungsbasierten mikroprozessor
DE112013007702T5 (de) Befehl und Logik für den Speicherzugriff in einer geclusterten Maschine mit breiter Ausführung
DE112019006898T5 (de) Dynamisches umschalten zwischen ept- und schattenseitentabellen zur laufzeitprozessorverifikation
DE112016004192T5 (de) Fehlerprüfung komprimierter Ströme in heterogenen Kompressionsbeschleunigern
DE112016005863T5 (de) Minimierung von Snoop-Verkehr lokal und über Kerne auf einem Chip-Mehrkern-Fabric
DE202017007430U1 (de) Erkennen von Bussperrbedingungen und Vermeiden von Bussperren
DE112016004324T5 (de) Heterogene Kompressionsarchitektur für optimiertes Kompressionsverhältnis
DE202019005686U1 (de) Skalierbare Gesamtspeicherverschlüsselungs-Engine mit mehrfachen Schlüsseln
DE112017001704T5 (de) Arbiterbasierte Serialisierung von Prozessor-System-Management-Interrupt-Ereignissen

Legal Events

Date Code Title Description
R130 Divisional application to

Ref document number: 112017008374

Country of ref document: DE

Ref document number: 112017008375

Country of ref document: DE

R082 Change of representative

Representative=s name: PATENTANWAELTE SAMSON & PARTNER, DE

R012 Request for examination validly filed