DE112019000693T5 - System, vorrichtung und verfahren zur bereitstellung von hardware-rückmeldungsinformationen in einem prozessor - Google Patents

System, vorrichtung und verfahren zur bereitstellung von hardware-rückmeldungsinformationen in einem prozessor Download PDF

Info

Publication number
DE112019000693T5
DE112019000693T5 DE112019000693.2T DE112019000693T DE112019000693T5 DE 112019000693 T5 DE112019000693 T5 DE 112019000693T5 DE 112019000693 T DE112019000693 T DE 112019000693T DE 112019000693 T5 DE112019000693 T5 DE 112019000693T5
Authority
DE
Germany
Prior art keywords
processor
hardware feedback
hardware
core
feedback information
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
DE112019000693.2T
Other languages
English (en)
Inventor
Vedvyas Shanbhogue
Avinash N. Ananthakrishnan
Eugene Gorbatov
Russell Fenger
Ashok Raj
Kameswar Subramaniam
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tahoe Research Ltd
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 DE112019000693T5 publication Critical patent/DE112019000693T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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
    • 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/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • G06F11/3062Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations where the monitored property is the power consumption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3072Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
    • 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
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Power Sources (AREA)
  • Microcomputers (AREA)

Abstract

In einer Ausführungsform enthält ein Prozessor mehrere Kerne zum Ausführen von Instruktionen, ein erstes Identifikationsregister mit einem ersten Feld zum Speichern eines Rückmeldungsindikators, der einem Betriebssystem (Operating System, OS) anzeigt, dass der Prozessor dem OS dynamisch Hardware-Rückmeldungsinformationen übermitteln soll, und einen Energie-Controller, der mit den mehreren Kernen gekoppelt ist. Der Energie-Controller kann einen Rückmeldungssteuerkreis enthalten, um die Hardware-Rückmeldungsinformationen für mindestens einen der mehreren Kerne dynamisch zu bestimmen und das OS über eine Aktualisierung der Hardware-Rückmeldungsinformationen zu informieren. Es werden noch andere Ausführungsformen beschrieben und beansprucht.

Description

  • Technisches Gebiet
  • Ausführungsformen betreffen einen Prozessor mit einer Schnittstelle zur Bereitstellung von Disponierungsinformationen.
  • 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).
  • 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 Flussdiagramm eines Disponierungsverfahrens gemäß einer Ausführungsform.
    • 17 ist eine grafische Darstellung der Kernleistung für eine Vielzahl verschiedener Arbeitslasten für kleine bzw. große Kerne gemäß einer Ausführungsform.
    • 18 ist eine grafische Darstellung einer S-Kurve, die einen Vergleich zwischen verschiedenen Kerntypen gemäß einer Ausführungsform zeigt.
    • 19 ist ein Blockdiagramm einer Hardware-Rückmeldungs-Schnittstellenstruktur gemäß einer Ausführungsform.
    • 20 ist ein Blockdiagramm einer Systemanordnung gemäß einer Ausführungsform.
    • 21 ist ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform.
    • 22 ist ein Flussdiagramm einer anderen Ausführungsform der vorliegenden Erfindung.
    • FIG. 23 ist ein Flussdiagramm eines Verfahrens gemäß einer weiteren Ausführungsform der vorliegenden Erfindung.
    • 24 ist ein Flussdiagramm eines Verfahrens gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
    • 25 ist ein Flussdiagramm eines Verfahrens zur Deaktivierung von Hardware-Rückmeldungsinformationen gemäß einer Ausführungsform.
  • Detaillierte Beschreibung
  • In verschiedenen Ausführungsformen können Instruction Set Architecture (ISA)-Erweiterungen in einem Prozessor bereitgestellt werden, um eine Hardware-Disponierungsschnittstelle zu implementieren, um einem Disponierer Hardware-Orientierung zu geben, um den Disponierer in die Lage zu versetzen, eine optimale Arbeitslastdisponierung vorzunehmen. Zu diesem Zweck kann ein Betriebssystem (Operating System, OS) oder eine andere Systemsoftware für Hardware einen Zeiger auf eine Tabelle im Speicher bereitstellen, wobei die Prozessor-Hardware eine an den OS-Disponierer zu übermittelnde Rückmeldung über die Leistungs- und Energieeffizienzfähigkeiten jedes Kerns des Prozessors erzeugen kann. In einer anderen Ausführungsform kann sich diese Tabelle in einer Registerbank befinden, die in den Adressraum des Betriebssystems hinein abgebildet wird. Der OS-Disponierer kann zum Beispiel über eine Interrupttechnik benachrichtigt werden, wenn sich diese Informationen ändern. Die Tabelle im Speicher liefert auch Informationen über die Änderungen seit dem letzten Interrupt, damit das Betriebssystem schnelle Entscheidungen über die Daten treffen kann. Ausführungsformen können es dem Betriebssystem auch erlauben, sich in einem Polling-Modus zu befinden, wenn eine Interrupt-Verarbeitung nicht möglich ist. Im Gegensatz zur herkömmlichen Disponierung, bei der von einer statischen Klassenzuweisung für Kernfähigkeiten ausgegangen wird (wie sie während der Systeminitialisierung spezifiziert wird), bieten Ausführungsformen Unterstützung für eine Spezifizierung dynamischer Prozessorleistungs- und - effizienzfähigkeiten.
  • Ausführungsformen stellen somit Informationen bereit, die durch einen Disponierer verwendet werden können, um bessere Disponierungsentscheidungen zu treffen. Das ist so, weil bei einer Ausführungsform ein Disponierer die dynamischen Fähigkeiten einzelner Kerne und/oder logischer Prozessoren erfährt. Mit diesem größeren Zugriff auf Informationen kann das OS gegebene Threads auf der Grundlage des Thread-Typs, der momentanen Fähigkeiten der logischen Prozessoren und der Eigenschaften der auf den logischen Prozessoren ausgeführten Arbeitslasten besser zu einem geeigneteren Kern disponieren. Wie im vorliegenden Text beschrieben, basiert diese dynamische Berechnung momentaner Fähigkeiten mindestens teilweise auf der Arbeitslast und den Einschränkungen des Prozessors, wie zum Beispiel den Reserven bei Leistungsabgabe und thermischer Widerstandsfähigkeit. Mit den im vorliegenden Text beschriebenen dynamisch berechneten Hardware-Rückmeldungsinformationen kann der Disponierer fundiertere Disponierungsentscheidungen treffen und so die Berechnungs-, Strom- und Energieeffizienz verbessern.
  • In Ausführungsformen kann Prozessor-Hardware, wie sie zum Beispiel in einem Energie-Controller des Prozessors implementiert werden kann, so konfiguriert werden, dass sie kontinuierlich Informationen über die Leistungs- und Energieeffizienzfähigkeiten des Prozessors unter Berücksichtigung der Systemlast sowie der Leistungs- und thermischen Grenzen berechnet. Diese Fähigkeiten-Informationen werden dem OS über die Hardware-Disponierungsschnittstelle übermittelt. Das Betriebssystem oder eine andere Disponierungsentität wiederum greift auf diese Informationen zu und aktualisiert seine internen Disponierungsstrukturen. Die aktualisierten Fähigkeiten-Informationen werden dann durch den Disponierer verwendet, um optimale Disponierungsentscheidungen zu treffen.
  • In einer Ausführungsform können die dynamischen Rückmeldungsinformationen in Form von Prozessorleistungs- und -energieeffizienzfähigkeiten vorliegen. Vom Konzept her wird jede Fähigkeit als eine Anordnung von Werten mit einem Eintrag pro logischem Prozessor dargestellt. Jeder Eintrag spezifiziert die relative Leistung oder Energieeffizienz eines logischen Prozessors unter Berücksichtigung der momentanen Systemlast sowie der Leistungs- und thermischen Einschränkungen. In einer bestimmten Ausführungsform ist die Leistungsfähigkeit eines logischen Prozessors ein relativer Wert, wie zum Beispiel ein 8-Bit-Wert (0 ... 255), der das momentane Leistungsniveau dieses logischen Prozessors angibt. Eine höhere Leistungsfähigkeit zeigt eine höhere relative Leistung an. Die niedrigste Leistungsfähigkeit (zum Beispiel 0) zeigt dem OS an, dass es den logischen Prozessor in den Leerlauf versetzen kann und keine Software-Threads für ihn disponieren muss. In einer Ausführungsform haben die Informationen zur Energieeffizienzfähigkeit eine ähnliche Semantik. Jeder Wert stellt einen relativen Wert dar, der die relative Energieeffizienz eines logischen Prozessors anzeigt, und kann ein 8-Bit-Wert (0 ... 255) sein, wobei höhere Werte eine höhere Energieeffizienz anzeigen. Der niedrigste Energieeffizienzfähigkeitenwert (zum Beispiel 0) zeigt dem OS an, dass dieser logische Prozessor aus Effizienzgründen nicht verwendet werden darf. Es ist zu beachten, dass verschiedene Techniken zur dynamischen Berechnung dieser Werte verwendet werden können.
  • 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 den im vorliegenden Text vorgestellten Ausführungsformen kann die PCU 138 so konfiguriert werden, dass sie Hardware-Rückmeldungsinformationen über die Leistungs- und Energieeffizienzfähigkeiten von Hardware-Schaltkreisen, wie zum Beispiel Kernen 120, dynamisch bestimmt und eine Schnittstelle bereitstellt, um es einem OS-Disponierer zu ermöglichen, auf diese Informationen zuzugreifen, um bessere Disponierungsentscheidungen treffen zu können. Zu diesem Zweck kann die PCU 138 so konfiguriert werden, dass sie diese Informationen bestimmt und entweder intern in der PCU 138 oder in einem anderen Speicher des Systems 100 speichert.
  • 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 P1-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 Niedrigenergiekern 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 und eine Energiesteuereinheit 255, die Logik zum Ausführen von Energiemanagementtechniken, wie im vorliegenden Text beschrieben, enthalten kann. Zusätzlich kann die Energiesteuereinheit 255 einen Rückmeldungssteuerkreis 256 enthalten, der dafür konfiguriert ist, Hardware-Rückmeldungsinformationen dynamisch zu bestimmen und die Kommunikation solcher Informationen an einen Disponierer, wie im vorliegenden Text beschrieben, zu ermöglichen.
  • 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 Displays bereitstellen kann. Wie des Weiteren zu sehen ist, kann die Systemagenten-Domäne 350 eine Energiesteuereinheit 355 enthalten, die einen Rückmeldungssteuerkreis 356 zur dynamischen Bestimmung von Hardware-Rückmeldungsinformationen bezüglich Kernen 310 und anderer Ausführungs-Engines und zur Übermittlung solcher Informationen an einen Disponierer, wie im vorliegenden Text beschrieben, enthalten kann.
  • 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 codesignten 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 Sprung-Ausfü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 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 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ührungsform 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 dargestellt) Rückmeldungsinformationen, einschließlich Leistungs- und Energieeffizienzfähigkeiten, zur Verwendung bei Disponierungsentscheidungen, wie im vorliegenden Text beschrieben, dynamisch bestimmen. 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 ARM-basierten 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 dargestellt) Rückmeldungsinformationen, einschließlich Leistungs- und Energieeffizienzfähigkeiten, zur Verwendung bei Disponierungsentscheidungen, wie im vorliegenden Text beschrieben, dynamisch bestimmen. 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, einschließlich einer In-Field-Selbsttestinstruktion, wie im vorliegenden Text beschrieben, 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, einschließlich einer In-Field-Selbsttestinstruktion, wie im vorliegenden Text beschrieben, 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 (L2)-Cache-Speicher sein kann. Ein nichtflü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, Testmuster für den im vorliegenden Text beschriebenen Diagnose-Selbsttest usw. 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 zur Durchführung der verschiedenen im vorliegenden Text beschriebenen Energiemanagementtechniken, einschließlich der dynamischen Bestimmung von Hardware-Rückmeldungsinformationen, für die Übermittlung an einen Disponierer enthalten kann.
  • In einigen Ausführungsformen kann das SoC 900 außerdem ein nicht-kohä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 Kerne mit niedrigem Stromverbrauch sein, wie zum Beispiel In-Order-Kerne, die über eine Mailbox-Schnittstelle mit einer entsprechenden Kernrandlogik verbunden sein können, 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 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 mehreren Kernen 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 Cachekohä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änger 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, dass 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. Ein 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-/Ausgabe-Vorrichtungen (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. Zu solchen 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 eine prozessorgestütztes Energiemanagement, wie im vorliegenden Text beschrieben, auszuführen. Zu diesem Zweck enthalten die PCUs 1575 und 1585 eine Rückmeldungssteuerschaltung, um Fähigkeiten der entsprechenden Kerne dynamisch zu bestimmen und es zu ermöglichen, dass solche Informationen gespeichert und an einen Disponierer, wie zum Beispiel einen OS-Disponierer, übermittelt werden können, um sie beim Treffen besserer Disponierungsentscheidungen für einen heterogenen Prozessor zu verwenden.
  • 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.
  • Wir wenden uns nun 16 zu, wo ein Flussdiagramm eines Disponierungsverfahrens gemäß einer Ausführungsform gezeigt ist. Genauer gesagt, kann das Disponierungsverfahren 1600 durch ein OS ausgeführt werden, um Arbeitslasten zu einem heterogenen SoC zu disponieren, das Kerne mit unterschiedlichen Fähigkeiten enthält. Die im vorliegenden Text gezeigten Ausführungsformen gehen davon aus, dass das SoC Kerne mit unterschiedlichen Stromverbrauchspegeln enthält, wie zum Beispiel mindestens einen großen Kern, der mit höheren Stromverbrauchspegeln arbeitet als ein oder mehrere Niedrigenergiekerne, die mit niedrigeren Stromverbrauchspegeln arbeiten. In verschiedenen Ausführungsformen können diese verschiedenen Kerne heterogene Designs aufweisen. Beispielsweise können der große Kern oder die großen Kerne als Out-of-Order-Kerne implementiert werden, während die Niedrigenergiekerne als In-Order-Kerne implementiert werden können. In anderen Ausführungsformen können natürlich auch alle Kerne In-Order-Kerne oder Out-of-Order-Kerne sein. In anderen Fällen kann die Heterogenität auf Prozessvariationen über einen Die hinweg, auf dem das SoC gebildet wird, zurückzuführen sein. Als ein weiteres Beispiel kann ein SoC durchweg homogenen Kerne haben, aber aufgrund von Leistungs- und thermischen Beschränkungen kann die Hardware eine Teilmenge von Kernen stärker drosseln als andere und so eine Leistungsheterogenität zwischen ansonsten identischen Kernen verursachen. In dem Verfahren 1600 wird der OS-Disponierer über alle Kerne informiert und ist dafür verantwortlich zu bestimmen, welche Threads zu welchem Kerntyp disponiert werden sollen.
  • In einer Ausführungsform, in der es eine begrenzte Anzahl von großen Kernen gibt (zum Beispiel 1), besteht das Hauptziel der heterogenen Disponierung darin, die Leistung von mit der Reaktionsfähigkeit zusammenhängenden Arbeitslasten mit einem dominierenden Thread zu erhöhen. In der Regel laufen bei diesen Arbeitslasten mehrere aktive Threads, einschließlich solcher, die Hintergrund- oder Systemverwaltungsaufgaben ausführen. Das Ziel des Disponierers besteht darin, den leistungssensibelsten Thread zu identifizieren und ihn zu dem großen Kern zu disponieren.
  • Heterogene Leistung und die Verwendung großer Kerne können in hohem Maße von der verfügbaren Leistung und dem Wärmebudget abhängen. Aufgrund von Package- und Systembeschränkungen kann ein SoC unter vielen Nutzungsbedingungen leistungs- und thermisch begrenzt sein. Daher können die Eigenschaften der verschiedenen Kerntypen dynamisch sein. Anders ausgedrückt: Ein großer Kern kann eine höhere Leistung haben als ein kleiner Kern, wenn er nicht leistungs- oder thermisch beschränkt ist. Wenn der Kern jedoch thermisch beschränkt ist oder das SoC Leistungsgrenzen hat, so kann die Leistung des großen Kerns geringer sein als die des kleinen Kerns. Eine heterogene Disponierung gemäß einer Ausführungsform ermöglicht ein Verständnis dieser unterschiedlichen Leistungs- und thermischen Beschränkungen, damit der Disponierer dynamisch bestimmen kann, welcher Kerntyp zu jedem gegebenen Zeitpunkt der Ausführung eine höhere Effizienz und Leistung hat.
  • Das Verfahren 1600 kann ausgeführt werden, um einen Thread zu einem ausgewählten Kerntyp zu disponieren. Wie veranschaulicht, beginnt das Verfahren 1600 mit der Implementierung einer Leistungsbedarfsbestimmung (Block 1610). Diese Leistungsbedarfsbestimmung kann auf verschiedenen Informationen bezüglich Threads basieren, wie zum Beispiel Auslastungsinformationen, Thread-Typ (zum Beispiel Vordergrund im Vergleich zu Hintergrund), Latenz, Priorität und so weiter. Genauer gesagt, können die in Block 1610 verwendeten Messgrößen die erwartete Thread-Laufzeit, Vordergrundaktivität im Vergleich zu Hintergrundaktivität, Thread-Priorität und andere Sonderfälle, wie zum Beispiel ein niedriges Latenzprofil in Verbindung mit Threads, von denen bekannt ist, dass sie Reaktionsfähigkeit von dem System benötigen (zum Beispiel Anwendungsstart), enthalten. Wenn auf der Grundlage der Informationen bestimmt wird, dass der betreffende Thread keine hohe Leistung benötigt, so geht die Kontrolle zu Block 1620 über, wo der Thread auf einen kleineren (zum Beispiel momentan leistungsschwächeren) Kern disponiert werden kann, wie durch die Hardware-Rückmeldung angezeigt.
  • Andernfalls geht die Kontrolle zu Block 1630 über, um eine Bestimmung zur Thread-Dominanz zu treffen. Bei dieser Bestimmung kann es sich beispielsweise darum handeln, ob der Thread ein einzelner Thread ist, der ausgeführt wird, oder ein einzelner dominierender Thread eines Gesamt-Arbeitslast. Wenn nicht, so geht die Steuerung zu Block 1620 zum Disponieren auf einem kleinen Kern über. Wenn stattdessen bestimmt wird, dass es einen einzelnen Thread gibt oder der Thread, der disponiert wird, der dominierende Thread ist, so geht die Steuerung zu Block 1640 über, um zu bestimmen, ob eine Leistungs- und/oder thermische Beschränkung des Prozessors vorliegt. Wenn ja, so wird der Thread zu einem Niedrigenergiekern disponiert (Block 1620).
  • Wenn schließlich bestimmt wird, dass es keine Einschränkung gibt, so geht die Steuerung zu Block 1650 über, wo eine Leistungsskalierbarkeitsbestimmung vorgenommen werden kann. Wie im vorliegenden Text beschrieben, kann diese Leistungsskalierbarkeitsbestimmung mindestens teilweise auf Hardware-Rückmeldungsinformationen basieren, die von einem Hardware-Rückmeldungskreis 1660 empfangen werden. In den im vorliegenden Text enthaltenen Ausführungsformen kann der Hardware-Rückmeldungskreis 1660 innerhalb eines Energie-Controllers, wie zum Beispiel einer PCU, implementiert werden. Natürlich kann die Berechnung von Hardware-Rückmeldungsinformationen in anderen Ausführungsformen an anderen Stellen ausgeführt werden. In jedem Fall kann in Block 1650 eine Leistungsskalierbarkeitsbestimmung mindestens teilweise auf der Grundlage dieser Hardware-Rückmeldungsinformationen vorgenommen werden. Wenn bestimmt wird, dass der Thread skalierbar ist, so geht die Steuerung zu Block 1670 über, wo er auf einen großen (zum Beispiel mehr Strom verbrauchenden) Kern disponiert wird. Andernfalls wird der Thread auf einen Niedrigenergiekern (wie momentan durch die Hardware-Rückmeldung bestimmt) disponiert (Block 1620). Es versteht sich, dass, obgleich in der Ausführungsform von 16 auf dieser hohen Ebene gezeigt ist, viele Variationen und Alternativen eines Disponierungsverfahrens möglich sind.
  • In den im vorliegenden Text gezeigten Ausführungsformen können auf der Grundlage der Hardware-Rückmeldungsinformationen bessere Disponierungsentscheidungen getroffen werden, um Threads zweckmäßig zu disponieren, um eine höhere Leistung und/oder einen geringeren Stromverbrauch zu erreichen. Daher ist es möglich, auf der Grundlage dieser Hardware-Rückmeldungsinformationen einen Thread auf einen kleineren Kern zu disponieren, wo er in manchen Situationen eine höhere Leistung erzielen kann, als wenn er auf einen größeren Kern disponiert werden würde. In ähnlicher Weise ist es in manchen Situationen möglich, einen Thread auf einen großen Kern zu disponieren und die Energieeffizienz zu erhöhen, anstatt den Thread auf einen kleineren Kern zu disponieren. Es ist zu beachten, dass im Interesse einer übersichtlicheren Besprechung zwar nur zwei verschiedene Kerntypen beschrieben werden, dass aber in Ausführungsformen ein gegebener Prozessor oder ein anderes SoC auch mehr als zwei verschiedene Kerntypen enthalten kann, die für eine Reihe von Stromverbrauchspegeln, Rechenkapazität usw. bereitstellen können.
  • Wir wenden uns nun 17 zu, wo eine grafische Darstellung der Kernleistung für eine Vielzahl verschiedener Arbeitslasten für kleine bzw. große Kerne gezeigt ist. Wie veranschaulicht, ist die Kurve 1710 mit einem kleineren Kern verknüpft, und die Kurve 1720 ist mit einem größeren Kern verknüpft. Bis zu einem Unterbrechungspunkt 1740 kann der Niedrigenergiekern eine gegebene Arbeitslast bei niedrigeren Leistungspegeln als der große Kern ausführen. Nach dem Unterbrechungspunkt 1740 hat der kleinere Kern jedoch einen höheren Stromverbrauch bei geringerer Arbeitslastausgabe.
  • Genauer gesagt, und wie in 17 gezeigt, kann in einer ersten Region 1750 ein Niedrigenergiekern eine höhere Effizienz und Leistung haben als ein Kern mit höherer Leistung. Anders ausgedrückt: In der ersten Region 1750 ist ein kleinerer Kern sowohl leistungsstärker als auch effizienter. Software-Threads mit geringeren Leistungsanforderungen, die in diese Region fallen, können daher zu kleineren Kernen disponiert werden. Wenn das SoC leistungs- oder thermisch beschränkt ist, so hat ein kleinerer Kern außerdem eine höhere Leistung als ein größerer Kern. Software-Threads mit hohen Leistungsanforderungen können zu einem der kleineren Kerne in dieser Region disponiert werden. Wenn in dieser Region gearbeitet wird, so braucht das OS nur dann Arbeit zu einem größeren Kern zu disponieren, wenn kein anderer Kern verfügbar ist. In einer zweiten Region 1760 kann der größere Kern eine höhere Effizienz und Leistung haben. In der zweiten Region 1760 ist ein größerer Kern sowohl leistungsfähiger als auch effizienter als ein kleinerer Kern, so dass in dieser Region Threads mit hohem Leistungsbedarf zu einem größeren Kern disponiert werden können. Zusätzlich zur Disponierung von Threads mit hohem Leistungsbedarf zu einem größeren Kern können jedoch auch andere Threads, die in dieser Region arbeiten sollen, zu dem größeren Kern disponiert werden, um die Systemeffizienz zu verbessern. Ein Beispiel ist eine Grafik-Arbeitslast mit einem Leistungsbedarf, der in diese Region fällt. In einer dritten Region 1770 kann der größere Kern eine höhere Leistung haben (es ist zu beachten, dass der kleinere Kern nicht auf dem hohen Leistungsniveau dieser dritten Region arbeiten kann). In einer dritten Region 1770 hat ein größerer Kern eine höhere Leistung, aber eine geringere Effizienz als ein kleinerer Kern. Wenn ein Leistungs- oder Wärmebudget verfügbar ist, so kann eine einläufig (Single-Threaded, ST)-dominierende Arbeitslast mit einem Thread mit hohem Leistungsbedarf zu dem größeren Kern disponiert werden.
  • Wir wenden uns nun 18 zu, wo eine grafische Darstellung einer S-Kurve gezeigt ist, die einen Vergleich zwischen verschiedenen Kerntypen zeigt. Genauer gesagt, und wie in 18 veranschaulicht, veranschaulicht die Kurve 1800 eine Beziehung zwischen einem Leistungsskalierbarkeitsverhältnis zwischen einem großen Kern und einem kleinen Kern (zum Beispiel in Bezug auf Instruktionen pro Zyklus). Wie veranschaulicht, liegt bei höheren Arbeitslastniveaus ein höherer Verhältniswert vor. Die relative Leistung und Effizienz von größeren und kleineren Kernen ist ebenfalls arbeitslastabhängig. Es ist eine Funktion der Skalierbarkeit der Arbeitslastenergie/-leistung zwischen größeren und kleineren Kernen, der Anzahl der aktiven Threads im System und ihrer relativen Energie-Leistung-Priorität. Die Arbeitslastskalierbarkeit wiederum definiert, wie Arbeitslastenergie und - leistung (zum Beispiel in Bezug auf IPC) zwischen zwei verschiedenen Kerntypen skaliert wird. Die durchschnittliche Leistungs- oder IPC-Skalierung zwischen größeren und kleineren Kernen ist in der Veranschaulichung 1800 2,0-fach. Arbeitslasten, die eine höhere Leistungsskalierbarkeit zwischen größer und kleiner aufweisen, verschieben im Allgemeinen einen Übergangspunkt 1810 zu einer Enveloppe mit geringerer Energie, während sich im Fall von Arbeitslasten mit geringerer Skalierbarkeit ein Übergang zwischen größer und kleiner zu höheren Energiepegeln bewegt. Die Anzahl aktiver Threads und ihre relative Energie-Leistung-Priorität können bestimmen, wie das verfügbare Energiebudget zwischen den verschiedenen Kernen verteilt wird, und können daher die Wahl des Kerntyps beeinflussen. Zum Beispiel kann für eine Arbeitslast mit drei aktiven Threads, von denen zwei Hintergrundaktivität sind und eine eine leistungssensible Vordergrundaktivität ist, mehr Budget zu einem einzelnen leistungsstärkeren Kern zugewiesen werden, zu dem der Vordergrund-Thread disponiert werden soll. Wenn alle drei Threads den gleichen Leistungsbedarf haben, so kann die Zuweisung des Energiebudgets zwischen den Kernen zu einer Disponierung auf drei kleine Kerne führen.
  • Wir wenden uns nun 19 zu, wo ein Blockdiagramm einer Hardware-Rückmeldungs-Schnittstellenstruktur gemäß einer Ausführungsform gezeigt ist. Genauer gesagt, und wie in 19 gezeigt, ist die Struktur 1900 eine Tabelle oder eine sonstige Struktur, die Hardware-Rückmeldungsinformationen, wie im vorliegenden Text beschrieben, speichert. In Ausführungsformen kann die Struktur 1900 eine speicherbasierte Struktur sein, die zum Beispiel an einer dedizierten Stelle innerhalb eines Systemspeichers, wie zum Beispiel DRAM, gespeichert wird. In einer Ausführungsform kann die Größe der HFI-Speicherregion eine einzelne 4K-Speicherseite sein, und das OS kann eine einzelne 4KB-Seite zuweisen und sie in einen nicht-auslagerbaren Rückschreibe (Writeback, WB)-Speicher abbilden. Wie veranschaulicht, enthält die Struktur 1900 einen globalen Abschnitt 1910, der Informationen, einschließlich eines Zeitstempelzählers 1912 und Änderungsindikatoren, speichern kann. In einer Ausführungsform kann der Zeitstempelzähler 1912 als ein monoton ansteigender 8-Byte (8B)-Zähler implementiert werden, der durch das OS zum Verfolgen von Hardware-Disponierungsaktualisierungen oder für Debugging-Zwecke verwendet werden kann. In einer Ausführungsform kann dieser Zähler mit einem Quarztaktwert belegt werden, wenn die HFI aktualisiert wird. Das OS kann diesen Zähler in einen Zeitstempelzähler (Time Stamp Counter, TSC)-Wert unter Verwendung eines gegebenen TSC/Quarztakt-Verhältnisses umwandeln. Es ist außerdem gezeigt, dass ein Leistungsfähigkeitsänderungsindikator 1914 und ein Energieeffizienzfähigkeitsänderungsindikator 1916 in dem globalen Abschnitt 1910 enthalten sein können. In einer Ausführungsform ist der Leistungsfähigkeitsänderungs (Performance Capability Changed, PCH)-Indikator 1914 ein 1-Bit-Wert, der, wenn er auf 1 gesetzt wird, anzeigt, dass sich die Leistungsfähigkeit für einen Kern geändert hat. In einer Ausführungsform ist der Energieeffizienzfähigkeitsänderungs (Efficiency Capability Changed, ECH)-Indikator 1916 ein 1-Bit-Wert, der, wenn er auf 1 gesetzt wird, anzeigt, dass sich die Energieeffizienzfähigkeit für einen Kern geändert hat. Der Rest des globalen Bereichs kann für zukünftige Fähigkeiten reserviert sein.
  • Wie des Weiteren in 19 veranschaulicht, enthält die Struktur 1900 außerdem mehrere Kern-basierte Abschnitte 19200 - 1920n. In einer Ausführungsform kann jeder Kernspeichereintrag 1920 mit einem gegebenen logischen Prozessor verknüpft sein und kann Informationen, einschließlich einer entsprechenden Leistungsfähigkeit 1924 und einer entsprechenden Energieeffizienzfähigkeit 1926 für den entsprechenden Kern speichern. In einer Ausführungsform kann jeder Kernspeichereintrag 1920 ein 8-Byte-Eintrag sein, der für jeden physischen Kern die folgenden Felder enthält: Performance (Perf) (1B), das heißt die momentane Leistungsfähigkeit eines logischen Prozessors; Energy Efficiency (EE) (1B), das heißt die momentane Energieeffizienzfähigkeit eines logischen Prozessors; und einen reservierten Abschnitt.
  • In einer Ausführungsform ist die Hardware-Rückmeldungs-Schnittstelle speicherbasiert. Während der Initialisierung kann das OS die Hardware-Rückmeldungsunterstützung spezifizieren. Wenn Hardware-Rückmeldung unterstützt wird, so weist das OS eine Hardware-Rückmeldungsschnittstellen (Hardware Feedback Interface, HFI)-Speicherregion als einen nicht-ausgelagerten, zusammenhängenden Speicher zu. Sobald diese Speicherregion zugewiesen ist, schreibt das OS seine physische Adresse (PA) in ein Zeigerregister und aktualisiert die Indikatoren in verschiedenen Registern (wie zum Beispiel ein oder mehrere modellspezifische Register (MSRs)), um die Hardware zu veranlassen, mit dem Hardware-Rückmeldungsbetrieb, wie im vorliegenden Text beschrieben, zu beginnen.
  • Sobald die Hardware-Rückmeldung aktiviert ist, generiert ein Energie-Controller Hardware-Rückmeldungsinformationsaktualisierungen auf der Grundlage der Systemarbeitslast sowie der Leistungs- und thermischen Beschränkungen. In einer Ausführungsform kann eine Mikrocodetechnik verwendet werden, um die Aktualisierungen in den Speicher zu schreiben, die, wie im vorliegenden Text beschrieben, in komprimierter Form vorliegen können. Wenn neue Hardware-Rückmeldungsinformationen verfügbar sind, so kann der Energie-Controller unter Verwendung einer Mailbox-Schnittstelle Mikrocode anfordern, um die HFI-Speicherregion mit den neuesten Hardware-Disponierunginformationen zu aktualisieren. Der Mikrocode liest die neuen Informationen und schreibt sie unter Verwendung des Layouts der HFI-Region in den Speicher. In einer anderen Ausführungsform kann der Energie-Controller den Speicher direkt beschreiben. In einer weiteren Ausführungsform kann sich die HFI-Tabelle in einem Satz von im Speicher abgebildeten Steuerregistern (zum Beispiel innerhalb des Energie-Controllers) befinden.
  • Verschiedene Package-Level-Status/Interrupt-MSRs können verwendet werden, um den Zugriff auf die HFI-Speicherregion und OS-Benachrichtigungen zu steuern. In einer Ausführungsform kann ein Hardware-Rückmeldungsbenachrichtigungs-Logindikator eines Package-Wärmestatus-MSR verwendet werden, um den Zugriff auf den HFI-Speicher zu steuern und dem OS den Status von Hardware-Rückmeldungsaktualisierungen mitzuteilen. Dieser Indikator kann durch Hardware gesetzt werden, wenn eine Änderung der Hardware-Rückmeldungsinformationen stattgefunden hat und in den Speicher geschrieben wurde. Dieser gesetzte Indikator soll das OS über eine atomische Aktualisierung des HFI-Speicherregion informieren, und dass sie erst dann wieder beschrieben wird, wenn das OS den Indikator löscht.
  • Wenn der Hardware-Rückmeldungsbenachrichtigungs-Logindikator gesetzt ist, so kann das OS auf die Speicherregion zugreifen, um neue Hardware-Rückmeldungsinformationen zu erhalten. Das OS löscht dann diesen Indikator nach dem Lesen des HFI-Speichers, so dass eine neue Strom- oder Energieeffizienz-Ordnungsänderung den Energie-Controller veranlasst, den HFI-Speicher zu aktualisieren und diese Indikator erneut zu setzen. Wenn diese Indikator gelöscht wird, so übernimmt die Hardware die Zuständigkeit für die Hardware-Rückmeldungsspeicherregion, und es ist nicht garantiert, dass die dort gespeicherten Informationen atomisch oder konsistent sind. Daher kann das OS möglicherweise den HFI-Speicher nicht lesen oder nicht auf ihn zugreifen, wenn der Hardware-Rückmeldungsbenachrichtigungs-Logindikator gelöscht wird. In einigen Ausführungsformen können Hardware-Rückmeldungsaktualisierungen so gesteuert werden, dass sie nicht öfter als einmal pro gegebenem Intervall (zum Beispiel 10 ms) stattfinden, und nur dann, wenn sich die Hardware-Rückmeldung sinnvoll geändert hat.
  • In Ausführungsformen können Benachrichtigungsereignisse bereitgestellt werden, um das OS zu informieren, dass eine Änderung der Fähigkeiten des Hardware-Rückmeldungsprozessors stattgefunden hat und eine neue Aktualisierung der HFI-Speicherregion verfügbar ist. Als ein beispielhafter Mechanismus kann ein Hardware-Rückmeldungsbenachrichtigungs-Aktivierungsindikator in einem Package-Wärmeinterrupt-MSR enthalten sein, um Hardware-Rückmeldungsbenachrichtigungen zu ermöglichen. Wenn dieser Indikator gesetzt ist, so wird eine Hardware-Rückmeldungsbenachrichtigung generiert, wenn der Hardware-Rückmeldungsbenachrichtigungs-Logindikator in dem Package-Wärmeinterrupt-MSR die Polarität ändert. Es ist zu beachten, dass das OS den Hardware-Rückmeldungsbenachrichtigungs-Logindikator zur Flusssteuerung verwenden kann. Wenn Hardware-Rückmeldungsaktualisierungen und -benachrichtigungen zu häufig sind, als dass das OS sie verarbeiten und für die Disponierung verwenden könnte, so kann das OS das Löschen des Hardware-Rückmeldungsbenachrichtigungs-Logindikators verzögern und dadurch weitere Hardware-Rückmeldungsaktualisierungen und -benachrichtigungen verhindern.
  • Auf die Informationen über die Fähigkeiten der einzelnen logischen Prozessoren kann auf der Grundlage einer Spezifizierung durch einen Mechanismus wie ein CPUID-Register zugegriffen werden, um den Index des Eintrags oder der Reihe des logischen Prozessors in dem HFI-Speicher zu identifizieren, der die Prozessorfähigkeiten-Informationen enthält. Das OS verwendet diesen Index, um eine Abbildung zwischen IDs und Indizes logischer Prozessoren in Hardware-Rückmeldungsfähigkeiten-Informationen zu erstellen.
  • Während des Betriebes kann das OS den Hardware-Rückmeldungsbenachrichtigungs-Logindikator in dem Package-Wärmestatus-MSR löschen, um eine Hardware-Rückmeldungsaktualisierung anzufordern, und den Hardware-Rückmeldungsbenachrichtigungs-Aktivierungsindikator in dem Package-Wärmeinterrupt-MSR setzen, wenn es Hardware-Rückmeldungsbenachrichtigungen erhalten möchte. Sobald die Status- und Benachrichtigungsindikatoren gesetzt sind, setzt das OS einen Aktivierungsindikator in einem Hardware-Rückmeldungsbenachrichtigungs-MSR. Dieser gesetzte Indikator ist ein Auslöser, der Hardware veranlasst, mit der Berechnung von Hardware-Rückmeldungen, wie in dem vorliegenden Text beschrieben, zu beginnen. Wenn eine Änderung bei einer der Prozessorfähigkeiten eintritt, so aktualisiert der Energie-Controller die HFI-Speicherregion, auf die das Hardware-Rückmeldungszeiger-MSR zeigt, und generiert eine Benachrichtigung an das OS.
  • Wir wenden uns nun 20 zu, wo ein Blockdiagramm einer Systemanordnung gemäß einer Ausführungsform veranschaulicht ist. Wie in 20 veranschaulicht, enthält das System 2000 einen Prozessor 2010, der in einer Ausführungsform ein heterogener Mehrkernprozessor sein kann, der in einer Ausführungsform mit einem als DRAM implementierten Systemspeicher 2060 gekoppelt ist. Wie weiter veranschaulicht ist, wird in dem Prozessor 2010 ein OS 2070 ausgeführt. Der Prozessor 2010 enthält mindestens einen einzelnen Kern 2020, der zu repräsentativen Zwecken gezeigt ist. Der Kern 2020 ist mit einer PCU 2030 über eine Mailbox-Schnittstelle 2050 gekoppelt, die in einer Ausführung als eine Mikrocode-Mailbox-Schnittstelle implementiert werden kann. Natürlich sind auch andere Schnittstellen möglich, um die Kommunikation zwischen dem Kern 2020 und der PCU 2030 zu ermöglichen.
  • Wie weiter veranschaulicht ist, enthält der Prozessor 2010 auch einen Satz von Registern 2040. Die Register 2040 können eine Vielzahl verschiedener MSRs, Statusregister, Konfigurationsregister usw. umfassen. In der in 20 gezeigten konkreten Ausführungsform gehört zu solchen Registern ein CPUID-Register 2042. Von Interesse ist, dass das CPUID-Register 2042 ein Hardware-Rückmeldungsfeld enthalten kann, das, wenn es gesetzt ist, anzeigt, dass der Prozessor in der Lage ist, dynamische Hardware-Rückmeldungsinformationen an ein OS zu übermitteln. Ein Hardware-Rückmeldungszeiger-MSR 2044 kann ein Hardware-Rückmeldungszeigerfeld enthalten, um einen durch das OS geschriebenen Zeiger zu speichern, der auf die Stelle im Speicher zeigt, an der die Hardware-Rückmeldungsinformationsstruktur gespeichert werden soll. Ein Hardware-Rückmeldungskonfigurations-MSR 2046 kann ein Hardware-Rückmeldungskonfigurations-Aktivierungsfeld speichern, das, wenn es gesetzt ist, anzeigt, dass der Prozessor eine Hardware-Rückmeldungsverarbeitung, wie im vorliegenden Text beschrieben, ausführen soll. Ein Package-Wärmeinterruptregister 2048 kann einen Hardware-Rückmeldungsbenachrichtigungs-Aktivierungsindikator enthalten, um das Auslösen eines Interrupts in Reaktion auf eine Aktualisierung der Hardware-Rückmeldungsinformationen zu ermöglichen. Und schließlich kann ein Package-Wärmestatusregister 2049 einen Hardware-Rückmeldungsbenachrichtigungs-Logindikator enthalten, der gesetzt werden kann, wenn aktualisierte Hardware-Rückmeldungsinformationen durch die PCU 2030 geschrieben werden, und durch das OS zurückgesetzt werden kann, wenn es die aktualisierten Informationen liest.
  • Wir bleiben bei 20. Die PCU 2030 enthält einen Hardware-Rückmeldungssteuerkreis 2035, der Hardware-Rückmeldungsinformationen berechnen und ein Schreiben dieser Informationen in den Speicher 2060 auslösen kann. Genauer gesagt, können diese Informationen über die Mailbox-Schnittstelle 2050 an den Kern 2020 übermittelt werden. Der Mikrocode des Kerns 2020 wiederum kann diese Hardware-Rückmeldungsinformationen empfangen und in den Systemspeicher 2060 schreiben und danach eine Bestätigung des Schreibens dieser Informationen an die PCU 2030 senden.
  • Es ist zu beachten, dass in anderen Ausführungsformen eine direkte Schnittstelle bereitgestellt werden kann, die es der PCU 2030 ermöglicht, diese Hardware-Rückmeldungsinformationen direkt in den Systemspeicher 2060 zu schreiben. In Ausführungsformen können die Hardware-Rückmeldungsinformationen vor dem eigentlichen Schreiben in den Speicher vorübergehend als Rückschreibinformationen zum Beispiel in einem Last-Level-Cache des Prozessors zwischengespeichert werden. Somit kann das OS 2070 auf die Hardware-Rückmeldungsinformationen entweder von dem LLC, falls darin vorhanden, oder von dem Speicher 2060 zugreifen. Es versteht sich, dass, obgleich in der Ausführungsform von 20 auf dieser hohen Ebene gezeigt, viele Variationen und Alternativen möglich sind.
  • Wir wenden uns nun 21 zu, wo ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform gezeigt ist. Genauer gesagt, und wie in 21 gezeigt, ist das Verfahren 2100 ein Verfahren zum Ausführen eines Hardware-Rückmeldungsinitialisierungsprozesses. In einer Ausführungsform kann das Verfahren 2100 durch ein OS, das in einem Prozessor abläuft, ausgeführt werden. Es beginnt mit dem Bestimmen, ob in dem Prozessor Unterstützung für Hardware-Rückmeldungen vorhanden ist (Raute 2110). In einer Ausführungsform kann diese Bestimmung auf einem Hinweis in einem Identifikationsregister, wie zum Beispiel einem CPUID-Register, beruhen. Wenn diese Bestimmung negativ ausfällt, so geht die Steuerung zu Block 2115 über, wo das OS bestimmt, dass keine Hardware-Rückmeldung unterstützt wird, und damit ist das Initialisierungsverfahren beendet.
  • Wenn stattdessen bestimmt wird, dass Hardware-Unterstützung vorhanden ist, so geht die Steuerung zu Block 2120 über, wo eine HFI-Speicherregionsgröße erhalten werden kann. In einer Ausführungsform können diese Informationen aus einem Identifikationsregister, zum Beispiel aus demselben oder einem anderen CPUID-Register, erhalten werden. Wir bleiben bei 21. Die Steuerung geht zu Block 2130 über, wo diese Hardware-Rückmeldungsinformations-Speicherregion an der programmierten Stelle zugewiesen werden kann. Genauer gesagt, kann in einer Ausführungsform ein OS einen Hardware-Rückmeldungszeiger in ein Hardware-Rückmeldungszeigerregister schreiben. Als Nächstes geht die Steuerung zu Block 2140 über, wo die Abbildung einer ID eines logischen Prozessors auf einen Hardware-Rückmeldungsinformationsindex ausgeführt werden kann. Auf diese Weise kann jeder Kern (oder andere logische Prozessor) mit einem Hardware-Rückmeldungsindex verknüpft werden, dergestalt, dass während des Betriebes die Hardware-Rückmeldungsinformationen für einen gegebenen Prozessor erhalten werden können.
  • Wir bleiben bei 21. Die Steuerung geht als Nächstes zu Block 2150 über, wo das OS einen Hardware-Rückmeldungsbenachrichtigungs-Logindikator in einem Wärmestatusregister löschen kann. Durch das Löschen dieses Indikators kann die Hardware bestimmen, dass sie in der Lage ist, die Hardware-Rückmeldungsinformationen in den Hardware-Rückmeldungsspeicher zu schreiben.
  • Die Steuerung geht als Nächstes zu dem optionalen Block 2160 über, wo ein Hardware-Rückmeldungsindikator in dem Wärmeinterruptregister aktiviert werden kann. Das heißt, in einer Ausführungsform, in der das OS einen Interrupt empfangen möchte, um anzuzeigen, dass neue Hardware-Rückmeldungsinformationen verfügbar sind, wird dieser Aktivierungsindikator gesetzt. Schließlich geht die Steuerung zu Block 2170 über, wo ein Hardware-Rückmeldungs-Aktivierungsindikator in einem Hardware-Rückmeldungs-Konfigurationsregister aktiviert werden kann, so dass die Prozessor-Hardware mit Hardware-Rückmeldungsaktualisierungen beginnen kann. Obgleich in der Ausführungsform von 21 auf dieser hohen Ebene gezeigt, sind viele Variationen und Alternativen möglich.
  • Wir wenden uns nun 22 zu, wo ein Flussdiagramm eines Verfahrens gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt ist. Genauer gesagt, ist das Verfahren 2200 von 22 ein Verfahren zum Ausführen einer Interrupt-Verarbeitung für die Handhabung von Hardware-Rückmeldungsinformationen, wie im vorliegenden Text beschrieben. In diesem Hardware-Rückmeldungs-OS-Benachrichtigungsfluss überprüft das OS, nachdem es ein Benachrichtigungsereignis erhalten hat, den Hardware-Rückmeldungsbenachrichtigungs-Logindikator in dem Wärmestatus-MSR, um zu bestimmen, ob das Benachrichtigungsereignis aufgrund einer Hardware-Rückmeldungsaktualisierung generiert wurde. Wenn ja, so hat die Hardware einen oder mehrere Prozessorfähigkeiten-Vektoren aktualisiert. An diesem Punkt liest das OS die HFI-Speicherregion und aktualisiert seine lokale Disponierungsstruktur mit der neuesten Hardware-Rückmeldung unter Verwendung einer internen Abbildung von logischen Prozessoren auf Hardware-Rückmeldungen. Wie oben beschrieben, wird diese Abbildung durch das OS während der Initialisierung erstellt und verwaltet. Nachdem das OS seine internen Prozessorfähigkeiten aktualisiert hat, werden diese Informationen für OS-Disponierungsentscheidungen verwendet. Als Nächstes löscht das OS den Disponierungsrückmeldungsbenachrichtigungs-Logindikator in dem Wärmestatus-MSR, um eine weitere Hardware-Disponierungsaktualisierung zu ermöglichen.
  • In einer Ausführungsform kann das Verfahren 2200 durch das OS, das in einem Prozessor abläuft, ausgeführt werden, wie im vorliegenden Text beschrieben. Wie veranschaulicht, beginnt das Verfahren 2200 mit der Bestimmung, ob ein Hardware-Rückmeldungsbenachrichtigungs-Logindikator eines Wärmestatusregisters gesetzt ist (Raute 2210). Wenn ja, so geht die Steuerung zu Block 2220 über, wo das OS eine im Speicher abgebildete Region lesen kann, um Hardware-Rückmeldungsinformationen zu erhalten. Wie im vorliegenden Text beschrieben, können diese Hardware-Informationen in einer Cache-Hierarchie des Prozessors oder in einem Systemspeicher vorhanden sein. In jedem Fall kann das OS, das diese aktualisierten Hardware-Rückmeldungsinformationen liest, eine oder mehrere OS-interne Datenstrukturen aktualisieren. Genauer gesagt, können solche Datenstrukturen durch den OS-Disponierer verwendet werden, um Threads zur Ausführung innerhalb des Prozessors zu disponieren. Die Steuerung geht als Nächstes zu Block 2230 über, wo der Hardware-Rückmeldungsbenachrichtigungs-Logindikator des Wärmestatusregisters gelöscht wird. Mittels dieses Mechanismus zeigt das OS somit der Hardware an, dass es die letzte Aktualisierung der Hardware-Rückmeldungsinformationen gelesen hat, und wenn eine neue Aktualisierung verfügbar wird, so kann die Hardware diese darum an einen Speicher übermitteln, damit sie erneut durch das OS gelesen werden kann.
  • Wir bleiben bei 2200. Bei Raute 2240 wird bestimmt, ob zusätzliche Energiemanagementstatusregisterfelder gesetzt sind. Das OS kann alle Statusbits auf Ereignisse überprüfen, für die eine Wärme-Benachrichtigung aktiviert wurde. Wenn es andere Ereignisse gibt, so geht die Steuerung zu Block 2250 über, wo solche anderen Energiemanagement-Interrupts verarbeitet werden können. Obgleich der Geltungsbereich der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann in einer konkreten Ausführungsform ein anderer Interrupt ein Hardware-P-Zustands-Interrupt sein, um anzuzeigen, dass Hardware einen Leistungszustand eines oder mehrerer Kerne des Prozessors autonom aktualisiert hat. Natürlich können in anderen Ausführungsformen auch andere Energiemanagement-Interrupts stattfinden. Obgleich in der Ausführungsform von 22 auf dieser hohen Ebene gezeigt, sind viele Variationen und Alternativen möglich.
  • In anderen Fällen kann anstelle eines auf Interrupts basierenden Mechanismus zur Identifizierung des Vorhandenseins aktualisierter Hardware-Rückmeldungsinformationen ein Polling-Prozess stattfinden. Wir wenden uns nun 23 zu, wo ein Flussdiagramm eines Verfahrens gemäß einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt ist. In diesem Hardware-Rückmeldungs-OS-Polling-Fluss kann sich ein OS entscheiden (zum Beispiel wegen des zusätzlichen Interrupt-Verarbeitungsaufwands), keine Hardware-Rückmeldungsbenachrichtigungen für Aktualisierungen zu verwenden. In diesem Fall kann das OS den Hardware-Rückmeldungsbenachrichtigungs-Logindikator in dem Wärmestatus-MSR überprüfen, um zu bestimmen, ob Hardware neue Hardware-Rückmeldungen generiert hat. Das OS kann diese Prüfung periodisch ausführen (zum Beispiel alle 30 ms) oder einen anderen Auslöser verwenden, um zu bestimmen, ob neue Hardware-Rückmeldungsinformationen verfügbar sind. Der Rest des Flusses ähnelt dem Fall, wo Benachrichtigungen aktiviert sind. Wenn der Hardware-Rückmeldungsbenachrichtigungs-Logindikator in dem Wärmestatus-MSR gesetzt ist, so liest das OS die im Speicher abgebildete HFI-Region und löscht diesen Indikator, um neue Aktualisierungen zu erhalten. Es ist zu beachten, dass, wenn der Hardware-Rückmeldungsbenachrichtigungs-Logindikator in dem Wärmestatus-MSR gelöscht wird, Hardware immer dann neue Prozessorfähigkeiten-Vektoren schreibt, wenn es eine sinnvolle Änderung einer früheren Aktualisierung gibt. Sobald diese HFI-Speicherregion aktualisiert wird, setzt Hardware den Hardware-Rückmeldungsbenachrichtigungs-Logindikator in dem Wärmestatus-MSR und generiert keine weiteren Aktualisierungen mehr, bis er wieder gelöscht wird. Daher kann ein OS, das zum Empfangen von Hardware-Rückmeldungen Polling verwendet, veraltete Prozessorfähigkeiten-Informationen erhalten.
  • Wie in 23 gezeigt, ist das Verfahren 2300 ein Verfahren zum Abrufen (Polling) von Hardware-Rückmeldungsinformationen, wie im vorliegenden Text beschrieben. In einer Ausführungsform kann das Verfahren 2300 durch das OS, das in einem Prozessor abläuft, ausgeführt werden, wie im vorliegenden Text beschrieben. Wie veranschaulicht, beginnt das Verfahren 2300 mit der Bestimmung, ob ein Hardware-Rückmeldungsbenachrichtigungs-Logindikator eines Wärmestatusregisters gesetzt ist (Raute 2310). Wenn ja, so geht die Steuerung zu Block 2320 über, wo das OS die aktualisierten Hardware-Informationen aus der im Speicher abgebildeten Region liest und eine oder mehrere OS-interne Datenstrukturen aktualisiert. Als Nächstes löscht das OS bei Block 2330 den Hardware-Rückmeldungsbenachrichtigungs-Logindikator des Wärmestatusregisters, um der Hardware anzuzeigen, dass es die letzte Aktualisierung der Hardware-Rückmeldungsinformationen gelesen hat.
  • In einigen Fällen kann das OS versuchen, die im vorliegenden Text beschriebenen Hardware-Rückmeldungsinformationstechniken zu deaktivieren. Zum Beispiel kann eine solche Deaktivierung initiiert werden, wenn irgend eine Art von Speicherproblem auftritt und/oder wenn das OS versucht, diesen HFI-Speicher zurückzugewinnen. Das OS kann so konfiguriert werden, dass es HFI-Speicher nur dann zurückgewinnt, wenn es sicherstellt, dass der Energie-Controller keine anstehenden Speicheraktualisierungen durchführt.
  • Wir wenden uns nun 24 zu, wo ein Flussdiagramm eines Verfahrens gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt ist. Wie in 24 veranschaulicht, löscht das OS in einem OS-Deaktivierungsfluss, wenn es die Hardware-Rückmeldungsschnittstelle deaktivieren will, einen Aktivierungsindikator in einem Hardware-Rückmeldungskonfigurations-MSR und einen Hardware-Rückmeldungsbenachrichtigungs-Logindikator in dem Wärmestatus-MSR. Der Energie-Controller überprüft den Aktivierungsindikator, und wenn er auf „deaktiviert“ wechselt, so stoppt er alle HFI-Speicheraktualisierungen und setzt den Hardware-Rückmeldungsbenachrichtigungs-Logindikator in dem Wärmestatus-MSR, so dass Hardware-Rückmeldungen deaktiviert werden und das OS HFI-Speicher zurückgewinnen kann.
  • Somit, wie veranschaulicht, beginnt das Verfahren 2400 durch Löschen eines Hardware-Rückmeldungsbenachrichtigungs-Logindikators innerhalb des Wärmestatusregisters und Löschen eines Aktivierungsindikators des Hardware-Rückmeldungskonfigurationsregisters, was zur Deaktivierung des Hardware-Rückmeldungsmechanismus führen kann (Block 2410). Als Nächstes geht die Steuerung zu Block 2420 über, wo eine Wärmebenachrichtigung empfangen wird. Als Nächstes wird bei Raute 2430 bestimmt, ob der Hardware-Rückmeldungsbenachrichtigungs-Logindikator des Wärmestatusregisters gesetzt ist, und die Hardware-Rückmeldungen werden deaktiviert. Wenn ja, so geht die Steuerung zu Block 2440 über, wo der Hardware-Rückmeldungsmechanismus somit deaktiviert wird, und der Rückmeldungsspeicher wird freigegeben, dergestalt, dass das OS diesen Speicher einer anderen Verwendung zuweisen kann. Des Weiteren, wie in 24 gezeigt, wird bei Raute 2450 bestimmt, ob zusätzliche Energiemanagementstatusregisterfelder gesetzt sind. Wenn ja, so geht die Steuerung zu Block 2460 über, wo solche anderen Energiemanagement-Interrupts verarbeitet werden können.
  • Wir wenden uns nun 25 zu, wo ein Flussdiagramm eines Verfahrens zur Deaktivierung von Hardware-Rückmeldungsinformationen gemäß einer Ausführungsform gezeigt ist. Genauer gesagt, zeigt das Verfahren 2500 ein Verfahren, das durch eine PCU oder einen anderen Energie-Controller ausgeführt wird, um die Deaktivierung dieses Mechanismus zu veranlassen, zum Beispiel unter der Steuerung des OS. Wie veranschaulicht, beginnt das Verfahren 2500 durch Lesen eines Hardware-Rückmeldungs-Aktivierungsindikators eines Konfigurationsregisters (Block 2510). Dann kann bestimmt werden, ob diese Indikator in einen deaktivierten Zustand übergegangen ist (Raute 2520). Wenn ja, so geht die Steuerung zu Block 2530 über, wo die PCU die Hardware-Rückmeldungsspeicheraktualisierungen stoppen und den im vorliegenden Text beschriebenen Hardware-Rückmeldungsmechanismus deaktivieren kann. Obgleich in der Ausführungsform von 25 auf dieser hohen Ebene gezeigt, sind viele Variationen und Alternativen möglich.
  • In einer Ausführungsform wird ein Hardware-Rückmeldungskonfigurations-MSR wie in Tabelle 1 durch das OS verwendet, um Hardware-Rückmeldungen zu ermöglichen. Wenn der Aktivierungsindikator gesetzt ist, so übermittelt der Prozessor Hardware-Rückmeldungen an das OS. Sobald er gesetzt wurde, werden Schreibvorgänge in dieses Register ignoriert. Das Aktivierungsindikator wird beim Zurücksetzen gelöscht. Tabelle 1. IA32_Hardware-Rückmeldungskonfigurations-PKG-MSR
    Feld R/W Definition Bit Breite
    Aktivieren R/W HW-Disponierungsrückmeldung aktivieren 0 1
  • In einer Ausführungsform enthält ein Package-Wärmestatus-MSR wie in Tabelle 2 einen Hardware-Rückmeldungsbenachrichtigungs-Logindikator, der anzeigt, wann eine Hardware-Rückmeldungsaktualisierung stattgefunden hat. Das OS löscht diesen Indikator, um weitere Hardware-Rückmeldungsaktualisierungen und -benachrichtigungen zu ermöglichen. Wenn er gelöscht ist, so übernimmt die Hardware die Zuständigkeit für die Hardware-Rückmeldungsspeicherregion, und die dort gespeicherten Informationen sollen durch das OS nicht gelesen oder abgerufen werden. Das OS kann nur dann auf dieses MSR zugreifen, wenn der Aktivierungsindikator in dem Hardware-Rückmeldungskonfigurations-MSR gesetzt ist. Tabelle 2. IA32_Package-Wärmestatus-PKG-MSR
    Feld R/W Definition Bit Breite
    ... ... ... ...
    HW-Rückmeldungsbenachrichtigungs-Log R/WCO R/WCO - Sticky Bit, das anzeigt, ob seit dem letzten Löschen dieses Bits oder Zurücksetzen eine HW-Rückmeldungsänderung stattgefunden hat (zum Beispiel aufgrund von Leistungs-/thermischen Einschränkungen). Software kann dieses Bit durch Schreiben einer Null (0) löschen. 26 1
  • Ein Hardware-Rückmeldungsbenachrichtigungs-Aktivierungsindikator in einem Package-Wärmeinterrupt-MSR wie in Tabelle 3 wird verwendet, um Wärmebenachrichtigungen zu ermöglichen, wenn Hardware ihre Prozessorfähigkeiten-Vektoren in der HFI-Speicherregion aktualisiert hat. Nachdem eine Benachrichtigung erfolgt ist, löscht das OS den Hardware-Rückmeldungsbenachrichtigungs-Logindikator in dem Package-Wärmeinterrupt-MSR, um weitere Benachrichtigungen zu ermöglichen. Tabelle 3. IA32_Package-Wärmeinterrupt-PKG-MSR
    Feld R/W Definition Bit Breite
    ... ... ... ...
    HW-Rückmeldungsbenachrichtigung aktivieren R/W Ermöglicht das Generieren eines Interrupts, wenn eine HW-Rückmeldungsänderung stattfindet (zum Beispiel aufgrund von thermischen/Leistungsgrenzen). 25 1
  • Ein Hardware-Rückmeldungszeiger-MSR wie in Tabelle 4 enthält die physische Adresse der Hardware-Rückmeldungsspeicherregion. Dieses Package-Level-MSR speichert eine physische Adresse, die 4KB-ausgerichtet ist. Das Gültig-Bit zeigt an, ob die physische Adresse gültig ist. Auf dieses MSR wird durch einen Energie-Controller und/oder Mikrocode zugegriffen, um die Adresse des physischen Hardware-Rückmeldungsspeichers zu erhalten. Tabelle 4. IA32_Hardware-Rückmeldungszeiger-PKG-MSR
    Feld R/W Definition Bit Breite
    Gültig R/W Durch OS gesetzt, um MSR als gültig zu markieren 0 1
    Reserviert R/W Reserviert. Muss 0 sein. 11:1 11
    Tabellenadresse R/W Physische Adresse der Tabelle Max_PA-1:12 N
  • Die folgenden Beispiele beziehen sich auf weitere Ausführungsformen.
  • In einem Beispiel enthält ein Prozessor: mehrere Kerne zum Ausführen von Instruktionen; ein erstes Identifikationsregister mit einem ersten Feld zum Speichern eines Rückmeldungsindikators, der einem OS anzeigt, dass der Prozessor dem OS dynamisch Hardware-Rückmeldungsinformationen übermitteln soll; und einen Energie-Controller, der mit den mehreren Kernen gekoppelt ist. Der Energie-Controller kann einen Rückmeldungssteuerkreis enthalten, um die Hardware-Rückmeldungsinformationen für mindestens einen der mehreren Kerne dynamisch zu bestimmen und das OS über eine Aktualisierung der Hardware-Rückmeldungsinformationen zu informieren.
  • In einem Beispiel soll der Rückmeldungssteuerkreis dynamisch die Hardware-Rückmeldungsinformationen bestimmen, die eine momentane Leistungsfähigkeit des mindestens einen der mehreren Kerne und eine momentane Energieeffizienzfähigkeit des mindestens einen der mehreren Kerne umfassen.
  • In einem Beispiel umfasst die momentane Leistungsfähigkeit einen relativen Wert, der zum Teil auf einem Leistungszustand des mindestens einen der mehreren Kerne basiert, und die momentane Energieeffizienzfähigkeit umfasst einen relativen Wert, der zum Teil auf einer Leistungsmessgröße des mindestens einen der mehreren Kerne basiert.
  • In einem Beispiel soll der Energie-Controller die Hardware-Rückmeldungsinformationen mindestens teilweise auf der Grundlage einer Arbeitslast sowie einer Leistungsbeschränkung des Prozessors und/oder einer thermischen Beschränkung des Prozessors dynamisch bestimmen.
  • In einem Beispiel umfasst der Energie-Controller mehrere im Speicher abgebildete Register zum Speichern der Hardware-Rückmeldungsinformationen.
  • In einem Beispiel soll der Prozessor die Hardware-Rückmeldungsinformationen in einer Hardware-Rückmeldungsstruktur eines mit dem Prozessor gekoppelten Systemspeichers speichern.
  • In einem Beispiel umfasst die Hardware-Rückmeldungsstruktur einen globalen Abschnitt, um mindestens einen Zeitstempelwert zu speichern, um einen Zeitpunkt anzugeben, zu dem aktualisierte Hardware-Rückmeldungsinformationen gespeichert werden, sowie Änderungsindikatoren zu speichern, um anzugeben, ob die Hardware-Rückmeldungsinformationen für einen entsprechenden der mehreren Kerne aktualisiert wurden, sowie einen lokalen Abschnitt, der mehrere Felder enthält, die jeweils mit einem der mehreren Kerne verknüpft sind und die Hardware-Rückmeldungsinformationen für den entsprechenden Kern speichern sollen.
  • In einem Beispiel umfasst der Prozessor des Weiteren ein Zeigerregister zum Speichern eines Zeigers zu der Hardware-Rückmeldungsstruktur, wobei das OS die Hardware-Rückmeldungsstruktur zuweisen und den Zeiger in das Zeigerregister schreiben soll.
  • In einem Beispiel umfasst der Prozessor des Weiteren ein zweites Register zum Speichern eines Hardware-Rückmeldungsbenachrichtigungsindikators, wobei der Energie-Controller den Hardware-Rückmeldungsbenachrichtigungsindikator setzen soll, um das OS über die Aktualisierung der Hardware-Rückmeldungsinformationen zu informieren.
  • In einem Beispiel umfasst der Prozessor des Weiteren ein drittes Register zum Speichern eines Hardware-Rückmeldungsbenachrichtigungs-Aktivierungsindikators, wobei der Energie-Controller in Reaktion auf einen ersten Zustand des Hardware-Rückmeldungsbenachrichtigungs-Aktivierungsindikators veranlassen soll, dass in Reaktion auf die Aktualisierung der Hardware-Rückmeldungsinformationen ein Interrupt generiert wird.
  • In einem Beispiel umfassen die mehreren Kerne mindestens einen Kern, der auf einem ersten Stromverbrauchspegel arbeitet, und einen oder mehrere zweite Kerne, die auf einem zweiten Stromverbrauchspegel arbeiten, wobei der zweite Stromverbrauchspegel niedriger ist als der erste Stromverbrauchspegel.
  • In einem anderen Beispiel umfasst ein Verfahren: Zuweisen einer Hardware-Rückmeldungsstruktur in einem Systemspeicher und Speichern eines Zeigers zu der Hardware-Rückmeldungsstruktur in einem ersten Register eines Prozessors, wobei die Hardware-Rückmeldungsstruktur Hardware-Rückmeldungsinformationen speichern soll, die dynamische Leistungs- und Energieeffizienzfähigkeiten mehrerer Kerne des Prozessors umfassen; Zurücksetzen eines Hardware-Rückmeldungsindikators eines Statusregisters des Prozessors, um einem Energie-Controller des Prozessors anzuzeigen, dass eine Aktualisierung der Hardware-Rückmeldungsinformationen, die von dem Energie-Controller an einen Disponierer übermittelt werden, vorgenommen werden kann; und Aktualisieren eines Konfigurationsregisters des Prozessors, um den Energie-Controller in die Lage zu versetzen, die Hardware-Rückmeldungsinformationen dynamisch zu berechnen.
  • In einem Beispiel umfasst das Verfahren des Weiteren das Abbilden eines Identifizierers eines ersten logischen Prozessors, der mit einem ersten logischen Prozessor verknüpft ist, auf einen ersten Eintrag der Hardware-Rückmeldungsstruktur, wobei der erste Eintrag die Hardware-Rückmeldungsinformationen speichert, die mit dem ersten logischen Prozessor verknüpft sind.
  • In einem Beispiel umfasst das Verfahren des Weiteren: Lesen der Aktualisierung der Hardware-Rückmeldungsinformationen aus dem ersten Eintrag; Aktualisieren einer Disponierungsstruktur mindestens teilweise auf der Grundlage der Aktualisierung; und Disponieren mindestens eines Threads zu dem ersten logischen Prozessor unter Verwendung von in der Disponierungsstruktur gespeicherten Informationen.
  • In einem Beispiel umfasst das Verfahren des Weiteren das Zurücksetzen des Hardware-Rückmeldungsindikators des Statusregisters nach dem Lesen der Aktualisierung.
  • In einem Beispiel umfasst das Verfahren des Weiteren das Setzen eines Hardware-Rückmeldungsbenachrichtigungsindikators eines Interruptregisters des Prozessors in Reaktion auf die Aktualisierung der Hardware-Rückmeldungsinformationen, um einen Interrupt zu veranlassen.
  • In einem Beispiel umfasst das Verfahren des Weiteren das Sperren des Energie-Controllers gegen ein Aktualisieren der Hardware-Rückmeldungsinformationen über eine zweite Aktualisierung des Konfigurationsregisters.
  • 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 ausführen.
  • In einem anderen Beispiel umfasst eine Vorrichtung ein Mittel zum Ausführen des Verfahrens nach einem der oben genannten Beispiele.
  • In einem weiteren Beispiel umfasst ein System einen Prozessor, der aufweist: einen ersten Kern zum Ausführen von Instruktionen; mehrere zweite Kerne zum Ausführen von Instruktionen, wobei die mehreren zweiten Kerne heterogen zu dem ersten Kern und kleiner als der erste Kern sind; einen gemeinsam genutzten Cache-Speicher; einen Energie-Controller, der mit dem ersten Kern und den mehreren zweiten Kernen gekoppelt ist, wobei der Energie-Controller einen Rückmeldungssteuerkreis enthält, um Hardware-Rückmeldungsinformationen für einen oder mehrere des ersten Kerns und der mehreren zweiten Kerne mindestens teilweise auf der Grundlage einer Arbeitslast sowie einer thermischer Beschränkung und/oder einer Leistungsbeschränkung dynamisch zu bestimmen; ein Statusregister mit einem ersten Feld zum Speichern eines ersten Indikators, wobei, wenn der erste Indikator des Statusregisters einen ersten Zustand aufweist, der Rückmeldungssteuerkreis eine Aktualisierung der Hardware-Rückmeldungsinformationen schreiben soll; und ein Interruptregister mit einem ersten Feld zum Speichern eines ersten Indikators, wobei, wenn der erste Indikator des Interruptregisters den ersten Zustand aufweist, der Prozessor in Reaktion auf die Aktualisierung der Hardware-Rückmeldungsinformationen einen Interrupt ausgeben soll. Das System kann des Weiteren einen mit dem Prozessor gekoppelten Systemspeicher enthalten, wobei der Systemspeicher eine Hardware-Rückmeldungsstruktur zum Speichern der Hardware-Rückmeldungsinformationen umfasst.
  • In einem Beispiel soll ein Disponierer einen ersten Thread zu einem zweiten Kern der mehreren zweiten Kerne disponieren, wenn eine momentane Leistungsfähigkeit und eine momentane Energieeffizienzfähigkeit des zweiten Kerns größer sind als eine momentane Leistungsfähigkeit und eine momentane Energieeffizienzfähigkeit des ersten Kerns.
  • In einem Beispiel soll der Rückmeldungssteuerkreis die Aktualisierung der Hardware-Rückmeldungsinformationen in den gemeinsam genutzten Cache-Speicher schreiben, und der Disponierer soll auf die Hardware-Rückmeldungsinformationen aus dem gemeinsam genutzten Cache-Speicher zugreifen, wobei der gemeinsam genutzte Cache-Speicher die Aktualisierung der Hardware-Rückmeldungsinformationen in die Hardware-Rückmeldungsstruktur zurückschreiben soll.
  • 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 einem 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: mehrere Kerne zum Ausführen von Instruktionen; ein erstes Identifikationsregister mit einem ersten Feld zum Speichern eines Rückmeldungsindikators, der einem Betriebssystem (Operating System, OS) anzeigt, dass der Prozessor dem OS dynamisch Hardware-Rückmeldungsinformationen übermitteln soll; und einen Energie-Controller, der mit den mehreren Kernen gekoppelt ist, wobei der Energie-Controller einen Rückmeldungssteuerkreis enthält, um die Hardware-Rückmeldungsinformationen für mindestens einen der mehreren Kerne dynamisch zu bestimmen und das OS über eine Aktualisierung der Hardware-Rückmeldungsinformationen zu informieren.
  2. Prozessor nach Anspruch 1, wobei der Rückmeldungssteuerkreis die Hardware-Rückmeldungsinformationen dynamisch bestimmen soll, die eine momentane Leistungsfähigkeit des mindestens einen der mehreren Kerne und eine momentane Energieeffizienzfähigkeit des mindestens einen der mehreren Kerne umfassen.
  3. Prozessor nach Anspruch 2, wobei die momentane Leistungsfähigkeit einen relativen Wert umfasst, der zum Teil auf einem Leistungszustand des mindestens einen der mehreren Kerne basiert, und die momentane Energieeffizienzfähigkeit einen relativen Wert umfasst, der zum Teil auf einer Leistungsmessgröße des mindestens einen der mehreren Kerne basiert.
  4. Prozessor nach Anspruch 2, wobei der Energie-Controller die Hardware-Rückmeldungsinformationen mindestens teilweise auf der Grundlage einer Arbeitslast sowie einer Leistungsbeschränkung des Prozessors und/oder einer thermischen Beschränkung des Prozessors dynamisch bestimmen soll.
  5. Prozessor nach Anspruch 1, wobei der Energie-Controller mehrere im Speicher abgebildete Register zum Speichern der Hardware-Rückmeldungsinformationen umfasst.
  6. Prozessor nach Anspruch 1, wobei der Prozessor die Hardware-Rückmeldungsinformationen in einer Hardware-Rückmeldungsstruktur eines mit dem Prozessor gekoppelten Systemspeichers speichern soll.
  7. Prozessor nach Anspruch 6, wobei die Hardware-Rückmeldungsstruktur einen globalen Abschnitt umfasst, um mindestens einen Zeitstempelwert zu speichern, um einen Zeitpunkt anzugeben, zu dem aktualisierte Hardware-Rückmeldungsinformationen gespeichert werden, sowie Änderungsindikatoren zu speichern, um anzugeben, ob die Hardware-Rückmeldungsinformationen für einen entsprechenden der mehreren Kerne aktualisiert wurden, sowie einen lokalen Abschnitt umfasst, der mehrere Felder enthält, die jeweils mit einem der mehreren Kerne verknüpft sind und die Hardware-Rückmeldungsinformationen für den entsprechenden Kern speichern sollen.
  8. Prozessor nach Anspruch 6, der des Weiteren ein Zeigerregister zum Speichern eines Zeigers zu der Hardware-Rückmeldungsstruktur umfasst, wobei das OS die Hardware-Rückmeldungsstruktur zuweisen und den Zeiger in das Zeigerregister schreiben soll.
  9. Prozessor nach Anspruch 1, der des Weiteren ein zweites Registermittel zum Speichern eines Hardware-Rückmeldungsbenachrichtigungsindikators umfasst, wobei das Energiesteuerungsmittel den Hardware-Rückmeldungsbenachrichtigungsindikator setzen soll, um das OS über die Aktualisierung der Hardware-Rückmeldungsinformationen zu informieren.
  10. Prozessor nach Anspruch 9, der des Weiteren ein drittes Register zum Speichern eines Hardware-Rückmeldungsbenachrichtigungs-Aktivierungsindikators umfasst, wobei der Energie-Controller in Reaktion auf einen ersten Zustand des Hardware-Rückmeldungsbenachrichtigungs-Aktivierungsindikators veranlassen soll, dass in Reaktion auf die Aktualisierung der Hardware-Rückmeldungsinformationen ein Interrupt generiert wird.
  11. Prozessor nach einem der Ansprüche 1-10, wobei die mehreren Kerne mindestens einen Kern umfassen, der auf einem ersten Stromverbrauchspegel arbeitet, und einen oder mehrere zweite Kerne umfassen, die auf einem zweiten Stromverbrauchspegel arbeiten, wobei der zweite Stromverbrauchspegel niedriger ist als der erste Stromverbrauchspegel.
  12. Verfahren, das umfasst: Zuweisen einer Hardware-Rückmeldungsstruktur in einem Systemspeicher und Speichern eines Zeigers zu der Hardware-Rückmeldungsstruktur in einem ersten Register eines Prozessors, wobei die Hardware-Rückmeldungsstruktur Hardware-Rückmeldungsinformationen speichern soll, die dynamische Leistungs- und Energieeffizienzfähigkeiten mehrerer Kerne des Prozessors umfassen; Zurücksetzen eines Hardware-Rückmeldungsindikators eines Statusregisters des Prozessors, um einem Energie-Controller des Prozessors anzuzeigen, dass eine Aktualisierung der Hardware-Rückmeldungsinformationen, die von dem Energie-Controller an einen Disponierer übermittelt werden, vorgenommen werden kann; und Aktualisieren eines Konfigurationsregisters des Prozessors, um den Energie-Controller in die Lage zu versetzen, die Hardware-Rückmeldungsinformationen dynamisch zu berechnen.
  13. Verfahren nach Anspruch 12, das des Weiteren das Abbilden eines Identifizierers eines ersten logischen Prozessors, der mit einem ersten logischen Prozessor verknüpft ist, auf einen ersten Eintrag der Hardware-Rückmeldungsstruktur umfasst, wobei der erste Eintrag die Hardware-Rückmeldungsinformationen speichert, die mit dem ersten logischen Prozessor verknüpft sind.
  14. Verfahren nach Anspruch 13, das des Weiteren umfasst: Lesen der Aktualisierung der Hardware-Rückmeldungsinformationen aus dem ersten Eintrag; Aktualisieren einer Disponierungsstruktur mindestens teilweise auf der Grundlage der Aktualisierung; und Disponieren mindestens eines Threads zu dem ersten logischen Prozessor unter Verwendung von in der Disponierungsstruktur gespeicherten Informationen.
  15. Verfahren nach Anspruch 14, das des Weiteren das Zurücksetzen des Hardware-Rückmeldungsindikators des Statusregisters nach dem Lesen der Aktualisierung umfasst.
  16. Verfahren nach Anspruch 12, das des Weiteren das Setzen eines Hardware-Rückmeldungsbenachrichtigungsindikators eines Interruptregisters des Prozessors in Reaktion auf die Aktualisierung der Hardware-Rückmeldungsinformationen umfasst, um einen Interrupt zu veranlassen.
  17. Verfahren nach Anspruch 12, das des Weiteren das Sperren des Energie-Controllers gegen ein Aktualisieren der Hardware-Rückmeldungsinformationen über eine zweite Aktualisierung des Konfigurationsregisters umfasst.
  18. 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-17 auszuführen.
  19. System, das umfasst: einen Prozessor, der umfasst: einen ersten Kern zum Ausführen von Instruktionen; mehrere zweite Kerne zum Ausführen von Instruktionen, wobei die mehreren zweiten Kerne heterogen zu dem ersten Kern und kleiner als der erste Kern sind; einen gemeinsam genutzten Cache-Speicher; einen Energie-Controller, der mit dem ersten Kern und den mehreren zweiten Kernen gekoppelt ist, wobei der Energie-Controller einen Rückmeldungssteuerkreis enthält, um Hardware-Rückmeldungsinformationen für einen oder mehrere des ersten Kerns und der mehreren zweiten Kerne mindestens teilweise auf der Grundlage einer Arbeitslast sowie einer thermischen Beschränkung und/oder einer Leistungsbeschränkung dynamisch zu bestimmen; ein Statusregister mit einem ersten Feld zum Speichern eines ersten Indikators, wobei, wenn der erste Indikator des Statusregisters einen ersten Zustand aufweist, der Rückmeldungssteuerkreis eine Aktualisierung der Hardware-Rückmeldungsinformationen schreiben soll; und ein Interruptregister mit einem ersten Feld zum Speichern eines ersten Indikators, wobei, wenn der erste Indikator des Interruptregisters den ersten Zustand aufweist, der Prozessor in Reaktion auf die Aktualisierung der Hardware-Rückmeldungsinformationen einen Interrupt ausgeben soll; und einen mit dem Prozessor gekoppelten Systemspeicher, wobei der Systemspeicher eine Hardware-Rückmeldungsstruktur zum Speichern der Hardware-Rückmeldungsinformationen umfasst.
  20. System nach Anspruch 19, wobei ein Disponierer einen ersten Thread zu einem zweiten Kern der mehreren zweiten Kerne disponieren soll, wenn eine momentane Leistungsfähigkeit und eine momentane Energieeffizienzfähigkeit des zweiten Kerns größer sind als eine momentane Leistungsfähigkeit und eine momentane Energieeffizienzfähigkeit des ersten Kerns.
  21. System nach Anspruch 19, wobei der Rückmeldungssteuerkreis die Aktualisierung der Hardware-Rückmeldungsinformationen in den gemeinsam genutzten Cache-Speicher schreiben soll, und der Disponierer auf die Hardware-Rückmeldungsinformationen aus dem gemeinsam genutzten Cache-Speicher zugreifen soll, wobei der gemeinsam genutzte Cache-Speicher die Aktualisierung der Hardware-Rückmeldungsinformationen in die Hardware-Rückmeldungsstruktur zurückschreiben soll.
  22. Prozessor, der umfasst: mehrere Kernmittel zum Ausführen von Instruktionen; ein erstes Identifikationsregistermittel mit einem ersten Feld zum Speichern eines Rückmeldungsindikators, der einem Betriebssystem (Operating System, OS) anzeigt, dass der Prozessor dem OS dynamisch Hardware-Rückmeldungsinformationen übermitteln soll; und ein Energiesteuerungsmittel, das mit den mehreren Kernmitteln gekoppelt ist, wobei das Energiesteuerungsmittel ein Rückmeldungssteuerungsmittel enthält, um die Hardware-Rückmeldungsinformationen für mindestens einen der mehreren Kerne dynamisch zu bestimmen und das OS über eine Aktualisierung der Hardware-Rückmeldungsinformationen zu informieren.
  23. Prozessor nach Anspruch 22, wobei das Rückmeldungssteuerungsmittel die Hardware-Rückmeldungsinformationen dynamisch bestimmen soll, die eine momentane Leistungsfähigkeit des mindestens einen der mehreren Kernmittel und eine momentane Energieeffizienzfähigkeit des mindestens einen der mehreren Kernmittel umfassen.
  24. Prozessor nach Anspruch 23, wobei die momentane Leistungsfähigkeit einen relativen Wert umfasst, der zum Teil auf einem Leistungszustand des mindestens einen der mehreren Kernmittel basiert, und die momentane Energieeffizienzfähigkeit einen relativen Wert umfasst, der zum Teil auf einer Leistungsmessgröße des mindestens einen der mehreren Kernmittel basiert.
  25. Prozessor nach Anspruch 23, wobei das Energiesteuerungsmittel die Hardware-Rückmeldungsinformationen mindestens teilweise auf der Grundlage einer Arbeitslast sowie einer Leistungsbeschränkung des Prozessors und/oder einer thermischen Beschränkung des Prozessors dynamisch bestimmen soll.
DE112019000693.2T 2018-03-27 2019-02-28 System, vorrichtung und verfahren zur bereitstellung von hardware-rückmeldungsinformationen in einem prozessor Pending DE112019000693T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/936,585 US10620969B2 (en) 2018-03-27 2018-03-27 System, apparatus and method for providing hardware feedback information in a processor
US15/936,585 2018-03-27
PCT/US2019/019961 WO2019190685A1 (en) 2018-03-27 2019-02-28 System, apparatus and method for providing hardware feedback information in a processor

Publications (1)

Publication Number Publication Date
DE112019000693T5 true DE112019000693T5 (de) 2020-10-22

Family

ID=65231570

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019000693.2T Pending DE112019000693T5 (de) 2018-03-27 2019-02-28 System, vorrichtung und verfahren zur bereitstellung von hardware-rückmeldungsinformationen in einem prozessor

Country Status (3)

Country Link
US (1) US10620969B2 (de)
DE (1) DE112019000693T5 (de)
WO (1) WO2019190685A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11442529B2 (en) 2019-05-15 2022-09-13 Intel Corporation System, apparatus and method for dynamically controlling current consumption of processing circuits of a processor
KR20210016707A (ko) * 2019-08-05 2021-02-17 삼성전자주식회사 성능효율을 바탕으로 한 스케줄링 방법, 스케줄링 장치 및 컴퓨터 판독가능 저장 매체
US11698812B2 (en) * 2019-08-29 2023-07-11 Intel Corporation System, apparatus and method for providing hardware state feedback to an operating system in a heterogeneous processor
US11366506B2 (en) 2019-11-22 2022-06-21 Intel Corporation System, apparatus and method for globally aware reactive local power control in a processor
DE102020134681A1 (de) 2020-01-31 2021-08-05 Intel Corporation Vorrichtungen, verfahren und systeme für anweisungen zum anfordern eines verlaufs-resets eines prozessorkerns
US11436018B2 (en) * 2020-01-31 2022-09-06 Intel Corporation Apparatuses, methods, and systems for instructions to request a history reset of a processor core
US11301298B2 (en) 2020-03-28 2022-04-12 Intel Corporation Apparatus and method for dynamic control of microprocessor configuration
US11531563B2 (en) * 2020-06-26 2022-12-20 Intel Corporation Technology for optimizing hybrid processor utilization
US11921564B2 (en) 2022-02-28 2024-03-05 Intel Corporation Saving and restoring configuration and status information with reduced latency

Family Cites Families (82)

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

Also Published As

Publication number Publication date
US20190042280A1 (en) 2019-02-07
US10620969B2 (en) 2020-04-14
WO2019190685A1 (en) 2019-10-03

Similar Documents

Publication Publication Date Title
DE112019000693T5 (de) System, vorrichtung und verfahren zur bereitstellung von hardware-rückmeldungsinformationen in einem prozessor
TWI630476B (zh) 執行平台裝置之動態功率控制的處理器、機器可讀取媒體及系統
DE112019001522T5 (de) System, vorrichtung und verfahren zur optimierten drosselung eines prozessors
DE112016004776T5 (de) Datenkomprimierung unter Verwendung eines Beschleunigers mit mehreren Suchmaschinen
DE112020000231T5 (de) Einstellung von Anzeige Auffrischung Raten basierend auf Benutzer Aktivität
DE202015009867U1 (de) Einrichtung zum Bereitstellen einer Wärmeparametermeldung für eine Mehrchip-Baugruppe
DE112019001001T5 (de) System, vorrichtung und verfahren für eine datengestützte niedrigenergiezustandssteuerung auf der grundlage von leistungsüberwachungsinformationen
DE102018125236A1 (de) System, Vorrichtung und Verfahren zum Selbsstest vor Ort in einem Diagnose-Ruhezustand
DE112020001586T5 (de) System, gerät und verfahren zur leistungslizenzsteuerung eines prozessors
DE112017004361T5 (de) Steuern eines leistungszustands eines prozessors unter verwendung einer kombination von package- und thread-hinweis-informationen
DE112013005131T5 (de) Verfahren, Vorrichtung, System zur automatischen Abstimmung von Coderegionen
DE102020134491A1 (de) System, Vorrichtung und Verfahren zum dynamischen Justieren von Plattformenergie und -leistung basierend auf Aufgabeneigenschaften
DE112017001805T5 (de) Bestimmen von thermischen obergrenzen in einem prozessor mit mehreren dies
DE102018131595A1 (de) Verwaltung von Prozessorleistung basierend auf Benutzerunterbrechungen
DE112017003080T5 (de) Prozessor mit gleichzeitigem kern und gewebeausgang aus einem zustand mit geringer energie
US9684360B2 (en) Dynamically controlling power management of an on-die memory of a processor
DE102018129330A1 (de) System, Vorrichtung und Verfahren zur prozessorexternen Überschreibung der Hardwareleistungszustandssteuerung eines Prozessors
EP3881181B1 (de) System, vorrichtung und verfahren zur konfigurierbaren steuerung vons asymmetrischem multi-threading (smt) auf einer pro-core-basis
US10761594B2 (en) Programmable power management agent
DE102020130910A1 (de) System, vorrichtung und verfahren für dynamische energiezustandsskalierung eines spannungsreglers für einen prozessor
DE112018004329T5 (de) Steuerblöcke zur prozessorleistungsverwaltung
DE112017003873T5 (de) Bereitstellung einer Schnittstelle für Herabstufungssteuerinformationen in einem Prozessor
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

Legal Events

Date Code Title Description
R081 Change of applicant/patentee

Owner name: TAHOE RESEARCH, LTD., IE

Free format text: FORMER OWNER: INTEL CORPORATION, SANTA CLARA, CALIF., US

R082 Change of representative

Representative=s name: VOSSIUS & PARTNER PATENTANWAELTE RECHTSANWAELT, DE