DE112019001522T5 - System, vorrichtung und verfahren zur optimierten drosselung eines prozessors - Google Patents

System, vorrichtung und verfahren zur optimierten drosselung eines prozessors Download PDF

Info

Publication number
DE112019001522T5
DE112019001522T5 DE112019001522.2T DE112019001522T DE112019001522T5 DE 112019001522 T5 DE112019001522 T5 DE 112019001522T5 DE 112019001522 T DE112019001522 T DE 112019001522T DE 112019001522 T5 DE112019001522 T5 DE 112019001522T5
Authority
DE
Germany
Prior art keywords
throttle
processor
operating point
information
power
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
DE112019001522.2T
Other languages
English (en)
Inventor
Chee Lim Nge
James G. Hermerding II
Pronay Dutta
Joshua Resch
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 DE112019001522T5 publication Critical patent/DE112019001522T5/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/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/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • 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/263Arrangements for using multiple switchable power supplies, e.g. battery and AC
    • 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/30Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations
    • 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/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • 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/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3212Monitoring battery levels, e.g. power saving mode being initiated when battery voltage goes below a certain level
    • 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
    • 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/3243Power saving in microcontroller unit
    • 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/329Power saving characterised by the action undertaken by task scheduling
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Power Engineering (AREA)
  • Power Sources (AREA)
  • Microcomputers (AREA)

Abstract

In einer Ausführungsform beinhaltet ein Prozessor: mehrere Verarbeitungselemente, um Operationen durchzuführen; einen Leistungsverwaltungsagenten (Power Management Agent, PMA), der mit den mehreren Verarbeitungselementen gekoppelt ist, um Stromverbrauch der mehreren Verarbeitungselemente zu steuern; und eine Drosselschaltung, die mit dem PMA gekoppelt ist. Die Drosselschaltung dient dazu, ein Drosselleistungsniveau für die mehreren Verarbeitungselemente basierend mindestens zum Teil auf Übersetzungsinformationen zu bestimmen, die vom PMA übermittelt werden. Andere Ausführungsformen werden beschrieben und beansprucht.

Description

  • Technisches Gebiet
  • Ausführungsformen betreffen Leistungsverwaltung eines Systems und insbesondere Leistungsverwaltung eines Mehrkernprozessors.
  • Allgemeiner Stand der Technik
  • Fortschritte in der Halbleiterverarbeitung und Logikentwicklung haben ein Anwachsen der Menge an Logik gestattet, die auf integrierten Schaltungsanordnungen vorhanden sein können. Als Folge davon haben sich Computersystem-Konfigurationen von einer einzelnen oder mehreren integrierten Schaltungen in einem System zu mehreren Hardwarethreads, mehreren Kernen, mehreren Geräten und/oder kompletten Systemen auf individuellen integrierten Schaltungen weiterentwickelt. Darüber hinaus haben sich in dem Maße, wie die Dichte der integrierten Schaltungen gewachsen ist, die Leistungsbedarfe für Rechensysteme (von eingebetteten Systemen bis zu Servern) ebenfalls erhöht. Außerdem haben Softwareineffizienzen und deren Anforderungen an Hardware ebenfalls eine Zunahme des Energieverbrauchs von Rechengeräten verursacht. Tatsächlich weisen einige Studien darauf hin, dass Rechengeräte einen erheblichen Prozentsatz der gesamten Stromversorgung eines Landes verbrauchen, wie z.B. der Vereinigten Staaten von Amerika. Als Folge davon besteht ein grundlegender Bedarf an Energieeffizienz und -einsparung im Zusammenhang mit integrierten Schaltungen. Dieser Bedarf wird steigen, da Server, Desktopcomputer, Notebooks, Ultrabooks™, Tablets, Mobiltelefone, Prozessoren, eingebettete Systeme usw. immer verbreiteter werden (von der Einbindung in den typischen Computer, in Automobilen und Fernsehgeräten bis in zur Biotechnologie).
  • Figurenliste
    • 1 ist ein Blockdiagramm eines Abschnittes eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 2 ist ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 3 ist ein Blockdiagramm eines Mehrdomänenprozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
    • 4 ist eine Ausführungsform eines Prozessors, der mehrere Kerne beinhaltet.
    • 5 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkernes gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 6 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkernes gemäß einer anderen Ausführungsform.
    • 7 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkernes gemäß noch einer anderen Ausführungsform.
    • 8 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkernes gemäß noch einer weiteren Ausführungsform.
    • 9 ist ein Blockdiagramm eines Prozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
    • 10 ist ein Blockdiagramm eines repräsentativen Einchipsystems, SoCs, gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 11 ist ein Blockdiagramm eines anderen Beispiel-SoCs gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 12 ist ein Blockdiagramm eines Beispielsystems, mit dem Ausführungsformen verwendet werden können.
    • 13 ist ein Blockdiagramm eines anderen Beispielsystems, mit dem Ausführungsformen verwendet werden können.
    • 14 ist ein Blockdiagramm eines repräsentativen Computersystems.
    • 15 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 16 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform.
    • 17 ist ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 18 ist ein Flussdiagramm eines Verfahrens gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
    • 19 ist ein Flussdiagramm eines Verfahrens gemäß noch einer anderen Ausführungsform der vorliegenden Erfindung.
    • 20 ist ein Flussdiagramm eines Verfahrens gemäß noch einer anderen Ausführungsform der vorliegenden Erfindung.
  • Ausführliche Beschreibung
  • In verschiedenen Ausführungsformen kann ein Prozessor, wie z.B. ein Mehrkernprozessor oder ein anderes Einchipsystem (System on Chip, SoC), in Reaktion auf die Anzeige eines Plattformereignisses konfiguriert werden, Drosselung eines oder mehrerer Verarbeitungselemente des Prozessors in optimierter Art und Weise vorzunehmen. Das heißt, dass, statt unmittelbar zu veranlassen, dass sämtlicher Betrieb innerhalb des Prozessors auf einen Minimalarbeitspunkt zu drosseln ist, Prozessorleistung in einem Drosselzustand optimiert werden kann, ohne Schutzmechanismen zu beeinträchtigen, um angesichts des Plattformereignisses gegen elektrischen Defekt zu schützen. Insbesondere kann, wie hierin beschrieben, ein erster Agent, nämlich ein Plattformzielagent, proaktiv ein optimales Drosselleistungsziel für den Gesamtprozessor bestimmen. Ein anderer Agent wiederum, der hierin als Leistungsverwaltungsagent bezeichnet wird, kann proaktiv optimale Drosselziele für jedes Verarbeitungselement basierend mindestens zum Teil auf Benutzeraktivität, Prioritätsinformationen und so fort bestimmen. Dann wiederum können zusätzliche Agenten, die hierin als Drosselagenten bezeichnet werden, basierend mindestens zum Teil auf diesen optimierten Verarbeitungselement-Drosselzielen und dem gesamten optimierten Drosselleistungsziel einen Arbeitspunkt für die Verarbeitungselemente dynamisch steuern. Solche dynamisch gesteuerten Arbeitspunkte können derart optimiert werden, dass ein Prozessor nicht unmittelbar auf einen Minimalarbeitspunkt herunterfahren muss.
  • Mit Ausführungsformen wie hierin beschrieben kann zweckmäßiges Drosselverhalten für einen Prozessor beibehalten werden, während gleichzeitig Leistungseigenschaften bewahrt werden. Das heißt, dass Drosselmaße, die wie hierin beschrieben optimiert werden, als Maße gesetzt werden können, bei denen typische Arbeitslasten noch mit geeigneten Leistungsniveaus arbeiten können. Man verstehe jedoch, dass unter ungünstigsten Bedingungen, wie z.B. einem Virus-Arbeitslastniveau, Volldrosselmechanismen implementiert werden können, um zu veranlassen, dass alle Verarbeitungselemente bei Minimalarbeitspunkten arbeiten.
  • Man beachte, dass in Ausführungsformen derartiges optimiertes Drosselverhalten basierend auf Eingangsleistungsfähigkeit auftreten kann. Das heißt, dass, wenn eine gegebene Stromquelle, wie z.B. eine Batteriequelle, ausreichend geladen ist, das Drosselverhalten nicht auf einen minimalen Arbeitspunkt beschränkt werden muss, da die Batteriequelle ausreichende Leistung bereitstellen kann, um bei Drosselmaßen größer als solche Minimalarbeitspunkte zu arbeiten.
  • Im Gegensatz dazu veranlassen herkömmliche Plattformen in Reaktion auf ein Plattformereignis typischerweise, dass ein Prozessor gezwungen wird, bei einem niedrigsten Arbeitspunkt (z.B. einer Betriebsart mit niedrigster Frequenz und/oder Spannung) zu arbeiten, was die Leistung unerwünscht beeinflussen kann. Stattdessen kann bei Ausführungsformen, die mindestens zum Teil auf A-priori-Kenntnis der Eingangsleistungsfähigkeiten (z.B. der Ladekapazität) basieren, die Prozessordrosselung in Reaktion auf ein Plattformereignis bei einem Maß höher als ein niedrigster Arbeitspunkt liegen, wodurch eine unnötige Leistungseinbuße vermieden wird.
  • Wenn die Plattform erkennt, dass es einen potenziellen funktionalen Defekt gibt, generiert die Plattform ein schnelles Signal, um die Prozessorleistung schnell zu dem Zweck zu drosseln, den funktionalen Defekt zu vermeiden. In dieser Situation kann ein Prozessor gemäß einer Ausführungsform konfiguriert werden, die Leistung zu optimieren, wenn er gedrosselt wird, ohne den Schutzmechanismus zu beeinträchtigen (um den funktionalen Defekt zu vermeiden). Zu diesem Zweck sind Prozessormechanismen bereitgestellt, um proaktiv ein optimales Drosselleistungsziel für den Prozessor zu setzen und proaktiv einen optimalen Arbeitspunkt jedes Verarbeitungselementes basierend mindestens zum Teil auf Benutzeraktivität zu setzen. Nachdem diese proaktiven Einstellungen generiert worden sind, können, wenn ein Drosselsignal empfangen wird (nämlich in Reaktion auf die Erkennung eines potenziellen funktionalen Defektes), die Verarbeitungselemente mit niedriger Latenzzeit gesteuert werden, mit keinem höheren als einem jeweiligen Verarbeitungselement-Drosselleistungsziel-Maß zu arbeiten.
  • Obgleich die nachfolgenden Ausführungsformen unter Bezug auf bestimmte integrierte Schaltungen beschrieben werden, wie z.B. in Rechenplattformen oder Prozessoren, sind andere Ausführungsformen für andere Arten von integrierten Schaltungen und logischen Geräten anwendbar. Ähnliche Techniken und Lehren von Ausführungsformen, die hierin beschrieben sind, können auf andere Arten von Schaltungen oder Halbleitergeräten angewandt werden, die ebenfalls von besserer Energieeffizienz und Energieeinsparung profitieren können. Beispielsweise sind die beschriebenen Ausführungsformen nicht auf irgendeine bestimmte Art von Computersystemen begrenzt. Das heißt, dass beschriebene Ausführungsformen in vielen unterschiedlichen Systemarten verwendet werden können, die sich von Servercomputern (z.B. Tower, Rack, Blade, Mikroserver und so fort) über Kommunikationssysteme, Speichersysteme, Desktopcomputer jedweder Konfiguration bis zu Laptop-, Notebook- und Tabletcomputern (einschließlich 2:1-Tablets, Phablets und so fort) erstrecken, und auch in anderen Geräten verwendet werden können, wie z.B. Handgeräten, Einchipsystemen (SoCs) und eingebetteten Anwendungen. Zu einigen Beispielen von Handgeräten zählen Zellulartelefone wie z.B. Smartphones, Internet-Protokoll-Geräte, Digitalkameras, Taschencomputer (PDAs) und Hand-PCs. Zu eingebetteten Anwendungen zählen typischerweise ein Mikrocontroller, ein Digitalsignalprozessor (DSP), Netzcomputer (NetPCs), Set-Top-Boxen, Netzhubs, Fernbereichsnetz- (WAN-) -Switches, am Körper tragbare Geräte oder jedwedes andere System, das die unten gelehrten Funktionen und Operationen durchführen kann. Mehr noch können Ausführungsformen in mobile Endgeräte, die Standard-Sprachfunktionalität aufweisen, wie z.B. Mobiltelefone, Smartphones und Phablets, und/oder in nicht mobile Endgeräten ohne eine standardmäßige Drahtlossprachfunktions-Kommunikationsfähigkeit implementiert werden, wie z.B. viele am Körper tragbare Geräte, sog. Wearables, Tablets, Notebooks, Desktops, Mikroserver, Server und so fort. Darüber hinaus sind die hierin beschriebenen Vorrichtungen, Verfahren und Systeme nicht auf physikalische Rechengeräte begrenzt, sondern können auch Softwareoptimierungen betreffen.
  • Jetzt Bezug nehmend auf 1 ist ein Blockdiagramm eines Abschnittes eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 1 gezeigt, kann System 100 verschiedene Komponenten beinhalten, einschließlich eines Prozessors 110, der, wie gezeigt, ein Mehrkernprozessor ist. Prozessor 110 kann mit einer Stromversorgung 150 über einen externen Spannungsregler 160 gekoppelt sein, der eine erste Spannungswandlung vornehmen kann, um dem Prozessor 110 eine primäre geregelte Spannung bereitzustellen.
  • Wie gesehen, kann Prozessor 110 ein Einzeldieprozessor sein, der mehrere Kerne 120a - 120n beinhaltet. Darüber hinaus kann jeder Kern einem integrierten Spannungsregler (Integrated Voltage Regulator, IVR) 125a - 125n zugeordnet sein, der die primäre geregelte Spannung empfängt und eine Betriebsspannung erzeugt, die einem oder mehreren Agenten des Prozessors bereitzustellen ist, der dem IVR zugeordnet ist. Dementsprechend kann eine IVR-Implementierung bereitgestellt sein, um feinkörnige Steuerung der Spannung und somit Stromversorgung und Leistung jedes einzelnen Kernes zu erlauben. Auf diese Weise kann jeder Kern mit einer unabhängigen Spannung und Frequenz arbeiten, was große Flexibilität ermöglicht und umfangreiche Gelegenheiten zum Ausgleich zwischen Stromverbrauch und Leistung schafft. In einigen Ausführungsformen ermöglicht die Verwendung mehrerer IVRs das Gruppieren von Komponenten in getrennte Stromversorgungsebenen, sodass die Stromversorgung durch den IVR nur für die Komponenten in der Gruppe geregelt und geliefert wird. Während der Leistungsverwaltung kann eine gegebene Stromversorgungsebene eines IVRs heruntergefahren oder ausgeschaltet werden, wenn der Prozessor in einen gewissen leistungsarmen Zustand versetzt wird, während eine andere Stromversorgungsebene eines anderen IVRs aktiv oder voll versorgt bleibt.
  • Noch Bezug nehmend auf 1 können zusätzliche Komponenten innerhalb des Prozessors vorhanden sein, einschließlich einer Ein- und Ausgangs-Schnittstelle 132, einer anderen Schnittstelle 134 und einer integrierten Speichersteuerung 136. Wie gesehen, kann jede dieser Komponenten durch einen anderen integrierten Spannungsregler 125x versorgt werden. In einer Ausführungsform kann Schnittstelle 132 den Betrieb für eine Intel®-Quick-Path-Interconnect-Verbindung (QPI-Verbindung) ermöglichen, die Punkt-zu-Punkt-Verbindungen (Point-to-Point, PtP-Verbindungen) in einem Cache-Kohärenz-Protokoll gewährleistet, das mehrere Schichten einschließlich einer physikalischen Schicht, einer Verbindungsschicht und einer Protokollschicht beinhaltet. Schnittstelle 134 wiederum kann über ein Peripheral-Component-Interconnect-Express-Protokoll (PCIe™-Protokoll) kommunizieren.
  • Ebenfalls gezeigt ist eine Leistungssteuereinheit (Power Control Unit, PCU) 138, die Hardware, Software und/oder Firmware beinhalten kann, um Leistungsverwaltungs-Operationen in Bezug auf Prozessor 110 durchzuführen. Wie gesehen, stellt PCU 138 über eine digitale Schnittstelle dem externen Spannungsregler 160 Steuerinformationen bereit, um den Spannungsregler zu veranlassen, die zweckmäßige geregelte Spannung zu erzeugen. Auch stellt PCU 138 über eine andere digitale Schnittstelle den IVRs 125 Steuerinformationen bereit, um die erzeugte Betriebsspannung zu steuern (oder zu veranlassen, dass ein entsprechender IVR in einer leistungsarmen Betriebsart deaktiviert wird). In verschiedenen Ausführungsformen kann PCU 138 eine Vielzahl von Leistungsverwaltungs-Logikeinheiten beinhalten, um hardwarebasierte Leistungsverwaltung durchzuführen. Derartige Leistungsverwaltung kann gänzlich prozessorgesteuert sein (z.B. durch verschiedene Prozessorhardware, und die durch Arbeitslast und/oder Leistungs-, thermische oder andere Prozessorbedingungen ausgelöst werden kann), und/oder die Leistungsverwaltung kann reagierend auf externe Quellen (wie z.B. eine Plattform- oder Verwaltungs-Leistungsverwaltungs-Quelle oder Systemsoftware) durchgeführt werden.
  • In Ausführungsformen hierin kann PCU 138 konfiguriert sein, Domänen innerhalb von Prozessor 110 zu steuern, um an einem von mehreren unterschiedlichen Arbeitspunkten zu arbeiten. Insbesondere kann PCU 138 Arbeitspunkte für die unterschiedlichen Domänen bestimmen. Darüber hinaus verstehe man, dass ein schneller Mechanismus z.B. außerhalb von PCU 138 beim Durchführen von Drosseloperationen in Reaktion auf ein Plattformereignis beteiligt sein kann. Somit kann, wie ferner in 1 dargestellt, eine Drosselschaltung 139 (die in einigen Fällen eine verteilte Hardwareschaltung sein kann) ferner in Kommunikation mit IVRs 125 (und/oder Kernen 120 selbst) stehen. Auf diese Weise kann die Drosselschaltung 139 basierend mindestens zum Teil auf Übersetzungsinformationen, die von PCU 138 empfangen werden, ein Prozessordrosselleistungsmaß in entsprechende Drosselmaße für einzelne Domänen (wie z.B. Kerne 120 und so fort) übersetzen, wie weiter hierin beschrieben.
  • Obgleich der einfacheren Darstellung halber hier nicht gezeigt, verstehe man, dass zusätzliche Komponenten innerhalb von Prozessor 110 vorhanden sein können, wie z.B. Nicht-Kern-Logik, und andere Komponenten wie z.B. interne Speicher, z.B. ein oder mehrere Levels einer Cachespeicher-Hierarchie und so fort. Außerdem sind, obgleich in der Implementierung nach 1 mit integriertem Spannungsregler gezeigt, Ausführungsformen nicht derart begrenzt.
  • Hierin beschriebene Prozessoren können wirksam Leistungsverwaltungstechniken einsetzen, die unabhängig von und ergänzend zu einem Betriebssystem-basierten Leistungsverwaltungsmechanismus (Operating System (OS)-based Power Management, OSPM-Mechanismus) sein können. Gemäß einer Beispiel-OSPM-Technik kann ein Prozessor bei verschiedenen Leistungszuständen oder -niveaus, sogenannten P-Zuständen, arbeiten, nämlich von P0 bis PN. Im Allgemeinen kann der P1-Leistungszustand dem höchsten garantierten Leistungszustand entsprechen, der durch ein OS angefordert werden kann. Zusätzlich zu diesem PI-Zustand kann das OS ferner einen höheren Leistungszustand anfordern, nämlich einen P0-Zustand. Dieser P0-Zustand kann somit ein opportunistischer oder Turbobetriebszustand sein, in dem, wenn das Stromversorgungs- und/oder thermische Budget verfügbar ist, die Prozessorhardware den Prozessor oder mindestens Abschnitte davon konfigurieren kann, bei einer höheren als der garantierten Frequenz zu arbeiten. In vielen Implementierungen kann ein Prozessor mehrere sogenannte Bin-Frequenzen oberhalb der garantierten PI-Maximalfrequenz beinhalten, die sich bin zu einer maximalen Spitzenfrequenz des einzelnen Prozessors ausweiten, wie sie während der Herstellung in den Prozessor gebrannt oder anderweitig geschrieben worden ist. Darüber hinaus kann gemäß einem OSPM-Mechanismus ein Prozessor bei verschiedenen Stromversorgungszuständen oder -niveaus arbeiten. In Bezug auf Stromversorgungszustände kann ein OSPM-Mechanismus unterschiedliche Stromverbrauchszustände spezifizieren, die im Allgemeinen als C-Zustände, C0-, C1- bis Cn-Zustände, bezeichnet werden. Wenn ein Kern aktiv ist, läuft er in einem C0-Zustand, und wenn der Kern inaktiv ist, kann er in einen leistungsarmen Kernzustand versetzt werden, auch Kern-nicht-null-C-Zustand genannt (z.B. C1-C6-Zustände), wobei jeder C-Zustand bei einem niedrigeren Stromverbrauchsniveau vorliegt (wie z.B. dass C6 ein niedrigerer leistungsarmer Zustand als C1 ist und so fort).
  • Man verstehe, dass in unterschiedlichen Ausführungsformen viele unterschiedliche Arten von Leistungsverwaltungstechniken einzeln oder in Kombination verwendet werden können. Als repräsentative Beispiele kann eine Leistungssteuerung den Prozessor so steuern, dass eine Stromversorgung durch eine Form dynamischer Spannungs-Frequenz-Skalierung (Dynamic Voltage Frequency Scaling, DVFS) verwaltet wird, bei der eine Betriebsspannung und/oder Betriebsfrequenz eines oder mehrerer Kerne oder anderer Prozessorlogik dynamisch gesteuert werden kann, um den Stromverbrauch in gewissen Situationen zu verringern. In einem Beispiel kann DVFS unter Verwendung der Enhanced-Intel-SpeedStep™-Technologie durchgeführt werden, die von der Intel Corporation, Santa Clara, CA, USA, erhältlich ist, um optimale Leistung bei niedrigstem Stromverbrauchsniveau bereitzustellen. In einem anderen Beispiel Kann DVFS unter Verwendung der Intel-TurboBoost™-Technologie durchgeführt werden, um einen oder mehrere Kerne oder andere Rechenengines in die Lage zu versetzen, basierend auf Bedingungen (z.B. Arbeitslast und Verfügbarkeit) bei einer höheren als der garantierten Betriebsfrequenz zu arbeiten.
  • Eine andere Leistungsverwaltungstechnik, die in gewissen Beispielen verwendet werden kann, ist dynamisches Swapping von Arbeitslasten zwischen unterschiedlichen Rechenengines. Beispielsweise kann der Prozessor asymmetrische Kerne oder andere Verarbeitungsengines beinhalten, die bei unterschiedlichen Stromverbrauchsniveaus arbeiten, sodass in einer Situation mit eingeschränkter Stromversorgung eine oder mehrere Arbeitslasten dynamisch umgeleitet werden können, um auf einem leistungsärmeren Kern oder einer anderen Rechenengine ausgeführt zu werden. Eine andere beispielhafte Leistungsverwaltungstechnik sind Hardware-Arbeitszyklen (Hardware Duty Cycling, HDC), wobei veranlasst wird, dass Kerne und/oder andere Rechenengines gemäß einem Arbeitszyklus periodisch aktiviert und deaktiviert werden, sodann ein oder mehrere Kerne während eines inaktiven Zeitraums des Arbeitszyklus inaktiv gemacht werden können und während eines aktiven Zeitraums des Arbeitszyklus aktiv gemacht werden können.
  • Ausführungsformen können in Prozessoren für verschiedene Märkte implementiert sein, wozu Serverprozessoren, Desktopprozessoren, Mobilprozessoren und so fort zählen. Jetzt Bezug nehmend auf 2 ist ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 2 gezeigt, kann Prozessor 200 ein Mehrkernprozessor sein, der mehrere Kerne 210 a - 210n beinhaltet. In einer Ausführungsform kann jeder derartige Kern von einer unabhängigen Stromversorgungsdomäne sein und kann konfiguriert sein, basierend auf der Arbeitslast in aktive Zustände und/oder Maximalleistungszustände einzutreten oder diese zu verlassen.
  • Die verschiedenen Kerne können über eine Verbindung 215 mit einem Systemagenten oder Nicht-Kern 220 gekoppelt sei, der verschiedene Komponenten beinhaltet. Wie gesehen, kann der Nicht-Kern 220 einen gemeinsam genutzten Cachespeicher 230 beinhalten, der ein Last-Level-Cache sein kann. Darüber hinaus kann der Nicht-Kern eine integrierte Speichersteuerung 240 beinhalten, um mit einem Systemspeicher (in 2 nicht gezeigt) zu kommunizieren, z.B. über einen Speicherbus. Nicht-Kern 220 beinhaltet auch verschiedene Schnittstellen 250, eine Leistungsüberwachungseinheit (Performance Monitoring Unit, PMU) 260 und eine Leistungssteuereinheit 255, die Logik beinhalten kann, um Leistungsverwaltungstechniken, wie hierin beschrieben, durchzuführen. Darüber hinaus kann Leistungssteuereinheit 255 eine Drosselsteuerschaltung 256 beinhalten, die basierend mindestens zum Teil auf Hinweisinformationen dynamisch Übersetzungsinformationen bestimmen kann, die durch eine Drosselschaltung 258 zu verwenden sind, um eine derartige Schaltung in die Lage zu versetzen, Drosselleistungsniveaus für einzelne Kerne 210 (und potenziell andere Komponenten des Prozessors 200) dynamisch zu bestimmen, um Arbeitspunktänderungen mit niedriger Latenzzeit in Reaktion auf ein Plattformereignis zu ermöglichen.
  • Darüber hinaus kann durch Schnittstellen 250a-250n Verbindung zu verschiedenen Komponenten außerhalb des Chips hergestellt werden, wie z.B. Peripheriegeräten, Massenspeicher und so fort. Obgleich in der Ausführungsform nach 2 mit dieser bestimmten Implementierung gezeigt, ist der Umfang der vorliegenden Erfindung diesbezüglich nicht begrenzt.
  • Jetzt Bezug nehmend auf 3 ist ein Blockdiagramm eines Mehrdomänenprozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. Wie in der Ausführungsform nach 3 gezeigt, kann Prozessor 300 mehrere Domänen beinhalten. Insbesondere kann eine Kerndomäne 310 mehrere Kerne 3100-310n beinhalten, kann eine Grafikdomäne 320 eine oder mehrere Grafikengines beinhalten und kann ferner eine Systemagentendomäne 350 vorhanden sein. In einigen Ausführungsformen kann Systemagentendomäne 350 bei einer von der Kerndomäne unabhängigen Frequenz ausgeführt werden und kann jederzeit eingeschaltet bleiben, um Leistungssteuerungsereignisse und Leistungsverwaltung derart zu handhaben, dass Domänen 310 und 320 gesteuert werden können, dynamisch in Zustände hoher Leistung und niedriger Leistung einzutreten und diese zu verlassen. Jede der Domänen 310 und 320 kann bei unterschiedlicher Spannung und/oder Stromversorgung arbeiten. Man beachte, dass, obgleich nur mit drei Domänen gezeigt, man verstehe, dass der Umfang der vorliegenden Erfindung diesbezüglich nicht begrenzt ist und zusätzliche Domänen in anderen Ausführungsformen vorhanden sein können. Beispielsweise können mehrere Kerndomänen vorhanden sein, die jede mindestens einen Kern beinhalten.
  • Im Allgemeinen kann jeder Kern 310 ferner Low-Level-Caches zusätzlich zu verschiedenen Ausführungseinheiten und zusätzlichen Verarbeitungselementen beinhalten. Die verschiedenen Kerne wiederum können miteinander und mit einem gemeinsam genutzten Cachespeicher gekoppelt sein, der aus mehreren Einheiten eines Last-Level-Caches (LLC) 3400 - 340n gebildet ist. In verschiedenen Ausführungsformen kann LLC 340 unter den Kernen und der Grafikengine sowie verschiedenen Medienverarbeitungsschaltungen gemeinsam genutzt sein. Wie gesehen, koppelt somit eine Ringverbindung 330 die Kerne zusammen und stellt Zwischenverbindung zwischen den Kernen, Grafikdomäne 320 und Systemagentenschaltung 350 bereit. In einer Ausführungsform kann Verbindung 330 Teil der Kerndomäne sein. In anderen Ausführungsformen jedoch kann die Ringverbindung von eigener Domäne sein.
  • Wie ferner gesehen, kann Systemagentendomäne 350 Anzeigesteuerung 352 beinhalten, die Steuerung von und eine Schnittstelle zu einer zugeordneten Anzeige bereitstellen kann. Wie ferner gesehen, kann Systemagentendomäne 350 eine Leistungssteuereinheit 355 beinhalten, die Drosselsteuerschaltung 356 beinhalten kann, um Übersetzungsinformationen basierend mindestens zum Teil auf Hinweisinformationen bezüglich Arbeitslasten zu bestimmen, die auf Kernen 310, Grafikengine 320 und so fort ausgeführt werden. PCU 355 wiederum stellt solche Informationen einer Drosselschaltung 358 bereit, um Drosselschaltung 358 in die Lage zu versetzen, Drosselarbeitspunkte für entsprechende Kerne/Grafikengines zu bestimmen und Übergänge mit niedriger Latenzzeit auf solche aktualisierten Arbeitspunkte zu ermöglichen, wie hierin beschrieben.
  • Wie ferner in 3 gesehen, kann Prozessor 300 ferner eine integrierte Speichersteuerung (Integrated Memory Controller, IMC) 370 beinhalten, die eine Schnittstelle zu einem Systemspeicher bereitstellen kann, wie z.B. einem dynamischen Direktzugriffsspeicher (Dynamic Random Access Memory, DRAM). Mehrere Schnittstellen 3800 - 380n können vorhanden sein, um Zwischenverbindung zwischen dem Prozessor und anderen Schaltungen zu ermöglichen. Beispielsweise kann in einer Ausführungsform mindestens eine Direktmedienschnittstellen-Schnittstelle (Direct Media Interface, DMI-Schnittstelle) ebenso vorhanden sein wie eine oder mehrere PCIe™-Schnittstellen. Weiterhin können, um Kommunikation zwischen anderen Agenten wie z.B. zusätzlichen Prozessoren oder anderen Schaltungen bereitzustellen, auch eine oder mehrere QPI-Schnittstellen bereitgestellt sein. Obgleich in der Ausführungsform nach 3 mit diesem hohen Level gezeigt, verstehe man, dass der Umfang der vorliegenden Erfindung diesbezüglich nicht begrenzt ist.
  • Bezug nehmend auf 4 ist eine Ausführungsform eines Prozessors dargestellt, der mehrere Kerne beinhaltet. Prozessor 400 beinhaltet irgendeinen Prozessor oder irgendein Verarbeitungsgerät, wie z.B. einen Mikroprozessor, einen Embedded-Prozessor, einen Digitalsignalprozessor (DSP), einen Netzwerkprozessor, einen Prozessor für ein Handgerät, einen Anwendungsprozessor, einen Koprozessor, ein Einchipsystem (System on a Chip, SoC) oder ein anderes Gerät, um Code auszuführen. Prozessor 400 beinhaltet in einer Ausführungsform mindestens zwei Kerne - Kerne 401 und 402, die asymmetrische Kerne oder symmetrische Kerne (die dargestellte Ausführungsform) beinhalten können. Jedoch kann Prozessor 400 jedwede Zahl von Verarbeitungselementen beinhalten, die symmetrisch oder asymmetrisch sein können.
  • In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik, um einen Softwarethread zu unterstützen. Zu Beispielen von Hardware-Verarbeitungselementen zählen: eine Threadeinheit, ein Threadslot, ein Thread, eine Prozesseinheit, ein Kontext, eine Kontexteinheit, ein logischer Prozessor, ein Hardwarethread, ein Kern und/oder jedwedes andere Element, das fähig ist, einen Zustand für einen Prozessor zu halten, wie z.B. einen Ausführungszustand oder Architekturzustand. Anders ausgedrückt, bezieht sich ein Verarbeitungselement in einer Ausführungsform auf jedwede Hardware, die fähig ist, unabhängig Code zugeordnet zu werden, wie z.B. einem Softwarethread, einem Betriebssystem, einer Anwendung oder anderem Code. Ein physikalischer Prozessor bezieht sich typischerweise auf eine integrierte Schaltung, die möglicherweise irgendeine Anzahl anderer Verarbeitungselemente beinhaltet, wie z.B. Kerne oder Hardwarethreads.
  • Ein Kern bezieht sich oft auf Logik, die sich auf einer integrierten Schaltung befindet, die fähig ist, einen unabhängigen Architekturzustand beizubehalten, wobei jeder unabhängig beibehaltene Architekturzustand mindestens einigen zweckbestimmten Ausführungsressourcen zugeordnet ist. Im Gegensatz zu Kernen bezieht sich ein Hardwarethread typischerweise auf jedwede Logik, die sich auf einer integrierten Schaltung befindet, die fähig ist, einen unabhängigen Architekturzustand beizubehalten, wobei die unabhängig beibehaltenen Architekturzustände Zugriff auf Ausführungsressourcen gemeinsam nutzen. Wie man sieht, überlappt sich, wenn gewisse Ressourcen gemeinsam genutzt werden und andere für einen Architekturzustand zweckbestimmt sind, die Linie zwischen der Nomenklatur eines Hardwarethreads und eines Kerns. Dennoch werden oft ein Kern und ein Hardwarethread von einem Betriebssystem als einzelne logische Prozessoren angesehen, wobei das Betriebssystem in der Lage ist, Operationen auf jedem logischen Prozessor individuell zu planen.
  • Der physikalische Prozessor 400, wie in 4 dargestellt, beinhaltet zwei Kerne, Kerne 401 und 402. Hier werden die Kerne 401 und 402 als symmetrische Kerne betrachtet, d.h., Kerne mit denselben Konfigurationen, Funktionseinheiten und/oder derselben Logik. In einer anderen Ausführungsform, beinhaltet Kern 401 einen Out-of-Order-Prozessorkern, während Kern 402 einen In-Order-Prozessorkern beinhaltet. Jedoch können die Kerne 401 und 402 individuell aus jedweder Art von Kern ausgewählt sein, wie z.B. ein nativer Kern, ein softwareverwalteter Kern, ein Kern, der ausgelegt ist, eine native Befehlssatzarchitektur (Instruction Set Architecture, ISA) auszuführen, ein Kern, der ausgelegt ist, eine übersetzte ISA auszuführen, ein Co-Designed-Kern oder ein anderer bekannter Kern. Um die Diskussion weiterzuführen, sind die in Kern 401 dargestellten Funktionseinheiten unten detaillierter beschrieben, da die Einheiten in Kern 402 in ähnlicher Art und Weise arbeiten.
  • Wie abgebildet, beinhaltet Kern 401 zwei Hardwarethreads 401a und 401b, die auch als Hardwarethreadslots 401a und 401b bezeichnet werden können. Daher sehen Software-Entitäten, wie z.B. ein Betriebssystem, in einer Ausführungsform Prozessor 400 möglicherweise als vier getrennte Prozessoren an, d.h., als vier logische Prozessoren oder Verarbeitungselemente, die fähig sind, vier Softwarethreads gleichzeitig auszuführen. Wie oben erwähnt, ist ein erster Thread Architekturzustandsregistern 401a zugeordnet, ist ein zweiter Thread Architekturzustandsregistern 401b zugeordnet, kann ein dritter Thread Architekturzustandsregistern 402a zugeordnet sein und kann ein vierter Thread Architekturzustandsregistern 402b zugeordnet sein. Hier kann jedes der Architekturzustandsregister (401a, 401b, 402a und 402b) als Verarbeitungselemente, Threadslots oder Threadeinheiten bezeichnet werden, wie oben beschrieben. Wie dargestellt, sind Architekturzustandsregister 401a in Architekturzustandsregistern 401b repliziert, somit sind einzelne Architekturzustände/Kontexte fähig, für den logischen Prozessor 401a und den logischen Prozessor 401b gespeichert zu werden. In Kern 401 können andere kleinere Ressourcen, wie z.B. Befehlszeiger und Umbenennungslogik im Zuordner- und Umbenennerblock 430 auch für die Threads 401a und 401b repliziert werden. Einige Ressourcen, wie z.B. Reorderpuffer in Reorder-Retirement-Einheit 435, ILTB 420, Lade-Speicher-Puffer und Wartefelder können über Partitionieren gemeinsam genutzt werden. Andere Ressourcen, wie z.B. interne Mehrzweckregister, Seitentabellenbasisregister, Low-Level-Datencache und Daten-TLB 415, Ausführungseinheit(en) 440 und Teile von Out-of-Order-Einheit 435 werden möglicherweise vollständig gemeinsam genutzt.
  • Prozessor 400 beinhaltet oft andere Ressourcen, die vollständig gemeinsam genutzt, über Partitionieren gemeinsam genutzt oder durch Verarbeitungselemente oder diesen fest zugeordnet sein können. In 4 ist eine Ausführungsform eines völlig beispielhaften Prozessors mit veranschaulichenden logischen Einheiten/Ressourcen eines Prozessors dargestellt. Man beachte, dass ein Prozessor jedwede dieser Funktionseinheiten beinhalten oder weglassen sowie jedwede anderen bekannten Funktionseinheiten, Logik, oder Firmware beinhalten kann, die nicht abgebildet sind. Wie dargestellt, beinhaltet Kern 401 einen vereinfachten, repräsentativen Out-of-Order-Prozessorkern (OOO-Prozessorkern). In unterschiedlichen Ausführungsformen kann aber ein In-Order-Prozessor genutzt werden. Der OOO-Kern beinhaltet einen Sprungzielpuffer 420, um Sprünge vorherzusagen, die auszuführen/zu nehmen sind, und einen Befehlsübersetzungspuffer (Instruction-Translation Buffer, 1-TLB) 420, um Adressübersetzungseinträge für Befehle zu speichern.
  • Kern 401 beinhaltet ferner Decodiermodul 425, das mit Abrufeinheit 420 gekoppelt ist, um abgerufene Elemente zu decodieren. Abruflogik beinhaltet in einer Ausführungsform individuelle Ablaufsteuerungen, die Threadslots 401a bzw. 401b zugeordnet sind. Üblicherweise ist Kern 401 einer ersten ISA zugeordnet, die Befehle definiert/spezifiziert, die auf Prozessor 400 ausführbar sind. Oft beinhalten Maschinencodebefehle, die Anteil der ersten ISA sind, einen Abschnitt des Befehls (der als Opcode bezeichnet wird), der einen Befehl oder eine Operation referenziert/spezifiziert, der/die auszuführen ist. Decodierlogik 425 beinhaltet Schaltungen, die diese Befehle aus ihren Opcodes erkennen und die decodierten Befehle in der Pipeline zum Verarbeiten weiterleiten, wie durch die erste ISA definiert. Beispielsweise beinhalten Decoder 425 in einer Ausführungsform Logik, die konzipiert oder ausgelegt ist, bestimmte Befehle zu erkennen, wie z.B. Transaktionsbefehl. Als Ergebnis der Erkennung durch Decoder 425 führt die Architektur oder der Kern 401 bestimmte vordefinierte Aktionen aus, um Tasks durchzuführen, die dem dazugehörigen Befehl zugeordnet sind. Wichtig ist, zu beachten, dass jedweder dieser Tasks, Blöcke, jedwede dieser Operationen und jedwedes dieser Verfahren, die hierin beschrieben sind, in Reaktion auf einen einzelnen oder mehrere Befehle durchgeführt werden können; von denen einige neue oder alte Befehle sein können.
  • In einem Beispiel beinhaltet Zuordner- und Umbenennerblock 430 einen Zuordner, um Ressourcen zu reservieren, wie z.B. Registerdateien, um Befehlsverarbeitungsergebnisse zu speichern. Jedoch sind Threads 401a und 401b potenziell zur Out-of-Order-Ausführung fähig, wobei Zuordner- und Umbenennerblock 430 auch andere Ressourcen reserviert, wie z.B. Reorderpuffer, um Befehlsergebnisse nachzuverfolgen. Einheit 430 kann auch einen Registerumbenenner beinhalten, um Programm-/Befehlsreferenzregister in andere Register umzubenennen, die innerhalb von Prozessor 400 sind. Reorder-Retirement-Einheit 435 beinhaltet Komponenten, wie z.B. den oben erwähnten Reorderpuffer, Ladepuffer und Speicherpuffer, um Out-of-Order-Ausführung und späteres In-Order-Retirement von Befehlen zu unterstützen, die Out-of-Order ausgeführt wurden.
  • Scheduler- und Ausführungseinheit(en)block 440 beinhaltet in einer Ausführungsform eine Schedulereinheit, um Befehle/Betrieb auf Ausführungseinheiten zu planen. Beispielsweise wird ein Fließkommabefehl auf einem Port einer Ausführungseinheit geplant, die eine verfügbare Fließkomma-Ausführungseinheit aufweist. Registerdateien, die den Ausführungseinheiten zugeordnet sind, sind ebenfalls beinhaltet, um Informations-Befehlsverarbeitungsergebnisse zu speichern. Zu beispielhaften Ausführungseinheiten zählen eine Fließkomma-Ausführungseinheit, eine Ganzzahl-Ausführungseinheit, eine Sprungausführungseinheit, eine Ladeausführungseinheit, eine Speicherausführungseinheit und andere bekannte Ausführungseinheiten.
  • Lower-Level-Datencache und Daten-Übersetzungspuffer (Data Translation Buffer, D-TLB) 450 sind mit Ausführungseinheit(en) 440 gekoppelt. Der Datencache dient dazu, kürzlich verwendete/betriebene Elemente zu speichern, wie z.B. Datenoperanden, die möglicherweise in Speicherkohärenzzuständen gehalten werden. Der D-TLB dient dazu, kürzliche Übersetzungen virtueller/linearer zu physikalischen Adressen zu speichern. Als ein spezielles Beispiel kann ein Prozessor eine Seitentabellenstruktur beinhalten, um physikalischen Speicher in mehrere virtuelle Seiten aufzubrechen.
  • Hier nutzen Kerne 401 und 402 Zugriff auf Higher-Level- oder Further-out-Cache 410 gemeinsam, der dazu dient, kürzlich abgerufene Elemente zwischenzuspeichern. Man beachte, dass Higher-Level oder Further-out sich auf Cachelevel beziehen, die gegenüber den Ausführungseinheit(en) ansteigen oder weiter fort liegen. In einer Ausführungsform ist Higher-Level-Cache 410 ein Last-Level-Datencache-letzter Cache in der Speicherhierarchie auf Prozessor 400-, wie z.B. ein Datencache zweiten oder dritten Levels. Jedoch ist Higher-Level-Cache 410 nicht derartig begrenzt, da er einem Befehlscache zugeordnet sein kann oder diesen beinhaltet. Ein Tracecache-eine Art von Befehlscache-kann stattdessen nach Decoder 425 eingekoppelt sein, um kürzlich decodierte Traces zu speichern.
  • In der abgebildeten Konfiguration beinhaltet Prozessor 400 auch Busschnittstellenmodul 405 und eine Leistungssteuerung 460, die Leistungsverwaltung gemäß einer Ausführungsform der vorliegenden Erfindung durchführen kann. In diesem Szenario dient Busschnittstelle 405 dazu, mit Geräten außerhalb von Prozessor 400 zu kommunizieren, wie z.B. Systemspeicher und andere Komponenten.
  • Eine Speichersteuerung 470 kann an andere Geräte angekoppelt sein, wie z.B. einen oder mehrere Speicher. In einem Beispiel beinhaltet Busschnittstelle 405 eine Ringverbindung mit einer Speichersteuerung zum Ankoppeln an einen Speicher und einer Grafiksteuerung zum Ankoppeln an einen Grafikprozessor. In einer SoC-Umgebung können noch mehr Geräte, wie z.B. eine Netzschnittstelle, Koprozessoren, Speicher, Grafikprozessor und jedwede andere(n) Computergeräte/Schnittstelle auf einem einzigen Die oder einer einzigen integrierten Schaltung integriert sein, um kleinen Formfaktor hoher Funktionalität und niedrigem Stromverbrauch bereitzustellen.
  • Jetzt Bezug nehmend auf 5 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkernes gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 5 gezeigt, kann Prozessorkern 500 ein Mehrstufen-Pipeline-Out-of-Order-Prozessor sein. Kern 500 kann bei verschiedenen Spannungen basierend auf einer empfangenen Betriebsspannung arbeiten, die von einem integrierten Spannungsregler oder externen Spannungsregler empfangen werden kann.
  • Wie in 5 gesehen, beinhaltet Kern 500 Front-End-Einheiten 510, die verwendet werden können, um auszuführende Befehle abzurufen und sie zur Verwendung später in der Prozessorpipeline vorzubereiten. Beispielsweise können Front-End-Einheiten 510 eine Abrufeinheit 501, einen Befehlscache 503 und einen Befehlsdecodierer 505 beinhalten. In einigen Implementierungen können Front-End-Einheiten 510 ferner einen Tracecache zusammen mit Mikrocodespeicher sowie einen Mikrooperationsspeicher beinhalten. Abrufeinheit 501 kann Makrobefehle z.B. aus Speicher oder Befehlscache 503 abrufen und sie dem Befehlsdecodierer 505 zuführen, um sie in Primitive, d.h., Mikrooperationen zur Ausführung durch den Prozessor zu decodieren.
  • Zwischen Front-End-Einheiten 510 und Ausführungseinheiten 520 ist eine Out-of-Order-Engine (OOO-Engine) 515 eingekoppelt, die verwendet werden kann, um die Mikrobefehle zu empfangen und sie zur Ausführung vorzubereiten. Insbesondere kann OOO-Engine 515 verschiedene Puffer beinhalten, um den Mikrobefehlsablauf umzuordnen und verschiedene Ressourcen zuzuteilen, die zur Ausführung benötigt werden, sowie Umbenennung logischer Register auf Speicherorten innerhalb verschiedener Registerdateien wie z.B. Registerdatei 530 und erweiterter Registerdatei 535 bereitzustellen. Registerdatei 530 kann separate Registerdateien für Ganzzahl- und Fließkommaoperationen beinhalten. Zu Zwecken der Konfiguration, Steuerung und zusätzlicher Operationen kann auch ein Satz maschinenspezifischer Register (MSR) 538 vorhanden und für verschiedene Logik innerhalb von Kern 500 (und außerhalb des Kerns) zugreifbar sein.
  • Verschiedene Ressourcen können in Ausführungseinheiten 520 vorhanden sein, einschließlich beispielsweise, verschiedener Ganzzahl-, Fließkomma-, und Single-Instruction-Multiple-Data- (SIMD-) -Logikeinheiten, neben anderer spezialisierter Hardware. Beispielsweise können derartige Ausführungseinheiten eine oder mehrere Arithmetiklogikeinheiten (Arithmetic Logic Unit, ALUs) 522 und eine oder mehrere Vektorausführungseinheiten 524 neben anderen derartigen Ausführungseinheiten beinhalten.
  • Ergebnisse der Ausführungseinheiten können Retirementlogik, nämlich einem Reorderpuffer (Reorder Buffer, ROB) 540 bereitgestellt werden. Insbesondere kann ROB 540 verschiedene Felder und Logik beinhalten, um Informationen zu empfangen, die Befehlen zugeordnet sind, die ausgeführt werden. Diese Informationen werden dann durch ROB 540 geprüft, um zu ermitteln, ob die Befehle gültig abgeschlossen und Ergebnisdaten dem Architekturzustand des Prozessors anvertraut werden können oder ob eine oder mehrere Ausnahmen aufgetreten sind, die ein ordnungsgemäßes Retirement der Befehle verhindern. Natürlich kann ROB 540 andere Operationen im Zusammenhang mit Retirement handhaben.
  • Wie in 5 gezeigt, ist ROB 540 mit einem Cache 550 gekoppelt, der in einer Ausführungsform ein Low-Level-Cache (z.B. ein L1-Cache) ist, obgleich der Umfang der vorliegenden Erfindung diesbezüglich nicht begrenzt ist. Außerdem können Ausführungseinheiten 520 direkt mit Cache 550 gekoppelt sein. Von Cache 550 kann Datenkommunikation mit Caches höherer Level, Systemspeicher und so fort erfolgen. Man beachte, dass Leistungs- und Energieeffizienzfähigkeiten von Kern 500 basierend auf Arbeitslast und/oder Prozessorbedingungen variieren können. Auf diese Weise kann eine (in 5 nicht gezeigte) Leistungssteuerung eine zweckmäßige Konfiguration für den gesamten oder einen Teil von Prozessor 500 basierend mindestens zum Teil auf einem thermischen Sollwert dynamisch bestimmen, der wie hierin beschrieben bestimmt wird. Obgleich in der Ausführungsform nach 5 mit diesem hohen Level gezeigt, verstehe man, dass der Umfang der vorliegenden Erfindung diesbezüglich nicht begrenzt ist. Beispielsweise ist, während die Implementierung nach 5 bezüglich einer Out-of-Order-Maschine wie z.B. einer Intel®-x86-Befehlssatzarchitektur (Instruction Set Architecture, ISA) ist, der Umfang der vorliegenden Erfindung diesbezüglich nicht begrenzt. Das heißt, dass andere Ausführungsformen in einem In-Order-Prozessor, einem Prozessor mit Berechnung mit reduziertem Befehlssatz (Reduced Instruction Set Computing, RISC-Prozessor) wie z.B. einem ARM-basierten Prozessor oder einem Prozessor einer anderen Art von ISA implementiert sein können, der Befehle und Operationen einer unterschiedlichen ISA über eine Emulationsengine und zugeordnete Logikschaltung emulieren kann.
  • Jetzt Bezug nehmend auf 6 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkernes gemäß einer anderen Ausführungsform gezeigt. In der Ausführungsform nach 6 kann Kern 600 ein leistungsarmer Kern einer unterschiedlichen Mikroarchitektur sein, wie z.B. ein Intel®-Atom™-basierter Prozessor, der eine relativ begrenzte Pipelinetiefe aufweist, die konzipiert ist, den Stromverbrauch zu verringern. Wie gesehen, beinhaltet Kern 600 einen Befehlscache 610, der gekoppelt ist, um einem Befehlsdecodierer 615 Befehle bereitzustellen. Mit Befehlscache 610 kein ein Sprungprädiktor 605 gekoppelt sein. Man beachte, dass Befehlscache 610 ferner mit einem anderen Level eines Cachespeichers gekoppelt sein kann, wie z.B. einem L2-Cachespeicher (der der einfacheren Darstellung halber in 6 nicht gezeigt ist). Befehlsdecodierer 615 wiederum stellt decodierte Befehle eines Herausgabewartefeldes 620 zur Speicherung und Lieferung an eine gegebene Ausführungspipeline bereit. Mit Befehlsdecodierer 615 gekoppelt ist ein Mikrocode-ROM 618.
  • Eine Fließkommapipeline 630 beinhaltet eine Fließkomma-Registerdatei 632, die mehrere Architekturregister eines gegebenen Bits mit wie z.B. 128, 256 oder 512 Bits beinhalten kann. Pipeline 630 beinhaltet einen Fließkommascheduler 634, um Befehle zur Ausführung auf einer von mehreren Ausführungseinheiten der Pipeline zu planen. In der gezeigten Ausführungsform beinhalten derartige Ausführungseinheiten eine ALU 635, eine Shuffleeinheit 636 und einen Fließkommaaddierer 638. In diesen Ausführungseinheiten generierte Ergebnisse können wiederum Puffern und/oder Registern von Registerdatei 632 zurück bereitgestellt werden. Man verstehe natürlich, dass, obgleich mit diesen wenigen Beispiel-Ausführungseinheiten gezeigt, zusätzliche oder unterschiedliche Fließkomma-Ausführungseinheiten in einer anderen Ausführungsform vorhanden sein können.
  • Eine Ganzzahlpipeline 640 kann ebenfalls bereitgestellt sein. In der gezeigten Ausführungsform beinhaltet Pipeline 640 eine Ganzzahl-Registerdatei 642, die mehrere Architekturregister eines gegebenen Bits mit wie z.B. 128 oder 256 Bits beinhalten kann. Pipeline 640 beinhaltet einen Ganzzahlscheduler 644, um Befehle zur Ausführung auf einer von mehreren Ausführungseinheiten der Pipeline zu planen. In der gezeigten Ausführungsform beinhalten derartige Ausführungseinheiten eine ALU 645, eine Schiebeeinheit 646 und eine Sprungausführungseinheit 648. In diesen Ausführungseinheiten generierte Ergebnisse können wiederum Puffern und/oder Registern von Registerdatei 642 zurück bereitgestellt werden. Man verstehe natürlich, dass, obgleich mit diesen wenigen Beispiel-Ausführungseinheiten gezeigt, zusätzliche oder unterschiedliche Ganzzahl-Ausführungseinheiten in einer anderen Ausführungsform vorhanden sein können.
  • Ein Speicherausführungsscheduler 650 kann Speicheroperationen zur Ausführung in einer Adressgenerierungseinheit 652 planen, die auch mit einem TLB 654 gekoppelt ist. Wie gesehen, können diese Strukturen sich mit einem Datencache 660 koppeln, der ein L0- und/oder L1-Datencache sein kann, der sich wiederum mit zusätzlichen Leveln einer Cachespeicherhierarchie koppelt, einschließlich eines L2-Cachespeichers.
  • Um Unterstützung für Out-of-Order-Ausführung bereitzustellen, kann ein Zuordner/Umbenenner 670 zusätzlich zu einem Reorderpuffer 680 bereitgestellt sein, der konfiguriert ist, Befehle, die out-of-Order ausgeführt werden, für das Retirement in-Order neu zu ordnen. Man beachte, dass Leistungs- und Energieeffizienzfähigkeiten von Kern 600 basierend auf Arbeitslast und/oder Prozessorbedingungen variieren können. Auf diese Weise kann eine (in 6 nicht gezeigte) Leistungssteuerung eine zweckmäßige Konfiguration für den gesamten oder einen Teil von Prozessor 500 basierend mindestens zum Teil auf einem thermischen Sollwert dynamisch bestimmen, der wie hierin beschrieben bestimmt wird. Obgleich in der Darstellung nach 6 mit dieser bestimmten Pipelinearchitektur gezeigt, verstehe man, dass zahlreiche Varianten und Alternativen möglich sind.
  • Man beachte, dass in einem Prozessor, der asymmetrische Kerne aufweist, wie z.B. gemäß den Mikroarchitekturen nach 5 und 6, Arbeitslasten aus Leistungsverwaltungsgründen dynamisch zwischen den Kernen ausgetauscht werden können, da diese Kerne, obgleich sie unterschiedliche Pipelinedesigns und -tiefen aufweisen, von derselben oder verwandter ISA sein können. Derartiges dynamisches Kernswapping kann in einer Art und Weise durchgeführt werden, die für eine Benutzeranwendung (und möglicherweise auch einen Kernel) transparent ist.
  • Bezug nehmend auf 7 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkernes gemäß noch einer anderen Ausführungsform gezeigt. Wie in 7 dargestellt, kann ein Kern 700 eine mehrstufige In-Order-Pipeline beinhalten, um auf sehr niedrigen Stromverbrauchsniveaus zu arbeiten. Als ein derartiges Beispiel kann Prozessor 700 eine Mikroarchitektur gemäß einem ARM-Cortex-A53-Design aufweisen, das von der ARM Holdings, LTD., Sunnyvale, CA, USA, erhältlich ist. In einer Implementierung kann eine 8-Stufen-Pipeline bereitgestellt sein, die konfiguriert ist, sowohl 32-bit- als auch 64-bit-Code auszuführen. Kern 700 beinhaltet eine Abrufeinheit 710, die konfiguriert ist, Befehl abzurufen und sie einer Decodiereinheit 715 bereitzustellen, die die Befehle decodieren kann, z.B. Makrobefehle einer gegebenen ISA wie z.B. einer ARMv8-ISA. Man beachte ferner, dass sich ein Wartefeld 730 mit Decodiereinheit 715 koppeln kann, um decodierte Befehle zu speichern. Decodierte Befehle werden einer Herausgabelogik 725 bereitgestellt, wobei die decodierten Befehle an eine Gegebene von mehreren Ausführungseinheiten herausgegeben werden können.
  • Weiter Bezug nehmend auf 7 kann Herausgabelogik 725 Befehle an eine von mehreren Ausführungseinheiten herausgeben. In der gezeigten Ausführungsform beinhalten diese Ausführungseinheiten eine Ganzzahleinheit 735, eine Multipliziereinheit 740, eine Fließkomma-Vektor-Einheit 750, eine Dualherausgabeeinheit 760 und eine Lade-SpeicherEinheit 770. Die Ergebnisse dieser unterschiedlichen Ausführungseinheiten können einer Rückschreibeinheit 780 bereitgestellt werden. Man verstehe, dass, obgleich der einfacheren Darstellung halber eine einzelne Rückschreibeinheit gezeigt ist, in einigen Implementierungen jeder der Ausführungseinheiten separate Rückschreibeinheiten zugeordnet sein können. Außerdem verstehe man, dass, obgleich jede der in 7 gezeigten Einheiten und Logik auf einem hohen Level dargestellt ist, eine bestimmte Implementierung mehr oder unterschiedliche Strukturen beinhalten kann. Ein Prozessor, der so konzipiert ist, dass er einen oder mehrere Kerne verwendet, die eine Pipeline wie in 7 aufweisen, kann in vielen unterschiedlichen Endprodukten implementiert sein, die sich von Mobilgeräten bis zu Serversystemen erstrecken.
  • Bezug nehmend auf 8 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkernes gemäß noch einer weiteren Ausführungsform gezeigt. Wie in 8 dargestellt, kann ein Kern 800 eine Mehrstufen-Mehrfachherausgabe-Out-of-Order-Pipeline beinhalten, um bei sehr hohen Leistungsniveaus zu arbeiten (die bei höheren Stromverbrauchsniveaus auftreten können als bei Kern 700 aus 7). Als ein derartiges Beispiel kann Prozessor 800 eine Mikroarchitektur gemäß einem ARM-Cortex-A57-Design aufweisen. In einer Implementierung kann eine 15- (oder mehr) -Stufen-Pipeline bereitgestellt sein, die konfiguriert ist, sowohl 32-bit- als auch 64-bit-Code auszuführen. Zusätzlich kann die Pipeline Betrieb mit dreifacher Breite (oder mehr) und dreifacher Herausgabe (oder mehr) bereitstellen. Kern 800 beinhaltet eine Abrufeinheit 810, die konfiguriert ist, Befehle abzurufen und sie einem Decodierer/Umbenenner/Dispatcher 815 bereitzustellen, der die Befehle, z.B. Makrobefehle einer ARMv8-Befehlssatzarchitektur, decodieren, Registerreferenzen innerhalb der Befehle umbenennen und die Befehle (letztendlich) einer ausgewählten Ausführungseinheit zuweisen kann. Decodierte Befehle können in einem Wartefeld 825 gespeichert werden. Man beachte, dass, obgleich in 8 der einfacheren Darstellung halber eine einzelne Wartefeldstruktur gezeigt ist, man verstehe, dass für jede der mehreren unterschiedlichen Arten von Ausführungseinheiten separate Wartefelder bereitgestellt sein können.
  • Ebenfalls in 8 gezeigt ist eine Herausgabelogik 830, aus der decodierte Befehle, die in Wartefeld 825 gespeichert sind, an eine ausgewählte Ausführungseinheit herausgegeben werden können. Herausgabelogik 830 kann auch in einer bestimmten Ausführungsform mit einer separaten Herausgabelogik für jede der mehreren unterschiedlichen Arten von Ausführungseinheiten implementiert sein, mit denen Herausgabelogik 830 sich koppelt.
  • Decodierte Befehle können an eine Gegebene von mehreren Ausführungseinheiten herausgegeben werden. In der gezeigten Ausführungsform beinhalten diese Ausführungseinheiten eine oder mehrere Ganzzahleinheiten 835, eine Multipliziereinheit 840, eine Fließkomma-Vektor-Einheit 850, eine Sprungeinheit 860 und eine Lade-SpeicherEinheit 870. In einer Ausführungsform kann Fließkomma-Vektor-Einheit 850 konfiguriert sein, SIMD oder Vektordaten von 128 oder 256 bit zu handhaben. Weiterhin kann Fließkomma-Vektor-Ausführungseinheit 850 IEEE-754-Double-Precision-Fließkommaoperationen durchführen. Die Ergebnisse dieser unterschiedlichen Ausführungseinheiten können einer Rückschreibeinheit 880 bereitgestellt werden. Man beachte, dass in einigen Implementierungen jeder der Ausführungseinheiten separate Rückschreibeinheiten zugeordnet sein können. Außerdem verstehe man, dass, obgleich jede der in 8 gezeigten Einheiten und Logik auf einem hohen Level dargestellt ist, eine bestimmte Implementierung mehr oder unterschiedliche Strukturen beinhalten kann.
  • Man beachte, dass in einem Prozessor, der asymmetrische Kerne aufweist, wie z.B. gemäß den Mikroarchitekturen nach 7 und 8, Arbeitslasten aus Leistungsverwaltungsgründen dynamisch ausgetauscht werden können, da diese Kerne, obgleich sie unterschiedliche Pipelinedesigns und -tiefen aufweisen, von derselben oder verwandter ISA sein können. Derartiges dynamisches Kernswapping kann in einer Art und Weise durchgeführt werden, die für eine Benutzeranwendung (und möglicherweise auch einen Kernel) transparent ist.
  • Ein Prozessor, der so konzipiert ist, dass er einen oder mehrere Kerne verwendet, die Pipelines wie in irgendeiner oder mehrerer der 5-8 aufweisen, kann in vielen unterschiedlichen Endprodukten implementiert sein, die sich von Mobilgeräten bis zu Serversystemen erstrecken. Jetzt Bezug nehmend auf 9 ist ein Blockdiagramm eines Prozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. In der Ausführungsform nach 9 kann Prozessor 900 ein SoC sein, das mehrere Domänen beinhaltet, von denen jede so gesteuert werden kann, dass sie bei einer unabhängigen Betriebsspannung und Betriebsfrequenz arbeitet. Als ein spezielles anschauliches Beispiel kann Prozessor 900 ein Intel®-Architecture-Core™-basierter Prozessor wie z.B. ein i3-, i5-, i7- oder ein anderer derartiger Prozessor sein, der von der Intel Corporation erhältlich ist. Jedoch können andere leistungsarme Prozessoren, wie sie z.B. von der Advanced Micro Devices, Inc. (AMD) aus Sunnyvale, CA, USA, erhältlich sind, ein ARM-basiertes Design von der ARM Holdings, Ltd. oder deren Lizenznehmern oder ein MIPS-basiertes Design von der MIPS Technologies, Inc. aus Sunnyvale, CA, USA, oder deren Lizenznehmern oder Anwendern stattdessen in anderen Ausführungsformen vorhanden sein, wie z.B. ein Apple-A7-Prozessor, ein Qualcomm-Snapdragon-Prozessor oder Texas-Instruments-OMAP-Prozessor. Ein derartiges SoC kann in einem leistungsarmen System verwendet werden, wie z.B. einem Smartphone, Tabletcomputer, Phabletcomputer, Ultrabook™-Computer oder einem anderen tragbaren Rechengerät oder einem Fahrzeugrechensystem.
  • In der in 9 gezeigten Ansicht hohen Levels beinhaltet Prozessor 900 mehrere Kerneinheiten 9100-910". Jede Kerneinheit kann einen oder mehrere Prozessorkerne, einen oder mehrere Cachespeicher und andere Schaltungen beinhalten. Jede Kerneinheit 910 kann einen oder mehrere Befehlssätze (z.B. einen x86-Befehlssatz (mit einigen Erweiterungen, die bei neueren Versionen hinzugefügt worden sind); einen MIPS-Befehlssatz; einen ARM-Befehlssatz (mit optionalen zusätzlichen Netzknoten wie z.B. NEON)) oder andere Befehlssätze oder Kombinationen davon unterstützen. Man beachte, dass einige der Kerneinheiten heterogene Ressourcen sein können (z.B. von unterschiedlichem Design). Zusätzlich kann jeder derartige Kern mit einem Cachespeicher (nicht gezeigt) gekoppelt sein, der in einer Ausführungsform ein Cachespeicher gemeinsam genutzten Levels (L2-Cachespeicher) sein kann. Ein nichtflüchtiger Speicher 930 kann verwendet werden, um verschiedene Programm- und andere Daten zu speichern. Beispielsweise kann dieser Speicher verwendet werden, um mindestens Teile von Mikrocode, Bootinformationen wie z.B. ein BIOS, andere Systemsoftware und andere Informationen zu speichern. In Ausführungsformen kann nichtflüchtiger Speicher 930 mehrere Konfigurationen wie hierin beschrieben speichern, der zur Verwendung durch Firmware priorisiert sein kann.
  • Jede Kerneinheit 910 kann auch eine Schnittstelle wie z.B. eine Busschnittstelleneinheit beinhalten, um Zwischenverbindung zu zusätzlichen Schaltungen des Prozessors zu ermöglichen. In einer Ausführungsform koppelt sich jede Kerneinheit 910 mit einem kohärenten Fabric, das als kohärente Primärcache-On-Die-Verbindung wirken kann, die wiederum sich mit einer Speichersteuerung 935 koppelt. Speichersteuerung 935 wiederum steuert die Kommunikation mit einem Speicher wie z.B. einem DRAM (der einfacheren Darstellung halber in 9 nicht gezeigt).
  • Zusätzlich zu Kerneinheiten sind zusätzliche Verarbeitungsengines innerhalb des Prozessors vorhanden, unter anderem mindestens eine Grafikeinheit 920, die eine oder mehrere Grafikverarbeitungseinheiten (Graphics Processing Unit, GPUs) beinhalten kann, um Grafikverarbeitung durchzuführen sowie möglicherweise Mehrzweckoperationen auf dem Grafikprozessor (sogenannte GPGPU-Operationen) auszuführen. Zusätzlich kann mindestens ein Bildsignalprozessor 925 vorhanden sein. Signalprozessor 925 kann konfiguriert sein, ankommende Bilddaten zu verarbeiten, die von einem oder mehreren Erfassungsgeräten empfangen werden, entweder SoC-internen oder solchen außerhalb des Chips.
  • Andere Beschleuniger können ebenfalls vorhanden sein. In der Darstellung nach 9 kann ein Videocodierer 950 Codieroperationen einschließlich Codieren und Decodieren für Videoinformationen durchführen, z.B. Bereitstellen von Hardwarebeschleunigungs-Unterstützung für High-Definition-Videoinhalte. Ferner kann eine Anzeigesteuerung 955 bereitgestellt sein, um Anzeigeoperationen einschließlich Bereitstellen von Unterstützung für interne und externe Anzeigen eines Systems zu beschleunigen. Zusätzlich kann ein Sicherheitsprozessor 945 vorhanden sein, um Sicherheitsoperationen wie z.B. sichere Bootoperationen, verschiedene Kryptografieoperationen und so fort durchzuführen.
  • Der Stromverbrauch jeder der Einheiten kann über einen Leistungsverwalter 940 gesteuert werden, der Steuerlogik beinhalten kann, um die verschiedenen hierin beschrieben Leistungsverwaltungstechniken durchzuführen, einschließlich dynamischer Bestimmung einer zweckmäßigen Konfiguration auf Basis von Temperaturpunktauswahl.
  • In einigen Ausführungsformen kann SoC 900 ferner ein nicht kohärentes Fabric beinhalten, das mit dem kohärenten Fabric gekoppelt ist, mit dem sich verschiedene Peripheriegeräte koppeln können. Eine oder mehrere Schnittstellen 960a-960d ermöglichen Kommunikation mit einem oder mehreren Geräten außerhalb des Chips. Derartige Kommunikation kann über eine Vielzahl von Kommunikationsprotokollen erfolgen, wie z.B. PCIe™, GPIO, USB, I2C, UART, MIPI, SDIO, DDR, SPI, HDMI, neben anderen Arten von Kommunikationsprotokollen. Obgleich in der Ausführungsform nach 9 mit diesem hohen Level gezeigt, verstehe man, dass der Umfang der vorliegenden Erfindung diesbezüglich nicht begrenzt ist.
  • Jetzt Bezug nehmend auf 10 ist ein Blockdiagramm eines repräsentativen SoC gezeigt. In der dargestellten Ausführungsform kann SoC 1000 ein Mehrkern-SoC sein, das für leistungsarmen Betrieb konfiguriert ist, um zur Eingliederung in ein Smartphone oder anderes leistungsarmes Gerät optimiert zu sein, wie z.B. einen Tabletcomputer oder ein anderes tragbares Rechengerät oder Fahrzeugrechensystem. Als Beispiel kann SoC 1000 unter Verwendung asymmetrischer oder unterschiedlicher Arten von Kernen implementiert sein, wie z.B. Kombinationen von leistungsstärkeren und/oder leistungsarmen Kernen, z.B. Out-of-Order-Kernen und In-Order-Kernen. In unterschiedlichen Ausführungsformen können diese Kerne auf einem Intel®-Architecture™-Kern-Design oder einem ARM-Architektur-Design basiert sein. In noch anderen Ausführungsformen kann in einem gegebenen SoC eine Mischung aus Intel- und ARM-Kernen implementiert sein.
  • Wie in 10 gesehen, beinhaltet SoC 1000 eine erste Kerndomäne 1010, die mehrere erste Kerne 10120 - 10123 aufweist. In einem Beispiel können diese Kerne leistungsarme Kerne wie z.B. In-Order-Kerne sein, wie hierin beschrieben. In einer Ausführungsform können diese ersten Kerne als ARM-Cortex-A53-Kerne implementiert sein. Diese Kerne wiederum koppeln sich mit einem Cachespeicher 1015 der Kerndomäne 1010. Zusätzlich beinhaltet SoC 1000 eine zweite Kerndomäne 1020. In der Darstellung nach 10 weist die zweite Kerndomäne 1020 mehrere zweite Kerne 10220 - 10223 auf. In einem Beispiel können diese Kerne mehr Strom verbrauchende Kerne als die ersten Kerne 1012 sein. In einer Ausführungsform können die zweiten Kerne Out-of-Order-Kerne sein, die als ARM-Cortex-A57-Kerne implementiert sein können. Diese Kerne wiederum koppeln sich mit einem Cachespeicher 1025 der Kerndomäne 1020. Man beachte, dass, obgleich das in 10 gezeigte Beispiel vier Kerne in jeder Domäne beinhaltet, man verstehe, dass in anderen Beispielen mehr oder weniger Kerne in einer gegebenen Domäne vorhanden sein können.
  • Weiter Bezug nehmend auf 10 ist auch eine Grafikdomäne 1030 bereitgestellt, die eine oder mehrere Grafikverarbeitungseinheiten (Graphics Processing Unit, GPUs) beinhalten kann, die konfiguriert sind, Grafikarbeitslasten unabhängig auszuführen, die z.B. durch einen oder mehrere Kerne der Kerndomänen 1010 und 1020 bereitgestellt werden. Als Beispiel kann GPU-Domäne 1030 verwendet werden, um Anzeigeunterstützung für eine Vielzahl von Bildschirmgrößen zusätzlich zum Bereitstellen von Grafik- und Anzeigerenderoperationen bereitzustellen.
  • Wie gesehen, koppeln sich die verschiedenen Domänen mit einer kohärenten Verbindung 1040, die in einer Ausführungsform ein kohärentes Cacheverbindungsfabric sein kann, das wiederum sich mit einer integrierten Speichersteuerung 1050 koppelt. Die kohärente Verbindung 1040 kann in einigen Beispielen einen gemeinsam genutzten Cachespeicher beinhalten, wie z.B. einen L3-Cache. In einer Ausführungsform kann Speichersteuerung 1050 eine direkte Speichersteuerung sein, um mehrere Kanäle der Kommunikation mit einem Speicher außerhalb des Chips bereitzustellen, wie z.B. mehrere Kanäle eines DRAM (der einfacheren Darstellung halber in 10 nicht gezeigt).
  • In unterschiedlichem Beispielen kann die Zahl der Kerndomänen variieren. Beispielsweise kann bei einem leistungsarmen SoC, das zur Eingliederung in ein mobiles Rechengerät geeignet ist, eine begrenzte Zahl von Kerndomänen vorhanden sein, wie z.B. in 10 gezeigt. Weiterhin kann in derartigen leistungsarmen SoCs Kerndomäne 1020, die Kerne höherer Leistung beinhaltet, geringere Zahlen derartiger Kerne aufweisen. Beispielsweise können in einer Implementierung zwei Kerne 1022 bereitgestellt sein, um den Betrieb mit verringerten Stromverbrauchsniveaus zu ermöglichen. Zusätzlich können die unterschiedlichen Kerndomänen auch mit einem Interrupt-Controller gekoppelt sein, um dynamisches Swapping von Arbeitslasten zwischen den unterschiedlichen Domänen zu ermöglichen.
  • In noch anderen Ausführungsformen kann eine größere Zahl von Kerndomänen sowie zusätzliche optionale IP-Logik insofern vorhanden sein, als ein SoC zur Eingliederung in andere Rechengeräte, wie z.B. Desktops, Server, Hochleistungsrechensysteme, Basisstationen fort auf höhere Leistungs- (und Stromverbrauchs)-Niveaus skaliert werden kann. Als ein derartiges Beispiel können vier Kerndomänen bereitgestellt sein, die jede eine gegebene Zahl von Out-of-Order-Kernen aufweisen. Weiterhin können zusätzlich zu optionaler GPU-Unterstützung (die als Beispiel die Form einer GPGPU annehmen kann) auch ein oder mehrere Beschleuniger bereitgestellt sein, um optimierte Hardwareunterstützung für bestimmte Funktionen bereitzustellen (z.B. Webserving, Netzverarbeitung, Switching und so fort). Zusätzlich kann eine Ein- und Ausgangs-Schnittstelle vorhanden sein, um derartige Beschleuniger mit Komponenten außerhalb des Chips zu koppeln.
  • Jetzt Bezug nehmend auf 11 ist ein Blockdiagramm eines anderen Beispiel-SoC gezeigt. In der Ausführungsform nach 11 kann SoC 1100 verschiedene Schaltungen beinhalten, um hohe Leistung für Multimediaanwendungen, Kommunikation und andere Funktionen zu ermöglichen. Auf diese Weise ist SoC 1100 zur Eingliederung in eine große Vielfalt tragbarer und anderer Geräte geeignet, wie z.B. Smartphones, Tabletcomputer, Smart-TVs, Fahrzeugrechensysteme und so fort. Im gezeigten Beispiel beinhaltet SoC 1100 eine Zentraleinheitendomäne (Central Processor Unit, CPU-Domäne) 1110. In einer Ausführungsform können mehrere individuelle Prozessorkerne in CPU-Domäne 1110 vorhanden sein. Als ein Beispiel kann CPU-Domäne 1110 ein Vierkernprozessor sein, der vier Multithreadkerne aufweist. Derartige Prozessoren können homogene oder heterogene Prozessoren sein, z.B. ein Gemisch aus leistungsarmen und leistungsstarken Prozessorkernen.
  • Eine GPU-Domäne 1120 wiederum ist bereitgestellt, um erweiterte Grafikverarbeitung in einer oder mehreren GPUs durchzuführen, um Grafik- und Rechen-APIs zu handhaben. Eine DSP-Einheit 1130 kann eine oder mehrere leistungsarme DSPs zur Handhabung leistungsarmer Multimediaanwendungen wie z.B. Musikwiedergabe, Audio/Video und so fort zusätzlich zu erweiterten Berechnungen bereitstellen, die während der Ausführung von Multimediabefehlen auftreten können. Eine Kommunikationseinheit 1140 kann verschiedene Komponenten beinhalten, um Konnektivität über verschiedene Drahtlosprotokolle bereitzustellen, wie z.B. zelluläre Kommunikation (einschließlich 3G/4G LTE), Nahbereichs-Drahtlosprotokolle wie z.B. Bluetooth™, IEEE 802.11 und so fort.
  • Weiterhin kann ein Multimediaprozessor 1150 verwendet werden, um Erfassung und Wiedergabe von High-Definition-Video- und -Audioinhalten einschließlich Verarbeitung von Benutzergesten durchzuführen. Eine Sensoreinheit 1160 kann mehrere Sensoren und/oder eine Sensorsteuerung beinhalten, um an verschiedene Sensoren außerhalb des Chips anzukoppeln, die in einer gegebenen Plattform vorhanden sind. Ein Bildsignalprozessor 1170 kann mit einem oder mehreren separaten ISPs bereitgestellt sein, um Bildverarbeitung in Bezug auf erfasste Inhalte von einer oder mehreren Kameras einer Plattform einschließlich Standbild- und Videokameras durchzuführen.
  • Ein Anzeigeprozessor 1180 kann Unterstützung zur Verbindung mit einer High-Definition-Anzeige einer gegebenen Pixeldichte einschließlich der Fähigkeit bereitstellen, Inhalte zur Wiedergabe auf einer derartigen Anzeige drahtlos zu kommunizieren. Weiterhin kann eine Standorteinheit 1190 einen GPS-Empfänger mit Unterstützung für mehrere GPS-Konstellationen beinhalten, um Anwendungen hochgenaue Positionierungsinformationen bereitzustellen, die unter Verwendung von als solchem GPS-Empfänger erlangt werden. Man verstehe, dass, obgleich mit diesem bestimmten Satz an Komponenten im Beispiel nach 11 gezeigt, viele Varianten und Alternativen möglich sind.
  • Jetzt Bezug nehmend auf 12 ist ein Blockdiagramm eines Beispielsystems gezeigt, mit dem Ausführungsformen verwendet werden können. Wie gesehen, kann System 1200 ein Smartphone oder anderer Drahtloskommunikator sein. Ein Basisbandprozessor 1205 ist konfiguriert, verschiedene Signalverarbeitung in Bezug auf Kommunikationssignale durchzuführen, die vom System zu senden oder durch dieses zu empfangen sind. Basisbandprozessor 1205 wiederum ist mit einem Anwendungsprozessor 1210 gekoppelt, der eine Haupt-CPU des Systems sein kann, um ein OS und andere Systemsoftware zusätzlich zu Benutzeranwendungen auszuführen, wie z.B. vielen wohlbekannten Soziale-Medien- und Multimedia-Apps. Anwendungsprozessor 1210 kann eine Leistungssteuerungs- und Drosselschaltung beinhalten, wie hierin beschrieben, und kann ferner konfiguriert sein, eine Vielzahl anderer Rechenoperationen für das Gerät durchzuführen.
  • Anwendungsprozessor 1210 wiederum kann sich mit einer Benutzerschnittstelle/Anzeige 1220 koppeln, z.B. einer Berührbildschirmanzeige. Zusätzlich kann Anwendungsprozessor 1210 sich mit einem Speichersystem einschließlich eines nichtflüchtigen Speichers, nämlich eines Flash-Speichers 1230, und eines Systemspeichers, nämlich eines dynamischen Direktzugriffsspeichers (Dynamic Random Access Memory, DRAMs) 1235 koppeln. Wie ferner gesehen, koppelt sich Anwendungsprozessor 1210 ferner mit einem Erfassungsgerät 1240 wie z.B. einem oder mehreren Bilderfassungsgeräten, die Video und/oder Standbilder aufzeichnen können.
  • Noch Bezug nehmend auf 12 ist eine universelle Integrierte-Schaltungs-Karte (Universal Integrated Circuit Card, UICC) 1240, die ein Teilnehmeridentitätsmodul und möglicherweise einen sicheren Speicher und einen Kryptoprozessor umfasst, ebenfalls mit Anwendungsprozessor 1210 gekoppelt. System 1200 kann ferner einen Sicherheitsprozessor 1250 beinhalten, der sich mit Anwendungsprozessor 1210 koppeln kann. Mehrere Sensoren 1225 können sich mit Anwendungsprozessor 1210 koppeln, um Eingabe einer Vielzahl erfasster Informationen zu ermöglichen, wie z.B. Beschleunigungsmesser- und anderer Umgebungsinformationen. Ein Audioausgabegerät 1295 kann eine Schnittstelle bereitstellen, um Ton auszugeben, z.B. in der Form von Sprachkommunikation, Abspiel- oder Streaming-Audiodaten und so fort.
  • Wie ferner dargestellt, ist eine kontaktlose Nahfeldkommunikations-Schnittstelle (Near Field Communication, NFC-Schnittstelle) 1260 bereitgestellt, die in einem NFC-Nahfeld über eine NFC-Antenne 1265 kommuniziert. Obgleich in 12 separate Antennen gezeigt sind, verstehe man, dass in einigen Implementierungen eine Antenne oder ein unterschiedlicher Satz von Antennen bereitgestellt sein kann, um verschiedene Drahtlosfunktionalität zu ermöglichen.
  • Eine integrierte Leistungsverwaltungsschaltung (Power Management Integrated Circuit, PMIC) 1215 koppelt sich mit Anwendungsprozessor 1210, um Leistungsverwaltung auf Plattformebene durchzuführen. Zu diesem Zweck kann PMIC 1215 Leistungsverwaltungsanforderungen an Anwendungsprozessor 1210 herausgeben, um wie gewünscht in gewisse leistungsarme Zustände einzutreten. Außerdem kann PMIC 1215 basierend auf Plattformbedingungen auch das Leistungsniveau anderer Komponenten von System 1200 steuern. Weiterhin kann PMIC 1215, wie hierin beschrieben, in Reaktion auf ein gegebenes Plattformereignis ein Drosselsignal an Anwendungsprozessor 1210 senden.
  • Um zu ermöglichen, dass Kommunikationsbeiträge gesendet und empfangen werden, können verschiedene Schaltungen zwischen Basisbandprozessor 1205 und einer Antenne 1290 eingekoppelt sein. Insbesondere können ein Hochfrequenz-Sendeempfänger (HF-Sendeempfänger) 1270 und ein Sendeempfänger eines drahtlosen lokalen Netzes (Wireless Local Area Network, WLAN-Sendeempfänger) 1275 vorhanden sein. Im Allgemeinen kann HF-Sendeempfänger 1270 verwendet werden, um drahtlos Daten und Anrufe gemäß einem gegebenen Drahtloskommunikationsprotokoll zu empfangen und zu senden, wie z.B. 3G- oder 4G-Drahtloskommunikationsprotokoll wie z.B. gemäß einem Codemultiplex-Protokoll (Code Division Multiple Access, CDMA-Protokoll), Global-System-for-mobile-Communication-Protokoll (GSM-Protokoll), Long-Term-Evolution-Protokoll (LTE-Protokoll) oder anderen Protokoll. Zusätzlich kann ein GPS-Sensor 1280 vorhanden sein. Andere Drahtloskommunikation wie z.B. Empfang oder Sendung von Funksignalen, z.B. AM/FM- und anderen Signalen, kann ebenfalls bereitgestellt sein. Zusätzlich kann über WLAN-Sendeempfänger 1275 lokale drahtlose Kommunikation realisiert werden.
  • Jetzt Bezug nehmend auf 13 ist ein Blockdiagramm eines anderen Beispielsystems gezeigt, mit dem Ausführungsformen verwendet werden können. In der Darstellung nach 13 kann System 1300 ein mobiles leistungsarmes System sein, wie z.B. ein Tabletcomputer, 2:1-Tablet, Phablet oder anderes Convertible- oder eigenständiges Tabletsystem. Wie dargestellt, ist ein SoC 1310 vorhanden und kann konfiguriert sein, als Anwendungsprozessor für das Gerät zu arbeiten, und das eine Leistungssteuerungs- und Drosselschaltung beinhalten kann, wie hierin beschrieben.
  • Eine Vielzahl von Geräten kann sich mit SoC 1310 koppeln. In der gezeigten Darstellung beinhaltet ein Speichersubsystem einen Flash-Speicher 1340 und einen DRAM 1345, die mit SoC 1310 gekoppelt sind. Zusätzlich ist ein Berührfeld 1320 mit dem SoC 1310 gekoppelt, um Anzeigefähigkeit und Benutzereingabe über Berührung bereitzustellen, einschließlich Bereitstellung einer virtuellen Tastatur auf einer Anzeige von Berührfeld 1320. Um leitungsgebundene Netzkonnektivität bereitzustellen, koppelt sich SoC 1310 mit einer Ethernet-Schnittstelle 1330. Ein Peripheriehub 1325 ist mit SoC 1310 gekoppelt, um Schnittstellenbildung mit verschiedenen Peripheriegeräten zu ermöglichen, wie sie z.B. mit System 1300 durch jedweden verschiedener Ports oder anderer Verbinder gekoppelt werden können.
  • Zusätzlich zu interner Leistungsverwaltungsschaltung und -funktionalität innerhalb von SoC 1310 ist eine PMIC 1380 mit SoC 1310 gekoppelt, um plattformbasierte Leistungsverwaltung bereitzustellen, z.B. basierend darauf, ob das System durch eine Batterie 1390 oder durch Wechselstrom über einen Wechselstromadapter 1395 versorgt wird. Zusätzlich zu dieser stromquellenbasierten Leistungsverwaltung kann PMIC 1380 ferner Plattform-Leistungsverwaltungsaktivitäten basierend auf Umgebungs- und Nutzungsbedingungen durchführen. Weiterhin kann PMIC 1380 Steuer- und Statusinformationen an SoC 1310 übermitteln, um verschiedene Leistungsverwaltungsaktionen innerhalb von SoC 1310 zu veranlassen. Weiterhin kann PMIC 1380, wie hierin beschrieben, in Reaktion auf ein gegebenes Plattformereignis ein Drosselsignal an SoC 1310 senden.
  • Noch Bezug nehmend auf 13 ist, um Drahtlosfähigkeiten bereitzustellen, eine WLAN-Einheit 1350 mit SoC 1310 und andererseits mit einer Antenne 1355 gekoppelt. In verschiedenen Implementierungen kann WLAN-Einheit 1350 Kommunikation gemäß einem oder mehreren Drahtlosprotokollen bereitstellen.
  • Wie ferner dargestellt, können sich mehrere Sensoren 1360 mit SoC 1310 koppeln. Zu diesen Sensoren können verschiedene Beschleunigungsmesser-, Umgebungs- und andere Sensoren zählen, einschließlich Benutzergestensensoren. Schlussendlich ist ein Audiocodec 1365 mit SoC 1310 gekoppelt, um eine Schnittstelle zu einem Audioausgabegerät 1370 bereitzustellen. Natürlich verstehe man, dass, obgleich in 13 mit dieser bestimmten Implementierung gezeigt, viele Varianten und Alternativen möglich sind.
  • Jetzt Bezug nehmend auf 14 ist ein Blockdiagramm eines repräsentativen Computersystems gezeigt. wie z.B. eines Notebooks, Ultrabooks™ oder anderen Systems kleinen Formfaktors. Ein Prozessor 1410 beinhaltet in einer Ausführungsform einen Mikroprozessor, Mehrkernprozessor, Multithreadprozessor, einen Ultra-Niederspannungs-Prozessor, einen Embedded-Prozessor oder ein anderes bekanntes Verarbeitungselement. In der dargestellten Implementierung wirkt Prozessor 1410 als eine Hauptverarbeitungseinheit und zentraler Hub zur Kommunikation mit vielen der verschiedenen Komponenten des Systems 1400. Als ein Beispiel ist Prozessor 1400 als SoC implementiert, und der eine Leistungssteuerungs- und Drosselschaltung beinhalten kann, wie hierin beschrieben.
  • Prozessor 1410 kommuniziert in einer Ausführungsform mit einem Systemspeicher 1415. Als veranschaulichendes Beispiel ist der Systemspeicher 1415 über mehrere Speichergeräte oder -module implementiert, um eine gegebene Menge an Systemspeicher bereitzustellen.
  • Um persistenten Speicher von Informationen wie z.B. Daten, Anwendungen, ein oder mehrere Betriebssysteme und so fort bereitzustellen, kann sich ebenfalls ein Massenspeicher 1420 mit Prozessor 1410 koppeln. In verschiedenen Ausführungsformen kann, um ein dünneres und leichteres Systemdesign zu ermöglichen sowie das Reaktionsverhalten des Systems zu verbessern, dieser Massenspeicher über ein SSD implementiert sein oder der Massenspeicher kann primär unter Verwendung eines Festplattenlaufwerks (Hard Disk Drive, HDD) mit einer kleineren Menge an SSD-Speicher implementiert sein, um als SSD-Cache zu wirken, um nichtflüchtige Speicherung von Kontextzustand und anderen derartigen Informationen bei Herunterfahrereignissen zu ermöglichen, sodass bei Neuinitialisierung von Systemaktivitäten ein schnelles Hochfahren erfolgen kann. Wie ebenfalls in 14 gezeigt, kann ein Flashgerät 1422 mit Prozessor 1410 gekoppelt sein, z.B. über eine serielle Peripherieschnittstelle (Serial Peripheral Interface, SPI). Dieses Flashgerät kann nichtflüchtigen Speicher von Systemsoftware einschließlich einer Basis-Ein- und -Ausgabe-Software (Basic Input/Output Software, BIOS) sowie andere Firmware des Systems bereitstellen.
  • Innerhalb von System 1400 können verschiedene Ein- und Ausgabegeräte (Input/Output, I/O-Geräte) vorhanden sein. Besonders gezeigt ist in der Ausführungsform nach 14 eine Anzeige 1424, die ein High-Definition-LCD- oder LED-Panel sein kann, das ferner einen Berührbildschirm 1425 bereitstellt. In einer Ausführungsform kann Anzeige 1424 mit Prozessor 1410 über eine Anzeigeverbindung gekoppelt sein, die als Hochleistungsgrafikverbindung implementiert sein kann. Berührbildschirm 1425 kann mit Prozessor 1410 über eine andere Verbindung gekoppelt sein, die in einer Ausführungsform eine I2C-Verbindung sein kann. Wie ferner in 14 gezeigt, kann zusätzlich zu Berührbildschirm 1425 Benutzereingabe über Berührung auch über ein Tastfeld 1430 erfolgen, das innerhalb des Chassis konfiguriert sein kann und ebenfalls mit derselben I2C-Verbindung wie Berührbildschirm 1425 gekoppelt sein kann.
  • Für Perceptual-Computing und andere Zwecke können innerhalb des Systems verschiedene Sensoren vorhanden sein und können auf unterschiedliche Art und Weise mit Prozessor 1410 gekoppelt sein. Gewisse Trägheits- und Umgebungssensoren können sich über einen Sensorhub 1440 mit Prozessor 1410 koppeln, z.B. über eine I2C-Verbindung. In der in 14 gezeigten Ausführungsform können diese Sensoren einen Beschleunigungsmesser 1441, einen Umgebungslichtsensor (Ambient Light Sensor, ALS) 1442, einen Kompass 1443 und ein Kreiselinstrument 1444 beinhalten. Zu anderen Umgebungssensoren können einer oder mehrere Thermosensoren 1446 zählen, die sich in einigen Ausführungsformen über einen Systemverwaltungsbus-Bus (System Management Bus, SMBus) mit Prozessor 1410 koppeln.
  • Wie ebenfalls in 14 gesehen, können sich verschiedene Peripheriegeräte über eine Low-Pin-Count-Verbindung (LPC-Verbindung) mit Prozessor 1410 koppeln. In der gezeigten Ausführungsform können verschiedene Komponenten über eine Embedded-Steuerung 1435 gekoppelt sein. Zu derartigen Komponenten können eine (z.B. über eine PS2-Schnittstelle gekoppelte) Tastatur 1436, ein Lüfter 1437 und ein Thermosensor 1439 zählen. In einigen Ausführungsformen kann sich Tastfeld 1430 ebenfalls über eine PS2-Schnittstelle mit EC 1435 koppeln. Zusätzlich kann sich auch ein Sicherheitsprozessor wie z.B. ein Trusted Platform Module (TPM) 1438 über diese LPC-Verbindung mit Prozessor 1410 koppeln.
  • System 1400 kann mit externen Geräten auf vielfältige Art und Weise kommunizieren, unter anderem drahtlos. In der in 14 gezeigten Ausführungsform sind verschiedene Drahtlosmodule vorhanden, von denen jedes einem Funkgerät entsprechen kann, das für ein bestimmtes Drahtloskommunikationsprotokoll konfiguriert ist. Eine Art und Weise der drahtlosen Kommunikation in einem Nahbereich wie z.B. einem Nahfeld kann die über eine NFC-Einheit 1445 sein, die in einer Ausführungsform über einen SMBus mit Prozessor 1410 kommunizieren kann. Man beachte, dass über diese NFC-Einheit 1445 Geräte in unmittelbarer Nähe zueinander kommunizieren können.
  • Wie ferner in 14 gesehen, können zu zusätzlichen Drahtloseinheiten andere Nahbereichs-Drahtlosengines einschließlich einer WLAN-Einheit 1450 und einer Bluetootheinheit 1452 zählen. Mithilfe von WLAN-Einheit 1450 kann Wi-Fi™-Kommunikation realisiert werden, während über Bluetootheinheit 1452 Nahbereichs-Bluetooth™-Kommunikation erfolgen kann. Diese Einheiten können mit Prozessor 1410 über eine gegebene Verbindung kommunizieren.
  • Darüber hinaus kann drahtlose Fernbereichskommunikation, z.B. gemäß einem Zellulär- oder anderen Drahtlosfernbereichsprotokoll, über eine WWAN-Einheit 1456 erfolgen, die wiederum sich mit einem Teilnehmeridentitätsmodul (Subscriber Identity Module, SIM) 1457 koppeln kann. Zusätzlich kann, um Empfang und Verwendung von Standortinformationen zu ermöglichen, auch ein GPS-Modul 1455 vorhanden sein. Man beachte, dass in der in 14 gezeigten Ausführungsform WWAN-Einheit 1456 und ein integriertes Erfassungsgerät wie z.B. ein Kameramodul 1454 über eine gegebene Verbindung kommunizieren können.
  • Ein integriertes Kameramodul 1454 kann in den Deckel eingegliedert sein. Um Audioeingänge und -ausgänge bereitzustellen, kann ein Audioprozessor über einen Digitalsignalprozessor (DSP) 1460 implementiert sein, der sich mit Prozessor 1410 über eine High-Definition-Audioverbindung (HDA-Verbindung) koppeln kann. In ähnlicher Weise kann DSP 1460 mit einem integrierten Codierer-Decodierer (CODEC) und Verstärker 1462 kommunizieren, der wiederum sich mit Ausgabelautsprechern 1463 koppeln kann, die innerhalb des Chassis implementiert sein können. In ähnlicher Weise können Verstärker und CODEC 1462 gekoppelt sein, um Audioeingaben von einem Mikrofon 1465 zu empfangen, das in einer Ausführungsform über Dual-Array-Mikrofone (wie z.B. ein Digitalmikrofonarray) implementiert sein kann, um Audioeingaben hoher Qualität bereitzustellen, um sprachaktivierte Steuerung verschiedener Operationen innerhalb des Systems bereitzustellen. Man beachte auch, dass Audioausgaben von Verstärker-CODEC 1462 einer Kopfhörerbuchse 1464 bereitgestellt werden können. Obgleich in der Ausführungsform nach 14 mit diesen bestimmten Komponenten gezeigt, verstehe man, dass der Umfang der vorliegenden Erfindung diesbezüglich nicht begrenzt ist.
  • Ausführungsformen können in vielen unterschiedlichen Systemarten implementiert sein. Jetzt Bezug nehmend auf 15 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 15 gezeigt, ist Mehrprozessorsystem 1500 ein Punkt-zu-Punkt-Verbindungs-System und beinhaltet einen ersten Prozessor 1570 und einen zweiten Prozessor 1580, die über eine Punkt-zu-Punkt-Verbindung 1550 gekoppelt sind. Wie in 15 gezeigt, können jede der Prozessoren 1570 und 1580 Mehrkernprozessoren sein, die erste und zweite Prozessorkerne beinhalten (d.h., Prozessorkerne 1574a und 1574b und Prozessorkerne 1584a und 1584b), obgleich potenziell viel mehr Kerne in den Prozessoren vorhanden sein können. Jeder der Prozessoren kann eine PCU 1575, 1585 oder andere Leistungsverwaltungslogik und eine Drosselschaltung 1577, 1587 beinhalten.
  • Noch Bezug nehmend auf 15 beinhaltet der erste Prozessor 1570 ferner einen Speichersteuerungshub (Memory Controller Hub, MCH) 1572 und Punkt-zu-Punkt-Schnittstellen (P-P-Schnittstellen) 1576 und 1578. In ähnlicher Weise beinhaltet der zweite Prozessor 1580 einen MCH 1582 und P-P-Schnittstellen 1586 und 1588. Wie in 15 gezeigt, koppeln die MCHs 1572 und 1582 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 1532 und einem Speicher 1534, die Teile von Systemspeicher (z.B. DRAM) sein können, die lokal an die jeweiligen Prozessoren angeschlossen sind. Der erste Prozessor 1570 und der zweite Prozessor 1580 können über P-P-Verbindungen 1562 bzw. 1564 mit einem Chipsatz 1590 gekoppelt sein. Wie in 15 gezeigt, beinhaltet Chipsatz 1590 P-P-Schnittstellen 1594 und 1598.
  • Außerdem beinhaltet Chipsatz 1590 eine Schnittstelle 1592, um Chipsatz 1590 durch eine P-P-Verbindung 1539 mit einer Hochleistungs-Grafikengine 1538 zu koppeln. Chipsatz 1590 wiederum kann über eine Schnittstelle 1596 mit einem ersten Bus 1516 gekoppelt sein. Wie in 15 gezeigt, können verschiedene Ein- und Ausgabegeräte (Input/Output, I/O-Geräte) 1514 mit dem ersten Bus 1516 zusammen mit einer Busbridge 1518 gekoppelt sein, die den ersten Bus 1516 mit einem zweiten Bus 1520 koppelt. Mit dem zweiten Bus 1520 können verschiedene Geräte gekoppelt sein, unter anderem beispielsweise in einer Ausführungsform eine Tastatur/Maus 1522, Kommunikationsgeräte 1526 und eine Datenspeichereinheit 1528 wie z.B. ein Plattenlaufwerk oder anderes Massenspeichergerät, das Code 1530 beinhalten kann. Ferner kann ein Audio-E/A 1524 mit dem zweiten Bus 1520 gekoppelt sein. Ausführungsformen können in andere Arten von Systemen eingegliedert sein, unter anderem in Mobilgeräte wie z.B. ein Smart-Mobiltelefon, einen Tabletcomputer, ein Netbook, ein Ultrabook™ und so fort.
  • Jetzt Bezug nehmend auf 16 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform gezeigt. Insbesondere ist in 16 ein Teil eines Systems 1600 dargestellt, das jedwede Art von Rechensystem sein kann, das von einem kleinen tragbaren Gerät wie z.B. einem Mobiltelefon, Tabletcomputer, Laptop-Computer und so fort bis zu einem größeren System wie z.B. einem Desktopsystem, Servercomputer und so fort reicht. In typischen Umgebungen von Ausführungsformen hierin kann das Rechensystem mindestens manchmal mit einer batteriebasierten Stromquelle versorgt werden, sodass ein elektrischer Plattformdefekt möglich sein kann. Obgleich der Umfang der vorliegenden Erfindung diesbezüglich nicht begrenzt ist, können derartige elektrische Defekte einen Batteriespannungsabfall unter ein Unterspannungs-Sperrniveau eines Spannungsreglers beinhalten. Ein anderes Beispiel kann ein Batterie-Kurzschlussschutz-Defekt sein. Plattformereignisse können auch unter Wechselstromversorgung auftreten. Beispielsweise weist auch ein Wechselstromadapter Überstrom- und Kurzschlussschutz-Mechanismen auf. Zum einen kann der Wechselstromadapter den Ausgangsstrom begrenzen, wenn er eine gewisse Schwelle erreicht, und die Spannung abfallen lassen; sobald die Spannung unter eine gewisse Schwelle abfällt, schaltet sich der Wechselstromadapter aus. Zum Wiederherstellen wird der Wechselstromadapter typischerweise aus der Steckdose gezogen. Zusätzlich verlangt eine programmierbare Stromversorgung typischerweise, dass die Versorgung den Strom begrenzt, wenn die Last mehr als einen Schwellstrom entnimmt, und schaltet ab, wen die Spannung unter eine Schwellspannung abfällt. Um einen derartigen elektrischen Defekt zu verhindern, kann ein Plattformagent wie z.B. eine integrierte Leistungsverwaltungsschaltung (Power Management Integrated Circuit, PMIC) eine Meldung herausgeben. Diese Meldung eines Plattformereignisses kann als ein Auslösen eines Plattformereignissignals in Reaktion auf die Erkennung eines möglichen nachteiligen Plattformereignisses bewirkt werden, wie z.B. eines elektrischen Defektes. Wie hierin beschrieben, kann dieses Plattformereignissignal verwendet werden, um Drosselung innerhalb eines Prozessors zu veranlassen.
  • Besonders wie in 16 dargestellt, beinhaltet System 1600 einen Prozessor 1610, der ein Mehrkernprozessor oder anderes SoC sein kann. In Ausführungsformen hierin kann Prozessor 1610 als Prozessorpaket implementiert sein und kann ein oder mehrere Halbleiterdies beinhalten. Wie gezeigt, beinhaltet Prozessor 1610 mehrere Verarbeitungselemente 16201-1620". In einigen Fällen können die Verarbeitungselemente 1620 homogene Verarbeitungselemente wie z.B. homogene Verarbeitungskerne sein. Jedoch können in vielen Ausführungsformen heterogene Verarbeitungselemente 1620 vorhanden sein, unter anderem Kerne, Grafikprozessoren, Steuerungen, spezialisierte Funktionseinheiten und so fort. In einigen Fällen können Zusammenstellungen von Verarbeitungselementen 1620 in sogenannte Domänen eingruppiert sein, die bei gemeinsamen oder unabhängigen Leistungszuständen arbeiten können.
  • Wie ferner in 16 dargestellt, beinhaltet Prozessor 1610 auch eine Drosselschaltung 1630. In der gezeigten Ausführungsform kann Drosselschaltung 1630 mehrere individuelle Drosselagenten 16301-1630" beinhalten. Wie dargestellt, kann Drosselschaltung 1630 eine verteilte Hardwareschaltung sein, wobei jeder Drosselagent 1630 einem entsprechenden Verarbeitungselement 1620 zugeordnet ist. Man verstehe jedoch, dass der Umfang der vorliegenden Erfindung diesbezüglich nicht begrenzt ist und in anderen Ausführungsformen eine andere Entsprechung als 1:1 möglich ist. In Ausführungsformen können Drosselschaltung 1630 und ihre bestandteilbildenden Drosselagenten 16301-1630" als Hardwareschaltungen implementiert sein. Außerdem kann, obgleich in der in 16 gezeigten Implementierung jeder Drosselagent 1630 einem entsprechenden Verarbeitungselement 1620 zugeordnet, aber von diesem getrennt ist, in einigen Fällen ein gegebener Drosselagent innerhalb eines entsprechenden Verarbeitungselementes 1620 beinhaltet sein.
  • Noch Bezug nehmend auf 16 ist ferner ein Leistungszielagent (Power Target Agent, PTA) 1640, ein Leistungsverwaltungsagent (Power Management Agent, PMA) 1650 und ein Nutzungsmonitor 1660 dargestellt. Obgleich in Bezug auf Prozessor 1610 als externe Komponenten gezeigt, können in einigen Ausführungsformen PTA 1640, PMA 1650 und Nutzungsmonitor 1660 mindestens zum Teil in Firmware und/oder Software implementiert sein, die auf einer oder mehreren Verarbeitungsengines 1620 von Prozessor 1610 ausgeführt wird. Beispielsweise kann PTA 1640 innerhalb eines Betriebssystems oder anderen Systemschedulers implementiert sein. Auf diese Weise empfängt PTA 1640 Informationen bezüglich eines Status der Stromquellenfähigkeit (z.B. Ladefähigkeit). PMA 1650 wiederum, der in einigen Ausführungsformen Firmware oder Leistungsverwaltungs-Mikrocode sein kann, kann auf einem oder mehreren Verarbeitungselementen 1620 ausgeführt werden. Als Beispiel kann ein dedizierter Kern oder Mikrocontroller verwendet werden, um PMA 1650 auszuführen, um den Stromverbrauch von Prozessor 1610 zu verwalten. Und Nutzungsmonitor 1660 kann ebenfalls innerhalb eines Betriebssystems oder anderen Systemschedulers implementiert sein, um das Benutzerverhalten zu überwachen und PMA 1650 Hinweisinformationen bereitzustellen. Nutzungsmonitor 1660 kann die Prozessorausnutzung nach Verbrauch (Batterielaufzeit) und Leistung optimieren. Man beachte, dass in einer Ausführungsform Nutzungsmonitor 1660 mit Leistungszielagent 1640 gebündelt sein kann, obgleich diese zwei Agenten unterschiedliche Funktionen wahrnehmen.
  • Wie ferner in 16 dargestellt, beinhaltet System 1600 ferner einen Plattformmonitor 1670. Plattformmonitor 1670 kann konfiguriert sein, Plattformereignisse zu überwachen und in Reaktion auf die Erkennung eines Plattformereignisses, das eine Drosselung auslösen soll, ein Drosselsignal durchzusetzen. Als ein Beispiel kann Plattformmonitor 1670 eine Hardwareschaltung beinhalten, um eine kritische Spannungsschiene mit einer Schwelle zu vergleichen. Wenn eine derartige Schienenspannung unter die Schwelle fällt, kann Plattformmonitor 1670 konfiguriert sein, das Drosselsignal auszugeben. Obgleich gewiss unterschiedliche Implementierungen möglich sind, kann in einer Ausführungsform Plattformmonitor 1670 als integrierte Leistungsverwaltungsschaltung (Power Management Integrated Circuit, PMIC), Ladesteuerung oder andere Plattform-Hardwarekomponente implementiert sein.
  • Während normalen Betriebs kann PTA 1640 Eingangsleistungsfähigkeits-Informationen empfangen und mindestens zum Teil darauf basierend eine Paket-Drosselleistungsschwelle oder ein -ziel bestimmen, die bzw. das ein maximal zulässiges Stromverbrauchsniveau für Prozessor 1610 während eines Plattformereignisses ist. Man beachte, dass dieses Paket-Drosselleistungsziel kleiner als ein gegebenes Leistungsziel oder - budget für den Prozessor sein kann. In einigen Fällen kann ein Prozessor mit mehreren Leistungsniveaus konfiguriert sein. Derartige Leistungsniveaus können ein oder mehrere niedrigere Langzeitleistungsbudgets oder -grenzen beinhalten (die der Prozessor im Mittel nicht überschreiten darf). Der Prozessor kann ferner mit einem höheren Momentanleistungsbudget konfiguriert sein, das das Langzeitleistungsbudget überschreiten kann. Man verstehe, dass in einigen Ausführungsformen jedes konfigurierte Leistungsbudget auch ein zugeordnetes Drosselleistungsziel aufweisen aufweisen kann.
  • Aus einer Meldung der Eingangsleistungsfähigkeits-Informationen oder anderer Plattforminformationen wie z.B. einer anderen Meldung hoher Belastung auf einem Plattformgerät kann PTA 1640 basierend mindestens zum Teil auf der verfügbaren Ladung einer Batteriequelle für System 1600 eine Paket-Drosselleistungsschwelle bestimmen. Als ein Beispiel einer anderen Meldung kann, wenn ein Modem mit einer hohen Leistungsspitze arbeiten muss, um zu einer entfernten Basisstation zu senden, das Modem das Signal durchsetzen, um den Prozessor momentan zu drosseln. Man beachte, dass in Ausführungsformen Leistungszielagent 1640 die Eingangsleistungsbedingung für Aktualisierungen auch dann überwachen kann, während eine Plattform durch eine Wechselstromquelle versorgt wird. Weiterhin kann basierend mindestens zum Teil auf der überwachten Eingangsleistungsbedingung PTA 1640 proaktiv das Paket-Drosselleistungsziel einstellen. PTA 1640 kann auch das Paket-Drosselleistungsziel an Drosselagenten von Drosselschaltung 1630 senden.
  • Leistungsverwaltungsagent 1650 wiederum kann basierend mindestens zum Teil auf Hinweisinformationen, die durch Nutzungsmonitor 1660 bereitgestellt werden, Übersetzungsinformationen generieren, um Drosselagenten in die Lage zu versetzen, die Paket-Drosselleistungsschwelle in Verarbeitungselement-Drosselleistungsschwellen oder - ziele zu transformieren. Als Beispiel können die Hinweisinformationen Prioritätshinweisen bezüglich Arbeitslasten entsprechen, die auf unterschiedlichen Arten von Verarbeitungselementen 1620 durchgeführt werden. In einer Ausführungsform ist die Hinweisinformation ein Zahlenwert für Leistungsverwaltungsagent 1650, um Parameter auszuwählen, die für Prozessor 1610 geeignet sind. Derartige Hinweisinformationen können eine Abstraktion sein, sodass das OS oder der Nutzungsmonitor 1660 nicht an einen bestimmten Prozessor gebunden ist (jene Rolle wird durch Leistungsverwaltungsagent 1650 wahrgenommen). In einer Ausführungsform kann Nutzungsmonitor 1660 konfiguriert sein, das Benutzerverhalten zu überwachen und Hinweisinformationen als einen Zähler bereitzustellen. Beispielsweise nehme man zwei unterschiedliche Arten von Benutzeraktivität an, nämlich Dateikopieraktivität und Spielaktivität. Bei dieser Anordnung kann Benutzermonitor 1660 die Hinweisinformationen mit einem ersten Hinweiswert (Hint-1) für die Dateikopieraktivität und einem zweiten Hinweiswert (Hint-2) und Spielaktivität ausgeben. Basierend mindestens zum Teil auf diesen Hinweisinformationen kann PMA 1650 Übersetzungsinformationen, z.B. in der Form von Steuersignalen, entsprechenden Drosselagenten 1630 bereitstellen. Leistungsverwaltungsagent 1650 kann in Reaktion auf diese bestimmte Hinweisinformation: wenn „Hint-1“ empfangen wird, ein 10-%-Übersetzungsverhältnis für Drosselagent 1630 festlegen und ein 90-%-Übersetzungsverhältnis für Drosselagent 16302 festlegen; und wenn „Hint-2“ empfangen wird, ein 50-%-Übersetzungsverhältnis für Drosselagent 16301 festlegen und ein 50-%-Übersetzungsverhältnis für Drosselagent 16302 festlegen. Jeder Drosselagent 1630 wiederum verwendet diese Übersetzungsinformationen und die Paket-Drosselleistungsschwelle, um zweckmäßige Drosselarbeitspunkte für ein oder mehrere zugeordnete Verarbeitungselemente 1620 zu bestimmen.
  • Man beachte, dass die obige Diskussion von Operationen, um ein Paket-Drosselleistungsziel und individuelle Verarbeitungselement-Drosselleistungsziele einzustellen, proaktiv während des normalen Betriebes erfolgen kann, z.B. gemäß gegebener Zeitdauern oder Ausführungsschleifen. Dann erfolgt während des Betriebes, wenn ein gegebenes Plattformereignis erkannt wird, das Prozessordrosselung auslösen muss, eine schnelle hardwarebasierte Operation mit niedriger Latenzzeit, um individuelle Verarbeitungselemente 1620 zu drosseln. Das heißt, dass, wenn Plattformmonitor 1670 eine Änderung in der Plattform identifiziert, wie z.B. ein Umschalten der Betriebsstromversorgung von einer Wechselstromquelle zur Batteriequelle, er ein Drosselsignal an Drosselschaltung 1630 sendet, um anzuzeigen, dass ein Plattformereignis eingetreten ist. Und in Reaktion auf dieses Drosselsignal zwingen individuelle Drosselagenten 1630 unverzüglich entsprechende Verarbeitungselemente 1620, bei keinem größeren als dem entsprechenden Drosselarbeitspunkt zu arbeiten, was Drosselung mit niedriger Latenzzeit ermöglicht. Man verstehe, dass, obgleich in der Ausführungsform nach 16 mit diesem hohen Level gezeigt, viele Varianten und Alternativen möglich sind.
  • Jetzt Bezug nehmend auf 17 ist ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Insbesondere ist Verfahren 1700 ein Verfahren zum Steuern von Plattform-Stromverbrauch durch einen Leistungszielagenten gemäß einer Ausführungsform sowie Überwachen von Benutzeraktivität durch einen Benutzermonitor. Auf diese Weise kann Verfahren 1700 durch Hardwareschaltungen, Software, Firmware und/oder Kombinationen davon durchgeführt werden. In einer bestimmten Ausführungsform können ein Leistungszielagent und ein Nutzungsmonitor mindestens zum Teil als Software implementiert sein, und in einer bestimmten Ausführungsform können die Agenten innerhalb eines Betriebssystems oder anderer übergeordneter Software beinhaltet sein.
  • Wie dargestellt, beginnt Verfahren 1700 durch Empfangen einer Meldung einer Fähigkeitsänderung der Eingangsleistungsquelle (Block 1710). Die Fähigkeitsänderung der Eingangsleistungsquelle kann die Batteriefähigkeit oder der Wechselstromquellenzustand sein. Die Batteriefähigkeit kann sich aufgrund des Batterieladezustands, der Temperatur oder des Alterungseffektes ändern. Die Wechselstromquelle kann ein USB-Stromversorgungshub sein, der die angebotene Leistung abhängig von der Zahl eingesteckter Anschlüsse ändert. Eine derartige Anzeige der Änderung der Eingangsleistungsfähigkeit kann eine Routinemeldung sein, die dem Plattformzielagenten von einer oder mehreren Plattformentitäten bereitgestellt wird, wie z.B. einer PMIC, einer Batteriestandsanzeige, einer USB-Stromversorgungssteuerung, einer Batterieladeschaltung, einem Spannungsregler und so fort. Beispielsweise kann eine periodische Meldung der Batteriefähigkeit (z.B. Ladeprozentsatz) bereitgestellt sein. Oder in anderen Fällen kann der Leistungszielagent routinemäßig diese Information abfragen.
  • In jedem Fall geht die Steuerung von Block 1710 zu Block 1720 über, wo ein Paket-Drosselleistungsziel basierend mindestens zum Teil auf dieser Fähigkeitsänderung festgelegt werden kann. Insbesondere kann, wie hierin beschrieben, eine Spitzenleistungsschwelle festgelegt werden, die mindestens zum Teil auf der Ladungsfähigkeit der Batterie basiert. Als ein repräsentatives Beispiel kann, wenn eine Plattform durch eine Batterie versorgt wird, der Leistungszielagent ein Paket-Drosselleistungsziel auf ein Niveau von 50 Watt (W), wenn die Batterie 80 % Ladung aufweist, und auf 30 W festlegen, wenn die Batterie 20 % Ladung aufweist. Man beachte, dass, auch während die Plattform mit einer Wechselstromquelle versehen ist, der Leistungszielagent konfiguriert sein kann, das Paket-Drosselleistungsziel auf 50 W festzulegen oder zu programmieren, wenn die Batterie 80 % Ladung aufweist, und 30 W zu programmieren, wenn die Batterie 20 % Ladung aufweist (nach dem obigen repräsentativen Beispiel). Bei Block 1730 kann dieses Paket-Drosselleistungsziel in einem Konfigurationsspeicher gespeichert werden. Beispielsweise kann diese Information in einem Drosselleistungsschwellen-Feld eines Konfigurationsregisters des Prozessors gespeichert werden. Zusätzlich kann der Leistungszielagent dieses Paket-Drosselleistungsziel an die Drosselagenten senden.
  • Der Leistungszielagent (oder ein anderer Teil eines Betriebssystems oder anderer Systemsoftware) kann ebenso Planungsaktivitäten durchführen. Somit kann, wie ferner in 17 dargestellt, bei Block 1740 der Leistungszielagent Arbeitslasten an die Verarbeitungselemente verplanen. Beispielsweise können rechenintensive Arbeitslasten an Kernverarbeitungselemente verplant werden, können grafikintensive Arbeitslasten an Grafikverarbeitungselemente verplant werden, können Netzarbeitslasten an Schnittstellensteuerungen verplant werden und so fort. Bei Block 1750 kann der Nutzungsmonitor einem Leistungsverwaltungsagenten Hinweisinformationen bereitstellen. Insbesondere können diese Hinweisinformationen Prioritätsinformationen bezüglich der Arbeitslasten betreffen, die auf den unterschiedlichen Arten von Verarbeitungselementen geplant sind. Beispielsweise können für rechenzentrierte Arbeitslasten die Kernverarbeitungselemente höhere Priorität aufweisen und können diese Hinweisinformationen somit selbiges anzeigen. Bei einer grafikintensiven Arbeitslast wiederum kann/können das/die Grafikverarbeitungselement(e) eine höhere Priorität aufweisen und somit können entsprechende Hinweisinformationen höherer Priorität für diese Verarbeitungselement(e) in diesem Fall bereitgestellt sein. Obgleich der Umfang der vorliegenden Erfindung diesbezüglich nicht begrenzt ist, können diese Hinweisinformationen in einer Ausführungsform die Form von Übersetzungsverhältnissen und so fort annehmen. Man verstehe, dass, obgleich in der Ausführungsform nach 17 mit diesem hohen Level gezeigt, viele Varianten und Alternativen möglich sind.
  • Jetzt Bezug nehmend auf 18 ist ein Flussdiagramm eines Verfahrens gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. Insbesondere wie in 18 gezeigt, ist Verfahren 1800 ein Verfahren zum Steuern von Stromverbrauch innerhalb eines Prozessors durch einen Leistungsverwaltungsagenten wie hierin beschrieben. Auf diese Weise kann Verfahren 1800 durch Hardwareschaltungen, Software, Firmware und/oder Kombinationen davon durchgeführt werden. In einer bestimmten Ausführungsform kann ein Leistungsverwaltungsagent mindestens zum Teil als Hardwareschaltung und Firmware implementiert sein, und in einer bestimmten Ausführungsform kann der Leistungsverwaltungsagent ein dediziertes Verarbeitungselement sein wie z.B. ein dedizierter Kern oder Mikrocontroller, um Leistungsverwaltungscode auszuführen.
  • Wie dargestellt, beginnt Verfahren 1800 durch Bestimmen eines Arbeitspunktes für jedes Verarbeitungselement basierend mindestens zum Teil auf einem Leistungsbudget und einer Arbeitslast (Block 1810). Beispielsweise nehme man an, dass ein Prozessor mit einem gegebenen Leistungsbudget wie z.B. einem TDP-Niveau oder anderen Langzeitleistungsniveau konfiguriert ist, bei dem der Prozessor arbeiten kann (und das in einem Konfigurationsspeicher des Prozessors gespeichert sein kann). Auch kann der Leistungsverwaltungsagent Informationen bezüglich auf den unterschiedlichen Verarbeitungselementen auszuführender Arbeitslasten aufweisen. Somit kann in einer Ausführungsform der Leistungsverwaltungsagent konfiguriert sein, den Arbeitspunkt jedes Verarbeitungselementes basierend mindestens zum Teil auf Anforderungen von Hostsoftware bestimmen, eine gewünschte Kombination von Stromversorgung und Leistung zu liefern. Auf diese Weise kann der Leistungsverwaltungsagent eine Zuteilung oder Budgetierung dieses Gesamtleistungsbudgets an jedes dieser Verarbeitungselemente vornehmen. Beispielsweise kann, wenn alle Verarbeitungselemente gleiche Arbeitslasten ausführen, für jedes der Verarbeitungselemente ein gemeinsamer Arbeitspunkt bestimmt werden. Stattdessen können in typischeren Szenarien einige Verarbeitungselemente höhere Arbeitslasten aufweisen und/oder können mehr Strom verbrauchen als andere Verarbeitungselemente. Auf diese Weise können asymmetrische Arbeitspunkte (wobei z.B. jeder aus einer Betriebsspannung und einer Betriebsfrequenz gebildet ist, neben anderen potenziellen Parametern) für jedes Verarbeitungselement bestimmt werden. Danach können bei Block 1820 diese Arbeitspunkte an die individuellen Verarbeitungselemente gesendet werden. In Reaktion auf diese Arbeitspunktinformationen werden die Verarbeitungselemente veranlasst, bei derartigen Arbeitspunkten zu arbeiten. Man verstehe, dass diese Operationen bei den Blöcken 1810 und 1820 während normalen Betriebes einer Plattform iterativ fortfahren können.
  • Noch Bezug nehmend auf 18 wird bei Raute 1830 bestimmt, ob Hinweisinformationen empfangen werden (z.B. von einem Nutzungsmonitor). Wenn bestimmt wird, dass keine derartigen Hinweisinformationen empfangen werden, geht die Steuerung als Nächstes zu Raute 1840 über, um zu bestimmen, ob ein Aktualisierungszeitraum abgeschlossen ist. Dieser Aktualisierungszeitraum ist eine Zeitdauer, bei der der Leistungsverwaltungsagent Leistungsbudget und aktuelle Arbeitslast analysieren kann, um zu bestimmen, ob Arbeitspunkte zu aktualisieren sind. Wenn dieser Aktualisierungszeitraum abgeschlossen ist, geht die Steuerung zurück zu Block 1810 über, der oben diskutiert wurde.
  • Noch Bezug nehmend auf 18 geht stattdessen, wenn bestimmt wird, dass aktualisierte Hinweisinformationen empfangen worden sind, die Steuerung zu Block 1850 über. Bei Block 1850 kann eine Übersetzung bestimmt werden. Insbesondere ist diese Übersetzung eine Form der Operation, um das Paket-Drosselleistungsziel zu nehmen und es zweckentsprechend unter den unterschiedlichen Verarbeitungselementen zuzuteilen. In Ausführungsformen kann der Leistungsverwaltungsagent diese Übersetzung basierend mindestens zum Teil auf den Hinweisinformationen durchführen, die vom Nutzungsmonitor empfangen werden. Auf diese Weise kann eine fairere Zuteilung verfügbaren Leistungsbudgets an die unterschiedlichen Verarbeitungselemente basierend auf ihrer Priorität, Kritikalität, Nützlichkeit für den Benutzer und so fort erfolgen.
  • In einer Ausführungsform kann die Übersetzung der Paket-zu-Element-Drosselleistung über einen Skalierfaktor erfolgen. In einem derartigen Beispiel nehme man an, dass ein Prozessor zwei Verarbeitungselemente beinhaltet (Kern und Grafikprozessor), und nehme man auch an, dass die Paket-Drosselleistungsschwelle gleich 50 W ist. Ferner nehme man zu Beispielzwecken an, dass, wenn eine Arbeitslast kernintensiv ist (z.B. Hostsoftware, die Dateien kopiert), der Leistungsverwaltungsagent Übersetzungsinformationen generiert, um ein 90-%-Verhältnis für den Kern und 10 % für den Grafikprozessor festzulegen. Mit dieser Verhältnis- oder Skalierfaktor-Anordnung entspricht das resultierende Leistungsbudget für die Verarbeitungselemente einem Niveau von 45 W für den Kern und 5 W für den Grafikprozessor. Man nehme stattdessen an, dass eine Arbeitslast (z.B. für Hostsoftware, die Bilder rendert) derart ist, dass der Leistungsverwaltungsagent ein 20-%-Verhältnis für den Kern und ein 80-%-Verhältnis an den Grafikprozessor festlegt. Mit dieser Verhältnis- oder Skalierfaktor-Anordnung entspricht das resultierende Leistungsbudget für die Verarbeitungselemente einem Niveau von 10 W für den Kern und 40 W für die Grafik.
  • Man beachte, dass Ausführungsformen unterschiedliche Techniken verwenden können, um den Leistungsverwaltungsagenten in die Lage zu versetzen, vorzusehen, dass Übersetzungsinformationen, um die Budgetierung zu definieren, dynamisch durch jeden Drosselagenten berechnet werden. Somit kann, obgleich unterschiedliche Arten und Weisen des Durchführens dieser Übersetzung möglich sind, in einigen Beispielen die Zuteilung gemäß Verhältnisinformationen erfolgen, die jedem der Verarbeitungselemente zugeordnet sind. Oder es können basierend auf der Übersetzungsoperation, die durch den Leistungsverwaltungsagenten durchgeführt wird, Zeigerinformationen bereitgestellt werden. Die Zeigerinformationen wiederum werden verwendet, um Zugriff auf eine Tabelle zu ermöglichen, die Arbeitspunktinformationen beinhaltet. In einem Beispiel, in dem die Übersetzungsinformationen Verhältnisinformationen beinhalten, kann eine Einstellung eines Verhältniswertes (z.B. Koeffizienten) für jedes Verarbeitungselement mindestens zum Teil auf den Hinweisinformationen basiert sein, die vom Nutzungsmonitor empfangen werden. Schlussendlich weiter Bezug nehmend auf 18 geht die Steuerung zu Block 1860 über, wobei die Übersetzungsinformationen an die Drosselagenten gesendet werden können. Obgleich in der Ausführungsform nach 18 mit diesem hohen Level gezeigt, sind viele Varianten und Alternativen möglich.
  • Jetzt Bezug nehmend auf 19 ist ein Flussdiagramm eines Verfahrens gemäß noch einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. Insbesondere ist Verfahren 1900 ein Verfahren zum Festlegen von Grenzen der Leistungsdrosselung von Verarbeitungselementen unter Verwendung eines Drosselagenten gemäß einer Ausführungsform. Auf diese Weise kann Verfahren 1900 durch Hardwareschaltungen, Software, Firmware und/oder Kombinationen davon durchgeführt werden. In einer bestimmten Ausführungsform können eine oder mehrere Hardwareschaltungen bereitgestellt sein (wie z.B. eine verteilte Drosselschaltung, die mehrere individuelle Hardwareschaltungen aufweist, von denen jede mindestens einem Verarbeitungselement zugeordnet ist), um Verfahren 1900 durchzuführen. Man beachte, dass Verfahren 1900, das verwendet wird, um individuelle Drosselleistungsziele für Plattformelemente festzulegen, gemäß einer sogenannten langsamen Schleife ausgeführt werden kann, weil diese Zielfestlegung in unkritischer Art und Weise durchgeführt werden kann, da derartige Operationen die Initialisierung mit niedriger Latenzzeit einer eigentlichen Drosseloperation nicht beeinträchtigen.
  • Wie in 19 gezeigt, beginnt Verfahren 1900 durch Empfangen eines Paket-Drosselleistungszieles von einem Leistungszielagenten und von Übersetzungsinformationen von einem Leistungsverwaltungsagenten (Block 1910). Obgleich in 19 als einzelne Operation gezeigt, verstehe man, dass diese zwei unterschiedlichen Werte asynchron (und von den zwei unterschiedlichen Entitäten) und gemäß einer gegebenen Zeitdauer empfangen werden können. In jedem Fall geht die Steuerung als Nächstes zu Block 1920 über, wo ein Drosselleistungsziel für Verarbeitungselemente basierend mindestens zum Teil auf diesen beiden Werten bestimmt werden kann. Als ein Beispiel berechnet ein Drosselagent ein Drosselleistungsziel eines Verarbeitungselementes (Pelement_throttle) als Funktion des Paket-Drosselleistungszieles (Ppackage_throttle) (wie durch den Leistungszielagenten festgelegt) und eines Koeffizienten (cpower_management) (wie durch den Leistungsverwaltungsagenten gegeben) z.B. gemäß der folgenden Gleichung: Pelement_throttle = f (Ppackage_throttle, Cpower_management). In einigen Ausführungsformen mag es keine bestimmten Zeitanforderungen für den Drosselagenten geben, um aus-Paket-zu-Element-Drosselleistungsschwellen zu übersetzen. Dies ist so, weil der Leistungszielagent die Drosselleistung nur in Reaktion auf bestimmte Plattformereignisse festlegen kann (z.B. Änderung es Batteriezustandes), die typischerweise eine Latenzzeit in der Größenordnung weniger Sekunden aufweisen können. Zusätzlich verstehe man, dass der Leistungsverwaltungsagent auf Arten der Hostsoftwareaktivität hin optimieren kann, die typischerweise keine harten Zeitanforderungen aufweisen.
  • In einer anderen Ausführungsform kann ein Drosselagent konfiguriert sein, eine Nachschlagtabelle zu pflegen (die durch Plattformfirmware, z.B. ein Basis-Ein- und - Ausgabesystem (Basic Input/Output System, BIOS) bereitgestellt sein kann). Bei dieser Ausführungsform stellt der Leistungsverwaltungsagent für einen gegebenen Satz von Paket-Drosselleistungsschwellen einen Zeiger auf die Nachschlagtabelle bereit.
  • Noch Bezug nehmend auf 19 geht die Steuerung als Nächstes zu Block 1930 über, wo ein Drosselarbeitspunkt für das Verarbeitungselement basierend auf diesem Verarbeitungselement-Drosselleistungsziel bestimmt werden kann. Als Beispiel kann der Drosselagent basierend auf diesem Verarbeitungselement-Drosselleistungsziel auf eine lokale Nachschlagtabelle zugreifen, um einen entsprechenden Arbeitspunkt zu identifizieren (z.B. Spannungs-Frequenz-Paar). Als Nächstes kann bei Block 1940 der Drosselarbeitspunkt in einem gegebenen Speicherort gespeichert werden, z.B. intern im Drosselagenten. Als ein Beispiel kann der Drosselagent einen Konfigurationsspeicher beinhalten, um einen bestimmten Drosselarbeitspunkt zu speichern, der, wie weiter unten beschrieben, gelesen und verwendet werden kann, um Drosselaktivitäten zu steuern, wenn eine Drosselanzeige empfangen wird.
  • Man beachte, dass bei Ausführungsformen hierin die resultierenden Arbeitspunkte für unterschiedliche Verarbeitungselement bei asymmetrischen Niveaus sein können, die mindestens zum Teil oder Priorität der Verarbeitungselement für eine gegebene Arbeitslast basieren können. Weiterhin verstehe man, dass mindestens ein Verarbeitungselement (und möglicherweise mehrere) veranlasst werden können, bei einem Drosselarbeitspunkt größer als ein minimaler Arbeitspunkt zu arbeiten. Das heißt, dass basierend auf Batteriefähigkeit (z.B. Ladungsniveau) ein Drosselarbeitspunkt höher als ein typischer Drosselpunkt sein kann (nämlich bei einem niedrigsten Arbeitspunkt, der in einem Konfigurationsspeicher des Prozessors gespeichert sein kann). Als Beispiel kann dieser niedrigste Arbeitspunkt einer Betriebsart mit niedriger Frequenz entsprechen, die eine niedrigste Frequenz und Spannung ist, bei der ein Prozessor arbeiten kann. Man verstehe, dass, obgleich in der Ausführungsform nach 19 mit diesem hohen Level gezeigt, viele Varianten und Alternativen möglich sind.
  • In Ausführungsformen können die Drosselagenten die berechneten Verarbeitungselement-Drosselleistungsziele verwenden, um ein oder mehrere zugeordnete Verarbeitungselemente zu veranlassen, bei einem gegebenen Arbeitspunkt zu arbeiten. Bei einem Kern oder Grafikprozessor kann der Arbeitspunkt in ein Betriebs-Spannungs-Frequenz-Paar übersetzt werden. Bei anderen Verarbeitungselementen wie z.B. einem Ein- und Ausgangsport (Input/Output, IO-Port) kann der Arbeitspunkt in andere Betriebsparameter übersetzt werden, wie z.B. dynamische Linkbreite, Bandbreite und so fort. Man beachte, dass die Drosselagenten konfiguriert sein können, die Drosselung unverzüglich auszuführen, um elektrische Plattformdefekte zu vermeiden. In einigen Fällen, wenn ein Verarbeitungselement nicht unverzüglich auf den angegebenen Drosselarbeitspunkt übergehen kann (z.B. aufgrund von Hardwareeinschränkungen), kann es zuerst in einen sicheren Zustand übergehen (z.B. einen Zwischen-Arbeitspunkt, der niedriger als ein aktueller Arbeitspunkt, aber höher als der Drosselarbeitspunkt liegt), bevor sie beim optimalen Drosselzustand einrastet.
  • Jetzt Bezug nehmend auf 20 ist ein Flussdiagramm eines Verfahrens gemäß noch einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. Insbesondere ist Verfahren 2000 nach 20 ein Verfahren zur Drosselung eines Verarbeitungselementes unter Verwendung eines Drosselagenten gemäß einer Ausführungsform. Auf diese Weise kann Verfahren 2000 durch Hardwareschaltungen, Software, Firmware und/oder Kombinationen davon durchgeführt werden. Bei Ausführungsformen hierin kann Verfahren 2000 durch eine gegebene Hardwareschaltung durchgeführt werden, nämlich einen gegebenen Drosselagenten. Durch Verwendung von Hardwareschaltungen (und potenzielle dedizierten Hardwareschaltungen, die einem oder mehreren Verarbeitungselementen zugeordnet sind), können Drosseloperationen mit sehr niedriger Latenzzeit erfolgen. Auf diese Weise kann Verfahren 2000 gemäß einer schnellen Schleife ausgeführt werden, um zu ermöglichen, dass Drosselung mit niedriger Latenzzeit erfolgt. Beispielsweise können in einer Ausführungsform Drosselagenten konfiguriert sein, zu veranlassen, dass Drosselung innerhalb eines Latenzzeitfensters von Submikrosekunden ab einer Anzeige eines Plattformereignisses erfolgt. Man beachte, dass durch Verwendung verteilter Hardwareschaltungen in Ausführungsformen der Overhead eines OS oder anderer Systemsoftware (und/oder Leistungssteuerungsschaltungen oder -firmware, wie z.B. eines Leistungsverwaltungsagenten), der zweckmäßige Drosselpunkte bestimmt und Verarbeitungselemente steuert, vermieden werden kann.
  • Wie in 20 dargestellt, beginnt Verfahren 2000 durch Lesen des Drosselarbeitspunktes (Block 2010). Wie oben diskutiert, kann dieser Drosselarbeitspunkt in einem Konfigurationsspeicher des Drosselagenten gespeichert sein. Als Nächstes wird bei Raute 2020 bestimmt, ob ein Drosselsignal empfangen wird, z.B. von einem Plattformmonitor. Wie hierin beschrieben, ist dieses Drosselsignal somit eine Anzeige an den Drosselagenten, dass der Prozessor jetzt so zu steuern ist, dass er bei einem Leistungsniveau nicht größer als die Paket-Drosselleistungsschwelle arbeitet. Auf diese Weise erfolgt, wenn (z.B.) die Wechselstromquelle entfernt wird, eine Anzeige eines Plattformereignisses (z.B. ein Drosselsignal). In Reaktion auf diese Anzeige kann der Prozessor konfiguriert sein, den Gesamt-Stromverbrauch auf das vorher programmierte Leistungsziel zu drosseln (z.B. 50 W bei 80 % Ladung und 30 W bei 20 %, wie durch den Leistungszielagenten festgelegt).
  • Wenn bestimmt wird, dass ein Drosselsignal empfangen worden ist, geht die Steuerung zu Block 2030 über, wobei das Verarbeitungselement veranlasst wird, beim Drosselarbeitspunkt zu arbeiten. Beispielsweise kann in Fällen, in denen ein Verarbeitungselement einen internen Taktgenerator und zugeordneten Spannungsregler beinhaltet, der Drosselagent einen Arbeitspunktbefehl senden, um zu veranlassen, dass eine oder mehrere von Betriebsfrequenz und Betriebsspannung intern im Verarbeitungselement aktualisiert werden. In anderen Fällen kann der Drosselagent mit anderen Steuerkomponenten kommunizieren, wie z.B. zugeordneten Taktgeneratoren, Spannungsreglern, Verbindungszustandsmaschinen und so fort, um zweckmäßige Betriebsparameter derart zu steuern, dass das Verarbeitungselement bei einem Leistungsniveau nicht größer als die Verarbeitungselement-Drosselleistungsschwelle arbeitet. Man verstehe, dass, obgleich in der Ausführungsform nach 20 mit diesem hohen Level gezeigt, viele Varianten und Alternativen möglich sind.
  • Die nachfolgenden Beispiele betreffen weitere Ausführungsformen.
  • In einem Beispiel beinhaltet ein Prozessor: mehrere Verarbeitungselemente, um Operationen durchzuführen; einen PMA, der mit den mehreren Verarbeitungselementen gekoppelt ist, um Stromverbrauch der mehreren Verarbeitungselemente zu steuern; und eine Drosselschaltung, die mit dem PMA gekoppelt ist. Die Drosselschaltung kann mehrere Drosselagenten beinhalten, wobei jeder einem der mehreren Verarbeitungselemente zugeordnet ist, wobei der PMA dazu dient, Übersetzungsinformationen an die Drosselschaltung zu übermitteln, und jeder der mehreren Drosselagenten dazu dient, ein Drosselleistungsniveau für ein Zugeordnetes der mehreren Verarbeitungselemente basierend mindestens zum Teil auf den Übersetzungsinformationen zu bestimmen.
  • In einem Beispiel umfassen die Übersetzungsinformationen Verhältnisinformationen, und der PMA dient dazu, die Übersetzungsinformationen basierend mindestens zum Teil auf Hinweisinformationen zu bestimmen, die von einem Nutzungsmonitor empfangen werden, wobei die Hinweisinformationen dazu dienen, relative Priorität der mehreren Verarbeitungselemente anzuzeigen.
  • In einem Beispiel umfassen die Übersetzungsinformationen Zeigerinformationen, und ein erster Drosselagent der mehreren Drosselagenten dient dazu, auf eine Nachschlagtabelle zuzugreifen, wobei ein erster Zeiger der Zeigerinformationen dazu dient, ein erstes Drosselleistungsniveau für ein erstes Verarbeitungselement zu bestimmen.
  • In einem Beispiel dient der erste Drosselagent dazu, einen ersten Arbeitspunkt für das erste Verarbeitungselement basierend auf dem ersten Drosselleistungsniveau zu bestimmen und eine Arbeitspunktaktualisierung an das erste Verarbeitungselement zu senden, um das erste Verarbeitungselement zu veranlassen, beim ersten Arbeitspunkt zu arbeiten.
  • In einem Beispiel ist der erste Arbeitspunkt größer als ein Minimalarbeitspunkt.
  • In einem Beispiel dient der Leistungszielagent dazu, ein Paket-Drosselleistungsniveau für den Prozessor basierend mindestens zum Teil auf einer Änderung an einer Ladungsfähigkeit einer Batterie festzulegen.
  • In einem Beispiel dient ein Plattformmonitor dazu, in Reaktion auf ein Plattformereignis ein Drosselsignal an die Drosselschaltung zu übermitteln, wobei das Plattformereignis eine Umschaltung der Plattform auf Batteriebetrieb umfasst, wobei der Leistungszielagent dazu dient, ferner das Paket-Drosselleistungsniveau an die Drosselschaltung zu übermitteln.
  • In einem Beispiel ist das Paket-Drosselleistungsniveau kleiner als die thermische Auslegungsleistung des Prozessors, und die Drosselschaltung dient dazu, mindestens einige der mehreren Verarbeitungselemente zu veranlassen, bei einem Arbeitspunkt größer als ein Minimalarbeitspunkt zu arbeiten.
  • In einem anderen Beispiel umfasst ein Verfahren Folgendes: in einer Leistungssteuerung eines SoC, das mehrere Verarbeitungsschaltungen beinhaltet, in Reaktion auf ein Plattformereignis Bestimmen von Übersetzungsinformationen für eine Drosselleistungsschwelle für das SoC basierend mindestens zum Teil auf Hinweisinformationen und Senden der Übersetzungsinformationen an mehrere Drosselagenten des SoC, wobei jeder der mehreren Drosselagenten, die mindestens einer der mehreren Verarbeitungsschaltungen zugeordnet sind, dazu dient, die mehreren Drosselagenten zu veranlassen, einen Arbeitspunkt mindestens einer der mehreren Verarbeitungsschaltungen auf ein Drosselniveau größer als ein Minimalarbeitspunkt basierend mindestens zum Teil auf den Übersetzungsinformationen zu aktualisieren.
  • In einem Beispiel umfasst das Verfahren ferner Empfangen der Hinweisinformationen von einem Nutzungsmonitor, wobei die Hinweisinformationen Prioritätsinformationen bezüglich der mehreren Verarbeitungsschaltungen umfassen.
  • In einem Beispiel umfasst das Verfahren ferner Folgendes: Empfangen der Übersetzungsinformationen in den mehreren Drosselagenten; Veranlassen durch einen ersten Drosselagenten der mehreren Drosselagenten, dass basierend auf einem ersten Übersetzungselement der Übersetzungsinformationen eine erste Verarbeitungsschaltung der mehreren Verarbeitungsschaltungen bei einem ersten Arbeitspunkt arbeitet; und Veranlassen durch einen zweiten Drosselagenten der mehreren Drosselagenten, dass basierend auf einem zweiten Übersetzungselement der Übersetzungsinformationen eine zweite Verarbeitungsschaltung der mehreren Verarbeitungsschaltungen bei einem zweiten Arbeitspunkt arbeitet, wobei der zweite Arbeitspunkt größer als der erste Arbeitspunkt ist und wobei gemäß den Hinweisinformationen die zweite Verarbeitungsschaltung eine höhere Priorität als die erste Verarbeitungsschaltung aufweist.
  • In einem Beispiel umfasst Bestimmen der Übersetzungsinformationen Generieren mehrerer Koeffizienten, von denen jeder einer der mehreren Verarbeitungsschaltungen zugeordnet ist, basierend mindestens zum Teil auf den Hinweisinformationen.
  • In einem Beispiel umfasst das Verfahren ferner Folgendes: in einem ersten Drosselagenten der mehreren Drosselagenten Berechnen eines ersten Drosselleistungsniveaus für eine erste Verarbeitungsschaltung der mehreren Verarbeitungsschaltungen basierend auf einem ersten Koeffizienten der mehreren Koeffizienten und einer Drosselleistungsgrenze für das SoC und basierend auf dem ersten Drosselleistungsniveau Veranlassen, dass die erste Verarbeitungsschaltung bei einem ersten Arbeitspunkt arbeitet, wobei der erste Arbeitspunkt größer als der Minimalarbeitspunkt ist.
  • In einem Beispiel umfasst das Verfahren ferner Folgendes: Veranlassen, dass die erste Verarbeitungsschaltung bei einem Zwischen-Arbeitspunkt arbeitet, wobei der Zwischen-Arbeitspunkt niedriger als ein vorheriger Arbeitspunkt, bei dem die erste Verarbeitungsschaltung arbeitete, und höher als der erste Arbeitspunkt ist; und Veranlassen, dass die erste Verarbeitungsschaltung beim ersten Arbeitspunkt arbeitet, nachdem eine Hardwarebegrenzung auf der ersten Verarbeitungsschaltung abgeschlossen ist.
  • In einem Beispiel umfasst Bestimmen der Übersetzungsinformationen Generieren mehrerer Zeiger, von denen jeder einer der mehreren Verarbeitungsschaltungen zugeordnet ist, basierend mindestens zum Teil auf den Hinweisinformationen.
  • In einem Beispiel umfasst das Verfahren ferner Folgendes: Zugreifen durch einen ersten Drosselagenten der mehreren Drosselagenten auf eine Tabelle unter Verwendung eines ersten Zeigers der mehreren Zeiger, um ein erstes Drosselleistungsniveau für eine erste Verarbeitungsschaltung der mehreren Verarbeitungsschaltungen zu erlangen; und basierend auf dem ersten Drosselleistungsniveau Veranlassen, dass die erste Verarbeitungsschaltung bei einem ersten Arbeitspunkt arbeitet, wobei der erste Arbeitspunkt größer als der Minimalarbeitspunkt ist.
  • In einem anderen Beispiel dient ein computerlesbares Medium, das Befehle beinhaltet, dazu, das Verfahren nach einem der obigen Beispiele durchzuführen.
  • In einem anderen Beispiel dient ein computerlesbares Medium, das Daten beinhaltet, dazu, durch mindestens eine Maschine verwendet zu werden, um mindestens eine integrierte Schaltung erzeugen, um das Verfahren nach irgendeinem der obigen Beispiele durchzuführen.
  • In einem anderen Beispiel umfasst eine Vorrichtung Mittel zum Durchführen des Verfahrens nach einem der obigen Beispiele.
  • In noch einem anderen Beispiel umfasst ein System Folgendes: eine erste Stromquelle, um dem System Strom bereitzustellen; eine zweite Stromquelle, um dem System Strom bereitzustellen; wobei die zweite Stromquelle eine Batterie umfasst; eine Ladeschaltung, um die zweite Stromquelle zu laden; eine integrierte Leistungsverwaltungsschaltung, die mit einem Prozessor gekoppelt ist, wobei die integrierte Leistungsverwaltungsschaltung dazu dient, in Reaktion auf ein Umschalten der Stromversorgung von der ersten Stromquelle auf die zweite Stromquelle ein Drosselsignal an den Prozessor zu senden, wobei mindestens eine der zweiten Stromquelle und der Ladeschaltung dazu dient, eine Ladungsfähigkeit der Batterie an den Prozessor zu übermitteln; und den Prozessor.
  • In einem Beispiel kann der Prozessor Folgendes beinhalten: mindestens einen Kern, um erste Befehle auszuführen; mindestens einen Grafikprozessor, um zweite Befehle auszuführen; eine Leistungssteuerung, die mit dem mindestens einen Kern und dem mindestens einen Grafikprozessor gekoppelt ist, um Stromverbrauch des mindestens einen Kerns und des mindestens einen Grafikprozessors gemäß einem Leistungsbudget für den Prozessor zu steuern, wobei ein Leistungszielagent dazu dient, ein Drosselleistungsbudget für den Prozessor basierend mindestens zum Teil auf der Ladungsfähigkeit proaktiv zu bestimmen. Die Leistungssteuerung wiederum dient dazu, Übersetzungsinformationen basierend auf einer Priorität des mindestens einen Kerns und des mindestens einen Grafikprozessors proaktiv zu bestimmen. Der Prozessor kann ferner eine Drosselschaltung beinhalten, die mit der Leistungssteuerung gekoppelt ist, wobei die Drosselschaltung dazu dient, ein erstes Drosselleistungsbudget für den mindestens einen Kern und ein zweites Drosselleistungsbudget für den mindestens einen Grafikprozessor basierend mindestens zum Teil auf den Übersetzungsinformationen und dem Drosselleistungsbudget proaktiv zu bestimmen und in Reaktion auf das Drosselsignal den mindestens einen Kern zu veranlassen, basierend auf dem ersten Drosselleistungsbudget bei einem ersten Arbeitspunkt zu arbeiten, und den mindestens einen Grafikprozessor zu veranlassen, basierend auf dem zweiten Drosselleistungsbudget bei einem zweiten Arbeitspunkt zu arbeiten.
  • In einem Beispiel umfassen die Übersetzungsinformationen Verhältnisinformationen und dient die Leistungssteuerung dazu, die Übersetzungsinformationen basierend mindestens zum Teil auf Hinweisinformationen zu bestimmen, die von einem Nutzungsmonitor empfangen werden, wobei die Hinweisinformationen dazu dienen, relative Priorität des mindestens einen Kerns und des mindestens einen Grafikprozessors anzuzeigen.
  • In einem Beispiel umfassen die Übersetzungsinformationen Zeigerinformationen und dient die Drosselschaltung dazu, mit einem ersten Zeiger der Zeigerinformationen auf eine Nachschlagtabelle zuzugreifen, um das erste Drosselleistungsbudget für den mindestens einen Kern zu bestimmen, und mit einem zweiten Zeiger der Zeigerinformationen auf die Nachschlagtabelle zuzugreifen, um das zweite Drosselleistungsbudget für den mindestens einen Grafikprozessor zu bestimmen.
  • In einem Beispiel dient die Leistungssteuerung dazu: den mindestens einen Kern zu veranlassen, bei einem Zwischen-Arbeitspunkt zu arbeiten, wobei der Zwischen-Arbeitspunkt niedriger als ein vorheriger Arbeitspunkt, bei dem der mindestens eine Kern arbeitete, und höher als der erste Arbeitspunkt ist; wobei der erste Arbeitspunkt größer als ein Minimalarbeitspunkt ist; und den mindestens einen Kern zu veranlassen, beim ersten Arbeitspunkt zu arbeiten, nachdem eine Hardwarebegrenzung auf dem mindestens einen Kern abgeschlossen ist.
  • Man verstehe, dass verschiedene Kombinationen der obigen Beispiele möglich sind.
  • Man beachte, dass die Begriffe „Schaltung“ und „Schaltungen“ hierin synonym verwendet werden. In der hier verwendeten Weise werden diese Begriffe und der Begriff „Logik“ verwendet, um sich einzeln oder in jedweder Kombination auf analoge Schaltungen, digitale Schaltungen, festverdrahtete Schaltungen, programmierbare Schaltungen, Prozessorschaltungen, Mikrocontrollerschaltungen, Hardwarelogikschaltungen, Zustandsmaschinenschaltungen und/oder jedwede andere Art physikalischer Hardwarekomponenten zu beziehen. Ausführungsformen können in vielen unterschiedlichen Arten von Systemen verwendet werden. Beispielsweise kann in einer Ausführungsform ein Kommunikationsgerät ausgelegt sein, die verschiedenen hierin beschriebenen Verfahren und Techniken durchzuführen. Natürlich ist der Umfang der vorliegenden Erfindung nicht auf ein Kommunikationsgerät begrenzt und können stattdessen andere Ausführungsformen auf andere Arten von Vorrichtungen zur Verarbeitung von Befehlen oder ein oder mehrere maschinenlesbare Medien gerichtet sein, die Befehle beinhalten, die in Reaktion darauf, dass sie auf einem Rechengerät ausgeführt werden, das Gerät veranlassen, ein oder mehrere der hierin beschriebenen Verfahren und Techniken durchzuführen.
  • Ausführungsformen können in Code implementiert sein und können auf einem nichtflüchtigen Speichermedium gespeichert sein, das darauf Befehle gespeichert aufweist, die verwendet werden können, um ein System zu programmieren, die Befehle durchzuführen. Ausführungsformen können auch in Daten implementiert sein und können auf einem nichtflüchtigen Speichermedium gespeichert sein, die, wenn sie durch mindestens eine Maschine verwendet werden, die mindestens eine Maschine veranlassen, mindestens eine integrierte Schaltung zu erzeugen, um eine oder mehrere Operationen durchzuführen. Noch weitere Ausführungsformen können in einem computerlesbaren Speichermedium implementiert sein, das Informationen beinhaltet, die, wenn sie in ein SoC oder einen anderen Prozessor hinein gefertigt werden, dazu dienen, das SoC oder den anderen Prozessor zu konfigurieren, eine oder mehrere Operationen durchzuführen. Zum Speichermedium können zählen, ohne jedoch darauf beschränkt zu sein, jedwede Art von Disk einschließlich Floppy-Disks, optischer Disks, Halbleiterlaufwerken (SSDs), Compact-Disk-Nur-Lese-Speicher (CD-ROMs), wieder beschreibbarer Compact-Disks (CD-RWs) und magneto-optischer Disks, Halbleitergeräten wie z.B. Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAMs) wie z.B. dynamischer Direktzugriffsspeicher (DRAMs), statischer Direktzugriffsspeicher (SRAMs), löschbarer programmierbarer Lese-Speicher (EPROMs), Flash-Speicher, elektrisch löschbarer programmierbarer Lese-Speicher (EEPROMs), magnetischer oder optischer Karten oder jedweder anderer zum Speichern elektronischer Befehle geeigneter Medientyp.
  • Während die vorliegende Erfindung in Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben worden ist, wird sich der Fachmann zahlreicher Modifikationen und Variationen davon bewusst sein. Es ist beabsichtigt, dass die angehängten Ansprüche alle derartigen Modifikationen und Variationen abdecken, sowie sie in den wahren Geist und Umfang dieser vorliegenden Erfindung fallen.

Claims (25)

  1. Prozessor, der Folgendes umfasst: mehrere Verarbeitungselemente, um Operationen durchzuführen; einen Leistungsverwaltungsagenten (Power Management Agent, PMA), der mit den mehreren Verarbeitungselementen gekoppelt ist, um Stromverbrauch der mehreren Verarbeitungselemente zu steuern; und eine Drosselschaltung, die mit dem PMA gekoppelt ist, wobei die Drosselschaltung mehrere Drosselagenten beinhaltet, wobei jeder einem der mehreren Verarbeitungselemente zugeordnet ist, wobei der PMA dazu dient, Übersetzungsinformationen an die Drosselschaltung zu übermitteln, und jeder der mehreren Drosselagenten dazu dient, ein Drosselleistungsniveau für ein Zugeordnetes der mehreren Verarbeitungselemente basierend mindestens zum Teil auf den Übersetzungsinformationen zu bestimmen.
  2. Prozessor nach Anspruch 1, wobei die Übersetzungsinformationen Verhältnisinformationen umfassen und wobei der PMA dazu dient, die Übersetzungsinformationen basierend mindestens zum Teil auf Hinweisinformationen zu bestimmen, die von einem Nutzungsmonitor empfangen werden, wobei die Hinweisinformationen dazu dienen, relative Priorität der mehreren Verarbeitungselemente anzuzeigen.
  3. Prozessor nach Anspruch 1, wobei die Übersetzungsinformationen Zeigerinformationen umfassen und wobei ein erster Drosselagent der mehreren Drosselagenten dazu dient, auf eine Nachschlagtabelle zuzugreifen, wobei ein erster Zeiger der Zeigerinformationen dazu dient, ein erstes Drosselleistungsniveau für ein erstes Verarbeitungselement zu bestimmen.
  4. Prozessor nach Anspruch 3, wobei der erste Drosselagent dazu dient, einen ersten Arbeitspunkt für das erste Verarbeitungselement basierend auf dem ersten Drosselleistungsniveau zu bestimmen und eine Arbeitspunktaktualisierung an das erste Verarbeitungselement zu senden, um das erste Verarbeitungselement zu veranlassen, beim ersten Arbeitspunkt zu arbeiten.
  5. Prozessor nach Anspruch 4, wobei der erste Arbeitspunkt größer als ein Minimalarbeitspunkt ist.
  6. Prozessor nach Anspruch 1, wobei der Leistungszielagent dazu dient, ein Paket-Drosselleistungsniveau für den Prozessor basierend mindestens zum Teil auf einer Änderung an einer Ladungsfähigkeit einer Batterie festzulegen.
  7. Prozessor nach Anspruch 6, wobei ein Plattformmonitor dazu dient, in Reaktion auf ein Plattformereignis ein Drosselsignal an die Drosselschaltung zu übermitteln, wobei das Plattformereignis eine Umschaltung der Plattform auf Batteriebetrieb umfasst, wobei der Leistungszielagent dazu dient, ferner das Paket-Drosselleistungsniveau an die Drosselschaltung zu übermitteln.
  8. Prozessor nach Anspruch 6, wobei das Paket-Drosselleistungsniveau kleiner als die thermische Auslegungsleistung des Prozessors ist und wobei die Drosselschaltung dazu dient, mindestens einige der mehreren Verarbeitungselemente zu veranlassen, bei einem Arbeitspunkt größer als ein Minimalarbeitspunkt zu arbeiten.
  9. Verfahren, das Folgendes umfasst: in einer Leistungssteuerung eines Einchipsystems (System on Chip, SoC), das mehrere Verarbeitungsschaltungen beinhaltet, in Reaktion auf ein Plattformereignis Bestimmen von Übersetzungsinformationen für eine Drosselleistungsschwelle für das SoC basierend mindestens zum Teil auf Hinweisinformationen; und Senden der Übersetzungsinformationen an mehrere Drosselagenten des SoC, wobei jeder der mehreren Drosselagenten, die mindestens einer der mehreren Verarbeitungsschaltungen zugeordnet sind, dazu dient, die mehreren Drosselagenten zu veranlassen, einen Arbeitspunkt mindestens einer der mehreren Verarbeitungsschaltungen auf ein Drosselniveau größer als ein Minimalarbeitspunkt basierend mindestens zum Teil auf den Übersetzungsinformationen zu aktualisieren.
  10. Verfahren nach Anspruch 9, das ferner Empfangen der Hinweisinformationen von einem Nutzungsmonitor umfasst, wobei die Hinweisinformationen Prioritätsinformationen bezüglich der mehreren Verarbeitungsschaltungen umfassen.
  11. Verfahren nach Anspruch 9, das ferner Folgendes umfasst: Empfangen der Übersetzungsinformationen in den mehreren Drosselagenten; Veranlassen durch einen ersten Drosselagenten der mehreren Drosselagenten, dass basierend auf einem ersten Übersetzungselement der Übersetzungsinformationen eine erste Verarbeitungsschaltung der mehreren Verarbeitungsschaltungen bei einem ersten Arbeitspunkt arbeitet; und Veranlassen durch einen zweiten Drosselagenten der mehreren Drosselagenten, dass basierend auf einem zweiten Übersetzungselement der Übersetzungsinformationen eine zweite Verarbeitungsschaltung der mehreren Verarbeitungsschaltungen bei einem zweiten Arbeitspunkt arbeitet, wobei der zweite Arbeitspunkt größer als der erste Arbeitspunkt ist und wobei gemäß den Hinweisinformationen die zweite Verarbeitungsschaltung eine höhere Priorität als die erste Verarbeitungsschaltung aufweist.
  12. Verfahren nach Anspruch 9, wobei Bestimmen der Übersetzungsinformationen Generieren mehrerer Koeffizienten, von denen jeder einer der mehreren Verarbeitungsschaltungen zugeordnet ist, basierend mindestens zum Teil auf den Hinweisinformationen umfasst.
  13. Verfahren nach Anspruch 12, das ferner Folgendes umfasst: in einem ersten Drosselagenten der mehreren Drosselagenten Berechnen eines ersten Drosselleistungsniveaus für eine erste Verarbeitungsschaltung der mehreren Verarbeitungsschaltungen basierend auf einem ersten Koeffizienten der mehreren Koeffizienten und einer Drosselleistungsgrenze für das SoC; und basierend auf dem ersten Drosselleistungsniveau Veranlassen, dass die erste Verarbeitungsschaltung bei einem ersten Arbeitspunkt arbeitet, wobei der erste Arbeitspunkt größer als der Minimalarbeitspunkt ist.
  14. Verfahren nach Anspruch 13, das ferner Folgendes umfasst: Veranlassen, dass die erste Verarbeitungsschaltung bei einem Zwischen-Arbeitspunkt arbeitet, wobei der Zwischen-Arbeitspunkt niedriger als ein vorheriger Arbeitspunkt, bei dem die erste Verarbeitungsschaltung arbeitete, und höher als der erste Arbeitspunkt ist; und Veranlassen, dass die erste Verarbeitungsschaltung beim ersten Arbeitspunkt arbeitet, nachdem eine Hardwarebegrenzung auf der ersten Verarbeitungsschaltung abgeschlossen ist.
  15. Verfahren nach Anspruch 9, wobei Bestimmen der Übersetzungsinformationen Generieren mehrerer Zeiger, von denen jeder einer der mehreren Verarbeitungsschaltungen zugeordnet ist, basierend mindestens zum Teil auf den Hinweisinformationen umfasst.
  16. Verfahren nach Anspruch 15, das ferner Folgendes umfasst: Zugreifen durch einen ersten Drosselagenten der mehreren Drosselagenten auf eine Tabelle unter Verwendung eines ersten Zeigers der mehreren Zeiger, um ein erstes Drosselleistungsniveau für eine erste Verarbeitungsschaltung der mehreren Verarbeitungsschaltungen zu erlangen; und basierend auf dem ersten Drosselleistungsniveau Veranlassen, dass die erste Verarbeitungsschaltung bei einem ersten Arbeitspunkt arbeitet, wobei der erste Arbeitspunkt größer als der Minimalarbeitspunkt ist.
  17. Maschinenlesbares Speichermedium, das maschinenlesbare Befehle beinhaltet, die, wenn sie ausgeführt werden, dazu dienen, ein Verfahren nach einem der Ansprüche 9 bis 16 zu implementieren.
  18. System, das Folgendes umfasst: eine erste Stromquelle, um dem System Strom bereitzustellen; eine zweite Stromquelle, um dem System Strom bereitzustellen, wobei die zweite Stromquelle eine Batterie umfasst; eine Ladeschaltung, um die zweite Stromquelle zu laden; eine integrierte Leistungsverwaltungsschaltung, die mit einem Prozessor gekoppelt ist, wobei die integrierte Leistungsverwaltungsschaltung dazu dient, in Reaktion auf ein Umschalten der Stromversorgung von der ersten Stromquelle auf die zweite Stromquelle ein Drosselsignal an den Prozessor zu senden, wobei mindestens eine der zweiten Stromquelle und der Ladeschaltung dazu dient, eine Ladungsfähigkeit der Batterie an den Prozessor zu übermitteln; und der Prozessor Folgendes umfasst: mindestens einen Kern, um erste Befehle auszuführen; mindestens einen Grafikprozessor, um zweite Befehle auszuführen; eine Leistungssteuerung, die mit dem mindestens einen Kern und dem mindestens einen Grafikprozessor gekoppelt ist, um Stromverbrauch des mindestens einen Kerns und des mindestens einen Grafikprozessors gemäß einem Leistungsbudget für den Prozessor zu steuern, wobei ein Leistungszielagent dazu dient, ein Drosselleistungsbudget für den Prozessor basierend mindestens zum Teil auf der Ladungsfähigkeit proaktiv zu bestimmen, wobei die Leistungssteuerung dazu dient, Übersetzungsinformationen basierend auf einer Priorität des mindestens einen Kerns und des mindestens einen Grafikprozessors proaktiv zu bestimmen; und eine Drosselschaltung, die mit der Leistungssteuerung gekoppelt ist, wobei die Drosselschaltung dazu dient, ein erstes Drosselleistungsbudget für den mindestens einen Kern und ein zweites Drosselleistungsbudget für den mindestens einen Grafikprozessor basierend mindestens zum Teil auf den Übersetzungsinformationen und dem Drosselleistungsbudget proaktiv zu bestimmen und in Reaktion auf das Drosselsignal den mindestens einen Kern zu veranlassen, basierend auf dem ersten Drosselleistungsbudget bei einem ersten Arbeitspunkt zu arbeiten, und den mindestens einen Grafikprozessor zu veranlassen, basierend auf dem zweiten Drosselleistungsbudget bei einem zweiten Arbeitspunkt zu arbeiten.
  19. System nach Anspruch 18, wobei die Übersetzungsinformationen Verhältnisinformationen umfassen und wobei die Leistungssteuerung dazu dient, die Übersetzungsinformationen basierend mindestens zum Teil auf Hinweisinformationen zu bestimmen, die von einem Nutzungsmonitor empfangen werden, wobei die Hinweisinformationen dazu dienen, relative Priorität des mindestens einen Kerns und des mindestens einen Grafikprozessors anzuzeigen.
  20. System nach Anspruch 18, wobei die Übersetzungsinformationen Zeigerinformationen umfassen und wobei die Drosselschaltung dazu dient, mit einem ersten Zeiger der Zeigerinformationen auf eine Nachschlagtabelle zuzugreifen, um das erste Drosselleistungsbudget für den mindestens einen Kern zu bestimmen, und mit einem zweiten Zeiger der Zeigerinformationen auf die Nachschlagtabelle zuzugreifen, um das zweite Drosselleistungsbudget für den mindestens einen Grafikprozessor zu bestimmen.
  21. System nach Anspruch 18, wobei die Leistungssteuerung dazu dient: den mindestens einen Kern zu veranlassen, bei einem Zwischen-Arbeitspunkt zu arbeiten, wobei der Zwischen-Arbeitspunkt niedriger als ein vorheriger Arbeitspunkt, bei dem der mindestens eine Kern arbeitete, und höher als der erste Arbeitspunkt ist, wobei der erste Arbeitspunkt größer als ein Minimalarbeitspunkt ist; und den mindestens einen Kern zu veranlassen, beim ersten Arbeitspunkt zu arbeiten, nachdem eine Hardwarebegrenzung auf dem mindestens einen Kern abgeschlossen ist.
  22. Prozessor, der Folgendes umfasst: mehrere Verarbeitungsmittel zum Durchführen von Operationen; einen Leistungsverwaltungsagenten (Power Management Agent, PMA), der mit den mehreren Verarbeitungsmitteln gekoppelt ist, um Stromverbrauch der mehreren Verarbeitungsmittel zu steuern; und ein Drosselmittel, das mit dem PMA gekoppelt ist, wobei das Drosselmittel mehrere Drosselagenten beinhaltet, wobei jeder einem der mehreren Verarbeitungsmittel zugeordnet ist, wobei der PMA dazu dient, Übersetzungsinformationen an das Drosselmittel zu übermitteln, und jeder der mehreren Drosselagenten dazu dient, ein Drosselleistungsniveau für ein Zugeordnetes der mehreren Verarbeitungsmittel basierend mindestens zum Teil auf den Übersetzungsinformationen zu bestimmen.
  23. Prozessor nach Anspruch 22, wobei die Übersetzungsinformationen Verhältnisinformationen umfassen und wobei der PMA dient dazu, die Übersetzungsinformationen basierend mindestens zum Teil auf Hinweisinformationen zu bestimmen, die von einem Nutzungsmonitor empfangen werden, wobei die Hinweisinformationen dazu dienen, relative Priorität der mehreren Verarbeitungsmittel anzuzeigen.
  24. Prozessor nach Anspruch 22, wobei die Übersetzungsinformationen Zeigerinformationen umfassen und wobei ein erster Drosselagent der mehreren Drosselagenten dazu dient, auf eine Nachschlagtabelle zuzugreifen, wobei ein erster Zeiger der Zeigerinformationen dazu dient, ein erstes Drosselleistungsniveau für ein erstes Verarbeitungsmittel zu bestimmen.
  25. Prozessor nach Anspruch 24, wobei der erste Drosselagent dazu dient, einen ersten Arbeitspunkt für das erste Verarbeitungsmittel basierend auf dem ersten Drosselleistungsniveau zu bestimmen und eine Arbeitspunktaktualisierung an das erste Verarbeitungsmittel zu senden, um das erste Verarbeitungsmittel zu veranlassen, beim ersten Arbeitspunkt zu arbeiten.
DE112019001522.2T 2018-05-02 2019-04-02 System, vorrichtung und verfahren zur optimierten drosselung eines prozessors Pending DE112019001522T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/969,198 2018-05-02
US15/969,198 US10739844B2 (en) 2018-05-02 2018-05-02 System, apparatus and method for optimized throttling of a processor
PCT/US2019/025299 WO2019212669A1 (en) 2018-05-02 2019-04-02 System, apparatus and method for optimized throttling of a processor

Publications (1)

Publication Number Publication Date
DE112019001522T5 true DE112019001522T5 (de) 2020-12-31

Family

ID=65229352

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019001522.2T Pending DE112019001522T5 (de) 2018-05-02 2019-04-02 System, vorrichtung und verfahren zur optimierten drosselung eines prozessors

Country Status (7)

Country Link
US (1) US10739844B2 (de)
JP (2) JP7416706B2 (de)
KR (2) KR20240016449A (de)
CN (2) CN117873302A (de)
BR (1) BR112020019436A2 (de)
DE (1) DE112019001522T5 (de)
WO (1) WO2019212669A1 (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11144105B2 (en) * 2018-10-30 2021-10-12 Dell Products L.P. Method and apparatus to provide platform power peak limiting based on charge of power assist unit
US11199894B2 (en) 2018-10-30 2021-12-14 Dell Products L.P. Method and apparatus for providing high bandwidth capacitor circuit in power assist unit
US10852808B2 (en) 2018-10-31 2020-12-01 Dell Products, L.P. Method and apparatus to distribute current indicator to multiple end-points
US10990149B2 (en) 2018-10-31 2021-04-27 Dell Products L.P. Method and apparatus for providing peak optimized power supply unit
US11106261B2 (en) 2018-11-02 2021-08-31 Nvidia Corporation Optimal operating point estimator for hardware operating under a shared power/thermal constraint
US11054882B2 (en) * 2019-02-21 2021-07-06 Apple Inc. Externally-triggered throttling
US10936048B2 (en) 2019-03-29 2021-03-02 Intel Corporation System, apparatus and method for bulk register accesses in a processor
US11442529B2 (en) 2019-05-15 2022-09-13 Intel Corporation System, apparatus and method for dynamically controlling current consumption of processing circuits of a processor
US11513576B2 (en) * 2019-06-01 2022-11-29 Apple Inc. Coherent power management system for managing clients of varying power usage adaptability
US11366506B2 (en) 2019-11-22 2022-06-21 Intel Corporation System, apparatus and method for globally aware reactive local power control in a processor
US11157067B2 (en) 2019-12-14 2021-10-26 International Business Machines Corporation Power shifting among hardware components in heterogeneous system
US11275663B2 (en) * 2020-06-08 2022-03-15 Intel Corporation Fast dynamic capacitance, frequency, and/or voltage throttling apparatus and method
US20220091656A1 (en) * 2020-09-23 2022-03-24 Intel Corporation Processor peak current control apparatus and method
US11722138B2 (en) * 2020-10-20 2023-08-08 Micron Technology, Inc. Dynamic power and thermal loading in a chiplet-based system
KR20220053246A (ko) * 2020-10-22 2022-04-29 삼성전자주식회사 전자 장치 및 전자 장치에서 전력 제어 방법
KR102283902B1 (ko) 2021-02-17 2021-08-02 주식회사 리빙케어 서버 컴퓨터용 메모리 모듈의 온도 데이터 검출방법
US11733757B2 (en) 2021-06-25 2023-08-22 Qualcomm Incorporated Hierarchical power management architecture for SoC-based electronic devices
US11747882B2 (en) * 2021-10-26 2023-09-05 Dell Products L.P. Central processor/accelerator power management system
US11921564B2 (en) 2022-02-28 2024-03-05 Intel Corporation Saving and restoring configuration and status information with reduced latency

Family Cites Families (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5163153A (en) 1989-06-12 1992-11-10 Grid Systems Corporation Low-power, standby mode computer
US5522087A (en) 1994-03-22 1996-05-28 Verifone Inc. System for selectively operating in different modes depending upon receiving signal from a host computer within a time window upon power up
US5590341A (en) 1994-09-30 1996-12-31 Intel Corporation Method and apparatus for reducing power consumption in a computer system using ready delay
US5621250A (en) 1995-07-31 1997-04-15 Ford Motor Company Wake-up interface and method for awakening an automotive electronics module
US5931950A (en) 1997-06-17 1999-08-03 Pc-Tel, Inc. Wake-up-on-ring power conservation for host signal processing communication system
US6823516B1 (en) 1999-08-10 2004-11-23 Intel Corporation System and method for dynamically adjusting to CPU performance changes
US7539885B2 (en) 2000-01-13 2009-05-26 Broadcom Corporation Method and apparatus for adaptive CPU power management
US7010708B2 (en) 2002-05-15 2006-03-07 Broadcom Corporation Method and apparatus for adaptive CPU power management
JP2001318742A (ja) 2000-05-08 2001-11-16 Mitsubishi Electric Corp コンピュータシステムおよびコンピュータ読み取り可能な記録媒体
KR100361340B1 (ko) 2000-05-15 2002-12-05 엘지전자 주식회사 씨피유 클럭 제어 방법
US6792392B1 (en) 2000-06-30 2004-09-14 Intel Corporation Method and apparatus for configuring and collecting performance counter data
US6748546B1 (en) 2000-09-26 2004-06-08 Sun Microsystems, Inc. Method and apparatus for reducing power consumption
US6829713B2 (en) 2000-12-30 2004-12-07 Intel Corporation CPU power management based on utilization with lowest performance mode at the mid-utilization range
US7058824B2 (en) 2001-06-15 2006-06-06 Microsoft Corporation Method and system for using idle threads to adaptively throttle a computer
US20030061383A1 (en) 2001-09-25 2003-03-27 Zilka Anthony M. Predicting processor inactivity for a controlled transition of power states
US7111179B1 (en) 2001-10-11 2006-09-19 In-Hand Electronics, Inc. Method and apparatus for optimizing performance and battery life of electronic devices based on system and application parameters
US6996728B2 (en) 2002-04-26 2006-02-07 Hewlett-Packard Development Company, L.P. Managing power consumption based on utilization statistics
US7051227B2 (en) 2002-09-30 2006-05-23 Intel Corporation Method and apparatus for reducing clock frequency during low workload periods
US6898689B2 (en) 2002-11-15 2005-05-24 Silicon Labs Cp, Inc. Paging scheme for a microcontroller for extending available register space
US7043649B2 (en) 2002-11-20 2006-05-09 Portalplayer, Inc. System clock power management for chips with multiple processing modules
US6971033B2 (en) 2003-01-10 2005-11-29 Broadcom Corporation Method and apparatus for improving bus master performance
US7089443B2 (en) 2003-01-23 2006-08-08 University Of Rochester Multiple clock domain microprocessor
JP4061492B2 (ja) 2003-02-10 2008-03-19 ソニー株式会社 情報処理装置および消費電力制御方法
US7093147B2 (en) 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
US7272732B2 (en) 2003-06-30 2007-09-18 Hewlett-Packard Development Company, L.P. Controlling power consumption of at least one computer system
TW200502847A (en) 2003-07-08 2005-01-16 Benq Corp Control device and method for reducing number of interrupts in a processor
US7146514B2 (en) 2003-07-23 2006-12-05 Intel Corporation Determining target operating frequencies for a multiprocessor system
US7272730B1 (en) 2003-07-31 2007-09-18 Hewlett-Packard Development Company, L.P. Application-driven method and apparatus for limiting power consumption in a processor-controlled hardware platform
US7194643B2 (en) 2003-09-29 2007-03-20 Intel Corporation Apparatus and method for an energy efficient clustered micro-architecture
US7770034B2 (en) 2003-12-16 2010-08-03 Intel Corporation Performance monitoring based dynamic voltage and frequency scaling
US20070156992A1 (en) 2005-12-30 2007-07-05 Intel Corporation Method and system for optimizing latency of dynamic memory sizing
US7451333B2 (en) 2004-09-03 2008-11-11 Intel Corporation Coordinating idle state transitions in multi-core processors
US9001801B2 (en) 2004-09-07 2015-04-07 Broadcom Corporation Method and system for low power mode management for complex Bluetooth devices
US7941585B2 (en) 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
US7426648B2 (en) 2004-09-30 2008-09-16 Intel Corporation Global and pseudo power state management for multiple processing elements
US7434073B2 (en) 2004-11-29 2008-10-07 Intel Corporation Frequency and voltage scaling architecture
US7502948B2 (en) 2004-12-30 2009-03-10 Intel Corporation Method, system, and apparatus for selecting a maximum operation point based on number of active cores and performance level of each of the active cores
US8041967B2 (en) 2005-02-15 2011-10-18 Hewlett-Packard Development Company, L.P. System and method for controlling power to resources based on historical utilization data
US7454632B2 (en) 2005-06-16 2008-11-18 Intel Corporation Reducing computing system power through idle synchronization
US7430673B2 (en) 2005-06-30 2008-09-30 Intel Corporation Power management system for computing platform
US8301868B2 (en) 2005-09-23 2012-10-30 Intel Corporation System to profile and optimize user software in a managed run-time environment
US20070079294A1 (en) 2005-09-30 2007-04-05 Robert Knight Profiling using a user-level control mechanism
US20070106827A1 (en) 2005-11-08 2007-05-10 Boatright Bryan D Centralized interrupt controller
US20070245163A1 (en) 2006-03-03 2007-10-18 Yung-Hsiang Lu Power management in computer operating systems
US7437270B2 (en) 2006-03-30 2008-10-14 Intel Corporation Performance state management
US7752468B2 (en) 2006-06-06 2010-07-06 Intel Corporation Predict computing platform memory power utilization
US7529956B2 (en) 2006-07-17 2009-05-05 Microsoft Corporation Granular reduction in power consumption
US7930564B2 (en) 2006-07-31 2011-04-19 Intel Corporation System and method for controlling processor low power states
US7730340B2 (en) 2007-02-16 2010-06-01 Intel Corporation Method and apparatus for dynamic voltage and frequency scaling
US8510581B2 (en) 2007-03-26 2013-08-13 Freescale Semiconductor, Inc. Anticipation of power on of a mobile device
JP2008257578A (ja) 2007-04-06 2008-10-23 Toshiba Corp 情報処理装置、スケジューラおよび情報処理置のスケジュール制御方法
US7971074B2 (en) 2007-06-28 2011-06-28 Intel Corporation Method, system, and apparatus for a core activity detector to facilitate dynamic power management in a distributed system
US20090150696A1 (en) 2007-12-10 2009-06-11 Justin Song Transitioning a processor package to a low power state
US8024590B2 (en) 2007-12-10 2011-09-20 Intel Corporation Predicting future power level states for processor cores
US7966506B2 (en) 2007-12-12 2011-06-21 Intel Corporation Saving power in a computer system
US8442697B2 (en) 2007-12-18 2013-05-14 Packet Digital Method and apparatus for on-demand power management
KR101459140B1 (ko) 2007-12-26 2014-11-07 엘지전자 주식회사 전원관리 제어 장치 및 방법
US8156362B2 (en) 2008-03-11 2012-04-10 Globalfoundries Inc. Hardware monitoring and decision making for transitioning in and out of low-power state
US8954977B2 (en) 2008-12-09 2015-02-10 Intel Corporation Software-based thread remapping for power savings
US8700943B2 (en) 2009-12-22 2014-04-15 Intel Corporation Controlling time stamp counter (TSC) offsets for mulitple cores and threads
US8943334B2 (en) 2010-09-23 2015-01-27 Intel Corporation Providing per core voltage and frequency control
US8688926B2 (en) 2010-10-10 2014-04-01 Liqid Inc. Systems and methods for optimizing data storage among a plurality of solid state memory subsystems
US8949637B2 (en) 2011-03-24 2015-02-03 Intel Corporation Obtaining power profile information with low overhead
US8769316B2 (en) 2011-09-06 2014-07-01 Intel Corporation Dynamically allocating a power budget over multiple domains of a processor
US8954770B2 (en) 2011-09-28 2015-02-10 Intel Corporation Controlling temperature of multiple domains of a multi-domain processor using a cross domain margin
US9074947B2 (en) 2011-09-28 2015-07-07 Intel Corporation Estimating temperature of a processor core in a low power state without thermal sensor information
US9026815B2 (en) 2011-10-27 2015-05-05 Intel Corporation Controlling operating frequency of a core domain via a non-core domain of a multi-domain processor
US8832478B2 (en) 2011-10-27 2014-09-09 Intel Corporation Enabling a non-core domain to control memory bandwidth in a processor
US8943340B2 (en) 2011-10-31 2015-01-27 Intel Corporation Controlling a turbo mode frequency of a processor
US9158693B2 (en) 2011-10-31 2015-10-13 Intel Corporation Dynamically controlling cache size to maximize energy efficiency
CN104169832B (zh) 2012-03-13 2017-04-19 英特尔公司 提供处理器的能源高效的超频操作
WO2013137862A1 (en) 2012-03-13 2013-09-19 Intel Corporation Dynamically controlling interconnect frequency in a processor
US9436245B2 (en) 2012-03-13 2016-09-06 Intel Corporation Dynamically computing an electrical design point (EDP) for a multicore processor
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
US9189045B2 (en) 2012-10-08 2015-11-17 Dell Products L.P. Power management system
US9383806B2 (en) 2013-04-17 2016-07-05 Apple Inc. Multi-core processor instruction throttling
US20160070327A1 (en) * 2014-09-08 2016-03-10 Qualcomm Incorporated System and method for peak current management to a system on a chip
US9710054B2 (en) 2015-02-28 2017-07-18 Intel Corporation Programmable power management agent
JP6123830B2 (ja) * 2015-03-30 2017-05-10 日本電気株式会社 情報処理装置、電力制御方法、プログラム、制御装置
US10613611B2 (en) * 2016-06-15 2020-04-07 Intel Corporation Current control for a multicore processor

Also Published As

Publication number Publication date
US10739844B2 (en) 2020-08-11
JP7416706B2 (ja) 2024-01-17
WO2019212669A1 (en) 2019-11-07
KR20200139150A (ko) 2020-12-11
KR20240016449A (ko) 2024-02-06
US20190041969A1 (en) 2019-02-07
CN117873302A (zh) 2024-04-12
CN111886562A (zh) 2020-11-03
BR112020019436A2 (pt) 2021-01-19
JP2021520537A (ja) 2021-08-19
JP2024024042A (ja) 2024-02-21

Similar Documents

Publication Publication Date Title
DE112019001522T5 (de) System, vorrichtung und verfahren zur optimierten drosselung eines prozessors
DE202015009867U1 (de) Einrichtung zum Bereitstellen einer Wärmeparametermeldung für eine Mehrchip-Baugruppe
DE102018125236A1 (de) System, Vorrichtung und Verfahren zum Selbsstest vor Ort in einem Diagnose-Ruhezustand
DE112017001805T5 (de) Bestimmen von thermischen obergrenzen in einem prozessor mit mehreren dies
DE112020001586T5 (de) System, gerät und verfahren zur leistungslizenzsteuerung eines prozessors
TW201638717A (zh) 平台裝置的執行動態功率控制
DE112020000231T5 (de) Einstellung von Anzeige Auffrischung Raten basierend auf Benutzer Aktivität
US10620682B2 (en) System, apparatus and method for processor-external override of hardware performance state control of a processor
DE112019000693T5 (de) System, vorrichtung und verfahren zur bereitstellung von hardware-rückmeldungsinformationen in einem prozessor
DE102018131595A1 (de) Verwaltung von Prozessorleistung basierend auf Benutzerunterbrechungen
DE112013005131T5 (de) Verfahren, Vorrichtung, System zur automatischen Abstimmung von Coderegionen
US10379904B2 (en) Controlling a performance state of a processor using a combination of package and thread hint information
DE102020134491A1 (de) System, Vorrichtung und Verfahren zum dynamischen Justieren von Plattformenergie und -leistung basierend auf Aufgabeneigenschaften
DE112019001001T5 (de) System, vorrichtung und verfahren für eine datengestützte niedrigenergiezustandssteuerung auf der grundlage von leistungsüberwachungsinformationen
DE112017003080T5 (de) Prozessor mit gleichzeitigem kern und gewebeausgang aus einem zustand mit geringer energie
US20230315192A1 (en) System, apparatus and method for dynamic thermal distribution of a system on chip
DE102020130910A1 (de) System, vorrichtung und verfahren für dynamische energiezustandsskalierung eines spannungsreglers für einen prozessor
US20240028101A1 (en) System, apparatus and method for globally aware reactive local power control in a processor
DE112017005000T5 (de) Prozessorspannungssteuerung unter verwendung eines beweglichen mittelwerts
DE112017004991T5 (de) Ausgleichssteuerung für variable energieschienen
DE112017003873T5 (de) Bereitstellung einer Schnittstelle für Herabstufungssteuerinformationen in einem Prozessor
DE102020128219A1 (de) System, Einrichtung und Verfahren zur Latenzüberwachung und Reaktion
DE102022121048A1 (de) Auswahl der leistungsversorgung für ein hostsystem
DE102018001896A1 (de) Hardwarebeschleuniger für das Auswählen von Datenelementen
DE102018114958A1 (de) Validieren eines Abbilds für eine umkonfigurierbare Vorrichtung

Legal Events

Date Code Title Description
R130 Divisional application to

Ref document number: 112019008040

Country of ref document: DE