DE112019001001T5 - System, vorrichtung und verfahren für eine datengestützte niedrigenergiezustandssteuerung auf der grundlage von leistungsüberwachungsinformationen - Google Patents

System, vorrichtung und verfahren für eine datengestützte niedrigenergiezustandssteuerung auf der grundlage von leistungsüberwachungsinformationen Download PDF

Info

Publication number
DE112019001001T5
DE112019001001T5 DE112019001001.8T DE112019001001T DE112019001001T5 DE 112019001001 T5 DE112019001001 T5 DE 112019001001T5 DE 112019001001 T DE112019001001 T DE 112019001001T DE 112019001001 T5 DE112019001001 T5 DE 112019001001T5
Authority
DE
Germany
Prior art keywords
core
low power
processor
power state
metadata
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
DE112019001001.8T
Other languages
English (en)
Inventor
Michael W. Chynoweth
Rajshree Chabukswar
Eliezer Weissmann
Jason W. Brandt
Alexander Gendler
Ahmad Yasin
Patrick Konsor
Sneha Gohad
William Freelove
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 DE112019001001T5 publication Critical patent/DE112019001001T5/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/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/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/3246Power saving characterised by the action undertaken by software initiated power-off
    • 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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3452Performance evaluation by statistical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • 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
    • 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
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Power Sources (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

In einer Ausführungsform enthält ein Prozessor einen oder mehrere Kerne mit einer Cache-Speicherhierarchie; einen mit dem einen oder den mehreren Kernen gekoppelten Leistungsüberwacher, wobei der Leistungsüberwacher die Leistung des einen oder der mehreren Kerne überwachen soll, wobei der Leistungsüberwacher die Pipeline-Kosten-Metadaten mindestens teilweise auf der Grundlage von Zählinformationen berechnen soll, die mit der Cache-Speicherhierarchie verknüpft sind; und einen Energie-Controller, der mit dem Leistungsüberwacher gekoppelt ist, wobei der Energie-Controller die Pipeline-Kosten-Metadaten empfangen soll und mindestens teilweise auf der Grundlage der Pipeline-Kosten-Metadaten einen Niedrigenergiezustand bestimmen soll, in den der eine oder die mehreren Kerne eintreten sollen. Es werden noch andere Ausführungsformen beschrieben und beansprucht.

Description

  • Technisches Gebiet
  • Ausführungsformen betreffen die Energieverwaltung eines Systems, und betreffen insbesondere die Energieverwaltung eines Mehrkernprozessors.
  • Hintergrund
  • Fortschritte in der Halbleiterverarbeitung und beim Logikdesign haben eine Erhöhung der Menge an Logik ermöglicht, die in integrierten Schaltkreisvorrichtungen untergebracht werden kann. Infolgedessen haben sich die Konfigurationen von Computersystemen von einem einzelnen oder mehreren integrierten Schaltkreisen in einem System zu mehreren Hardware-Threads, mehreren Kernen, mehreren Vorrichtungen und/oder kompletten Systemen auf einzelnen integrierten Schaltkreisen entwickelt. In dem Maße, wie die Dichte von integrierten Schaltkreisen zugenommen hat, ist auch der Leistungsbedarf für Computersysteme (von eingebetteten Systemen bis hin zu Servern) gestiegen. Darüber hinaus haben Ineffizienzen bei der Software und ihre Anforderungen an die Hardware ebenfalls zu einem Anstieg des Energieverbrauchs von Computervorrichtungen geführt. Einige Studien deuten sogar darauf hin, dass Computervorrichtungen einen beträchtlichen Prozentsatz der gesamten Stromversorgung eines Landes, wie zum Beispiel der Vereinigten Staaten von Amerika, verbrauchen. Infolgedessen besteht in höchstem Maße Bedarf an Energieeffizienz und Energieeinsparung im Zusammenhang mit integrierten Schaltkreisen. Dieser Bedarf wird in dem Maße zunehmen, wie Server, Desktop-Computer, Notebooks, Ultrabooks™, Tablets, Mobiltelefone, Prozessoren, eingebettete Systeme usw. immer mehr Verbreitung finden (von der Einbindung in den typischen Computer, in Autos und Fernsehgeräte bis hin zur Biotechnologie).
  • Eine Möglichkeit, den Stromverbrauch in einem Prozessor zu reduzieren, besteht darin, einen oder mehrere Kerne in Niedrigenergiezustände zu versetzen, wenn sie nicht gebraucht werden. Falsche Entscheidungen bezüglich des richtigen Versetzens von Kernen in Niedrigenergiezustände (und bezüglich der konkreten Niedrigenergiezustände selbst) können jedoch Leistung, Reaktionsvermögen, Benutzerfreundlichkeit und/oder Dienstgüte gefährden. Solche Bedenken treten besonders deutlich zutage, wenn Software einen bestimmten Niedrigenergiezustand anfordert, ohne Einblick in den tatsächlichen Prozessorbetrieb und die Auswirkungen des Niedrigenergiezustands auf den Betrieb zu haben.
  • Figurenliste
    • 1 ist ein Blockdiagramm eines Abschnitts 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 mit mehreren Kernen.
    • 5 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 6 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer anderen Ausführungsform.
    • 7 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer weiteren Ausführungsform.
    • 8 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß 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 SoC gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 11 ist ein Blockdiagramm eines anderen beispielhaften SoC gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 12 ist ein Blockdiagramm eines beispielhaften Systems, mit dem Ausführungsformen verwendet werden können.
    • 13 ist ein Blockdiagramm eines anderen beispielhaften Systems, 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, das ein IP-Kern-Entwicklungssystem veranschaulicht, das zur Herstellung eines integrierten Schaltkreises verwendet wird, um Operationen gemäß einer Ausführungsform auszuführen.
    • 17 ist ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 18 ist ein Flussdiagramm eines anderen Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 19 ist ein Flussdiagramm eines Verfahrens gemäß einer weiteren Ausführungsform der vorliegenden Erfindung.
  • Detaillierte Beschreibung
  • In verschiedenen Ausführungsformen können die in einem Prozessor verfügbaren Informationen, die zum Beispiel in einer Leistungsüberwachungseinheit des Prozessors erfasst und analysiert werden können, dazu verwendet werden, datengestützte Entscheidungen über zweckmäßige Niedrigenergiezustände für den Prozessor zu treffen. Genauer gesagt, können, wie im vorliegenden Text beschrieben, Leistungsüberwachungsinformationen von einer Leistungsüberwachungseinheit an einen Energie-Controller des Prozessors übermittelt werden, um den Energie-Controller in die Lage zu versetzen, bessere, datengestützte Entscheidungen hinsichtlich zweckmäßiger Niedrigenergiezustände zu treffen, in die ein oder mehrere Kerne und/oder andere Verarbeitungs-Engines des Prozessors eintreten können.
  • In typischen Systemen interagieren Software und Prozessor-Hardware, um zu bestimmen, wann in einen Niedrigenergiezustand (wie zum Beispiel ein inaktiver Zustand gemäß dem Advanced Configuration and Power Interface (ACPI)-Standard, der als ein gegebener Nicht-C0-Zustand aufgelistet ist und auch als Ruhe- oder C-Zustand bezeichnet wird) eingetreten werden soll und welche Stufe eines Kern-/Package-C-Zustands erreicht werden kann, ohne unerwünschte Auswirkungen auf Leistung, Reaktionsvermögen, Benutzerfreundlichkeit oder Dienstgüte (Quality Of Service, QoS) zu riskieren. Ohne eine Ausführungsform kann jedoch eine Software-Entität, wie zum Beispiel ein Betriebssystem (Operating System, OS) oder ein Treiber, falsche Hinweise geben, die bei aktivierten Ruhezuständen zu Leistungseinbußen führen können, wenn die Prozessor-Hardware diese falschen Hinweise nicht erkennt.
  • In Ausführungsformen kann ein Prozessor-Energie-Controller bestimmte Leistungsüberwachungsinformationen berücksichtigen, die er von dem Leistungsüberwacher erhält, um einen zweckmäßigen Niedrigenergiezustand für einen Kern/Prozessor zu bestimmen, der ein anderer Niedrigenergiezustand sein kann als der, der durch eine Software-Entität angefordert wird. Die Leistungsverschlechterung ohne eine Ausführungsform kann auf die Latenz beim Verlassen des Ruhezustands und die Kosten für das Wiederauffüllen gelöschter Architekturzustände während des letzten Ruhezustands zurückzuführen sein (zum Beispiel eines oder mehrere von einem Data Translation Lookaside Buffer (DTLB), Instruction TLB (ITLB), Level 1 (L1) Instruction Cache, L1 Data Cache und Level 2 (L2) Cache).
  • Zusätzlich zu Leistungsüberwachungsinformationen bezüglich des Cache-Speicherbetriebes können Ausführungsformen des Weiteren Leistungsüberwachungsinformationen bezüglich der Interrupt-Aktivität des Prozessors verwenden. Dies ist so, da es bestimmte Umstände geben kann, die die QoS gefährden können, wenn ein tiefer Ruhezustand erreicht wird. Zu solchen Umständen können Fälle einer höheren Interruptratenaktivität gehören, wo Verzögerungen beim Reagieren auf einen Interrupt zu Problemen bei der Dienstgüte führen könnten, oder wenn der momentan ausgeführte Code in hohem Maße von der Leistung eines der Caches abhängig ist, die geleert werden.
  • Durch die Verwendung von Leistungsüberwachungsinformationen, wie im vorliegenden Text beschrieben, können Ausführungsformen bestimmen, wann das Eintreten in tiefere Ruhezustände Leistung kosten kann, einschließlich der höheren Kosten, die durch Fehlzugriffe in einem oder mehreren Cache-Speichern entsteht, sowie, wenn die Dienstgüte während einer hohen Interrupt-Rate beeinträchtigt werden könnte. Genauer gesagt, nutzen Ausführungsformen indikative Leistungsüberwachungsstatistiken in synergistischer Weise, um die Kosten zum Beispiel von verschiedenen Cache-Leerungen zu bestimmen. Auf diese Weise kann ein Energie-Controller intelligentere Entscheidungen darüber treffen, welche Architekturkomponenten bedenkenlos geleert werden können, um eine höhere Leistung zu erhalten. In konkreten Ausführungsformen des vorliegenden Textes kann der Energie-Controller die Kosten der Cache-Leerungen vergleichen, wenn zuvor verschiedene C-Zustände erreicht (und verlassen) wurden. Der Energie-Controller kann darüber hinaus Interrupt-Informationen von dem Leistungsüberwacher in synergistischer Weise nutzen, um zusätzliche Situationen zu identifizieren, die nicht zu tieferen Ruhezuständen beitragen, wie zum Beispiel beim Vorliegen hoher Interrupt-Raten.
  • Es ist zu beachten, dass die letztendlichen Entscheidungen durch den Energie-Controller hinsichtlich eines zweckmäßigen Niedrigenergiezustandsbetriebes unter Verwendung von Daten von dem Leistungsüberwacher für die Software transparent sein können. Anders ausgedrückt, ist der Energie-Controller so konfiguriert, dass er OS/Treiber-Anforderungen (ohne Rückmeldung an die Software) außer Kraft setzt, indem er Herabstufungs- und Heraufstufungsentscheidungen bezüglich des C-Zustands trifft. Ein Herabstufungsbetrieb findet statt, wenn eine Software-Entität eine Anforderung für einen gegebenen Niedrigenergiezustand stellt und der Energie-Controller den Eintritt in einen weniger tiefen Niedrigenergiezustand veranlasst. Und ein Heraufstufungsbetrieb findet statt, wenn eine Software-Entität eine Anforderung für einen gegebenen Niedrigenergiezustand stellt und der Energie-Controller den Eintritt in einen tieferen Niedrigenergiezustand veranlasst.
  • Durch die synergistische Nutzung von Informationen von einem Leistungsüberwacher, wie im vorliegenden Text beschrieben, können Ausführungsformen bessere Entscheidungen im Zusammenhang mit Ruhezuständen treffen. Somit kann ein Energie-Controller, mindestens teilweise auf der Grundlage dieser Informationen, bestimmen, ob und wann er (im Vergleich zu Software-Anforderungen) mehr oder weniger stark in Bezug auf den Betrieb im Niedrigenergiezustand eingreifen soll. Ausführungsformen bieten darüber hinaus einen dynamischen Rahmen, der es ermöglicht, einen Prozessor auf der Basis von Laufzeit-Heuristiken ganz oder teilweise abzuschalten, um so benutzerfreundlichere Entscheidungen treffen zu können.
  • In einigen Ausführungsformen können die Leistungsüberwachungsinformationen in Form von Pipeline-Kosten-Metadaten vorliegen. Zum Beispiel kann der Leistungsüberwacher Verhältnisinformationen senden, die dynamische Schätzungen bezüglich der Kosten des Löschens verschiedener Architekturzustände enthalten, wenn tiefere und weniger tiefe C-Zustände erreicht werden. Zu beispielhaften Kosten können Informationen über die Kosten von Fehlzugriffen in einer Vielzahl verschiedener Cache-Speicherstrukturen, einschließlich ITLB/DTLB/L1I/L1D/L2, gehören, wenn weniger tiefe und tiefere Ruhezustände erreicht werden. Mit diesen Informationen kann der Energie-Controller dynamisch bessere datengestützte Entscheidungen darüber treffen, wann er Herabstufungen und Heraufstufungen zulässt, und den zweckmäßigen C-Zustand für die beste Leistung/Leistungseffizienz wählen. Die Leistungsüberwachungsinformationen können des Weiteren Interruptraten-Metadaten enthalten, damit der Energie-Controller Bedingungen wie zum Beispiel hohe Interrupt-Raten in jedem Kern detektieren kann, die Bedingungen erzeugen könnten, die die Leistung, das Reaktionsvermögen oder die Dienstgüte beeinträchtigen könnten, wenn ein tieferer Ruhezustand versucht werden würde.
  • Wir wenden uns nun Tabelle 1 zu, wo ein Beispiel für Pipeline-Kosten-Metadaten für verschiedene Cache-Speicher für mehrere Niedrigenergiezustände gezeigt ist. Solche Verhältnisse/Werte können an einen Energie-Controller gesendet werden, um zweckmäßige Entscheidungen über Niedrigenergiezustände zu treffen, um eine zweckmäßige Ausgewogenheit zwischen Leistung und Reaktionsvermögen zu erreichen. Genauer gesagt, zeigt Tabelle 1 den Unterschied bei den Fehlzugriffsraten (im Hinblick auf Zyklen) im Anschluss an einen weniger tiefen Niedrigenergiezustand (zum Beispiel C1) (wobei tiefere Niedrigenergiezustände deaktiviert sind) und einen tieferen Niedrigenergiezustand (zum Beispiel C6). Solche Informationen können eine große Anzahl von Ruhe-/Wachzyklen darstellen. Genauer gesagt, enthält die zweite Spalte Informationen, wenn eine Vielzahl verschiedener Ruhezustände, einschließlich C1E-C10, verfügbar sind, und die dritte Spalte enthält Informationen, wenn nur der C1-Zustand verfügbar ist.
  • Wie veranschaulicht, ist ein großer Teil (zum Beispiel ungefähr 50 %) der Zunahme der C0-Zyklen im Anschluss an den C6-Zustand ein Ergebnis einer Löschung des DTLB-Architekturzustands vor dem tieferen Ruhezustand. Daher kann ein Vergleich der Kosten von DTLB-Fehlzugriffen, wenn der Kern tiefere Ruhezustände als im C1-Ruhezustand erreicht hat, mindestens teilweise zum Steuern von Niedrigenergiezustandsbestimmungen verwendet werden. Mit Informationen, wie sie in Tabelle 1 gezeigt sind, kann der Energie-Controller eine ankommende C6-Niedrigenergiezustandsanforderung zu einer niedrigeren C1-Niedrigenergiezustandsaktivierung herabstufen, wodurch eine Leistungsverschlechterung vermieden wird. Tabelle 1
    Ereignisbezeichnung C-Zustände aktiviert C-Zustände deaktiviert % der C0-Zyklen-Differenz
    CPU_CLK_UNHALTED.THREAD 7,59E+10 6,88E+10
    DTLB_LOAD_MISSES.STLB_HIT 4,94E+08 6,26E+08 13,01 %
    DTLB_LOAD_MISSES.WALK_ACTIVE 6,93E+09 4,54E+09 33,66 %
    DTLB_STORE_MISSES.STLB_HIT 9,18E+07 1,21E+08 2,88 %
    DTLB_STORE_MISSES.WALK_ACTIVE 9,57E+08 6,26E+08 4,66 %
    GESAMT 54,22 %
  • Obgleich die folgenden Ausführungsformen unter Bezug auf konkrete integrierte Schaltkreise, zum Beispiel in Computerplattformen oder -prozessoren, beschrieben werden, sind auch andere Ausführungsformen auf andere Arten von integrierten Schaltkreisen und Logikvorrichtungen anwendbar. Ähnliche Techniken und Lehren von im vorliegenden Text beschriebenen Ausführungsformen können auch auf andere Arten von Schaltkreisen oder Halbleitervorrichtungen angewendet werden, die ebenfalls von einer besseren Energieeffizienz und Energieeinsparung profitieren können. Zum Beispiel sind die offenbarten Ausführungsformen nicht auf bestimmte Arten von Computersystemen beschränkt. Das heißt, die offenbarten Ausführungsformen können in vielen verschiedenen Systemtypen verwendet werden, die von Server-Computern (zum Beispiel Tower, Rack, Blade, Mikro-Server usw.), Kommunikationssystemen, Speichersystemen, Desktop-Computern jeder Konfiguration, Laptops, Notebooks und Tablet-Computern (einschließlich 2:1-Tablets, Phablets usw.) reichen, und können auch in anderen Vorrichtungen verwendet werden, wie zum Beispiel handgehaltenen Vorrichtungen, Systems-on-Chip (SoCs) und eingebetteten Anwendungen. Einige Beispiele für handgehaltene Vorrichtungen sind Mobiltelefone, wie zum Beispiel Smartphones, Internet Protocol-Geräte, Digitalkameras, persönliche digitale Assistenten (PDAs) und handgehaltene PCs. Zu eingebetteten Anwendungen können in der Regel ein Mikrocontroller, ein digitaler Signalprozessor (DSP), ein Netzwerkcomputer (NetPC), Set-Top-Boxen, Netzwerk-Hubs, WAN (Wide Area Network)-Switches, am Körper tragbare Vorrichtungen, oder jedes andere System gehören, das die unten gelehrten Funktionen und Operationen ausführen kann. Darüber hinaus können Ausführungsformen in mobilen Endgeräten mit standardmäßiger Sprachfunktionalität, wie zum Beispiel Mobiltelefonen, Smartphones und Phablets, und/oder in nicht-mobilen Endgeräten ohne standardmäßige Drahtlos-Sprachfunktionskommunikationsfähigkeit, wie zum Beispiel viele am Körper tragbare Vorrichtungen, Tablets, Notebooks, Desktops, Mikro-Server, Server usw., implementiert werden. Darüber hinaus sind die im vorliegenden Text beschriebenen Vorrichtungen, Verfahren und Systeme nicht auf physische Computervorrichtungen beschränkt, sondern können sich auch auf Software-Optimierungen beziehen.
  • Wir wenden uns nun 1 zu, wo ein Blockdiagramm eines Abschnitts eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt ist. Wie in 1 gezeigt, kann das System 100 verschiedene Komponenten enthalten, einschließlich eines Prozessors 110, der, wie gezeigt, ein Mehrkernprozessor ist. Der Prozessor 110 kann über einen externen Spannungsregler (Voltage Regulator, VR) 160 mit einer Stromversorgung 150 gekoppelt sein, die eine erste Spannungswandlung durchführen kann, um eine primäre geregelte Spannung in den Prozessor 110 einzuspeisen.
  • Wie zu sehen ist, kann der Prozessor 110 ein Einzel-Die-Prozessor mit mehreren Kernen 120a - 120n sein. Darüber hinaus kann jeder Kern mit einem integrierten Spannungsregler (Integrated Voltage Regulator, IVR) 125a - 125n verknüpft sein, der die primäre geregelte Spannung empfängt und eine Betriebsspannung generiert, die in einen oder mehrere Agenten des mit dem IVR verknüpften Prozessors eingespeist wird. Dementsprechend kann eine IVR-Implementierung bereitgestellt werden, die eine hochauflösende Steuerung der Spannung und damit des Stroms und der Leistung jedes einzelnen Kerns ermöglicht. Somit kann jeder Kern mit einer unabhängigen Spannung und Frequenz arbeiten, was eine große Flexibilität ermöglicht und zahlreiche Möglichkeiten bietet, Energieverbrauch und Leistung in ein ausgewogenes Verhältnis zu bringen. In einigen Ausführungsformen ermöglicht die Verwendung mehrerer IVRs das Gruppieren von Komponenten in getrennte Energieebenen, so dass die Energie durch die IVRs geregelt und nur jenen Komponenten in der Gruppe zugeführt wird. Während des Energiemanagements kann eine gegebene Energieebene eines einzelnen IVR heruntergefahren oder abgeschaltet werden, wenn der Prozessor in einen bestimmten Niedrigenergiezustand versetzt wird, während eine andere Energieebene eines anderen IVR aktiv oder in vollem Umfang mit Strom versorgt bleibt.
  • Wir bleiben bei 1. Innerhalb des Prozessors können zusätzliche Komponenten vorhanden sein, darunter eine Eingabe-/Ausgabe-Schnittstelle 132, eine weitere Schnittstelle 134, und ein integrierter Speicher-Controller 136. Wie zu sehen ist, kann jede dieser Komponenten durch einen anderen integrierten Spannungsregler 125x betrieben werden. In einer Ausführungsform kann Schnittstelle 132 den Betrieb für eine Intel® Quick Path Interconnect (QPI)-Verbindung ermöglichen, die Punkt-zu-Punkt (PtP)-Verbindungen in einem cachekohärenten Protokoll ermöglicht, das mehrere Schichten enthält, einschließlich einer Bitübertragungsschicht, einer Link-Schicht und einer Protokollschicht. Die Schnittstelle 134 wiederum kann über ein Peripheral Component Interconnect Express (PCIe™)-Protokoll kommunizieren.
  • Ebenfalls gezeigt ist eine Energiesteuereinheit (Power Control Unit, PCU) 138, die Hardware, Software und/oder Firmware zum Ausführen von Energieverwaltungsoperationen in Bezug auf den Prozessor 110 enthalten kann. Wie zu sehen ist, übermittelt die PCU 138 über eine digitale Schnittstelle Steuerinformationen an den externen Spannungsregler 160, um den Spannungsregler zu veranlassen, die zweckmäßige geregelte Spannung zu generieren. Die PCU 138 übermittelt auch Steuerungsinformationen an den IVR 125 über eine andere digitale Schnittstelle, um die generierte Betriebsspannung zu steuern (oder um zu bewirken, dass ein entsprechender IVR in einem Niedrigenergiemodus deaktiviert wird). In verschiedenen Ausführungsformen kann die PCU 138 eine Vielzahl verschiedener Energiemanagement-Logikeinheiten enthalten, um ein Hardware-gestütztes Energiemanagement auszuführen. Ein solches Energiemanagement kann vollständig prozessorgesteuert sein (zum Beispiel durch verschiedene Prozessor-Hardware, die durch Arbeitslast und/oder Energie, thermische oder andere Prozessorbeschränkungen ausgelöst werden kann), und/oder das Energiemanagement kann in Reaktion auf externe Quellen (wie zum Beispiel eine Plattform oder Energiemanagementquelle oder Systemsoftware) ausgeführt werden.
  • In im vorliegenden Text beschriebenen Ausführungsformen kann die PCU 138 so konfiguriert werden, dass sie Leistungsüberwachungsinformationen zum Beispiel von einem internen Leistungsüberwacher des Prozessors 110 empfängt. Mindestens teilweise auf der Basis dieser Leistungsüberwachungsinformationen können die Auswirkungen verschiedener Niedrigenergiezustände berücksichtigt und dafür verwendet werden, einen zweckmäßigen Eintritt in einen Niedrigenergiezustand für einen oder mehrere Abschnitte des Prozessors 110 zu bestimmen. In konkreten im vorliegenden Text beschriebenen Ausführungsformen kann diese datengestützte Steuerung der Auswahl von Niedrigenergiezuständen es ermöglichen, ankommende Niedrigenergiezustandsanforderungen zum Beispiel von einer Disponierungsentität außer Kraft zu setzen. Wenn also festgestellt wird, dass die Auswirkung eines tieferen Niedrigenergiezustands relativ hoch ist, so kann eine ankommende Anforderung für einen solchen tieferen Niedrigenergiezustand herabgestuft werden, um zu veranlassen, dass der Prozessor 110 (oder ein Abschnitt davon) in einen weniger tiefen Niedrigenergiezustand versetzt wird. Wenn hingegen eine relativ geringe Auswirkung infolge tieferer Niedrigenergiezustände festgestellt wird, so kann eine ankommende Anforderung für einen weniger tiefen Niedrigenergiezustand zu einem tieferen Niedrigenergiezustand heraufgestuft werden, wie unten noch näher beschrieben wird.
  • Obgleich im Interesse einer übersichtlicheren Darstellung nicht gezeigt, versteht es sich, dass innerhalb des Prozessors 110 zusätzliche Komponenten vorhanden sein können, wie zum Beispiel Uncore-Logik und andere Komponenten, wie zum Beispiel interne Speicher, zum Beispiel eine oder mehrere Ebenen einer Cache-Speicherhierarchie, und so weiter. Obgleich in der Implementierung von 1 mit einem integrierten Spannungsregler gezeigt, sind die Ausführungsformen des Weiteren nicht darauf beschränkt.
  • Die im vorliegenden Text beschriebenen Prozessoren können in synergistischer Weise Energiemanagementtechniken nutzen, die von einem auf einem Betriebssystem basierenden Energiemanagement-Mechanismus (Operating System based Power Management (OSPM)) unabhängig sein und dieses ergänzen können. Gemäß einer beispielhaften OSPM-Technik kann ein Prozessor in verschiedenen Leistungszuständen oder -stufen, sogenannten P-Zuständen, von P0 bis PN arbeiten. Im Allgemeinen kann der PI-Leistungszustand dem höchsten garantierten Leistungszustand entsprechen, den ein Betriebssystem anfordern kann. Zusätzlich zu diesem P1-Zustand kann das Betriebssystem des Weiteren einen höheren Leistungszustand, nämlich einen P0-Zustand, anfordern. Dieser P0-Zustand kann somit ein opportunistischer oder Turbo-Modus-Zustand sein, in dem eine Prozessor-Hardware, wenn ein Energie- und/oder Wärmebudget zur Verfügung steht, den Prozessor - oder mindestens Abschnitte davon - so konfigurieren kann, dass er mit einer höheren als der garantierten Frequenz arbeitet. In vielen Implementierungen kann ein Prozessor mehrere sogenannte Bin-Frequenzen oberhalb der garantierten Maximalfrequenz P1 enthalten, die bis zu einer maximalen Spitzenfrequenz des jeweiligen Prozessors überschritten werden, so wie es während der Herstellung in den Prozessor eingebrannt oder anderweitig geschrieben wird. Darüber hinaus kann ein Prozessor gemäß einem bestimmten OSPM-Mechanismus bei verschiedenen Leistungszuständen oder - stufen arbeiten. In Bezug auf Leistungszustände kann ein OSPM-Mechanismus verschiedene Stromverbrauchszustände spezifizieren, die allgemein als C-Zustände (Zustände C0, C1 bis Cn) bezeichnet werden. Wenn ein Kern aktiv ist, so läuft er in einem C0-Zustand, und wenn der Kern im Leerlauf ist, so kann er in einen Kern-Niedrigenergiezustand versetzt werden, der auch als Kern-C-Zustand ungleich Null bezeichnet wird (zum Beispiel Zustände C1-C6), wobei jeder C-Zustand auf einem niedrigeren Stromverbrauchsniveau liegt (dergestalt, dass C6 ein tieferer Niedrigenergiezustand ist als C1, usw.).
  • Es versteht sich, dass in verschiedenen Ausführungsformen viele verschiedene Arten von Energiemanagementtechniken einzeln oder in Kombination verwendet werden können. Als repräsentative Beispiele kann ein Energie-Controller den einem Energiemanagement zu unterziehenden Prozessor durch eine Form von dynamischer Spannungsfrequenzskalierung (Dynamic Voltage Frequency Scaling, DVFS) steuern, bei der die Betriebsspannung und/oder die Betriebsfrequenz eines oder mehrerer Kerne oder anderer Prozessorlogik dynamisch gesteuert werden kann, um den Stromverbrauch in bestimmten Situationen zu reduzieren. In einem Beispiel kann eine DVFS unter Verwendung der Enhanced Intel SpeedStep™-Technologie ausgeführt werden, die bei der Intel Corporation, Santa Clara, Kalifornien, zu beziehen ist, um optimale Leistung auf einem niedrigstem Stromverbrauchsniveau zu erzielen. In einem anderen Beispiel kann eine DVFS unter Verwendung der Intel TurboBoost™-Technologie ausgeführt werden, damit ein oder mehrere Kerne oder andere Computer-Engines auf der Grundlage von Bedingungen (zum Beispiel Arbeitslast und Verfügbarkeit) mit einer höheren als der garantierten Betriebsfrequenz arbeiten können.
  • Eine weitere Energiemanagementtechnik, die in bestimmten Beispielen verwendet werden kann, ist der dynamische Austausch von Arbeitslasten zwischen verschiedenen Computer-Engines. Zum Beispiel kann der Prozessor asymmetrische Kerne oder andere Verarbeitungs-Engines enthalten, die mit unterschiedlichen Stromverbrauchsniveaus arbeiten, dergestalt, dass in einer energiebeschränkten Situation eine oder mehrere Arbeitslasten dynamisch umgeschaltet werden können, um in einem Kern mit geringerer Energie oder in einer anderen Computer-Engine ausgeführt zu werden. Eine weitere beispielhafte Energiemanagementtechnik ist das Hardware Duty Cycling (HDC), das veranlassen kann, dass Kerne und/oder andere Computer-Engines periodisch gemäß einem Arbeitszyklus aktiviert und deaktiviert werden, dergestalt, dass 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 werden, darunter Server-Prozessoren, Desktop-Prozessoren, Mobil-Prozessoren und so weiter. Wir wenden uns nun 2 zu, wo ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt ist. Wie in 2 gezeigt, kann der Prozessor 200 ein Mehrkernprozessor mit mehreren Kernen 210a - 210n sein. In einer Ausführungsform kann jeder dieser Kerne von einer unabhängigen Energiedomäne sein und kann so konfiguriert sein, dass er auf der Grundlage einer Arbeitslast in aktive Zustände und/oder Zustände mit maximaler Leistung eintritt und sie verlässt.
  • Die verschiedenen Kerne können über eine Interconnect-Verbindung 215 mit einem System-Agenten oder Uncore 220, der verschiedene Komponenten enthält, gekoppelt sein. Wie zu sehen ist, kann der Uncore 220 einen gemeinsam genutzten Cache 230 enthalten, der ein Last-Level-Cache sein kann. Darüber hinaus kann der Uncore einen integrierten Speicher-Controller 240 enthalten, um mit einem Systemspeicher (in 2 nicht gezeigt) zum Beispiel über einen Speicherbus zu kommunizieren. Der Uncore 220 enthält außerdem verschiedene Schnittstellen 250, eine Leistungsüberwachungseinheit (Performance Monitoring Unit, PMU) 260 und eine Energiesteuereinheit 255, die Logik zum Ausführen von Energiemanagementtechniken, wie im vorliegenden Text beschrieben, enthalten kann. Darüber hinaus kann die Energiesteuereinheit 255 einen Niedrigenergie-Steuerschaltkreis 256 enthalten, der dafür konfiguriert ist, Leistungsüberwachungsinformationen von der PMU 260 zu empfangen und mindestens teilweise auf der Grundlage dieser Informationen einen zweckmäßigen Niedrigenergiezustand zu bestimmen, in den der Prozessor 200 eintreten soll (was auf der Grundlage der Leistungsüberwachungsinformationen ein herabgestufter oder ein heraufgestufter Zustand sein kann).
  • Darüber hinaus kann über die Schnittstellen 250a-250n eine Verbindung zu verschiedenen außerhalb des Chips liegenden Komponenten, wie zum Beispiel Peripherievorrichtungen, Massenspeicher usw., hergestellt werden. Obgleich mit dieser speziellen Implementierung in der Ausführungsform von 2 gezeigt, ist der Geltungsbereich der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt.
  • Wir wenden uns nun 3 zu, wo ein Blockdiagramm eines Mehrdomänenprozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt ist. Wie in der Ausführungsform von 3 gezeigt, enthält der Prozessor 300 mehrere Domänen. Genauer gesagt, kann eine Kerndomäne 310 mehrere Kerne 3100-310n enthalten, eine Grafikdomäne 320 kann eine oder mehrere Grafik-Engines enthalten, und es kann auch noch eine Systemagent-Domäne 350 vorhanden sein. In einigen Ausführungsformen kann die Systemagent-Domäne 350 mit einer von der Kerndomäne unabhängigen Frequenz arbeiten und kann die ganze Zeit eingeschaltet bleiben, um Energiesteuerungsereignisse und das Energiemanagement so zu handhaben, dass die Domänen 310 und 320 veranlasst werden können, dynamisch in Hochenergie- und Niedrigenergiezustände einzutreten und sie zu verlassen. Jede der Domänen 310 und 320 kann mit einer anderen Spannung und/oder Energie betrieben werden. Es ist zu beachten, dass zwar nur drei Domänen gezeigt sind, dass es sich aber versteht, dass der Geltungsbereich der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist und dass in anderen Ausführungsformen zusätzliche Domänen vorhanden sein können. Zum Beispiel können mehrere Kerndomänen vorhanden sein, die jeweils mindestens einen Kern enthalten.
  • Im Allgemeinen kann jeder Kern 310 des Weiteren zusätzlich zu verschiedenen Ausführungseinheiten untergeordneten Cache (Low-Level-Cache) sowie zusätzliche Verarbeitungselemente enthalten. Die verschiedenen Kerne wiederum können miteinander und mit einem gemeinsam genutzten Cache-Speicher, der aus mehreren Einheiten eines Last-Level-Cache (LLC) 3400 - 340n gebildet wird, gekoppelt sein. In verschiedenen Ausführungsformen kann der LLC 340 von den Kernen und der Grafik-Engine sowie von verschiedenen Medienverarbeitungsschaltungen gemeinsam genutzt werden. Wie zu sehen ist, koppelt eine Ring-Interconnect-Verbindung 330 die Kerne miteinander und stellt eine Interconnect-Verbindung zwischen den Kernen, der Grafikdomäne 320 und der Systemagent-Schaltung 350 her. In einer Ausführungsform kann die Interconnect-Verbindung 330 Teil der Kerndomäne sein. In anderen Ausführungsformen jedoch kann die Ring-Interconnect-Verbindung ihre eigene Domäne haben.
  • Wie des Weiteren zu sehen ist, kann die Systemagent-Domäne 350 einen Display-Controller 352 enthalten, der die Steuerung eines zugehörigen Displays und eine Schnittstelle zu diesem Display bereitstellen kann. Wie des Weiteren zu sehen ist, kann die Systemagent-Domäne 350 eine PMU 360 und eine Energiesteuereinheit 355 enthalten, die einen Niedrigenergie-Steuerschaltkreis 356 enthalten kann, der, mindestens teilweise anhand von Leistungsüberwachungsinformationen, die Kosten für verschiedene Prozessorressourcen als Ergebnis früherer Iterationen bestimmter Niedrigenergiezustände (zum Beispiel C1- und C6-Niedrigenergiezustände) bestimmen soll. Mindestens teilweise auf der Grundlage dieser Informationen kann der Niedrigenergie-Steuerschaltkreis 356 einen zweckmäßigen Niedrigenergiezustand bestimmen, in den der Prozessor 300 (oder mindestens ein Abschnitt davon) eintreten soll, der ein herabgestufter oder ein heraufgestufter Zustand in Bezug auf einen angeforderten Niedrigenergiezustand sein kann (zum Beispiel durch Hinweisinformationen, die von einem Betriebssystem oder einer anderen Disponierungsentität erhalten werden), wie im vorliegenden Text beschrieben.
  • Wie des Weiteren in 3 zu sehen, kann der Prozessor 300 außerdem einen integrierten Speicher-Controller (Integrated Memory Controller, IMC) 370 enthalten, der eine Schnittstelle zu einem Systemspeicher, wie zum Beispiel einem dynamischen Direktzugriffsspeicher (DRAM), bereitstellen kann. Mehrere Schnittstellen 3800 - 380n können vorhanden sein, um eine Interconnect-Verbindung zwischen dem Prozessor und anderen Schaltungen zu ermöglichen. Zum Beispiel können in einer Ausführungsform mindestens eine direkte Medienschnittstelle (Direct Media Interface, DMI) sowie eine oder mehrere PCIe™-Schnittstellen vorhanden sein. Darüber hinaus können auch eine oder mehrere QPI-Schnittstellen bereitgestellt werden, um die Kommunikation zwischen anderen Agenten, wie zum Beispiel zusätzlichen Prozessoren oder anderen Schaltungen, zu ermöglichen. Obgleich in der Ausführungsform von 3 auf dieser hohen Ebene gezeigt, versteht es sich, dass der Geltungsbereich der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist.
  • In 4 ist eine Ausführungsform eines Prozessors mit mehreren Kernen gezeigt. Der Prozessor 400 enthält einen beliebigen Prozessor oder eine beliebige Verarbeitungsvorrichtung, wie zum Beispiel einen Mikroprozessor, einen eingebetteten Prozessor, einen digitalen Signalprozessor (DSP), einen Netzwerkprozessor, einen handgehaltenen Prozessor, einen Anwendungsprozessor, einen Co-Prozessor, ein System-on-Chip (SoC) oder eine andere Vorrichtung zum Ausführen von Code. Der Prozessor 400 enthält in einer Ausführungsform mindestens zwei Kerne, die Kerne 401 und 402, die asymmetrische Kerne oder symmetrische Kerne (die veranschaulichte Ausführungsform) sein können. Der Prozessor 400 kann jedoch eine beliebige Anzahl von Verarbeitungselementen enthalten, die symmetrisch oder asymmetrisch sein können.
  • In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik zur Unterstützung eines Software-Threads. Beispiele für Hardware-Verarbeitungselemente sind: eine Thread-Einheit, ein Thread-Slot, ein Thread, eine Prozesseinheit, ein Kontext, eine Kontexteinheit, ein logischer Prozessor, ein Hardware-Thread, ein Kern und/oder jedes andere Element, das in der Lage ist, einen Zustand für einen Prozessor, wie zum Beispiel einen Ausführungszustand oder einen Architekturzustand, zu halten. Mit anderen Worten: Ein Verarbeitungselement bezieht sich in einer Ausführungsform auf jede Hardware, die unabhängig mit Code assoziiert werden kann, wie zum Beispiel ein Software-Thread, ein Betriebssystem, eine Anwendung oder anderer Code. Ein physischer Prozessor bezieht sich in der Regel auf einen integrierten Schaltkreis, der potenziell eine beliebige Anzahl anderer Verarbeitungselemente, wie zum Beispiel Kerne oder Hardware-Threads, enthält.
  • Ein Kern bezieht sich oft auf Logik, die sich auf einem integrierten Schaltkreis befindet, der in der Lage ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei jeder unabhängig aufrecht erhaltene Architekturzustand mit mindestens einigen dedizierten Ausführungsressourcen verbunden ist. Im Gegensatz zu Kernen bezieht sich ein Hardware-Thread in der Regel auf jede Logik, die sich auf einem integrierten Schaltkreis befindet, der in der Lage ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei sich die unabhängig aufrecht erhaltenen Architekturzustände den Zugriff auf Ausführungsressourcen teilen. Wie zu sehen ist, überschneidet sich die Grenze zwischen der Nomenklatur eines Hardware-Threads und eines Kerns, wenn bestimmte Ressourcen gemeinsam genutzt werden und andere für einen Architekturzustand dediziert sind. Häufig werden jedoch ein Kern und ein Hardware-Thread durch ein Betriebssystem als einzelne logische Prozessoren angesehen, wobei das Betriebssystem in der Lage ist, Operationen auf jedem logischen Prozessor individuell zu disponieren.
  • Der physische Prozessor 400, wie in 4 gezeigt, enthält zwei Kerne, die Kerne 401 und 402. Im vorliegenden Text werden die Kerne 401 und 402 als symmetrische Kerne angesehen, das heißt, als Kerne mit den gleichen Konfigurationen, Funktionseinheiten und/oder der gleichen Logik. In einer anderen Ausführungsform enthält der Kern 401 einen Out-of-Order-Prozessorkern, während der Kern 402 einen In-Order-Prozessorkern enthält. Die Kerne 401 und 402 können jedoch einzeln aus jeder Art von Kern ausgewählt werden, zum Beispiel einem nativen Kern, einem durch Software gemanagten Kern, einem Kern, der dafür ausgelegt ist, eine native Instruktionssatzarchitektur (Instruction Set Architecture, ISA) auszuführen, einem Kern, der dafür ausgelegt ist, eine übersetzte ISA auszuführen, einem co-designten Kern, oder einem anderen bekannten Kern. In Fortführung der Besprechung werden die in dem Kern 401 veranschaulichten Funktionseinheiten im Folgenden ausführlicher beschrieben, da die Einheiten in dem Kern 402 in ähnlicher Weise arbeiten.
  • Wie gezeigt, enthält der Kern 401 zwei Hardware-Threads 401a und 401b, die auch als Hardware-Thread-Slots 401a und 401b bezeichnet werden können. Daher betrachten Software-Entitäten, wie zum Beispiel ein Betriebssystem, in einer Ausführungsform den Prozessor 400 potenziell als vier separate Prozessoren, das heißt, vier logische Prozessoren oder Verarbeitungselemente, die vier Software-Threads gleichzeitig ausführen können. Wie oben angedeutet, ist ein erster Thread mit den Architektur-Zustandsregistern 401a verknüpft, ein zweiter Thread ist mit den Architektur-Zustandsregistern 401b verknüpft, ein dritter Thread kann mit den Architektur-Zustandsregistern 402a verknüpft sein, und ein vierter Thread kann mit den Architektur-Zustandsregistern 402b verknüpft sein. Im vorliegenden Text kann jedes der Architektur-Zustandsregister (401a, 401b, 402a und 402b) als Verarbeitungselemente, Thread-Slots oder Thread-Einheiten bezeichnet werden, wie oben beschrieben. Wie veranschaulicht, werden die Architektur-Zustandsregister 401a in Architektur-Zustandsregistern 401b repliziert, so dass einzelne Architekturzustände/-Kontexte für den logischen Prozessor 401a und den logischen Prozessor 401b gespeichert werden können. Im Kern 401 können für die Threads 401a und 401b auch andere kleinere Ressourcen, wie zum Beispiel Instruktionszeiger und Umbenennungslogik im Zuweiser- und Umbenennerblock 430, repliziert werden. Einige Ressourcen, wie zum Beispiel Neuordnungspuffer in der Neuordnungs-/Beendigungseinheit 435, ein ILTB 420, Lade-/Speicherpuffer und Warteschlangen, können durch Partitionierung gemeinsam genutzt werden. Andere Ressourcen, wie zum Beispiel interne Allzweckregister, ein oder mehrere Seitentabellen-Basisregister, Low-Level-Daten-Cache und Daten-TLB 415, ein oder mehrere Ausführungseinheiten 440 und Abschnitte der Out-of-Order-Einheit 435, werden potenziell vollständig gemeinsam genutzt.
  • Der Prozessor 400 enthält oft andere Ressourcen, die vollständig gemeinsam genutzt, durch Partitionierung gemeinsam genutzt oder durch/für Verarbeitungselemente reserviert werden können. In 4 ist eine Ausführungsform eines rein beispielhaften Prozessors mit veranschaulichenden logischen Einheiten/Ressourcen eines Prozessors veranschaulicht. Es ist zu beachten, dass ein Prozessor jede dieser Funktionseinheiten enthalten oder weglassen kann, sowie alle anderen bekannten Funktionseinheiten, Logik oder Firmware, die nicht gezeigt sind, enthalten kann. Wie veranschaulicht, enthält der Kern 401 einen vereinfachten, repräsentativen Out-of-Order (OOO)-Prozessorkern. In verschiedenen Ausführungsformen kann aber auch ein In-Order-Prozessor verwendet werden. Der OOO-Kern enthält einen Verzweigungszielpuffer 420 zum Vorhersagen von auszuführenden/zu nehmenden Verzweigungen und einen Instruktionsübersetzungspuffer (1-TLB) 420 zum Speichern von Adressübersetzungseinträgen für Instruktionen.
  • Der Kern 401 enthält des Weiteren das Decodiermodul 425, das mit der Hol-Einheit 420 gekoppelt ist, um geholte Elemente zu decodieren. Die Hol-Logik enthält in einer Ausführungsform einzelne Sequenzierer, die jeweils mit den Thread-Slots 401a, 401b verknüpft sind. Gewöhnlich ist der Kern 401 mit einer ersten ISA verknüpft, die Instruktionen definiert/spezifiziert, die in dem Prozessor 400 ausgeführt werden können. Häufig enthalten Maschinencode-Instruktionen, die Teil der ersten ISA sind, einen Abschnitt der Instruktion (als Opcode bezeichnet), der eine auszuführende Instruktion oder Operation referenziert/spezifiziert. Die Decodier-Logik 425 enthält Schaltungen, die diese Instruktionen anhand ihrer Opcodes erkennen und die decodierten Instruktionen in der Pipeline zur Verarbeitung gemäß Definition durch die erste ISA weiterleiten. Zum Beispiel enthalten Decodierer 425 in einer bestimmten Ausführungsform Logik, die dafür designt oder ausgelegt ist, spezielle Instruktionen, wie Transaktionsinstruktionen, zu erkennen. Im Ergebnis der Erkennung durch die Decodierer 425 unternimmt die Architektur oder der Kern 401 spezielle, vordefinierte Aktionen, um Aufgaben auszuführen, die mit der entsprechenden Instruktion verknüpft sind. Es ist wichtig anzumerken, dass alle im vorliegenden Text beschriebenen Aufgaben, Blöcke, Operationen und Verfahren in Reaktion auf eine einzelne Instruktion oder mehrere Instruktionen ausgeführt werden können, von denen einige neue oder alte Instruktionen sein können.
  • In einem Beispiel enthält der Zuweiser- und Umbenennerblock 430 einen Zuweiser zum Reservieren von Ressourcen, wie zum Beispiel Registerdateien zum Speichern von Instruktionsverarbeitungsergebnissen. Die Threads 401a und 401b sind jedoch potenziell zur Out-of-Order-Ausführung befähigt, wobei der Zuweiser- und Umbenennerblock 430 auch andere Ressourcen reserviert, wie zum Beispiel Neuordnungspuffer, um Instruktionsverarbeitungsergebnisse zu verfolgen. Die Einheit 430 kann auch einen Registerumbenenner enthalten, um Programm-/Instruktionsreferenzregister in andere Register innerhalb des Prozessors 400 umzubenennen. Die Neuordnungs-/Beendigungseinheit 435 enthält Komponenten wie zum Beispiel die oben erwähnten Neuordnungspuffer, Ladepuffer und Speicherpuffer, um die Out-of-Order-Ausführung und spätere In-Order-Ausführung von Instruktionen, die außerhalb der Reihenfolge (Out-of-Order) ausgeführt wurden, zu unterstützen.
  • Der Disponierer- und Ausführungseinheit(en)-Block 440 enthält in einer Ausführungsform eine Disponierereinheit zum Disponieren von Instruktionen/Operationen in Ausführungseinheiten. Zum Beispiel wird eine Gleitkommainstruktion an einem Port einer Ausführungseinheit disponiert, die über eine verfügbare Gleitkomma-Ausführungseinheit verfügt. Registerdateien, die mit den Ausführungseinheiten verknüpft sind, sind ebenfalls enthalten, um Ergebnisse der Informationsinstruktionsverarbeitung zu speichern. Zu beispielhaften Ausführungseinheiten gehören eine Gleitkomma-Ausführungseinheit, eine Ganzzahl-Ausführungseinheit, eine SprungAusführungseinheit, eine Lade-Ausführungseinheit, eine Speicher-Ausführungseinheit und andere bekannte Ausführungseinheiten.
  • Der Lower-Level-Daten-Cache und der Datenübersetzungspuffer (D-TLB) 450 sind mit der oder den Ausführungseinheiten 440 gekoppelt. Der Daten-Cache soll kürzlich verwendete/verarbeitete Elemente wie zum Beispiel Datenoperanden speichern, die potenziell in Speicherkohärenzzuständen gehalten werden. Der D-TLB soll die jüngsten Übersetzungen von virtuellen/linearen in physische Adressen speichern. Als ein konkretes Beispiel kann ein Prozessor eine Seitentabellenstruktur enthalten, um den physischen Speicher in mehrere verschiedene virtuelle Seiten zu zerlegen.
  • Hier teilen sich die Kerne 401 und 402 den Zugriff auf übergeordneten oder weiter entfernten Cache 410, der kürzlich geholte Elemente zwischenspeichern soll. Es ist zu beachten, dass sich „übergeordnet“ (higher-level) oder „weiter entfernt“ (further-out) auf Cache-Ebenen beziehen, die von der oder den Ausführungseinheiten aus zunehmen oder weiter entfernt sind. In einer Ausführungsform ist der übergeordnete Cache 410 ein Last-Level-Daten-Cache - der letzte Cache in der Speicherhierarchie in dem Prozessor 400 - wie zum Beispiel ein Daten-Cache der zweiten oder dritten Ebene. Der Higher-Level-Cache 410 ist jedoch nicht darauf beschränkt, da er mit einem Instruktions-Cache verknüpft sein kann oder einen Instruktions-Cache enthält. Ein Trace-Cache - ein Typ von Instruktions-Cache - kann stattdessen nach dem Decodierer 425 gekoppelt sein, um kürzlich decodierte Traces zu speichern.
  • In der gezeigten Konfiguration enthält der Prozessor 400 gemäß einer Ausführungsform der vorliegenden Erfindung auch das Busschnittstellenmodul 405 und einen Energie-Controller 460, der das Energiemanagement übernehmen kann. In diesem Szenario soll die Busschnittstelle 405 mit Vorrichtungen außerhalb des Prozessors 400, wie zum Beispiel Systemspeicher und anderen Komponenten, kommunizieren.
  • Ein Speicher-Controller 470 kann mit anderen Vorrichtungen wie zum Beispiel einem oder mehreren Speichern verbunden sein. In einem Beispiel enthält die Busschnittstelle 405 eine Ring-Interconnect-Verbindung mit einem Speicher-Controller als Schnittstelle zu einem Speicher und einem Grafik-Controller als Schnittstelle zu einem Grafikprozessor. In einer SoC-Umgebung können sogar noch mehr Vorrichtungen, wie zum Beispiel eine Netzwerkschnittstelle, Koprozessoren, Speicher, ein Grafikprozessor und alle anderen bekannten Computervorrichtungen/Schnittstellen auf einem einzelnen Die oder einem integrierten Schaltkreis integriert werden, um einen kleinen Formfaktor mit hoher Funktionalität und niedrigem Stromverbrauch zu erhalten.
  • Wir wenden uns nun 5 zu, wo ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt ist. Wie in 5 gezeigt, kann der Prozessorkern 500 ein mehrstufiger Pipeline-Out-of-Order-Prozessor sein. Der Kern 500 kann auf der Grundlage einer empfangenen Betriebsspannung, die von einem integrierten Spannungsregler oder einem externen Spannungsregler empfangen werden kann, mit verschiedenen Spannungen arbeiten.
  • Wie in 5 zu sehen, enthält der Kern 500 die Front-End-Einheiten 510, die dafür verwendet werden können, auszuführende Instruktionen zu holen und sie für die spätere Verwendung in der Prozessor-Pipeline vorzubereiten. Zum Beispiel können die Front-End-Einheiten 510 eine Hol-Einheit 501, einen Instruktions-Cache 503 und einen Instruktionsdecodierer 505 enthalten. In einigen Implementierungen können die Front-End-Einheiten 510 darüber hinaus einen Trace-Cache zusammen mit einem Mikrocodespeicher sowie einem Mikrooperationsspeicher enthalten. Die Hol-Einheit 501 kann Makroinstruktionen zum Beispiel aus einem Speicher oder dem Instruktions-Cache 503 holen und sie in den Instruktionsdecodierer 505 einspeisen, um sie in Grundformen, das heißt Mikrooperationen zum Ausführen durch den Prozessor, zu decodieren.
  • Zwischen den Front-End-Einheiten 510 und den Ausführungseinheiten 520 ist eine Out-of-Order (OOO)-Engine 515 gekoppelt, die dafür verwendet werden kann, die Mikroinstruktionen zu empfangen und sie für die Ausführung vorzubereiten. Genauer gesagt, kann die OOO-Engine 515 verschiedene Puffer enthalten, um den Mikroinstruktionsfluss neu zu ordnen und verschiedene für die Ausführungsform benötigte Ressourcen zuzuweisen sowie die Umbenennung logischer Register zu Speicherorten innerhalb verschiedener Registerdateien, wie zum Beispiel die Registerdatei 530 und die erweiterte Registerdatei 535, vorzunehmen. Die Registerdatei 530 kann separate Registerdateien für Ganzzahl- und Gleitkommaoperationen enthalten. Für die Zwecke von Konfigurations-, Steuerungs- und Zusatzoperationen kann auch ein Satz maschinenspezifischer Register (Machine Specific Registers, MSRs) 538 vorhanden und für verschiedene Logik innerhalb des Kerns 500 (und außerhalb des Kerns) zugänglich sein.
  • In den Ausführungseinheiten 520 können neben anderer spezialisierter Hardware verschiedene Ressourcen, einschließlich beispielsweise verschiedene Ganzzahl-, Gleitkomma- und Single Instruction Multiple Data (SIMD)-Logikeinheiten, vorhanden sein. Solche Ausführungseinheiten können zum Beispiel neben anderen solchen Ausführungseinheiten eine oder mehrere arithmetische Logikeinheiten (Arithmetic Logic Units, ALUs) 522 und eine oder mehrere Vektorausführungseinheiten 524 enthalten.
  • Die Ergebnisse von den Ausführungseinheiten können in die Beendigungslogik, und zwar einen Neuordnungspuffer (Reorder Buffer, ROB) 540, eingespeist werden. Genauer gesagt, kann der ROB 540 verschiedene Arrays und Logik enthalten, um Informationen zu empfangen, die mit ausgeführten Instruktionen verknüpft sind. Diese Informationen werden dann durch den ROB 540 untersucht, um festzustellen, ob die Instruktionen gültig beendet werden können und Ergebnisdaten an den Architekturzustand des Prozessors übermittelt werden können, oder ob eine oder mehrere Ausnahmen eingetreten sind, die eine ordnungsgemäße Beendigung der Instruktionen verhindern. Natürlich kann der ROB 540 auch andere mit der Beendigung verknüpfte Operationen abwickeln.
  • Wie in 5 gezeigt, ist der ROB 540 mit einem Cache 550 gekoppelt, der in einer Ausführungsform ein Low-Level-Cache (zum Beispiel ein L1-Cache) sein kann, obgleich der Geltungsbereich der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist. Des Weiteren können die Ausführungseinheiten 520 direkt mit dem Cache 550 gekoppelt sein. Vom Cache 550 aus kann die Datenkommunikation mit übergeordneten Caches, dem Systemspeicher usw. erfolgen. Es ist zu beachten, dass die Leistungs- und Energieeffizienzfähigkeiten des Kerns 500 auf der Grundlage von Arbeitslast und/oder Prozessorbeschränkungen variieren können. Daher kann ein Energie-Controller (in 5 nicht gezeigt) mindestens teilweise auf der Grundlage solcher Informationen, einschließlich der im vorliegenden Text beschriebenen Leistungsüberwachungsinformationen, dynamisch einen zweckmäßigen Niedrigenergiezustand bestimmen, in den der Prozessor 500 ganz oder teilweise eintreten kann. Obgleich in der Ausführungsform von 5 auf dieser hohen Ebene gezeigt, versteht es sich, dass der Geltungsbereich der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist. Obgleich sich zum Beispiel die Implementierung von 5 auf eine Out-of-Order-Maschine, wie zum Beispiel eine Intel® x86-Instruktionssatzarchitektur (ISA), bezieht, ist der Geltungsbereich der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt. Das heißt, andere Ausführungsformen können in einem In-Order-Prozessor, einem Reduced Instruction Set Computing (RISC)-Prozessor, wie zum Beispiel einem ARMbasierten Prozessor, oder einem Prozessor eines anderen ISA-Typs implementiert werden, der Instruktionen und Operationen eines anderen ISA-Typs über eine Emulations-Engine und eine zugehörige Logikschaltung emulieren kann.
  • Wir wenden uns nun 6 zu, wo ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer anderen Ausführungsform gezeigt ist. In der Ausführungsform von 6 kann der Kern 600 ein Niedrigenergiekern einer anderen Mikroarchitektur sein, wie zum Beispiel ein Intel® Atom™-basierter Prozessor mit einer relativ begrenzten Pipeline-Tiefe, der zur Reduzierung des Stromverbrauchs entwickelt wurde. Wie zu sehen ist, enthält der Kern 600 einen Instruktions-Cache 610, der gekoppelt ist, um Instruktionen in einen Instruktionsdecodierer 615 einzuspeisen. Ein Verzweigungsprädiktor 605 kann mit dem Instruktions-Cache 610 gekoppelt sein. Es ist zu beachten, dass der Instruktions-Cache 610 des Weiteren mit einer anderen Ebene eines Cache-Speichers, wie zum Beispiel einem L2-Cache, gekoppelt sein kann (zur besseren Erkennbarkeit in 6 nicht gezeigt). Der Instruktionsdecodierer 615 wiederum übermittelt decodierte Instruktionen an eine Ausgabewarteschlange 620 zur Speicherung und Übermittlung an eine gegebene Ausführungspipeline. Ein Mikrocode-ROM 618 ist mit dem Instruktionsdecodierer 615 gekoppelt.
  • Eine Gleitkomma-Pipeline 630 enthält eine Gleitkomma-Registerdatei 632, die mehrere Architekturregister eines gegebenen Bits mit zum Beispiel 128, 256 oder 512 Bits enthalten kann. Die Pipeline 630 enthält einen Gleitkomma-Disponierer 634 zum Disponieren von Instruktionen zum Ausführen in einer von mehreren Ausführungseinheiten der Pipeline. In der gezeigten Ausführungsform enthalten solche Ausführungseinheiten eine ALU 635, eine Shuffle-Einheit 636 und einen Gleitkomma-Addierer 638. Die in diesen Ausführungseinheiten generierten Ergebnisse können wiederum an Puffer und/oder Register der Registerdatei 632 zurückgesendet werden. Es versteht sich natürlich, dass zwar nur diese wenigen beispielhaften Ausführungseinheiten gezeigt sind, dass in einer anderen Ausführungsform aber auch zusätzliche oder andere Gleitkomma-Ausführungseinheiten vorhanden sein können.
  • Eine Ganzzahl-Pipeline 640 kann ebenfalls bereitgestellt werden. In der gezeigten Ausführungsform enthält die Pipeline 640 eine Ganzzahl-Registerdatei 642, die mehrere Architekturregister eines gegebenen Bits mit zum Beispiel 128 oder 256 Bit enthalten kann. Die Pipeline 640 enthält einen Ganzzahl-Disponierer 644 zum Disponieren von Instruktionen zum Ausführen in einer von mehreren Ausführungseinheiten der Pipeline. In der gezeigten Ausführungsform enthalten solche Ausführungseinheiten eine ALU 645, eine Schieber-Einheit 646 und eine Sprungausführungseinheit 648. Die in diesen Ausführungseinheiten generierten Ergebnisse können wiederum an Puffer und/oder Register der Registerdatei 642 zurückgesendet werden. Es versteht sich natürlich, dass zwar nur diese wenigen beispielhaften Ausführungseinheiten gezeigt sind, dass in einer anderen Ausführungsform aber auch zusätzliche oder andere Ganzzahl-Ausführungseinheiten vorhanden sein können.
  • Ein Speicherausführungs-Disponierer 650 kann Speicheroperationen zum Ausführen in einer Adressengenerierungseinheit 652 disponieren, die ebenfalls mit einem TLB 654 gekoppelt ist. Wie zu sehen ist, können diese Strukturen mit einem Daten-Cache 660 gekoppelt sein, der ein L0- und/oder L1-Daten-Cache sein kann, der wiederum mit zusätzlichen Ebenen einer Cache-Speicherhierarchie, einschließlich eines L2-Cache-Speichers, gekoppelt ist.
  • Um Unterstützung für eine Out-of-Order-Ausführung bereitzustellen, kann zusätzlich zu einem Neuordnungspuffer 680, der dafür konfiguriert ist, Instruktionen neu zu ordnen, die außerhalb der Reihenfolge ausgeführt werden, um sie innerhalb der Reihenfolge zu beenden, ein Zuweiser/Umbenenner 670 vorhanden sein. Es ist zu beachten, dass die Leistungs- und Energieeffizienzfähigkeiten des Kerns 600 auf der Grundlage von Arbeitslast und/oder Prozessorbeschränkungen variieren können. Daher kann ein Energie-Controller (in 6 nicht gezeigt) mindestens teilweise auf der Grundlage solcher Informationen, einschließlich der im vorliegenden Text beschriebenen Leistungsüberwachungsinformationen, dynamisch einen zweckmäßigen Niedrigenergiezustand bestimmen, in den der Prozessor 500 ganz oder teilweise eintreten kann. Obgleich in der Veranschaulichung von 6 mit dieser speziellen Pipeline-Architektur gezeigt, versteht es sich, dass viele Variationen und Alternativen möglich sind.
  • Es ist zu beachten, dass in einem Prozessor mit asymmetrischen Kernen, wie zum Beispiel gemäß den Mikroarchitekturen der 5 und 6, Arbeitslasten aus Gründen des Energiemanagements dynamisch zwischen den Kernen getauscht werden können, da diese Kerne zwar unterschiedliche Pipeline-Designs und -tiefen haben, aber die gleiche oder eine verwandte ISA haben können. Ein solches dynamisches Kern-Swapping kann in einer für eine Benutzeranwendung (und möglicherweise auch für den Kernel) transparenten Weise ausgeführt werden.
  • In 7 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer weiteren Ausführungsform gezeigt. Wie in 7 veranschaulicht, kann ein Kern 700 eine mehrstufige In-Order-Pipeline enthalten, die bei sehr niedrigen Stromverbrauchspegeln ausgeführt wird. Als ein solches Beispiel kann der Prozessor 700 eine Mikroarchitektur gemäß einem ARM Cortex A53-Design haben, das bei ARM Holdings, LTD., Sunnyvale, Kalifornien, zu beziehen ist. In einer Implementierung kann eine 8-stufige Pipeline bereitgestellt werden, die dafür konfiguriert ist, sowohl 32-Bit- als auch 64-Bit-Code auszuführen. Der Kern 700 enthält eine Hol-Einheit 710, die dafür konfiguriert ist, Instruktionen zu holen und sie an eine Decodiereinheit 715 zu übermitteln, die die Instruktionen, zum Beispiel Makroinstruktionen einer gegebenen ISA, wie zum Beispiel einer ARMv8-ISA, decodieren kann. Es ist des Weiteren zu beachten, dass eine Warteschlange 730 mit der Decodiereinheit 715 gekoppelt sein kann, um decodierte Instruktionen zu speichern. Decodierte Instruktionen werden in eine Ausgabelogik 725 eingespeist, wo die decodierten Instruktionen an eine gegebene von mehreren Ausführungseinheiten ausgegeben werden können.
  • Unter weiterem Bezug auf 7 kann die Ausgabelogik 725 Instruktionen an eine von mehreren Ausführungseinheiten ausgeben. In der gezeigten Ausführungsform enthalten diese Ausführungseinheiten eine Ganzzahl-Einheit 735, eine Multiplikationseinheit 740, eine Gleitkomma-/Vektoreinheit 750, eine Doppelausgabeeinheit 760 und eine Lade-/Speichereinheit 770. Die Ergebnisse dieser verschiedenen Ausführungseinheiten können an eine Rückschreibe-Einheit 780 übermittelt werden. Es ist zu beachten, dass zwar aus Gründen der Übersichtlichkeit eine einzelne Rückschreibe-Einheit gezeigt ist, dass jedoch in einigen Implementierungen separate Rückschreibe-Einheiten mit jeder der Ausführungseinheiten verknüpft sein können. Es versteht sich des Weiteren, dass zwar jede der in 7 gezeigten Einheiten und Logik auf einer hohen Ebene dargestellt wird, dass aber eine bestimmte Implementierung auch mehr oder andere Strukturen enthalten kann. Ein Prozessor, der unter Verwendung eines oder mehrerer Kerne mit einer Pipeline wie in 7 entworfen wurde, kann in vielen verschiedenen Endprodukten implementiert werden, die von mobilen Vorrichtungen bis hin zu Serversystemen reichen.
  • In 8 ist ein Blockschaltbild einer Mikroarchitektur eines Prozessorkerns gemäß einer weiteren Ausführungsform gezeigt. Wie in 8 veranschaulicht, kann ein Kern 800 eine mehrstufige Mehrfachausgabe-Out-of-Order-Pipeline enthalten, die auf sehr hohen Leistungsniveaus ausgeführt werden kann (was bei höheren Stromverbrauchspegeln als bei dem Kern 700 von 7 geschehen kann). Als ein solches Beispiel kann der Prozessor 800 eine Mikroarchitektur gemäß einem ARM Cortex A57-Design haben. In einer Implementierung kann eine Pipeline mit 15 (oder mehr) Stufen bereitgestellt werden, die dafür konfiguriert ist, sowohl 32-Bit- als auch 64-Bit-Code auszuführen. Darüber hinaus kann die Pipeline einen Betrieb mit 3 Ausgaben (oder breiter) und 3 Ausgaben (oder mehr) erlauben. Der Kern 800 enthält eine Hol-Einheit 810, die dafür konfiguriert ist, Instruktionen zu holen und sie an einen Decodierer/Umbenenner/Versender 815 zu übermitteln, der die Instruktionen, zum Beispiel Makroinstruktionen einer ARMv8-Instruktionssatzarchitektur, decodieren kann, Registerreferenzen innerhalb der Instruktionen umbenennen kann, und die Instruktionen (letztendlich) an eine ausgewählte Ausführungseinheit senden kann. Decodierte Instruktionen können in einer Warteschlange 825 gespeichert werden. Es ist zu beachten, dass zwar in 8 aus Gründen der Übersichtlichkeit eine einzelne Warteschlangenstruktur gezeigt ist, dass es sich aber versteht, dass für jede der mehreren verschiedenen Arten von Ausführungseinheiten separate Warteschlangen vorhanden sein können.
  • In 8 ist außerdem eine Abgabelogik 830 gezeigt, von der in der Warteschlange 825 gespeicherte decodierte Instruktionen an eine ausgewählte Ausführungseinheit ausgegeben werden können. Die Abgabelogik 830 kann auch in einer bestimmten Ausführungsform mit einer separaten Abgabelogik für jede der mehreren verschiedenen Arten von Ausführungseinheiten, mit denen die Abgabelogik 830 gekoppelt ist, implementiert werden.
  • Decodierte Instruktionen können an eine bestimmte von mehreren Ausführungseinheiten ausgegeben werden. In der gezeigten Ausführungsform enthalten diese Ausführungseinheiten eine oder mehrere Ganzzahl-Einheiten 835, eine Multiplikationseinheit 840, eine Gleitkomma-/Vektoreinheit 850, eine Verzweigungseinheit 860 und eine Lade-/Speichereinheit 870. In einer Ausführungsform kann die Gleitkomma-/Vektoreinheit 850 so konfiguriert sein, dass sie SIMD- oder Vektordaten mit 128 oder 256 Bit verarbeiten kann. Darüber hinaus kann die Gleitkomma-/Vektor-Ausführungseinheit 850 Doppelpräzisions-Gleitkomma-Operationen nach IEEE 754 ausführen. Die Ergebnisse dieser verschiedenen Ausführungseinheiten können an eine Rückschreibe-Einheit 880 übermittelt werden. Es ist zu beachten, dass in einigen Implementierungen separate Rückschreibe-Einheiten mit jeder der Ausführungseinheiten verknüpft sein können. Es versteht sich des Weiteren, dass zwar jede der in 8 gezeigten Einheiten und Logik auf einer hohen Ebene dargestellt wird, dass aber eine bestimmte Implementierung auch mehr oder andere Strukturen enthalten kann.
  • Es ist zu beachten, dass in einem Prozessor mit asymmetrischen Kernen, wie zum Beispiel gemäß den Mikroarchitekturen der 7 und 8, Arbeitslasten aus Gründen des Energiemanagements dynamisch getauscht werden können, da diese Kerne zwar unterschiedliche Pipeline-Designs und -tiefen haben, aber die gleiche oder eine verwandte ISA haben können. Ein solches dynamisches Kern-Swapping kann in einer für eine Benutzeranwendung (und möglicherweise auch für den Kernel) transparenten Weise ausgeführt werden.
  • Ein Prozessor, der unter Verwendung eines oder mehrerer Kerne mit einer Pipeline wie in einer oder mehreren der 5-8 entworfen wurde, kann in vielen verschiedenen Endprodukten implementiert werden, die von mobilen Vorrichtungen bis hin zu Serversystemen reichen. Wir wenden uns nun 9 zu, wo ein Blockdiagramm eines Prozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt ist. In der Ausführungsform von 9 kann der Prozessor 900 ein SoC mit mehreren Domänen sein, von denen jede so gesteuert werden kann, dass sie mit einer unabhängigen Betriebsspannung und Betriebsfrequenz arbeitet. Als ein konkretes veranschaulichendes Beispiel kann der Prozessor 900 ein Intel® Architecture Core™-basierter Prozessor sein, wie zum Beispiel ein i3, i5, i7 oder ein anderer solcher Prozessor, der bei der Intel Corporation zu beziehen ist. In anderen Ausführungsformen können stattdessen auch andere Prozessoren mit geringem Stromverbrauch, wie zum Beispiel von Advanced Micro Devices, Inc. (AMD) in Sunnyvale, Kalifornien, erhältlich, ein ARM-basiertes Design von ARM Holdings, Ltd. oder einem ihrer Lizenznehmer, oder ein MIPS-basiertes Design von MIPS Technologies, Inc. in Sunnyvale, Kalifornien, oder einem ihrer Lizenznehmer oder Verwender vorhanden sein, wie zum Beispiel ein A7-Prozessor von Apple, ein Snapdragon-Prozessor von Qualcomm oder ein OMAP-Prozessor von Texas Instruments. Ein solches SoC kann in einem System mit niedrigem Stromverbrauch wie zum Beispiel einem Smartphone, einem Tablet-Computer, einem Phablet-Computer, einem Ultrabook™-Computer oder einer anderen tragbaren Computervorrichtung oder in einem Fahrzeug-Computersystem verwendet werden.
  • In der in 9 gezeigten Ansicht auf hoher Ebene enthält der Prozessor 900 mehrere Kerneinheiten 9100-910n. Jede Kerneinheit kann einen oder mehrere Prozessorkerne, einen oder mehrere Cache-Speicher und andere Schaltungen enthalten. Jede Kerneinheit 910 kann einen oder mehrere Instruktionssätze (zum Beispiel einen x86-Instruktionssatz (mit einigen Erweiterungen, die neueren Versionen hinzugefügt wurden), einen MIPS-Instruktionssatz, einen ARM-Instruktionssatz (mit optionalen zusätzlichen Erweiterungen wie zum Beispiel NEON)) oder andere Instruktionssätze oder Kombinationen davon unterstützen. Es ist zu beachten, dass einige der Kerneinheiten heterogene Ressourcen sein können (zum Beispiel mit einem anderen Design). Darüber hinaus kann jeder dieser Kerne mit einem Cache-Speicher (nicht gezeigt) gekoppelt sein, der in einer Ausführungsform ein gemeinsam genutzter Level 2 (L2)-Cache-Speicher sein kann. Ein nicht-flüchtiger Speicher 930 kann zum Speichern verschiedener Programm- und anderer Daten verwendet werden. Dieser Speicher kann zum Beispiel dafür verwendet werden, mindestens Abschnitte von Mikrocode, Boot-Informationen wie zum Beispiel ein BIOS, andere Systemsoftware und sonstige Informationen zu speichern.
  • Jede Kerneinheit 910 kann auch eine Schnittstelle wie zum Beispiel eine Busschnittstelleneinheit enthalten, um eine Interconnect-Verbindung zu zusätzlichen Schaltungen des Prozessors zu ermöglichen. In einer Ausführungsform ist jede Kerneinheit 910 mit einem kohärenten Fabric gekoppelt, das als eine primäre Cache-kohärente On-Die-Interconnect-Verbindung fungieren kann, die wiederum mit einem Speicher-Controller 935 gekoppelt ist. Der Speicher-Controller 935 wiederum steuert die Kommunikation mit einem Speicher wie zum Beispiel einem DRAM (im Interesse der Übersichtlichkeit in 9 nicht gezeigt).
  • Zusätzlich zu Kerneinheiten sind in dem Prozessor weitere Verarbeitungs-Engines vorhanden, darunter mindestens eine Grafikeinheit 920, die eine oder mehrere Grafikverarbeitungseinheiten (Graphics Processing Units, GPUs) enthalten kann, um eine Grafikverarbeitung auszuführen sowie möglicherweise Allzweckoperationen in dem Grafikprozessor auszuführen (sogenannte GPGPU-Operationen). Darüber hinaus kann mindestens ein Bildsignalprozessor 925 vorhanden sein. Der Signalprozessor 925 kann so konfiguriert sein, dass er ankommende Bilddaten verarbeitet, die von einer oder mehreren Aufnahmevorrichtungen empfangen werden, entweder innerhalb des SoC oder außerhalb des Chips.
  • Es können auch andere Beschleuniger vorhanden sein. In der Veranschaulichung von 9 kann ein Videocodierer 950 Codieroperationen, einschließlich der Codierung und Decodierung für Videoinformationen, ausführen und kann zum Beispiel Unterstützung für eine Hardwarebeschleunigung für hochauflösende Videoinhalte bereitstellen. Darüber hinaus kann ein Display-Controller 955 bereitgestellt werden, um Display-Operationen zu beschleunigen, einschließlich der Bereitstellung von Unterstützung für interne und externe Displays eines Systems. Darüber hinaus kann ein Sicherheitsprozessor 945 vorhanden sein, um Sicherheitsoperationen wie zum Beispiel sichere Boot-Operationen, verschiedene Kryptographie-Operationen usw. auszuführen.
  • Der Stromverbrauch jeder der Einheiten kann über einen Energiemanager 940 gesteuert werden, der eine Steuerlogik zum Ausführen der verschiedenen im vorliegenden Text beschriebenen Energiemanagementtechniken enthalten kann, einschließlich der datengestützten Bestimmung eines zweckmäßigen Ni edrigenergi ezustands.
  • In einigen Ausführungsformen kann das SoC 900 außerdem ein nichtkohärentes Fabric enthalten, das mit dem kohärenten Fabric gekoppelt ist, mit dem verschiedene Peripherievorrichtungen gekoppelt sein können. Eine oder mehrere Schnittstellen 960a-960d ermöglichen die Kommunikation mit einer oder mehreren außerhalb des Chips angeordneten Vorrichtungen. Diese Kommunikation kann über eine Vielzahl verschiedener Kommunikationsprotokolle erfolgen, wie zum Beispiel PCIe™, GPIO, USB, I2C, UART, MIPI, SDIO, DDR, SPI, HDMI sowie andere Arten von Kommunikationsprotokollen. Obgleich in der Ausführungsform von 9 auf dieser hohen Ebene gezeigt, versteht es sich, dass der Geltungsbereich der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist.
  • Wir wenden uns nun 10 zu, wo ein Blockdiagramm eines repräsentativen SoC gezeigt ist. In der gezeigten Ausführungsform kann das SoC 1000 ein Mehrkern-SoC sein, das für einen Niedrigenergiebetrieb konfiguriert ist, um für den Einbau in ein Smartphone oder eine andere Vorrichtung mit geringer Leistung, wie zum Beispiel einen Tablet-Computer oder eine andere portable Computervorrichtung oder ein Fahrzeug-Computersystem, optimiert zu sein. Als ein Beispiel kann das SoC 1000 unter Verwendung asymmetrischer oder unterschiedlicher Typen von Kernen implementiert werden, wie zum Beispiel Kombinationen aus Kernen mit höherer Leistung und/oder Kernen mit niedriger Leistung, zum Beispiel Out-of-Order-Kernen und In-Order-Kernen. In verschiedenen Ausführungsformen können diese Kerne auf einem Intel® Architecture™-Kerndesign oder einem ARM-Architekturdesign basieren. In weiteren Ausführungsformen kann eine Mischung aus Intel- und ARM-Kernen in einem gegebenen SoC implementiert sein.
  • Wie in 10 zu sehen ist, enthält das SoC 1000 eine erste Kerndomäne 1010 mit mehreren ersten Kernen 10120 - 10123. In einem Beispiel können diese Kerne Niedrigenergiekerne sein, wie zum Beispiel In-Order-Kerne, wie im vorliegenden Text beschrieben. In einer Ausführungsform können diese ersten Kerne als ARM-Cortex-A53-Kerne implementiert werden. Diese Kerne wiederum sind mit einem Cache-Speicher 1015 der Kerndomäne 1010 gekoppelt. Darüber hinaus enthält das SoC 1000 eine zweite Kerndomäne 1020. In der Veranschaulichung von 10 hat die zweite Kerndomäne 1020 mehrere zweite Kerne 10220 - 10223. In einem Beispiel können diese Kerne mit höherem Stromverbrauch 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 werden können. Diese Kerne wiederum sind mit einem Cache-Speicher 1025 der Kerndomäne 1020 gekoppelt. Es ist zu beachten, dass das in 10 gezeigte Beispiel zwar 4 Kerne in jeder Domäne enthält, dass es sich aber versteht, dass in anderen Beispielen auch mehr oder weniger Kerne in einer gegebenen Domäne vorhanden sein können.
  • Wir bleiben bei 10. Es wird des Weiteren eine Grafikdomäne 1030 bereitgestellt, die eine oder mehrere Grafikverarbeitungseinheiten (GPUs) enthalten kann, die dafür konfiguriert sind, Grafik-Arbeitslasten unabhängig voneinander auszuführen, die zum Beispiel durch einen oder mehrere Kerne der Kerndomänen 1010 und 1020 bereitgestellt werden. Als ein Beispiel kann die GPU-Domäne 1030 dafür verwendet werden, neben der Bereitstellung von Grafiken und Display-Rendering-Operationen auch eine Anzeigeunterstützung für mehrere Bildschirmgrößen bereitzustellen.
  • Wie zu sehen ist, sind die verschiedenen Domänen mit einer kohärenten Interconnect-Verbindung 1040 gekoppelt, die in einer Ausführungsform ein Cache-kohärentes Interconnect-Fabric sein kann, das wiederum mit einem integrierten Speicher-Controller 1050 gekoppelt ist. Die kohärente Interconnect-Verbindung 1040 kann in einigen Beispielen einen gemeinsam genutzten Cache-Speicher, wie zum Beispiel einen L3-Cache, enthalten. In einer Ausführungsform kann der Speicher-Controller 1050 ein direkter Speicher-Controller sein, um mehrere Kanäle für eine Kommunikation mit einem außerhalb des Chips angeordneten Speicher zu ermöglichen, wie zum Beispiel mehrere Kanäle eines DRAMs (im Interesse der Übersichtlichkeit in 10 nicht gezeigt).
  • In verschiedenen Beispielen kann die Anzahl der Kerndomänen variieren. Zum Beispiel kann für ein SoC mit geringer Leistung, das sich für den Einbau in eine mobile Computervorrichtung eignet, eine begrenzte Anzahl von Kerndomänen, wie zum Beispiel in 10 gezeigt, vorhanden sein. Darüber hinaus kann bei solchen SoCs mit geringer Leistung die Kerndomäne 1020, die Kerne mit höherer Leistung enthält, eine geringere Anzahl solcher Kerne aufweisen. Zum Beispiel können in einer Implementierung zwei Kerne 1022 bereitgestellt werden, um einen Betrieb mit reduziertem Stromverbrauch zu ermöglichen. Darüber hinaus können die verschiedenen Kerndomänen auch mit einem Interrupt-Controller gekoppelt werden, um einen dynamischen Tausch von Arbeitslasten zwischen den verschiedenen Domänen zu ermöglichen.
  • In weiteren Ausführungsformen können eine größere Anzahl von Kerndomänen sowie zusätzliche optionale IP-Logik vorhanden sein, so dass ein SoC auf höhere Leistungs (und Energie)-Pegel skaliert werden kann, um in andere Computervorrichtungen wie zum Beispiel Desktops, Server, Hochleistungscomputersysteme, Basisstationen usw. integriert zu werden. Als ein solches Beispiel können 4 Kerndomänen mit jeweils einer gegebenen Anzahl von Out-of-Order-Kernen bereitgestellt werden. Darüber hinaus können zusätzlich zu einer optionalen GPU-Unterstützung (die in einem Beispiel die Form einer GPGPU annehmen kann) ein oder mehrere Beschleuniger zum Bereitstellen einer optimierten Hardwareunterstützung für bestimmte Funktionen (zum Beispiel Web-Serving, Netzwerkverarbeitung, Vermittlung usw.) bereitgestellt werden. Darüber hinaus kann eine Eingabe-/Ausgabe-Schnittstelle vorhanden sein, um solche Beschleuniger mit außerhalb des Chips angeordneten Komponenten zu koppeln.
  • Wir wenden uns nun 11 zu, wo ein Blockdiagramm eines weiteren beispielhaften SoC gezeigt ist. In der Ausführungsform von 11 kann das SoC 1100 verschiedene Schaltungen enthalten, um eine hohe Leistung für Multimedia-Anwendungen, Kommunikation und andere Funktionen zu ermöglichen. Als solches eignet sich das SoC 1100 für den Einbau in eine breite Vielfalt portabler und anderer Vorrichtungen, wie zum Beispiel Smartphones, Tablet-Computer, Smart-Fernseher, Fahrzeug-Computersysteme und so weiter. In dem gezeigten Beispiel enthält das SoC 1100 eine Domäne 1110 einer zentralen Verarbeitungseinheit (CPU). In einer Ausführungsform können mehrere einzelne Prozessorkerne in der CPU-Domäne 1110 vorhanden sein. Als ein Beispiel kann die CPU-Domäne 1110 ein Vierkernprozessor mit 4 nebenläufigen Kernen sein. Solche Prozessoren können homogene oder heterogene Prozessoren sein, zum Beispiel eine Mischung aus Prozessorkernen mit geringer Leistung und Prozessorkernen mit hoher Leistung.
  • Im Gegenzug wird eine GPU-Domäne 1120 bereitgestellt, um eine erweiterte Grafikverarbeitung in einer oder mehreren GPUs auszuführen, um Grafiken zu verarbeiten und APIs zu berechnen. Eine DSP-Einheit 1130 kann einen oder mehrere Niedrigenergie-DSPs bereitstellen, um zusätzlich zu umfangreicheren Berechnungen, die während der Ausführung von Multimedia-Instruktionen auftreten können, Multimedia-Anwendungen mit niedrigem Stromverbrauch, wie zum Beispiel Musikwiedergabe, Audio/Video usw., zu verarbeiten. Eine Kommunikationseinheit 1140 wiederum kann verschiedene Komponenten enthalten, um Konnektivität über verschiedene Drahtlosprotokolle wie zum Beispiel Mobilfunkkommunikation (einschließlich 3G/4G LTE), Drahtlos-Nahbereichsprotokolle wie zum Beispiel Bluetooth™, IEEE 802.11 und so weiter zu ermöglichen.
  • Darüber hinaus kann ein Multimediaprozessor 1150 für Aufnahme und Wiedergabe von hochauflösenden Video- und Audioinhalten, einschließlich der Verarbeitung von Benutzergesten, verwendet werden. Eine Sensoreinheit 1160 kann mehrere Sensoren und/oder einen Sensor-Controller enthalten, um eine Schnittstelle zu verschiedenen außerhalb des Chips angeordneten Sensoren in einer gegebenen Plattform zu bilden. Ein Bildsignalprozessor 1170 kann mit einem oder mehreren separaten ISPs ausgestattet sein, um eine Bildverarbeitung in Bezug auf aufgenommenen Inhalt von einer oder mehreren Kameras einer Plattform, einschließlich Foto- und Videokameras, auszuführen.
  • Ein Display-Prozessor 1180 kann Unterstützung für die Verbindung mit einem hochauflösenden Display einer gegebenen Pixeldichte bereitstellen, einschließlich der Fähigkeit, Inhalte zur Wiedergabe auf einem solchen Display drahtlos zu übermitteln. Darüber hinaus kann eine Standorteinheit 1190 einen GPS-Empfänger mit Unterstützung für mehrere GPS-Konstellationen enthalten, um hochgenaue Positionsbestimmungsinformationen, die mit Hilfe eines solchen GPS-Empfängers erhalten werden, an Anwendungen zu übermitteln. Es versteht sich, dass zwar dieser spezielle Satz von Komponenten in dem Beispiel von 11 gezeigt ist, dass aber viele Variationen und Alternativen möglich sind.
  • Wir wenden uns nun 12 zu, wo ein Blockdiagramm eines beispielhaften Systems gezeigt ist, mit dem Ausführungsformen verwendet werden können. Wie zu sehen ist, kann das System 1200 ein Smartphone oder ein anderer Drahtlos-Kommunikator sein. Ein Basisbandprozessor 1205 ist dafür konfiguriert, verschiedene Signalverarbeitungen im Hinblick auf Kommunikationssignale auszuführen, die vom dem System gesendet oder durch das System empfangen werden sollen. Der Basisbandprozessor 1205 wiederum ist mit einem Anwendungsprozessor 1210 gekoppelt, der eine Haupt-CPU des Systems sein kann, um zusätzlich zu Benutzeranwendungen wie zum Beispiel vielen bekannten Social-Media- und Multimedia-Apps ein Betriebssystem (OS) und andere Systemsoftware auszuführen. Der Anwendungsprozessor 1210 kann einen Energie-Controller, wie im vorliegenden Text beschrieben, enthalten und kann des Weiteren dafür konfiguriert sein, eine Vielzahl verschiedener anderer Rechenoperationen für die Vorrichtung auszuführen.
  • Der Anwendungsprozessor 1210 wiederum kann mit einer Benutzerschnittstelle/einem Display 1220, zum Beispiel einem Touchscreen-Display, gekoppelt sein. Darüber hinaus kann der Anwendungsprozessor 1210 mit einem Speichersystem gekoppelt werden, das einen nicht-flüchtigen Speicher, und zwar einen Flash-Speicher 1230, und einen Systemspeicher, und zwar einen dynamischen Direktzugriffsspeicher (DRAM) 1235, enthält. Wie des Weiteren zu sehen ist, ist der Anwendungsprozessor 1210 außerdem mit einer Aufnahmevorrichtung 1240, wie zum Beispiel einer oder mehreren Bildaufnahmevorrichtungen, gekoppelt, die Video- und/oder Standbilder aufzeichnen können.
  • Wir bleiben bei 12. Eine Universal Integrated Circuit Card (UICC) 1240, die ein Teilnehmeridentitätsmodul (Subscriber Identity Module) und eventuell einen sicheren Speicher- und Kryptoprozessor umfasst, ist ebenfalls mit dem Anwendungsprozessor 1210 gekoppelt. Das System 1200 kann des Weiteren einen Sicherheitsprozessor 1250 enthalten, der mit dem Anwendungsprozessor 1210 gekoppelt sein kann. Mehrere Sensoren 1225 können mit dem Anwendungsprozessor 1210 gekoppelt werden, um die Eingabe einer Vielzahl verschiedener erfasster Informationen, wie zum Beispiel Beschleunigungsmesser- und anderer Umgebungsinformationen, zu ermöglichen. Eine Audio-Ausgabevorrichtung 1295 kann eine Schnittstelle zum Ausgeben von Ton, zum Beispiel in Form von Sprachkommunikation, abgespielten oder gestreamten Audiodaten usw., bereitstellen.
  • Wie des Weiteren veranschaulicht, ist eine kontaktlose Nahfeldkommunikations (Near Field Communication, NFC)-Schnittstelle 1260 vorhanden, die in einem NFC-Nahfeld über eine NFC-Antenne 1265 kommuniziert. Obgleich in 12 separate Antennen gezeigt sind, versteht es sich, dass in einigen Implementierungen eine einzelne Antenne oder ein anderer Satz von Antennen bereitgestellt werden kann, um verschiedene Drahtlosfunktionen zu ermöglichen.
  • Ein Power Management Integrated Circuit (PMIC) 1215 ist mit dem Anwendungsprozessor 1210 gekoppelt, um ein Energiemanagement auf Plattformebene auszuführen. Zu diesem Zweck kann der PMIC 1215 Energiemanagementanforderungen an den Anwendungsprozessor 1210 ausgeben, um nach Wunsch in bestimmte Niedrigenergiezustände einzutreten. Darüber hinaus kann der PMIC 1215 auf der Grundlage von Plattformbeschränkungen auch den Energiepegel anderer Komponenten des Systems 1200 steuern.
  • Um das Senden und Empfangen von Kommunikationen zu ermöglichen, können verschiedene Schaltungen zwischen dem Basisbandprozessor 1205 und einer Antenne 1290 gekoppelt sein. Insbesondere können ein Hochfrequenz (HF)-Transceiver 1270 und ein Wireless Local Area Network (WLAN)-Transceiver 1275 vorhanden sein. Im Allgemeinen kann der HF-Transceiver 1270 zum Empfangen und Senden von drahtlosen Daten und Anrufen gemäß einem gegebenen Drahtloskommunikationsprotokoll, wie zum Beispiel dem 3G- oder 4G- Drahtloskommunikationsprotokoll, wie zum Beispiel gemäß einem Code Division Multiple Access (CDMA)-Protokoll, einem Global System For Mobile Communication (GSM)-Protokoll, Long Term Evolution (LTE)-Protokoll oder einem anderen Protokoll, verwendet werden. Zusätzlich kann ein GPS-Sensor 1280 vorhanden sein. Andere Drahtloskommunikationen, wie zum Beispiel das Empfangen oder Senden von Funksignalen, zum Beispiel AM/FM- und anderen Signalen, können ebenfalls bereitgestellt werden. Darüber hinaus kann über den WLAN-Transceiver 1275 auch eine lokale Drahtloskommunikation realisiert werden.
  • Wir wenden uns nun 13 zu, wo ein Blockdiagramm eines weiteren beispielhaften Systems gezeigt ist, mit dem Ausführungsformen verwendet werden können. In der Veranschaulichung von 13 kann das System 1300 ein mobiles Niedrigenergiesystem sein, wie zum Beispiel ein Tablet-Computer, ein 2:1-Tablet, ein Phablet oder ein anderes konvertierbares oder eigenständiges Tabletsystem. Wie veranschaulicht, ist ein SoC 1310 vorhanden und kann dafür konfiguriert sein, als ein Anwendungsprozessor für die Vorrichtung zu arbeiten, und kann einen Energie-Controller enthalten, wie im vorliegenden Text beschrieben.
  • Eine Vielzahl verschiedener Vorrichtungen kann mit dem SoC 1310 gekoppelt sein. In der gezeigten Veranschaulichung enthält ein Speicher-Teilsystem einen Flash-Speicher 1340 und ein DRAM 1345, die mit dem SoC 1310 gekoppelt sind. Darüber hinaus ist ein Touchpanel 1320 mit dem SoC 1310 gekoppelt, um eine Anzeigefähigkeit und Benutzereingaben per Berührung zu ermöglichen, einschließlich der Bereitstellung einer virtuellen Tastatur auf einem Display des Touchpanels 1320. Um eine drahtgebundene Netzwerkkonnektivität bereitzustellen, ist das SoC 1310 mit einer Ethernet-Schnittstelle 1330 gekoppelt. Ein Peripherie-Hub 1325 ist mit dem SoC 1310 gekoppelt, um eine Schnittstelle zu verschiedenen Peripherievorrichtungen zu ermöglichen, die zum Beispiel über beliebige von verschiedenen Ports oder anderen Verbindern mit dem System 1300 gekoppelt werden können.
  • Zusätzlich zu internen Energiemanagementschaltungen und -funktionen innerhalb des SoC 1310 ist ein PMIC 1380 mit dem SoC 1310 gekoppelt, um ein plattformgestütztes Energiemanagement zu ermöglichen, zum Beispiel in Abhängigkeit davon, ob das System durch eine Batterie 1390 oder Wechselstrom über ein Netzteil 1395 betrieben wird. Zusätzlich zu diesem stromquellengestützten Energiemanagement kann der PMIC 1380 auf der Grundlage von Umgebungs- und Nutzungsbedingungen weitere plattformgestützte Energiemanagementaktivitäten ausführen. Darüber hinaus kann der PMIC 1380 Steuerungs- und Statusinformationen an den SoC 1310 übermitteln, um verschiedene Energiemanagementaktionen innerhalb des SoC 1310 zu veranlassen.
  • Wir bleiben bei 13. Um Drahtlos-Fähigkeiten zu ermöglichen, ist eine WLAN-Einheit 1350 mit dem SoC 1310 und wiederum mit einer Antenne 1355 gekoppelt. In verschiedenen Implementierungen kann die WLAN-Einheit 1350 die Kommunikation gemäß einem oder mehreren Drahtlos-Protokollen ermöglichen.
  • Wie des Weiteren veranschaulicht, können mehrere Sensoren 1360 mit dem SoC 1310 gekoppelt sein. Diese Sensoren können verschiedene Beschleunigungsmesser, Umgebungs- und andere Sensoren, einschließlich Benutzergestensensoren, enthalten. Schließlich ist ein Audio-Codec 1365 mit dem SoC 1310 gekoppelt, um eine Schnittstelle zu einer Audio-Ausgabevorrichtung 1370 bereitzustellen. Es versteht sich natürlich, dass zwar in 13 diese spezielle Implementierung gezeigt ist, dass aber viele Variationen und Alternativen möglich sind.
  • Wir wenden uns nun 14 zu, wo ein Blockdiagramm eines repräsentativen Computersystems, wie zum Beispiel ein Notebook, ein Ultrabook™ oder ein anderes System mit kleinem Formfaktor, gezeigt ist. Ein Prozessor 1410 enthält in einer Ausführungsform einen Mikroprozessor, einen Mehrkernprozessor, einen nebenläufigen Prozessor, einen Ultra-Niedrigspannungsprozessor, einen eingebetteten Prozessor oder ein anderes bekanntes Verarbeitungselement. In der veranschaulichten Implementierung fungiert der Prozessor 1410 als eine Hauptverarbeitungseinheit und zentraler Hub für die Kommunikation mit vielen der verschiedenen Komponenten des Systems 1400. Als ein Beispiel ist der Prozessor 1400 als ein SoC implementiert und kann, wie im vorliegenden Text beschrieben, einen Energie-Controller enthalten.
  • Der Prozessor 1410 kommuniziert in einer Ausführungsform mit einem Systemspeicher 1415. Als ein veranschaulichendes Beispiel ist der Systemspeicher 1415 über mehrere Speichervorrichtungen oder Module implementiert, um einen gegebenen Betrag an Systemspeicher bereitzustellen.
  • Um eine dauerhafte Speicherung von Informationen, wie zum Beispiel Daten, Anwendungen, ein oder mehrere Betriebssysteme usw. zu ermöglichen, kann auch ein Massenspeicher 1420 mit dem Prozessor 1410 gekoppelt sein. Um ein dünneres und leichteres Systemdesign zu ermöglichen und das Ansprechverhalten des Systems zu verbessern, kann dieser Massenspeicher in verschiedenen Ausführungen über eine SSD implementiert werden, oder der Massenspeicher kann primär unter Verwendung eines Festplattenlaufwerks (HDD) mit einer geringeren Menge an SSD-Speicher, der als ein SSD-Cache fungiert, implementiert werden, um eine nicht-flüchtige Speicherung des Kontextzustands und anderer solcher Informationen während eines Abschaltereignisses zu ermöglichen, so dass ein schnelles Hochfahren bei Re-Initiierung von Systemaktivitäten erfolgen kann. Wie in 14 gezeigt, kann eine Flash-Vorrichtung 1422 zum Beispiel über eine serielle Peripherieschnittstelle (SPI) mit dem Prozessor 1410 gekoppelt sein. Diese Flash-Vorrichtung kann eine nicht-flüchtige Speicherung von Systemsoftware bereitstellen, einschließlich einer Basic Input/Output-Software (BIOS) sowie anderer Firmware des Systems.
  • Innerhalb des Systems 1400 können verschiedene Eingabe-/AusgabeVorrichtungen (E/A) vorhanden sein. In der Ausführungsform von 14 ist speziell ein Display 1424 gezeigt, das ein hochauflösendes LCD- oder LED-Paneel sein kann, das außerdem einen Touchscreen 1425 bietet. In einer Ausführungsform kann das Display 1424 mit dem Prozessor 1410 über eine Display-Interconnect-Verbindung gekoppelt sein, die als eine Hochleistungsgrafik-Interconnect-Verbindung implementiert werden kann. Der Touchscreen 1425 kann mit dem Prozessor 1410 über eine andere Interconnect-Verbindung gekoppelt werden, die in einer Ausführungsform eine I2C-Interconnect-Verbindung sein kann. Wie des Weiteren in 14 gezeigt, können Benutzereingaben per Berührung zusätzlich zu dem Touchscreen 1425 auch über ein Touchpad 1430 erfolgen, das innerhalb des Chassis konfiguriert sein kann und ebenfalls mit derselben I2C-Interconnect-Verbindung wie der Touchscreen 1425 gekoppelt sein kann.
  • Für Wahrnehmungsberechnungen und andere Zwecke können verschiedene Sensoren innerhalb des Systems vorhanden sein und können auf unterschiedliche Weise mit dem Prozessor 1410 gekoppelt sein. Bestimmte Trägheits- und Umgebungssensoren können über einen Sensor-Hub 1440, zum Beispiel über eine I2C-Interconnect-Verbindung, mit dem Prozessor 1410 gekoppelt sein. 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 Gyroskop 1444 enthalten. Zu weiteren Umgebungssensoren können ein oder mehrere thermische Sensoren 1446 gehören, die in einigen Ausführungsformen über einen System Management Bus (SMBus)-Bus mit dem Prozessor 1410 verknüpft sind.
  • Wie ebenfalls in 14 zu sehen, können verschiedene Peripherievorrichtungen über eine Low Pin Count (LPC)-Interconnect-Verbindung mit dem Prozessor 1410 gekoppelt sein. In der gezeigten Ausführungsform können verschiedene Komponenten durch einen eingebetteten Controller 1435 gekoppelt sein. Solche Komponenten können eine Tastatur 1436 (die zum Beispiel über eine PS2-Schnittstelle gekoppelt ist), einen Lüfter 1437 und einen Wärmesensor 1439 enthalten. In einigen Ausführungsformen kann das Touchpad 1430 auch über eine PS2-Schnittstelle mit dem EC 1435 gekoppelt sein. Darüber hinaus kann ein Sicherheitsprozessor, wie zum Beispiel ein Trusted Platform Module (TPM) 1438, über diese LPC-Interconnect-Verbindung ebenfalls mit dem Prozessor 1410 gekoppelt sein.
  • Das System 1400 kann auf verschiedenste Weise mit externen Vorrichtungen kommunizieren, auch drahtlos. In der in 14 gezeigten Ausführungsform sind verschiedene Drahtlosmodule vorhanden, von denen jedes einer für ein bestimmtes Drahtloskommunikationsprotokoll konfigurierten Funkvorrichtung entsprechen kann. Eine Möglichkeit für die drahtlose Kommunikation innerhalb einer kurzen Reichweite, wie zum Beispiel im Nahfeld, kann die über eine NFC-Einheit 1445 sein, die in einer Ausführungsform über einen SMBus mit dem Prozessor 1410 kommunizieren kann. Es ist zu beachten, dass über diese NFC-Einheit 1445 Vorrichtungen in unmittelbarer Nähe zueinander kommunizieren können.
  • Wie des Weiteren in 14 zu sehen, können zu weiteren Drahtloseinheiten andere Drahtlose-Engines mit kurzer Reichweite gehören, einschließlich einer WLAN-Einheit 1450 und einer Bluetooth-Einheit 1452. Mit Hilfe der WLAN-Einheit 1450 kann eine Wi-Fi™-Kommunikation realisiert werden, während über die Bluetooth-Einheit 1452 eine Bluetooth™-Kommunikation mit kurzer Reichweite stattfinden kann. Diese Einheiten können über einen gegebenen Link mit dem Prozessor 1410 kommunizieren.
  • Darüber hinaus kann die drahtlose Fernbereichskommunikation, zum Beispiel gemäß einem Mobilfunk- oder anderen Drahtlos-Fernbereichsprotokoll, über eine WWAN-Einheit 1456 erfolgen, die wiederum mit einem Teilnehmeridentitätsmodul (Subscriber Identity Module, SIM) 1457 gekoppelt sein kann. Um den Empfang und die Nutzung von Standortinformationen zu ermöglichen, kann auch ein GPS-Modul 1455 vorhanden sein. Es ist zu beachten, dass in der in 14 gezeigten Ausführungsform die WWAN-Einheit 1456 und eine integrierte Aufnahmevorrichtung, wie zum Beispiel ein Kameramodul 1454, über einen gegebenen Link kommunizieren können.
  • Ein integriertes Kameramodul 1454 kann in den Deckel eingebaut sein. Zum Bereitstellen von Audio-Eingaben und -Ausgaben kann ein Audioprozessor über einen digitalen Signalprozessor (DSP) 1460 implementiert werden, der über einen High Definition Audio (HDA)-Link mit dem Prozessor 1410 gekoppelt sein kann. In ähnlicher Weise kann der DSP 1460 mit einem integrierten Codierer/Decodierer (CODEC) und Verstärker 1462 kommunizieren, der wiederum mit Ausgabelautsprechern 1463 gekoppelt sein kann, die innerhalb des Gehäuses implementiert werden 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 zum Beispiel ein digitales Mikrofon-Array) implementiert werden kann, um qualitativ hochwertige Audioeingaben bereitzustellen, um eine sprachaktivierte Steuerung verschiedener Operationen innerhalb des Systems zu ermöglichen. Es ist auch zu beachten, dass Audioausgaben von dem Verstärker/CODEC 1462 zu einer Kopfhörerbuchse 1464 übertragen werden können. Obgleich in der Ausführungsform von 14 mit diesen speziellen Komponenten gezeigt, versteht es sich, dass der Geltungsbereich der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist.
  • Ausführungsformen können in vielen verschiedenen Systemtypen implementiert werden. Wir wenden uns nun 15 zu, wo ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt ist. Wie in 15 gezeigt, ist das Mehrprozessorsystem 1500 ein Punkt-zu-Punkt-Interconnect-System und enthält einen ersten Prozessor 1570 und einen zweiten Prozessor 1580, die über eine Punkt-zu-Punkt-Interconnect-Verbindung 1550 gekoppelt sind. Wie in 15 gezeigt, kann jeder der Prozessoren 1570 und 1580 ein Mehrkernprozessor sein, der einen ersten und einen zweiten Prozessorkern (das heißt, die Prozessorkerne 1574a und 1574b und die Prozessorkerne 1584a und 1584b) enthält, obgleich potenziell viel mehr Kerne in den Prozessoren vorhanden sein können. Jeder der Prozessoren kann eine PCU 1575, 1585 oder eine andere Energiemanagementlogik enthalten, um ein prozessorgestütztes Energiemanagement, wie im vorliegenden Text beschrieben, auszuführen. Zu diesem Zweck können die PCUs 1575 und 1585 eine Niedrigenergie-Steuerschaltung enthalten, um mindestens teilweise auf der Grundlage ankommender Leistungsüberwachungsinformationen, auf deren Grundlage Pipeline-Kosten-Metadaten bestimmt werden können, dynamisch einen zweckmäßigen Niedrigenergiezustand zu bestimmen, in den der Prozessor ganz oder teilweise eintreten kann. Somit kann diese Niedrigenergie-Steuerschaltung den Eintritt in einen anderen Niedrigenergiezustand als den angeforderten bewirken, der, wie im vorliegenden Text beschrieben, ein herabgestufter oder heraufgestufter Niedrigenergiezustand sein kann.
  • Wir bleiben bei 15. Der erste Prozessor 1570 enthält des Weiteren einen Speicher-Controller-Hub (Memory Controller Hub, MCH) 1572 und Punkt-zu-Punkt (P-P)-Schnittstellen 1576 und 1578. In ähnlicher Weise enthält 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, und zwar einem Speicher 1532 und einem Speicher 1534, die Abschnitte von Systemspeicher (zum Beispiel DRAM) sein können, die lokal an die jeweiligen der Prozessoren gekoppelt sind. Der erste Prozessor 1570 und der zweite Prozessor 1580 können über die P-P-Interconnect-Verbindungen 1562 bzw. 1564 mit einem Chipsatz 1590 gekoppelt sein. Wie in 15 gezeigt, enthält der Chipsatz 1590 P-P-Schnittstellen 1594 und 1598.
  • Darüber hinaus enthält der Chipsatz 1590 eine Schnittstelle 1592, um den Chipsatz 1590 über eine P-P-Interconnect-Verbindung 1539 mit einer Hochleistungs-Grafik-Engine 1538 zu koppeln. Der Chipsatz 1590 wiederum kann über eine Schnittstelle 1596 mit einem ersten Bus 1516 gekoppelt sein. Wie in 15 gezeigt, können verschiedene Eingabe-/Ausgabe (E/A)-Vorrichtungen 1514 mit dem ersten Bus 1516 gekoppelt sein, zusammen mit einer Busbrücke 1518, die den ersten Bus 1516 mit einem zweiten Bus 1520 koppelt. Verschiedene Vorrichtungen können mit dem zweiten Bus 1520 gekoppelt sein, einschließlich beispielsweise einer Tastatur/Maus 1522, Kommunikationsvorrichtungen 1526 und einer Datenspeichereinheit 1528, wie zum Beispiel in einer Ausführungsform ein Disklaufwerk oder eine andere Massenspeichervorrichtung, die Code 1530 enthalten kann. Außerdem kann ein Audio-E/A 1524 mit dem zweiten Bus 1520 gekoppelt sein. Ausführungsformen können auch in andere Arten von Systemen eingebaut werden, einschließlich mobiler Vorrichtungen, wie zum Beispiel ein Smart-Mobiltelefon, ein Tablet-Computer, ein Netbook, ein Ultrabook™ und so weiter.
  • 16 ist ein Blockdiagramm, das ein IP-Kernentwicklungssystem 1600 veranschaulicht, das zur Herstellung eines integrierten Schaltkreises verwendet werden kann, um Operationen gemäß einer Ausführungsform auszuführen. Das IP-Kernentwicklungssystem 1600 kann zum Generieren modularer, wiederverwendbarer Designs verwendet werden, die in ein größeres Design integriert oder zur Konstruktion eines ganzen integrierten Schaltkreises (zum Beispiel eines integrierten SoC-Schaltkreises) verwendet werden können. Eine Designeinrichtung 1630 kann eine Software-Simulation 1610 eines IP-Kerndesigns in einer höheren Programmiersprache (zum Beispiel C/C++) generieren. Die Softwaresimulation 1610 kann zum Entwerfen, Testen und Verifizieren des Verhaltens des IP-Kerns verwendet werden. Aus dem Simulationsmodell kann dann ein Register-Transfer-Level (RTL)-Design erstellt oder synthetisiert werden. Das RTL-Design 1615 ist eine Abstraktion des Verhaltens des integrierten Schaltkreises, das den Fluss von digitalen Signalen zwischen Hardware-Registern modelliert, einschließlich der zugehörigen Logik, die unter Verwendung der modellierten digitalen Signale ausgeführt wird. Zusätzlich zu einem RTL-Design 1615 können auch auf niedrigeren Ebenen angesiedelte Designs auf logischer oder Transistorebene erstellt, entworfen oder synthetisiert werden. Daher können die einzelnen Details des anfänglichen Designs und der Simulation variieren.
  • Das RTL-Design 1615 oder ein Äquivalent kann durch die Designeinrichtung weiter in ein Hardware-Modell 1620 synthetisiert werden, das in einer Hardware-Beschreibungssprache (Hardware Description Language, HDL) oder einer anderen Darstellung physischer Designdaten vorliegen kann. Die HDL kann weiter simuliert oder getestet werden, um das IP-Kerndesign zu verifizieren. Das IP-Kerndesign kann für eine Übermittlung an eine Fertigungseinrichtung 1665 einer Drittanbieter-Fertigungseinrichtung unter Verwendung von nichtflüchtigem Speicher 1640 (zum Beispiel Festplatte, Flash-Speicher oder ein beliebiges nicht-flüchtiges Speichermedium) gespeichert werden. Alternativ kann das IP-Kerndesign (zum Beispiel über das Internet) über eine drahtgebundene Verbindung 1650 oder eine drahtlose Verbindung 1660 übertragen werden. Die Fertigungseinrichtung 1665 kann dann einen integrierten Schaltkreis fertigen, der mindestens teilweise auf dem IP-Kerndesign basiert. Der hergestellte integrierte Schaltkreis kann dafür konfiguriert sein, Operationen gemäß mindestens einer der im vorliegenden Text beschriebenen Ausführungsformen auszuführen.
  • Wir wenden uns nun 17 zu, wo ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt ist. Wie in 17 gezeigt, ist das Verfahren 1700 ein Verfahren zum Verwalten von Leistungsüberwachungsinformationen durch eine Leistungsüberwachungseinheit eines Prozessors. Als solches kann das Verfahren 1700 durch Hardware-Schaltungen, Firmware, Software und/oder Kombinationen davon ausgeführt werden. Wie veranschaulicht, beginnt das Verfahren 1700 mit der Verwaltung von Zählern bezüglich Fehlzugriffen in verschiedenen Cache-Speichern des Prozessors (Block 1710). Genauer gesagt, kann ein Leistungsüberwacher eine Anzahl von Zählern enthalten. Einige dieser Zähler können mit bestimmten Ebenen von Cache-Speichern verknüpft sein, einschließlich Instruktions-Caches, Daten-Caches, Übersetzungspuffern (Translation Lookaside Buffers) und so weiter. In Ausführungsformen kann der Leistungsüberwacher dafür konfiguriert sein, Zähler zum Zählen von Fehlzugriffen innerhalb verschiedener Ebenen von Cache-Speichern einer Cache-Speicherhierarchie des Prozessors zu verwalten. Solche Informationen können während des Betriebes in dem Prozessor, bei Debugging-Operationen usw. auf verschiedene Weise verwendet werden. Und insbesondere, wie im vorliegenden Text beschrieben, können solche Fehlzugriffsinformationen zusammen mit anderen Daten dafür verwendet werden, Energiemanagement-Entscheidungen in einem Energie-Controller herbeizuführen.
  • In einer Ausführungsform können Lade- und/oder Speicher-Fehlzugriffe für verschiedene Cache-Speicher dafür verwendet werden, in dem Leistungsüberwacher Verhältnisinformationen hinsichtlich der Kosten solcher Fehlzugriffe zu generieren (zum Beispiel die Anzahl der Fehlzugriffe pro einer gegebenen Anzahl nicht-angehaltener Taktzyklen). Obgleich der Geltungsbereich der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, können Cache-Speicher, für die Statistiken geführt werden können, und Kosten-Metadaten, die an einen Energie-Controller gemeldet werden, ITLB, DTLB, L1I, LID, L2 und L3 enthalten.
  • Wir bleiben bei 17. Als Nächstes geht die Steuerung zu Block 1720 über, wo ein oder mehrere Zähler in Bezug auf ankommende Interrupts geführt werden können. Zum Beispiel können ein oder mehrere Zähler des Leistungsüberwachers bereitgestellt werden, um Zählinformationen bezüglich Interrupts verschiedener Arten zu verwalten. Als nächstes wird bei Raute 1730 festgestellt, ob ein erstes Auswertungsintervall abgeschlossen ist. Dieses erste Auswertungsintervall kann einer Zeitdauer entsprechen, in der Leistungsüberwachungsinformationen analysiert werden, um resultierende Metadaten zu generieren und einem Leistungsüberwacher zur Verwendung, wie im vorliegenden Text beschrieben, zu übermitteln. Obgleich der Geltungsbereich der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann dieses erste Auswerteintervall in der Größenordnung zwischen 1 Millisekunde und 1 Sekunde liegen. Wenn eines dieser Verhältnisse beim Verlassen erwarteter C-Zustände einen gegebenen Schwellenwert überschreitet (zum Beispiel mehr als 10 % der Zeit aktiver Zyklen (C0)), dann wird der Eintritt in diesen Niedrigenergiezustand verhindert. Wenn dieses erste Auswertungsintervall noch nicht abgeschlossen ist, so geht die Steuerung an Block 1710 zurück. Andernfalls geht die Steuerung an Block 1740 über.
  • Im Block 1740 können Pipeline-Kosten-Metadaten berechnet werden. Genauer gesagt, können für die Zwecke der Verwendung im vorliegenden Text mindestens einige der Zähler, die Fehlzugriffsinformationen verwalten, analysiert werden, um die Pipeline-Kosten der Auswirkungen solcher Fehlzugriffe aufgrund bestimmter Niedrigenergiezustände zu bestimmen. Als ein Beispiel können diese Pipeline-Kosten als Prozentsatz der nicht-angehaltenen aktiven Zyklen C0 der gesamten Maschine bestimmt werden, in denen die Pipeline in Reaktion auf die Cache-Fehlzugriffe blockiert ist. Als Nächstes geht die Steuerung an Block 1750 über, wo Interruptraten-Metadaten auf der Grundlage der geführten Interrupt-Zähler berechnet werden können. In einer Ausführungsform können diese Interruptraten-Metadaten unter Verwendung eines oder mehrerer Zähler berechnet werden, die eine Zählung der ankommenden Interrupts führen. Als ein Beispiel können diese Interruptraten-Metadaten in Form von Interrupts pro gegebener Zeitdauer ausgedrückt werden (zum Beispiel das erste Auswertungsintervall, pro Sekunde, und so weiter).
  • Und schließlich, mit Blick auf 17, geht die Steuerung als Nächstes zu Block 1760 über, wo die Pipeline-Kosten-Metadaten und die Interruptraten-Metadaten an den Energie-Controller gesendet werden können. In einer Ausführungsform kann eine dedizierte Interconnect-Verbindung bereitgestellt werden, um diese Metadaten von dem Leistungsüberwacher an den Energie-Controller zu übermitteln. In anderen Fällen kann eine generische Prozessor-Interconnect-Architektur dafür verwendet werden, diese Informationen zu übermitteln. Es versteht sich, dass, obgleich in der Ausführungsform von 17 auf dieser hohen Ebene gezeigt, viele Variationen und Alternativen möglich sind. Zum Beispiel versteht es sich, dass die speziell beschriebenen Leistungsüberwachungszähler, die verwalteten Informationen und die daraus resultierenden Metadaten nur einige der Arten von Leistungsüberwachungsinformationen zu sein brauchen, die innerhalb eines Prozessors, wie im vorliegenden Text beschrieben, verwaltet und analysiert werden. Es ist auch möglich, rohe Zählerdaten an den Energie-Controller zu senden und den Energie-Controller die Pipeline-Kosten auf der Grundlage der übermittelten Informationen ermitteln zu lassen.
  • Wir wenden uns nun 18 zu, wo ein Flussdiagramm eines anderen Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt ist. Genauer gesagt, und wie in 18 gezeigt, ist das Verfahren 1800 ein Verfahren zum Empfangen und zur Verwendung von Leistungsüberwachungsinformationen in einem Energie-Controller eines Prozessors. Als solches kann das Verfahren 1800 durch Hardware-Schaltungen, Firmware, Software und/oder Kombinationen davon ausgeführt werden. Wie veranschaulicht, beginnt das Verfahren 1800 mit dem Empfangen von Pipeline-Kosten-Metadaten und Interruptraten-Metadaten von dem Leistungsüberwacher (Block 1810). Zum Beispiel können, wie oben beschrieben, solche Informationen auf einem dedizierten Pfad übermittelt werden, der zwischen dem Leistungsüberwacher und dem Energie-Controller gekoppelt ist. Als Nächstes geht die Steuerung an Block 1815 über, wo die empfangenen Pipeline-Kosten-Metadaten mit einem jüngsten Niedrigenergiezustand verknüpft werden können. Nehmen wir zum Beispiel an, dass der vorherige (jüngste) Niedrigenergiezustand, der in dem Prozessor (oder relevanten Abschnitt) auftrat, ein C6-Zustand war. In diesem Fall können diese ankommenden Pipeline-Kosten-Metadaten mit dem C6-Zustand oder einem anderen tieferen Niedrigenergiezustand verknüpft werden. Zum Beispiel können die ankommenden Pipeline-Kosten-Metadaten mit zusätzlichen Pipeline-Kosten-Metadaten akkumuliert werden, die mit dem C6-Zustand oder einem anderen tieferen Niedrigenergiezustand für frühere Iterationen des Empfangs solcher ankommenden Leistungsüberwachungsinformationen verknüpft sind.
  • Als Nächstes wird festgestellt, ob ein zweites Auswertungsintervall abgeschlossen ist (Raute 1820). Genauer gesagt, kann dieses zweite Auswertungsintervall länger dauern als das erste Auswertungsintervall, so dass Leistungsüberwachungsinformationen aus mehreren ersten Auswertungsintervallen berücksichtigt werden können. Wenn festgestellt wird, dass das zweite Auswertungsintervall nicht abgeschlossen ist, so geht die Steuerung wieder an Block 1810 zum Empfangen und Verarbeiten zusätzlicher Leistungsüberwachungsinformationen zurück.
  • Andernfalls geht, wenn festgestellt wird, dass das zweite Auswertungsintervall abgeschlossen ist, die Steuerung an Block 1830 über, wo die Pipeline-Kosten-Metadateninformationen für den ersten und den zweiten Niedrigenergiezustand für mindestens einen Cache-Speicher verglichen werden können. Obgleich im Interesse der besseren Übersichtlichkeit das Verfahren 1800 so gezeigt ist, dass dieser Vergleich der Pipeline-Kosten-Metadaten für nur einen einzigen Cache-Speicher ausgeführt wird, ist es dennoch möglich, dass die Vergleichsoperationen für mehrere Cache-Ebenen ausgeführt werden. In solchen Situationen können die in 18 beschriebenen weiteren Bestimmungen auf diesen mehrfachen Vergleichen beruhen. Daher kann es verschiedene Techniken für die Gewichtung der Vergleiche von Pipeline-Kosten-Metadateninformationen für mehrere Cache-Ebenen geben, bei denen die Ergebnisse mehrerer Vergleiche berücksichtigt werden können. Oder es braucht nur ein ausgewähltes oder eine Teilmenge dieser Vergleichsergebnisse als die Grundlage für die im vorliegenden Text getroffenen Bestimmungen verwendet zu werden.
  • Für die Zwecke der Besprechung im vorliegenden Text nehmen wir an, dass der in Block 1830 ausgeführte Vergleich der Analyse von Pipeline-Kosten-Metadaten für einen einzelnen Cache-Speicher dient. Wir nehmen des Weiteren an, dass dieser interessierende Cache-Speicher ein TLB der ersten Ebene ist. Wir nehmen außerdem an, dass der erste und der zweite Niedrigenergiezustand ein C1-Niedrigenergiezustand bzw. ein C6-Niedrigenergiezustand sind. Der Vergleich kann die Analyse einer Differenz bei den relativen Pipeline-Kosten auf der Grundlage von Pipeline-Kosten-Metadaten für den TLB der ersten Ebene enthalten. Genauer gesagt, können die akkumulierten Pipeline-Kosten-Metadaten für diese beiden verschiedenen Niedrigenergiezustände in Bezug auf den TLB der ersten Ebene einen Hinweis auf die Kosten für die Prozessor-Pipeline aufgrund von Fehlzugriffen geben, die in dem TLB der ersten Ebene während des Betriebes der Prozessor-Pipeline in Zeiten nach dem Verlassen des ersten Niedrigenergiezustands und des zweiten Niedrigenergiezustands auftreten. Der Vergleich der Auswirkungen der TLB-Fehlzugriffe auf die Instruktions-Pipeline bei erfolgreichem Eintreten in tiefere Ruhezustände im Vergleich zum Nicht-Eintreten ist ausschlaggebend für die Entscheidung, ob in Zukunft in die tieferen Ruhezustände eingetreten werden soll. Anders ausgedrückt: Der TLB wird vor dem Eintreten in C6 geleert, wird aber nicht vor dem Eintreten in C1 geleert, und infolge dessen treten nach dem Verlassen von C6 größere Fehlzugriffsraten auf als nach dem Verlassen von C1.
  • Als Nächstes geht die Steuerung an Raute 1840 über, um zu bestimmen, ob das Vergleichsergebnis eine erste Herabstufungsschwelle überschreitet. Diese erste Herabstufungsschwelle kann einer gegebenen prozentualen Differenz zwischen den Kostenwerten entsprechen. In einer bestimmten Ausführungsform kann diese erste Herabstufungsschwelle auf ein Niveau von etwa 10 % eingestellt werden (natürlich sind auch andere Beispiele möglich). Anders ausgedrückt: Diese Bestimmung berücksichtigt somit, ob die Pipeline-Kosten für Leerungen aufgrund des Eintretens in einen C6-Niedrigenergiezustand (und die resultierenden Fehlzugriffe nach dem Verlassen des C6-Zustands) mehr als 10 % höher sind als die Kosten aufgrund von Fehlzugriffen nach dem Eintreten in den C1-Niedrigenergiezustand und dem Verlassen des C1-Niedrigenergiezustands. Diese Fehlzugriffe nach dem C1-Zustand dienen als Ausgangsbasis zum Bestimmen der natürlichen Arbeitslast-Fehlzugriffsrate, da der TLB vor dem Eintreten in den C 1-Zustand nicht geleert wird.
  • Wenn bei Raute 1840 bestimmt wird, dass das Vergleichsergebnis die erste Herabstufungsschwelle überschreitet (was bedeutet, dass die Kosten für die Prozessor-Pipeline aufgrund des Betriebes in einem tieferen Niedrigenergiezustand relativ hoch sind), so kann die Steuerung direkt zu Block 1850 voranschreiten, um einen Niedrigenergiezustands-Herabstufungsbetrieb zu ermöglichen. Das heißt, wenn die Pipeline-Kosten-Metadaten berücksichtigt werden, können unerwünschte Leistungsauswirkungen auftreten, wenn der Prozessor in tiefere Niedrigenergiezustände eintritt. Daher wird ein Niedrigenergiezustands-Herabstufungsbetrieb aktiviert, wobei ein Energie-Controller auf der Grundlage dieser Daten ankommende softwaregestützte Niedrigenergiezustandsanforderungen für tiefere Niedrigenergiezustände außer Kraft setzen kann, um zu veranlassen, dass der Prozessor in weniger tiefe Niedrigenergiezustände eintritt.
  • Wir bleiben bei 18. Wenn stattdessen bei Raute 1840 bestimmt wird, dass das Vergleichsergebnis die erste Herabstufungsschwelle nicht überschreitet, so geht die Steuerung zu Raute 1845 über. Es ist zu beachten, dass in einigen Ausführungsformen diese Bestimmung bei Raute 1845 bezüglich der Analyse der Interruptrate ein optionaler Prozess sein kann, der in Abhängigkeit von der Konfiguration des Prozessors, den Betriebsbedingungen usw. möglicherweise nicht stattfindet. Wenn diese optionale Bestimmung voranschreitet, so erfolgt eine Analyse der Interruptraten-Metadaten. Genauer gesagt, und wie in 18 gezeigt, wird bestimmt, ob die Interruptraten-Metadaten eine zweite Herabstufungsschwelle überschreiten. Diese zweite Herabstufungsschwelle kann auf einen Interrupt-Pegel eingestellt werden, bei dem eine unerwünschte Leistungseinbuße entstehen kann, wenn sich ein Prozessor in einem gegebenen Niedrigenergiezustand befände. Als ein Beispiel kann diese zweite Herabstufungsschwelle in der Größenordnung einer Interruptrate zwischen etwa 10- und 15.000 Interrupts pro Sekunde liegen. Es ist zu beachten, dass diese zweite Herabstufungsschwelle mindestens teilweise auf einer Analyse der Latenzen für das Eintreten in den, und das Austreten aus dem, gegebenen Niedrigenergiezustand beruhen kann, was als Ausgangsgrundlage dienen kann, um zu bestimmen, ob unerwünschte Leistungskosten aufgrund ankommender Interrupts auftreten können, falls der Prozessor (oder der relevante Kern) in den betreffenden Niedrigenergiezustand versetzt wird.
  • Wenn die Bestimmung bei Raute 1845 positiv ausfällt, so geht die Steuerung in ähnlicher Weise zu Block 1850 über, wo ein Niedrigenergiezustands-Herabstufungsbetrieb aktiviert wird. Somit, wie in 18 veranschaulicht, kann eine Bestimmung, einen Niedrigenergiezustands-Herabstufungsbetrieb (bei Block 1850) zu ermöglichen, auf der Grundlage einer einzelnen von mehreren Erwägungen (oder möglicherweise zweifachen Erwägungen) erfolgen. Das heißt, es ist möglich, dass der Herabstufungsbetrieb in Reaktion auf die Feststellung beider Bestimmungen fortgesetzt wird, in denen befunden wird, dass die relevanten Metadaten die gegebene Herabstufungsschwelle überschreiten. Somit ist es in verschiedenen Ausführungsformen möglich, die Steuerung des Niedrigenergiezustands-Herabstufungsbetriebes auf eine Analyse der Interruptraten-Metadaten, eine Analyse der Pipeline-Kosten-Metadaten oder beides zu stützen. Und natürlich können in anderen Ausführungsformen zusätzliche oder andere Erwägungen in Bezug auf andere Metadaten, die von einem Leistungsüberwacher empfangen werden, dafür verwendet werden, eine datengestützte Herabstufung (oder Heraufstufungssteuerung, die weiter unten erörtert wird) auszuführen.
  • Damit der Energie-Controller in dem Niedrigenergiezustands-Herabstufungsmodus arbeiten kann, kann der Energie-Controller in einem Konfigurationsregister oder an einer anderen Stelle einen Indikator setzen, um anzuzeigen, dass der Energie-Controller jetzt für den Betrieb in diesem Niedrigenergiezustands-Herabstufungsmodus konfiguriert ist. Wenn also eine ankommende Niedrigenergiezustandsanforderung empfangen wird, so kann der Energie-Controller auf diesen Indikator zugreifen, um die zweckmäßige Handhabung der Anforderung zu bestimmen, wie weiter unten noch beschrieben wird.
  • Wir bleiben bei 18. Wenn die Bestimmungen bei den Rauten 1840 und 1845 negativ sind (in Ausführungsformen, in denen beide Operationen ausgeführt werden), so geht die Steuerung als Nächstes zu Raute 1860 über, um zu bestimmen, ob das Vergleichsergebnis der Pipeline-Kosten-Metadateninformationen unter einer ersten Heraufstufungsschwelle (Raute 1860) liegt. Diese erste Heraufstufungsschwelle kann einer gegebenen prozentualen Differenz zwischen den Kostenwerten entsprechen. In einer bestimmten Ausführungsform kann diese erste Heraufstufungsschwelle auf ein Niveau von etwa 2-3 % eingestellt werden (natürlich sind auch andere Beispiele möglich). Anders ausgedrückt: Diese Bestimmung berücksichtigt somit, ob die Pipeline-Kosten für Leerungen aufgrund eines Eintretens in den C6-Zustand oder einen höheren Niedrigenergiezustand (und die resultierenden Fehlzugriffe nach dem Verlassen des C6-Zustands) weniger als einige Prozent höher sind als die Kosten aufgrund von Fehlzugriffen nach dem Eintreten in einen C1-Niedrigenergiezustand und dem Verlassen eines C1-Niedrigenergiezustands.
  • Wenn bei Raute 1860 bestimmt wird, dass aufgrund des Betriebes in einem tieferen Niedrigenergiezustand nur beschränkte Kosten anfallen, so geht die Steuerung als Nächstes zu Raute 1865 über, wo bestimmt wird, ob die Interruptraten-Metadaten unter einer zweiten Heraufstufungsschwelle liegen. Diese zweite Heraufstufungsschwelle kann auf einen relativ niedrigen Interrupt-Pegel eingestellt werden, unterhalb dem keine unerwünschte Leistungseinbuße entstehen würde, wenn sich ein Prozessor in einem relativ tieferen Niedrigenergiezustand befände.
  • Wenn die Bestimmung bei Raute 1865 positiv ausfällt, so geht die Steuerung zu Block 1870 über, wo ein Niedrigenergiezustands-Heraufstufungsbetrieb aktiviert wird. Somit kann ein Energie-Controller auf der Grundlage dieser Daten ankommende softwaregestützte Niedrigenergiezustandsanforderungen für weniger tiefe Niedrigenergiezustände außer Kraft setzen, um den Prozessor zu veranlassen, in tiefere Niedrigenergiezustände einzutreten. Es ist zu beachten, dass in der Ausführungsform von 18 der Heraufstufungsmodus nur dann aktiviert zu werden braucht, wenn die beiden Vergleiche bei den Rauten 1860 und 1865 positiv sind, um sicherzustellen, dass es keine Leistungsauswirkungen aufgrund des Eintretens in tiefere Niedrigenergiezustände gibt. Natürlich können in anderen Ausführungsformen auch andere Techniken zum Ermöglichen eines Niedrigenergiezustands-Heraufstufungsbetriebes ausgeführt werden.
  • Wir bleiben bei 18. Wenn stattdessen bei Raute 1860 oder Raute 1865 bestimmt wird, dass das Vergleichsergebnis nicht unter der ersten oder der zweiten Heraufstufungsschwelle liegt, so geht die Steuerung an Block 1880 über, wo der Energie-Controller für einen standardmäßigen Betrieb im Niedrigenergiezustand aktiviert werden kann. Wenn also eine gegebene Software-Entität einen bestimmten Niedrigenergiezustand anfordert, so erfolgt keine Heraufstufung oder Herabstufung des angeforderten Zustands auf der Grundlage der ankommenden Daten, und zwar der Pipeline-Kosten-Metadaten oder der Interruptraten-Metadaten. Ungeachtet dessen ist es für den Energie-Controller immer noch möglich, einen anderen Niedrigenergiezustand als den angeforderten auszuwählen, zum Beispiel aufgrund von Arbeitslastanforderungen, Prozessorbeschränkungen und so weiter. Es versteht sich, dass, obgleich in der Ausführungsform von 18 auf dieser hohen Ebene gezeigt, viele Variationen und Alternativen möglich sind.
  • Zum Beispiel kann es sein, dass in einigen Ausführungsformen der Herabstufungs- und Heraufstufungsbetrieb nicht im Zusammenhang mit der Auswahl verschiedener Niedrigenergiezustände, wie zum Beispiel verschiedener ACPI C-Zustände, steht. Stattdessen können in einigen Ausführungsformen bei aktivierter Herabstufungs- und Heraufstufungssteuerung hochauflösende Änderungen der Energiesteuerung stattfinden. Wenn zum Beispiel ein Herabstufungsbetrieb angezeigt wird, so kann, anstatt einen Kern/Prozessor zu veranlassen, in einen weniger tiefen Niedrigenergiezustand einzutreten, eine andere Kombination von Energiemanagementaktivitäten des angeforderten Niedrigenergiezustands ausgeführt werden. Nehmen wir zum Beispiel an, dass eine ankommende Software-Entität einen Niedrigenergiezustand anfordert, in dem drei bestimmte Cache-Speicher geleert werden. In diesem Fall kann die hochauflösende Steuerung mindestens teilweise auf der Grundlage der Pipeline-Kosten-Metadaten bestimmen, dass der Inhalt von weniger als drei (zum Beispiel 0, 1 oder 2) Cache-Speichern geleert werden kann, während sie andernfalls in den angeforderten Niedrigenergiezustand eintreten. Darüber hinaus sind noch weitere Variationen der Energiemanagementsteuerung möglich. Wenn zum Beispiel DTLB-Fehlzugriffe der Hauptfaktor sind, der sich auf C0-Zyklen zwischen den tieferen und den weniger tiefen C-Zuständen auswirkt, so kann der Energie-Controller bestimmen, den DTLB nicht zu leeren, sondern weiterhin den L1I-Cache und den ITLB zu leeren. Zu weiteren Beispielen kann die Bestimmung gehören, ob bestimmte Takte in einem gegebenen Zustand gegattert werden sollen oder nicht (zum Beispiel können im C3-Zustand bestimmte Takte in der Regel gesperrt werden, aber die PCU kann entscheiden, einen oder mehrere dieser Takte aktiviert zu lassen), oder die Bestimmung, ob bestimmte Stimmrechte eines Kerns oder einer anderen Entität (für Frequenzzustände oder C-Zustände auf Package-Ebene) in einem gegebenen Niedrigenergiezustand verloren gehen können oder nicht.
  • Wir wenden uns nun 19 zu, wo ein Flussdiagramm eines Verfahrens gemäß einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt ist. Wie in 19 gezeigt, ist das Verfahren 1900 ein Verfahren zum Steuern des Eintretens einer Verarbeitungseinheit, zum Beispiel eines Kerns, in einen bestimmten Niedrigenergiezustand in Reaktion auf eine ankommende einer Niedrigenergiezustandsanforderung. Als solches kann das Verfahren 1900 durch einen Energie-Controller eines Prozessors ausgeführt werden, der zum Beispiel in Hardware-Schaltkreisen, Firmware, Software und/oder Kombinationen davon implementiert ist. Wie veranschaulicht, beginnt das Verfahren 1900 mit dem Empfangen einer Software-Anforderung für einen Niedrigenergiezustand (Block 1910). Als ein Beispiel kann diese Niedrigenergiezustandsanforderung von einem Betriebssystem (OS) auf der Grundlage einer momentan ausgeführten Arbeitslast empfangen werden. Genauer gesagt, kann in Ausführungsformen ein Betriebssystem oder eine andere Software-Entität eine Anforderung senden, dass ein oder mehrere Kerne in einen Niedrigenergiezustand eintreten. Eine solche Anforderung kann sich in bestimmten Fällen auf einen bestimmten Niedrigenergiezustand beziehen, zum Beispiel einen gegebenen von mehreren C-Zuständen. Für die Zwecke der Besprechung im vorliegenden Text nehmen wir an, dass diese ankommende Software-Anforderung für einen C6-Niedrigenergiezustand gilt. Als Nächstes wird bestimmt, ob der Herabstufungs- oder Heraufstufungsbetrieb des Energie-Controllers aktiviert ist (Raute 1920). Zum Beispiel kann der Energie-Controller auf ein Konfigurationsregister verweisen, das anzeigt, ob der Energie-Controller in einem Heraufstufungs- oder einem Herabstufungsmodus arbeitet.
  • Wenn der Herabstufungs- oder Heraufstufungsbetrieb aktiviert ist, so geht die Steuerung zu Block 1930 über, wo ein gegebener herabgestufter oder heraufgestufter Niedrigenergiezustand bestimmt werden kann. Bei der Bestimmung eines zweckmäßigen Niedrigenergiezustands können verschiedene Überlegungen ins Spiel kommen. So können zum Beispiel die Pipeline-Kosten-Metadaten und/oder die Interruptraten-Metadaten zusammen mit dem angeforderten Niedrigenergiezustand, Latenzinformationen, Arbeitslastinformationen, Stromverbrauchsinformationen usw. berücksichtigt werden. In bestimmten Ausführungsformen kann der Energie-Controller eine oder mehrere Nachschlagetabellen enthalten, die einen angeforderten Niedrigenergiezustand mit einem bestimmten Niedrigenergiezustand verknüpfen, der sich von dem angeforderten Niedrigenergiezustand unterscheidet. Zum Beispiel können zwei solcher Tabellen bereitgestellt werden: eine für den Herabstufungsbetrieb und eine für den Heraufstufungsbetrieb. In einem solchen Fall kann jeder Eintrag der gegebenen Tabelle (und zwar einer Herabstufungs- und einer Heraufstufungs-Tabelle) eine Verknüpfung zwischen einem angeforderten Niedrigenergiezustand und einem bestimmten Niedrigenergiezustand, der der herbeizuführende Niedrigenergiezustand ist, vornehmen. Natürlich können in anderen Ausführungsformen auch andere Arten des Bestimmens eines zweckmäßigen Niedrigenergiezustands ausgeführt werden, wenn der Herabstufungs- oder Heraufstufungsbetrieb aktiviert ist.
  • Wir bleiben bei 19, wo die Steuerung zu Block 1940 übergeht, wo veranlasst werden kann, dass der Kern in einen bestimmten herabgestuften oder heraufgestuften Niedrigenergiezustand versetzt werden kann. Nehmen wir an, dass der Energie-Controller für den Herabstufungsbetrieb aktiviert ist. In einem solchen Fall kann, wenn die ankommende Anforderung einen C6-Zustand verlangt, der Energie-Controller den Kern veranlassen, in einen weniger tiefen Zustand einzutreten, zum Beispiel einen C1-Zustand oder einen anderen Niedrigenergiezustand von geringerer Dauer und weniger Auswirkungen auf die Leistung als der C6-Zustand. Wenn hingegen der Energie-Controller für den Heraufstufungsbetrieb aktiviert ist, so kann der Energie-Controller, wenn eine ankommende Anforderung einen relativ weniger tiefen Niedrigenergiezustand (zum Beispiel einen C6-Zustand) verlangt, den Kern veranlassen, in einen tieferen Zustand einzutreten, zum Beispiel einen C6-Zustand oder einen anderen Niedrigenergiezustand von möglicherweise längerer Dauer und mit größerer Auswirkung auf die Leistung als der angeforderte Zustand. In einigen Fällen kann vor diesem Heraufstufungsbetrieb ein Vergleich der Kosten zum Beispiel von C1- und C6-Ruhezuständen erfolgen.
  • Schließlich, wie des Weiteren in 19 gezeigt, geht die Steuerung stattdessen zu Block 1950 über, wenn bei Raute 1920 bestimmt wird, dass der Herabstufungs- oder Heraufstufungsbetrieb nicht aktiviert ist. Dort kann der Energie-Controller veranlassen, dass der Kern in den angeforderten Niedrigenergiezustand übergeht. Wenn also in diesem Fall eine Software-Entität zum Beispiel einen C6-Zustand anfordert, so veranlasst der Energie-Controller, dass der Kern in den C6-Zustand eintritt. Es versteht sich, dass, obgleich in der Ausführungsform von 19 auf dieser hohen Ebene gezeigt, viele Variationen und Alternativen möglich sind.
  • Ausführungsformen ermöglichen so die Verwendung von Daten von dem Leistungsüberwacher, um bessere datengestützte Entscheidungen über Niedrigenergiezustände zu treffen. Auf diese Weise ermöglichen Ausführungsformen einen Prozessor, der eine bessere Leistung erbringt und weniger Strom vergeudet.
  • Die folgenden Beispiele beziehen sich auf weitere Ausführungsformen.
  • In einem Beispiel enthält ein Prozessor: mindestens einen Kern zum Ausführen von Instruktionen, wobei der mindestens eine Kern eine Cache-Speicherhierarchie mit mindestens einem TLB und mindestens einem in dem Kern enthaltenen Cache-Speicher enthält; einen mit dem mindestens einen Kern gekoppelten Leistungsüberwacher, wobei der Leistungsüberwacher die Leistung des mindestens einen Kerns überwachen soll, wobei der Leistungsüberwacher einen ersten Zähler zum Zählen von Fehlzugriffen in dem mindestens einen TLB und einen zweiten Zähler zum Zählen von Fehlzugriffen in dem mindestens einen in dem Kern enthaltenen Cache-Speicher enthält, wobei der Leistungsüberwacher die Pipeline-Kosten-Metadaten mindestens teilweise auf der Grundlage des ersten Zählers und des zweiten Zählers berechnen soll; und einen Energie-Controller, der mit dem Leistungsüberwacher gekoppelt ist, wobei der Energie-Controller die Pipeline-Kosten-Metadaten empfangen soll und mindestens teilweise auf der Grundlage der Pipeline-Kosten-Metadaten einen Niedrigenergiezustand bestimmen soll, in den der mindestens eine Kern eintreten soll.
  • In einem Beispiel soll der Energie-Controller eine Software-Anforderung empfangen, dass der mindestens eine Kern in einen zweiten Niedrigenergiezustand eintritt, und veranlassen, dass der mindestens eine Kern in einen anderen Niedrigenergiezustand eintritt, wenn die Pipeline-Kosten-Metadaten anzeigen, dass zweite Pipeline-Kosten, nachdem der mindestens eine Kern in den zweiten Niedrigenergiezustand eingetreten ist, erste Pipeline-Kosten um mindestens eine erste Schwelle übersteigen, nachdem der mindestens eine Kern in einen ersten Niedrigenergiezustand eingetreten ist.
  • In einem Beispiel soll der Energie-Controller eine zweite Software-Anforderung empfangen, dass der mindestens eine Kern in den ersten Niedrigenergiezustand eintritt, und veranlassen soll, dass der mindestens eine Kern in einen anderen Niedrigenergiezustand eintritt, wenn die Pipeline-Kosten-Metadaten anzeigen, dass die zweiten Pipeline-Kosten die ersten Pipeline-Kosten um weniger als eine zweite Schwelle übersteigen, wobei der zweite Niedrigenergiezustand ein tieferer Niedrigenergiezustand als der erste Niedrigenergiezustand ist.
  • In einem Beispiel soll der Energie-Controller einen Niedrigenergiezustands-Herabstufungsbetrieb aktivieren, wenn die Pipeline-Kosten-Metadaten anzeigen, dass zweite Pipeline-Kosten, nachdem der mindestens eine Kern in einen zweiten Niedrigenergiezustand eingetreten ist, erste Pipeline-Kosten um mindestens eine erste Schwelle übersteigen, nachdem der mindestens eine Kern in einen ersten Niedrigenergiezustand eingetreten ist.
  • In einem Beispiel soll der Energie-Controller ein Vergleichsergebnis auf der Grundlage einer ersten Teilmenge der Pipeline-Kosten-Metadaten, die mit einem ersten Niedrigenergiezustand verknüpft sind, und einer zweiten Teilmenge der Pipeline-Kosten-Metadaten, die mit einem zweiten Niedrigenergiezustand verknüpft sind, berechnen.
  • In einem Beispiel soll der Energie-Controller in Reaktion darauf, dass das Vergleichsergebnis größer als eine erste Schwelle ist, den Niedrigenergiezustands-Herabstufungsbetrieb aktivieren, wobei die erste Schwelle eine Herabstufungsschwelle umfasst.
  • In einem Beispiel soll der Leistungsüberwacher die Interruptraten-Metadaten bezüglich einer Rate ankommender Interrupts berechnen und die Interruptraten-Metadaten an den Energie-Controller übermitteln.
  • In einem Beispiel soll der Energie-Controller eine Software-Anforderung empfangen, dass der mindestens eine Kern in einen zweiten Niedrigenergiezustand eintritt, und veranlassen, dass der mindestens eine Kern in einen ersten Niedrigenergiezustand eintritt, wenn die Interruptraten-Metadaten eine dritte Schwelle überschreiten, wobei der erste Niedrigenergiezustand ein weniger tiefer Niedrigenergiezustand ist als der zweite Niedrigenergiezustand.
  • In einem Beispiel soll der Energie-Controller mindestens teilweise auf der Grundlage der Pipeline-Kosten-Metadaten eine Software-Anforderung für einen Niedrigenergiezustand des mindestens einen Kerns empfangen, in dem der mindestens eine TLB geleert werden soll, und der mindestens eine Kern soll in einen Niedrigenergiezustand eintreten, in dem der mindestens eine TLB nicht geleert wird.
  • In einem Beispiel soll der Energie-Controller mindestens teilweise auf der Grundlage der Pipeline-Kosten-Metadaten, die mit mehreren Cache-Speichern der Cache-Speicherhierarchie verknüpft sind, eine Software-Anforderung empfangen, dass der mindestens eine Kern in einen ersten Niedrigenergiezustand eintritt, und veranlassen soll, dass der mindestens eine Kern in einen anderen Niedrigenergiezustand eintritt.
  • In einem Beispiel umfasst der Prozessor des Weiteren eine dedizierte Interconnect-Verbindung zum Koppeln des Leistungsüberwachers und des Energie-Controllers, wobei der Leistungsüberwacher die Pipeline-Kosten-Metadaten über die dedizierte Interconnect-Verbindung an den Energie-Controller übermitteln soll.
  • In einem anderen Beispiel umfasst ein Verfahren: Empfangen, in einem Energie-Controller eines Prozessors, von Pipeline-Kosten-Metadaten von einem Leistungsüberwacher des Prozessors; Vergleichen eines ersten Wertes der Pipeline-Kosten-Metadaten, die mit dem Betrieb des Prozessors nach einem ersten Niedrigenergiezustand verknüpft sind, mit einem zweiten Wert der Pipeline-Kosten-Metadaten, die mit dem Betrieb des Prozessors nach einem zweiten Niedrigenergiezustand verknüpft sind; Bestimmen, ob ein Ergebnis des Vergleichs eine erste Schwelle überschreitet; und in Reaktion auf das Bestimmen, dass das Vergleichsergebnis die erste Schwelle überschreitet, Aktivieren des Energie-Controllers für einen Herabstufungsbetrieb, bei dem in Reaktion auf eine Software-Anforderung für den zweiten Niedrigenergiezustand der Energie-Controller mindestens einen Kern des Prozessors veranlasst, in den ersten Niedrigenergiezustand einzutreten, wobei der erste Niedrigenergiezustand ein weniger tiefer Niedrigenergiezustand als der zweite Niedrigenergiezustand ist.
  • In einem Beispiel umfasst das Verfahren des Weiteren: Empfangen, in dem Energie-Controller, von Interruptraten-Metadaten von dem Leistungsüberwacher; Bestimmen, ob die Interruptraten-Metadaten eine zweite Schwelle überschreiten; und in Reaktion auf das Bestimmen, dass die Interruptraten-Metadaten die zweite Schwelle überschreiten, Aktivieren des Energie-Controllers für den Herabstufungsbetrieb.
  • In einem Beispiel umfasst das Verfahren des Weiteren: in Reaktion auf das Bestimmen, dass das Vergleichsergebnis die erste Schwelle nicht überschreitet, Bestimmen, ob das Vergleichsergebnis kleiner als eine dritte Schwelle ist; und in Reaktion auf das Bestimmen, dass das Vergleichsergebnis kleiner als die dritte Schwelle ist, Aktivieren des Energie-Controllers für einen Heraufstufungsbetrieb, bei dem in Reaktion auf die Softwareanforderung für den zweiten Niedrigenergiezustand der Energie-Controller den mindestens einen Kern des Prozessors veranlasst, in den ersten Niedrigenergiezustand einzutreten.
  • In einem Beispiel umfasst das Verfahren des Weiteren: in Reaktion auf das Bestimmen, dass das Vergleichsergebnis die erste Schwelle nicht überschreitet und die dritte Schwelle überschreitet; und Aktivieren des Energie-Controllers für den Standardbetrieb, bei dem der Energie-Controller in Reaktion auf die Software-Anforderung für den zweiten Niedrigenergiezustand veranlasst, dass der mindestens eine Kern in den zweiten Niedrigenergiezustand eintritt.
  • In einem Beispiel umfasst das Verfahren des Weiteren: in Reaktion auf das Bestimmen, dass das Vergleichsergebnis unter der dritten Schwelle liegt, Bestimmen, ob Interruptraten-Metadaten unter einer vierten Schwelle liegen; und in Reaktion auf das Bestimmen, dass die Interruptraten-Metadaten unter der vierten Schwelle liegen, Aktivieren des Energie-Controllers für den Heraufstufungsbetrieb.
  • In einem anderen Beispiel soll ein computerlesbares Medium, das Instruktionen enthält, das Verfahren nach einem der oben genannten Beispiele ausführen.
  • In einem anderen Beispiel soll ein computerlesbares Medium, das Daten enthält, durch mindestens eine Maschine verwendet werden, um mindestens einen integrierten Schaltkreis zu fertigen, um das Verfahren nach einem der oben genannten Beispiele auszuführen.
  • In einem anderen Beispiel enthält eine Vorrichtung ein Mittel zum Ausführen des Verfahrens nach einem der oben genannten Beispiele.
  • In einem anderen Beispiel umfasst ein System: einen Prozessor, der aufweist: mindestens einen Kern zum Ausführen von Instruktionen, einen Leistungsüberwacher, der mit dem mindestens einen Kern gekoppelt ist, wobei der Leistungsüberwacher die Leistung des mindestens einen Kerns überwacht, wobei der Leistungsüberwacher erste Pipeline-Kosten-Metadaten berechnet, die mit einem ersten Niedrigenergiezustand verknüpft sind, und zweite Pipeline-Kosten-Metadaten berechnet, die mit einem zweiten Niedrigenergiezustand verknüpft sind, und einen Energie-Controller, der mit dem Leistungsüberwacher gekoppelt ist, um die ersten Pipeline-Kosten-Metadaten und die zweiten Pipeline-Kosten-Metadaten zu empfangen und zu bestimmen, ob eine Niedrigenergiezustandsanforderung von einer Software-Entität, die mindestens teilweise auf den ersten Pipeline-Kosten-Metadaten und den zweiten Pipeline-Kosten-Metadaten basiert, außer Kraft gesetzt werden soll; und einen dynamischen Direktzugriffsspeicher, der mit dem Prozessor gekoppelt ist.
  • In einem Beispiel soll der Energie-Controller auf der Grundlage eines Vergleichs zwischen den ersten Pipeline-Kosten-Metadaten und den zweiten Pipeline-Kosten-Metadaten die Niedrigenergiezustandsanforderung außer Kraft setzen.
  • In einem Beispiel soll der Leistungsüberwacher des Weiteren die Interruptraten-Metadaten bezüglich einer Rate ankommender Interrupts berechnen und die Interruptraten-Metadaten an den Energie-Controller übermitteln.
  • In einem Beispiel soll der Energie-Controller die Niedrigenergiezustandsanforderung des Weiteren auf der Grundlage eines Vergleichs zwischen den Interruptraten-Metadaten und einer Schwelle außer Kraft setzen.
  • Es versteht sich, dass verschiedene Kombinationen der oben genannten Beispiele möglich sind.
  • Es ist zu beachten, dass die Begriffe „Schaltkreis“ und „Schaltung“ im vorliegenden Text austauschbar verwendet werden. Im Sinne des vorliegenden Textes beziehen sich diese Begriffe und der Begriff „Logik“ auf - allein oder in beliebiger Kombination - analoge Schaltungen, digitale Schaltungen, festverdrahtete Schaltungen, programmierbare Schaltungen, der Prozessorschaltungen, Mikrocontrollerschaltungen, Hardware-Logikschaltungen, Zustandsmaschinenschaltungen und/oder jede andere Art von physischen Hardwarekomponenten. Ausführungsformen können in vielen verschiedenen Arten von Systemen verwendet werden. Zum Beispiel kann in einer Ausführungsform eine Kommunikationsvorrichtung dafür ausgelegt sein, die verschiedenen im vorliegenden Text beschriebenen Verfahren und Techniken auszuführen. Natürlich ist der Geltungsbereich der vorliegenden Erfindung nicht auf eine Kommunikationsvorrichtung beschränkt; stattdessen können andere Ausführungsformen andere Arten von Vorrichtungen zum Verarbeiten von Instruktionen betreffen, oder ein oder mehrere maschinenlesbare Medien, die Instruktionen enthalten, die in Reaktion auf ihre Ausführung auf einer Computervorrichtung die Vorrichtung veranlassen, eine oder mehrere der im vorliegenden Text beschriebenen Verfahren und Techniken auszuführen.
  • Ausführungsformen können in Code implementiert werden, und können auf einem nicht-transitorischen Speichermedium gespeichert werden, auf dem Instruktionen gespeichert sind, die zum Programmieren eines Systems zum Ausführen der Instruktionen verwendet werden können. Ausführungsformen können auch in Daten implementiert werden und können auf einem nicht-transitorischen Speichermedium gespeichert werden, das, wenn es durch mindestens eine Maschine verwendet wird, die mindestens eine Maschine veranlasst, mindestens einen integrierten Schaltkreis herzustellen, um eine oder mehrere Operationen auszuführen. Weitere Ausführungsformen können in einem computerlesbaren Speichermedium implementiert werden, das Informationen enthält, die, wenn sie in ein SoC oder einen anderen Prozessor eingearbeitet werden, dazu dienen, den SoC oder den anderen Prozessor so zu konfigurieren, dass er eine oder mehrere Operationen ausführt. Zu dem Speichermedium kann unter anderem jede beliebige Art von Disks gehören, einschließlich Disketten, optische Disks, Festkörperlaufwerke (SSDs), Compact-Disk-Nurlesespeicher (CD-ROMs), wiederbeschreibbare Compact-Disks (CD-RWs) und magnetooptische Disks, Halbleitervorrichtungen, wie zum Beispiel Nurlesespeicher (ROMs), Direktzugriffsspeicher (RAMs), wie zum Beispiel dynamische Direktzugriffsspeicher (DRAMs), statische Direktzugriffsspeicher (SRAMs), löschbare programmierbare Nurlesespeicher (EPROMs), Flash-Speicher, elektrisch löschbare programmierbare Nurlesespeicher (EEPROMs), magnetische oder optische Karten oder jede andere Art von Medien, die zum Speichern elektronischer Instruktionen geeignet sind.
  • Obgleich die vorliegende Erfindung in Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, fallen dem Fachmann zahlreiche Modifizierungen und Variationen daran ein. Es ist beabsichtigt, dass die beigefügten Ansprüche alle derartigen Modifizierungen und Variationen umfassen, die unter das wahre Wesen und den Schutzumfang der vorliegenden Erfindung fallen.

Claims (25)

  1. Prozessor, der umfasst: mindestens einen Kern zum Ausführen von Instruktionen, wobei der mindestens eine Kern eine Cache-Speicher-Hierarchie mit mindestens einem Übersetzungspuffer (Translation Lookaside Buffer, TLB) und mindestens einem in dem Kern enthaltenen Cache-Speicher enthält; einen mit dem mindestens einen Kern gekoppelten Leistungsüberwacher, wobei der Leistungsüberwacher die Leistung des mindestens einen Kerns überwacht, wobei der Leistungsüberwacher einen ersten Zähler zum Zählen von Fehlzugriffen in dem mindestens einen TLB und einen zweiten Zähler zum Zählen von Fehlzugriffen in dem mindestens einen in dem Kern enthaltenen Cache-Speicher enthält, wobei der Leistungsüberwacher Pipeline-Kosten-Metadaten mindestens teilweise auf der Grundlage des ersten Zählers und des zweiten Zählers berechnet; und einen Energie-Controller, der mit dem Leistungsüberwacher gekoppelt ist, wobei der Energie-Controller die Pipeline-Kosten-Metadaten empfangen soll und mindestens teilweise auf der Grundlage der Pipeline-Kosten-Metadaten einen Niedrigenergiezustand bestimmen soll, in den der mindestens eine Kern eintreten soll.
  2. Prozessor nach Anspruch 1, wobei der Energie-Controller eine Software-Anforderung empfangen soll, dass der mindestens eine Kern in einen zweiten Niedrigenergiezustand eintritt, und veranlassen soll, dass der mindestens eine Kern in einen anderen Niedrigenergiezustand eintritt, wenn die Pipeline-Kosten-Metadaten anzeigen, dass zweite Pipeline-Kosten, nachdem der mindestens eine Kern in den zweiten Niedrigenergiezustand eingetreten ist, erste Pipeline-Kosten um mindestens eine erste Schwelle übersteigen, nachdem der mindestens eine Kern in einen ersten Niedrigenergiezustand eingetreten ist.
  3. Prozessor nach Anspruch 2, wobei der Energie-Controller eine zweite Software-Anforderung empfangen soll, dass der mindestens eine Kern in den ersten Niedrigenergiezustand eintritt, und veranlassen soll, dass der mindestens eine Kern in den zweiten Niedrigenergiezustand eintritt, wenn die Pipeline-Kosten-Metadaten anzeigen, dass die zweiten Pipeline-Kosten die ersten Pipeline-Kosten um weniger als eine zweite Schwelle übersteigen, wobei der zweite Niedrigenergiezustand ein tieferer Niedrigenergiezustand als der erste Niedrigenergiezustand ist.
  4. Prozessor nach Anspruch 1, wobei der Energie-Controller einen Niedrigenergiezustands-Herabstufungsbetrieb aktivieren soll, wenn die Pipeline-Kosten-Metadaten anzeigen, dass die zweiten Pipeline-Kosten, nachdem der mindestens eine Kern in einen zweiten Niedrigenergiezustand eingetreten ist, die ersten Pipeline-Kosten um mindestens eine erste Schwelle übersteigen, nachdem der mindestens eine Kern in einen ersten Niedrigenergiezustand eingetreten ist.
  5. Prozessor nach Anspruch 1, wobei der Energie-Controller ein Vergleichsergebnis auf der Grundlage einer ersten Teilmenge der Pipeline-Kosten-Metadaten, die mit einem ersten Niedrigenergiezustand verknüpft sind, und einer zweiten Teilmenge der Pipeline-Kosten-Metadaten, die mit einem zweiten Niedrigenergiezustand verknüpft sind, berechnen soll.
  6. Prozessor nach Anspruch 5, wobei der Energie-Controller in Reaktion darauf, dass das Vergleichsergebnis größer als eine erste Schwelle ist, den Niedrigenergiezustands-Herabstufungsbetrieb aktivieren soll, wobei die erste Schwelle eine Herabstufungsschwelle umfasst.
  7. Prozessor nach Anspruch 1, wobei der Leistungsüberwacher Interruptraten-Metadaten bezüglich einer Rate ankommender Interrupts berechnen und die Interruptraten-Metadaten an den Energie-Controller übermitteln soll.
  8. Prozessor nach Anspruch 7, wobei der Energie-Controller eine Software-Anforderung erhalten soll, dass der mindestens eine Kern in einen zweiten Niedrigenergiezustand eintritt, und veranlassen soll, dass der mindestens eine Kern in einen ersten Niedrigenergiezustand eintritt, wenn die Interruptraten-Metadaten eine dritte Schwelle überschreiten, wobei der erste Niedrigenergiezustand ein weniger tiefer Niedrigenergiezustand ist als der zweite Niedrigenergiezustand.
  9. Prozessor nach einem der Ansprüche 1-8, wobei der Energie-Controller mindestens teilweise auf der Grundlage der Pipeline-Kosten-Metadaten eine Software-Anforderung für einen Niedrigenergiezustand des mindestens einen Kerns empfangen soll, in dem der mindestens eine TLB geleert werden soll, und der mindestens eine Kern in einen Niedrigenergiezustand eintreten soll, in dem der mindestens eine TLB nicht geleert wird.
  10. Prozessor nach einem der Ansprüche 1-8, wobei der Energie-Controller mindestens teilweise auf der Grundlage der Pipeline-Kosten-Metadaten, die mit mehreren Cache-Speichern der Cache-Speicherhierarchie verknüpft sind, eine Software-Anforderung empfangen soll, dass der mindestens eine Kern in einen ersten Niedrigenergiezustand eintritt, und veranlassen soll, dass der mindestens eine Kern in einen anderen Niedrigenergiezustand eintritt.
  11. Prozessor nach einem der Ansprüche 1 bis 8, der des Weiteren eine dedizierte Interconnect-Verbindung zum Koppeln des Leistungsüberwachers und des Energie-Controllers umfasst, wobei der Leistungsüberwacher die Pipeline-Kosten-Metadaten über die dedizierte Interconnect-Verbindung an den Energie-Controller übermitteln soll.
  12. Verfahren, das umfasst: Empfangen, in einem Energie-Controller eines Prozessors, von Pipeline-Kosten-Metadaten von einem Leistungsüberwacher des Prozessors; Vergleichen eines ersten Wertes der Pipeline-Kosten-Metadaten, die mit dem Betrieb des Prozessors nach einem ersten Niedrigenergiezustand verknüpft sind, mit einem zweiten Wert der Pipeline-Kosten-Metadaten, die mit dem Betrieb des Prozessors nach einem zweiten Niedrigenergiezustand verknüpft sind; Bestimmen, ob ein Ergebnis des Vergleichs eine erste Schwelle überschreitet; und in Reaktion auf das Bestimmen, dass das Vergleichsergebnis die erste Schwelle überschreitet, Aktivieren des Energie-Controllers für einen Herabstufungsbetrieb, bei dem in Reaktion auf eine Software-Anforderung für den zweiten Niedrigenergiezustand der Energie-Controller veranlasst, dass mindestens ein Kern des Prozessors in den ersten Niedrigenergiezustand eintritt, wobei der erste Niedrigenergiezustand ein weniger tiefer Niedrigenergiezustand als der zweite Niedrigenergiezustand ist.
  13. Verfahren nach Anspruch 12, das des Weiteren umfasst: Empfangen, in dem Energie-Controller, von Interruptraten-Metadaten von dem Leistungsüberwacher; Bestimmen, ob die Interruptraten-Metadaten eine zweite Schwelle überschreiten; und in Reaktion auf das Bestimmen, dass die Interruptraten-Metadaten die zweite Schwelle überschreiten, Aktivieren des Energie-Controllers für den Herabstufungsbetrieb.
  14. Verfahren nach Anspruch 12, das des Weiteren umfasst: in Reaktion auf das Bestimmen, dass das Vergleichsergebnis die erste Schwelle nicht überschreitet, Bestimmen, ob das Vergleichsergebnis kleiner als eine dritte Schwelle ist, und in Reaktion auf das Bestimmen, dass das Vergleichsergebnis kleiner als die dritte Schwelle ist, Aktivieren des Energie-Controllers für einen Heraufstufungsbetrieb, bei dem in Reaktion auf die Softwareanforderung für den zweiten Niedrigenergiezustand der Energie-Controller veranlasst, dass der mindestens eine Kern des Prozessors in den ersten Niedrigenergiezustand eintritt.
  15. Verfahren nach Anspruch 14, das des Weiteren umfasst: in Reaktion auf das Bestimmen, dass das Vergleichsergebnis die erste Schwelle nicht überschreitet und die dritte Schwelle überschreitet; und Aktivieren des Energie-Controllers für den Standardbetrieb, bei dem der Energie-Controller in Reaktion auf die Software-Anforderung für den zweiten Niedrigenergiezustand veranlasst, dass der mindestens eine Kern in den zweiten Niedrigenergiezustand eintritt.
  16. Verfahren nach Anspruch 14, das des Weiteren umfasst: in Reaktion auf das Bestimmen, dass das Vergleichsergebnis unter der dritten Schwelle liegt, Bestimmen, ob Interruptraten-Metadaten unter einer vierten Schwelle liegen; und in Reaktion auf das Bestimmen, dass die Interruptraten-Metadaten unter der vierten Schwelle liegen, Aktivieren des Energie-Controllers für den Heraufstufungsbetrieb.
  17. Mindestens ein computerlesbares Speichermedium, das Code enthält, der, wenn er ausgeführt wird, eine Maschine veranlasst, das Verfahren nach einem der Ansprüche 12-16 auszuführen.
  18. System, das umfasst: einen Prozessor, der aufweist: mindestens einen Kern zum Ausführen von Instruktionen, einen Leistungsüberwacher, der mit dem mindestens einen Kern gekoppelt ist, wobei der Leistungsüberwacher die Leistung des mindestens einen Kerns überwacht, wobei der Leistungsüberwacher erste Pipeline-Kosten-Metadaten berechnet, die mit einem ersten Niedrigenergiezustand verknüpft sind, und zweite Pipeline-Kosten-Metadaten berechnet, die mit einem zweiten Niedrigenergiezustand verknüpft sind, und einen Energie-Controller, der mit dem Leistungsüberwacher gekoppelt ist, um die ersten Pipeline-Kosten-Metadaten und die zweiten Pipeline-Kosten-Metadaten zu empfangen und zu bestimmen, ob eine Niedrigenergiezustandsanforderung von einer Software-Entität, die mindestens teilweise auf den ersten Pipeline-Kosten-Metadaten und den zweiten Pipeline-Kosten-Metadaten basiert, außer Kraft gesetzt werden soll; und einen dynamischen Direktzugriffsspeicher, der mit dem Prozessor gekoppelt ist.
  19. System nach Anspruch 18, wobei der Energie-Controller auf der Grundlage eines Vergleichs zwischen den ersten Pipeline-Kosten-Metadaten und den zweiten Pipeline-Kosten-Metadaten die Niedrigenergiezustandsanforderung außer Kraft setzen soll.
  20. System nach Anspruch 18, wobei der Leistungsüberwacher des Weiteren Interruptraten-Metadaten bezüglich einer Rate ankommender Interrupts berechnen und die Interruptraten-Metadaten an den Energie-Controller übermitteln soll.
  21. System nach Anspruch 20, wobei der Energie-Controller die Niedrigenergiezustandsanforderung des Weiteren auf der Grundlage eines Vergleichs zwischen den Interruptraten-Metadaten und einer Schwelle außer Kraft setzen soll.
  22. Prozessor, der umfasst: mindestens ein Kernmittel zum Ausführen von Instruktionen, wobei das mindestens eine Kernmittel eine Cache-Speicher-Hierarchie mit mindestens einem Übersetzungspuffer (Translation Lookaside Buffer, TLB) und mindestens einem in dem Kern enthaltenen Cache-Speicher enthält; ein mit dem mindestens einen Kernmittel gekoppeltes Leistungsüberwachermittel, wobei das Leistungsüberwachermittel die Leistung des mindestens einen Kernmittels überwachen soll, wobei das Leistungsüberwachermittel einen ersten Zähler zum Zählen von Fehlzugriffen in dem mindestens einen TLB und einen zweiten Zähler zum Zählen von Fehlzugriffen in dem mindestens einen in dem Kern enthaltenen Cache-Speicher enthält, wobei das Leistungsüberwachermittel Pipeline-Kosten-Metadaten mindestens teilweise auf der Grundlage des ersten Zählers und des zweiten Zählers berechnen soll; und ein Energie-Controller-Mittel, das mit dem Leistungsüberwachermittel gekoppelt ist, wobei das Energie-Controller-Mittel die Pipeline-Kosten-Metadaten empfangen soll und mindestens teilweise auf der Grundlage der Pipeline-Kosten-Metadaten einen Niedrigenergiezustand bestimmen soll, in den der mindestens eine Kern eintreten soll.
  23. Prozessor nach Anspruch 22, wobei das Energie-Controller-Mittel eine Software-Anforderung empfangen soll, dass das mindestens eine Kernmittel in einen zweiten Niedrigenergiezustand eintritt, und veranlassen soll, dass das mindestens eine Kernmittel in einen anderen Niedrigenergiezustand eintritt, wenn die Pipeline-Kosten-Metadaten anzeigen, dass die zweiten Pipeline-Kosten, nachdem das mindestens eine Kernmittel in den zweiten Niedrigenergiezustand eingetreten ist, die ersten Pipeline-Kosten um mindestens eine erste Schwelle übersteigen, nachdem das mindestens eine Kernmittel in einen ersten Niedrigenergiezustand eingetreten ist.
  24. Prozessor nach Anspruch 23, wobei das Energie-Controller-Mittel eine zweite Software-Anforderung empfangen soll, dass das mindestens eine Kernmittel in den ersten Niedrigenergiezustand eintritt, und veranlassen soll, dass das mindestens eine Kernmittel in den zweiten Niedrigenergiezustand eintritt, wenn die Pipeline-Kosten-Metadaten anzeigen, dass die zweiten Pipeline-Kosten die ersten Pipeline-Kosten um weniger als eine zweite Schwelle übersteigen, wobei der zweite Niedrigenergiezustand ein tieferer Niedrigenergiezustand als der erste Niedrigenergiezustand ist.
  25. Prozessor nach Anspruch 22, wobei das Energie-Controller-Mittel einen Niedrigenergiezustands-Herabstufungsbetrieb aktivieren soll, wenn die Pipeline-Kosten-Metadaten anzeigen, dass zweite Pipeline-Kosten, nachdem das mindestens eine Kernmittel in einen zweiten Niedrigenergiezustand eingetreten ist, erste Pipeline-Kosten um mindestens eine erste Schwelle übersteigen, nachdem das mindestens eine Kernmittel in einen ersten Niedrigenergiezustand eingetreten ist.
DE112019001001.8T 2018-03-28 2019-02-28 System, vorrichtung und verfahren für eine datengestützte niedrigenergiezustandssteuerung auf der grundlage von leistungsüberwachungsinformationen Pending DE112019001001T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/938,268 US20190041950A1 (en) 2018-03-28 2018-03-28 System, Apparatus And Method For Data Driven Low Power State Control Based On Performance Monitoring Information
US15/938,268 2018-03-28
PCT/US2019/019968 WO2019190688A1 (en) 2018-03-28 2019-02-28 System, apparatus and method for data driven low power state control based on performance monitoring information

Publications (1)

Publication Number Publication Date
DE112019001001T5 true DE112019001001T5 (de) 2020-12-10

Family

ID=65229379

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019001001.8T Pending DE112019001001T5 (de) 2018-03-28 2019-02-28 System, vorrichtung und verfahren für eine datengestützte niedrigenergiezustandssteuerung auf der grundlage von leistungsüberwachungsinformationen

Country Status (4)

Country Link
US (1) US20190041950A1 (de)
CN (1) CN111512267A (de)
DE (1) DE112019001001T5 (de)
WO (1) WO2019190688A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3646179B1 (de) * 2017-06-30 2023-10-25 Intel Corporation Änderung der prozessorfrequenz auf der basis einer unterbrechungsrate
US11216276B2 (en) * 2018-12-27 2022-01-04 Intel Corporation Controlling power state demotion in a processor
US11340684B2 (en) * 2020-06-05 2022-05-24 Dell Products L.P. System and method for predictive battery power management
CN111983997B (zh) * 2020-08-31 2021-07-20 北京清大华亿科技有限公司 一种基于耦合性分析的控制回路性能监测方法及系统
US12008383B2 (en) 2020-09-01 2024-06-11 Intel Corporation Hardware directed core parking based on performance and energy efficiency capabilities of processing units and runtime system characteristics
US20220100626A1 (en) * 2020-09-26 2022-03-31 Intel Corporation Monitoring performance cost of events
US11768531B2 (en) 2021-12-30 2023-09-26 Western Digital Technologies, Inc. Power management for storage controllers

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8117478B2 (en) * 2006-12-29 2012-02-14 Intel Corporation Optimizing power usage by processor cores based on architectural events
US9563431B2 (en) * 2014-12-26 2017-02-07 Intel Corporation Techniques for cooperative execution between asymmetric processor cores
US9910669B2 (en) * 2015-06-26 2018-03-06 Intel Corporation Instruction and logic for characterization of data access
US10255074B2 (en) * 2015-09-11 2019-04-09 Qualcomm Incorporated Selective flushing of instructions in an instruction pipeline in a processor back to an execution-resolved target address, in response to a precise interrupt
US10261916B2 (en) * 2016-03-25 2019-04-16 Advanced Micro Devices, Inc. Adaptive extension of leases for entries in a translation lookaside buffer

Also Published As

Publication number Publication date
US20190041950A1 (en) 2019-02-07
CN111512267A (zh) 2020-08-07
WO2019190688A1 (en) 2019-10-03

Similar Documents

Publication Publication Date Title
DE112019001001T5 (de) System, vorrichtung und verfahren für eine datengestützte niedrigenergiezustandssteuerung auf der grundlage von leistungsüberwachungsinformationen
DE112019000693T5 (de) System, vorrichtung und verfahren zur bereitstellung von hardware-rückmeldungsinformationen in einem prozessor
US9910470B2 (en) Controlling telemetry data communication in a processor
DE112019001522T5 (de) System, vorrichtung und verfahren zur optimierten drosselung eines prozessors
EP2894542B1 (de) Schätzung der Skalierbarkeit einer Belastung
DE112020001586T5 (de) System, gerät und verfahren zur leistungslizenzsteuerung eines prozessors
EP3304248B1 (de) Überwachung der leistungszustände von prozessormotoren eines prozessors
DE202015009867U1 (de) Einrichtung zum Bereitstellen einer Wärmeparametermeldung für eine Mehrchip-Baugruppe
DE112017004361T5 (de) Steuern eines leistungszustands eines prozessors unter verwendung einer kombination von package- und thread-hinweis-informationen
DE102018125236A1 (de) System, Vorrichtung und Verfahren zum Selbsstest vor Ort in einem Diagnose-Ruhezustand
DE102020134491A1 (de) System, Vorrichtung und Verfahren zum dynamischen Justieren von Plattformenergie und -leistung basierend auf Aufgabeneigenschaften
TW201638717A (zh) 平台裝置的執行動態功率控制
DE112016004776T5 (de) Datenkomprimierung unter Verwendung eines Beschleunigers mit mehreren Suchmaschinen
DE112020000231T5 (de) Einstellung von Anzeige Auffrischung Raten basierend auf Benutzer Aktivität
DE112013005131T5 (de) Verfahren, Vorrichtung, System zur automatischen Abstimmung von Coderegionen
DE102018129330A1 (de) System, Vorrichtung und Verfahren zur prozessorexternen Überschreibung der Hardwareleistungszustandssteuerung eines Prozessors
DE112017001805T5 (de) Bestimmen von thermischen obergrenzen in einem prozessor mit mehreren dies
DE112017003080T5 (de) Prozessor mit gleichzeitigem kern und gewebeausgang aus einem zustand mit geringer energie
DE102020130910A1 (de) System, vorrichtung und verfahren für dynamische energiezustandsskalierung eines spannungsreglers für einen prozessor
US11669146B2 (en) System, apparatus and method for responsive autonomous hardware performance state control of a processor
DE112017003873T5 (de) Bereitstellung einer Schnittstelle für Herabstufungssteuerinformationen in einem Prozessor
DE112017005000T5 (de) Prozessorspannungssteuerung unter verwendung eines beweglichen mittelwerts
DE112017004991T5 (de) Ausgleichssteuerung für variable energieschienen
DE102020127742A1 (de) System, vorrichtung und verfahren für eine global bewusste reaktive lokale leistungssteuerung in einem prozessor
DE102020128219A1 (de) System, Einrichtung und Verfahren zur Latenzüberwachung und Reaktion