-
Technisches Gebiet
-
Die Ausführungsformen beziehen sich auf die Energieverwaltung eines Systems, und genauer auf die Energieverwaltung eines Mehrkernprozessors.
-
Allgemeiner Stand der Technik
-
Fortschritte in der Halbleiterverarbeitung und im Logikdesign haben eine Zunahme der Menge an Logik ermöglicht, die auf integrierten Schaltungsvorrichtungen vorhanden sein kann. Folglich haben sich Computersystemkonfigurationen von einer einzigen oder mehreren integrierten Schaltungen in einem System zu mehreren Hardware-Threads, mehreren Kernen, mehreren Vorrichtungen und/oder kompletten Systemen auf einzelnen integrierten Schaltungen weiterentwickelt. Da die Dichte der integrierten Schaltungen zugenommen hat, sind zusätzlich auch die Energieanforderungen für Rechensysteme (von eingebetteten Systemen bis zu Servern) gestiegen. Ferner haben auch Softwareineffizienzen und ihre Hardwareanforderungen einen Anstieg des Rechenvorrichtungsenergieverbrauchs bewirkt. In der Tat zeigen einige Studien, dass Rechenvorrichtungen einen beträchtlichen prozentualen Anteil der gesamten Elektrizitätsversorgung für ein Land, wie etwa die USA, verbrauchen. Folglich besteht ein grundlegender Bedarf an Energieeffizienz und -erhaltung in Verbindung mit integrierten Schaltungen. Dieser Bedarf wird zunehmen, da Server, Desktopcomputer, Notebooks, Ultrabooks™, Tablets, Mobiltelefone, Prozessoren, eingebettete Systeme usw. sich noch weiter verbreiten (von der Aufnahme in den üblichen Computer, Personenkraftwagen und Fernseher bis zur Biotechnologie).
-
Figurenliste
-
- 1 ist ein Blockdiagramm eines Teils eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
- 2 ist ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung.
- 3 ist ein Blockdiagramm eines Mehrdomänenprozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
- 4 ist eine Ausführungsform eines Prozessors, der mehrere Kerne aufweist.
- 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äß noch einer anderen Ausführungsform.
- 8 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß noch einer weiteren Ausführungsform.
- 9 ist ein Blockdiagramm eines Prozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
- 10 ist ein Blockdiagramm eines repräsentativen 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 welchem Ausführungsformen verwendet werden können.
- 13 ist ein Blockdiagramm eines anderen beispielhaften Systems, mit welchem Ausführungsformen verwendet werden können.
- 14 ist ein Blockdiagramm eines repräsentativen Computersystems.
- 15 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
- 16 ist ein Blockdiagramm, das ein IP-Kern-Entwicklungssystem gemäß einer Ausführungsform veranschaulicht, das zur Herstellung einer integrierten Schaltung zur Durchführung von Operationen verwendet wird.
- 17 ist ein Blockdiagramm einer Registeranordnung gemäß einer Ausführungsform der vorliegenden Erfindung.
- 18 ist ein Blockdiagrammteil eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung.
- 19 ist ein Blockdiagramm einer logischen Ansicht des steuerbaren Sourcings von Konfigurationswerten von mehreren Quellen gemäß einer Ausführungsform der vorliegenden Erfindung.
- 20 ist ein Blockdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung.
- 21 ist ein Blockdiagramm eines Verfahrens gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
- 22 ist ein Flussdiagramm eines Verfahrens gemäß noch einer anderen Ausführungsform der vorliegenden Erfindung.
-
Ausführliche Beschreibung
-
In verschiedenen Ausführungsformen kann die Energie eines Prozessors autonom unter Verwendung von Hardware des Prozessors gesteuert werden. Diese autonome Energiesteuerung ermöglicht eine stärkere Zuweisung von Energie, die für den Prozessor verfügbar ist, auf eine Art, die die Leistung steigern kann. Während diese autonome Hardwareenergiesteuerung zumindest zum Teil auf Konfigurationsparametern basieren kann, die von einem Betriebssystem (OS), einem virtuellen Maschinenmonitor (VMM) oder sonstiger Systemsoftware bereitgestellt werden, ermöglichen außerdem die hier beschriebenen Techniken ferner das Auftreten dieser autonomen Energiesteuerung ferner basierend zumindest zum Teil auf zusätzlichen sogenannten Überschreibungsinformationen, die von einer oder mehreren prozessorextemen Einheiten bereitgestellt werden.
-
Genauer kann in Ausführungsformen ein Prozessor eine Energiesteuerung einschließen, die eine dynamische Leistungssteuerung von Leistungszuständen von einem oder mehreren Kernen oder anderen Verarbeitungsschaltungen des Prozessors gemäß einem betriebssystembasierten Mechanismus, wie etwa einem Advanced Configuration and Power Interface(ACPI)-Mechanismus, oder sonstiger betriebssystem-nativer Unterstützung, durchführen kann. Außerdem kann diese Energiesteuerung autonom Leistungszustände auswählen, während sie von dem Betriebssystem und/oder von Threads gelieferte Leistungsleithinweise verwendet, die als hardwaregesteuerte Leistungszustände (HWP) bezeichnet werden, die auch als IntelⓇ Speed Shift-Technologie bezeichnet werden. Wenn der HWP aktiv ist, kann Prozessorhardware, wie etwa die Energiesteuerung, autonom Leistungszustände als für die angewendete Arbeitslast geeignet und unter Berücksichtigung von Einschränkungshinweisen, die von dem Betriebssystem und/oder Ausführungsthreads programmiert werden, auswählen, wie hierin beschrieben ist. Diese Hinweise schließen zum Beispiel minimale und maximale Leistungsgrenzen, die Präferenz von Energieeffizienz oder - leistung und die Spezifikation eines relevanten Arbeitslastverlaufsbeobachtungszeitfensters ein. Zusätzlich können unter Verwendung von Ausführungsformen hierin einer oder mehrere dieser von dem Betriebssystem/Threads bereitgestellten Hinweise basierend auf prozessorexternen Überschreibungsinformationen überschrieben werden, die in dem Prozessor von einer prozessorextemen Einheit, wie etwa einer Verwaltungssteuerung, erhalten werden.
-
Bei aktuellen Modellen wird der HWP ausschließlich durch eine einzige Quelle entweder nativ (durch ein Betriebssystem) oder extern bezüglich eines Prozessors (wie etwa über eine Plattformumgebungssteuerschnittstelle (PECI)) in verwalteten Systemen, wie etwa Datenzentrumsserversystemen, gesteuert. Es sei angemerkt, dass diese PECI-basierte Steuerung nur erfolgt, wenn ein Out-of-Band-Modus aktiviert ist. Der Out-of-Band-Modus-Betrieb schließt sich bezüglich des nativen Modus gegenseitig aus und kann von Systemfirmware, wie etwa dem Basis-Eingabe/Ausgabe-System (BIOS) während dem Hochfahren, ausgewählt werden. In diesem Modus kann eine PECI-basierte Steuerung gewisse HWP-Steuerungsparameter auf eine Art beeinflussen, dass der Betrieb eines gesamten Prozessors oder sonstigen SoC beeinträchtigt wird.
-
In verschiedenen Ausführungsformen bietet die PECI-basierte Steuerung von einem oder mehreren HWP-Parametern im nativen HWP-Modus eine Option für einen Erstausstatter (OEM), z. B. über OEM-Software, einen oder mehrere Betriebssystem-HWP-Steuerungsparameter zu überschreiben, während andere Betriebssystem-HWP-Steuerungsparameter unbeeinflusst belassen werden. Dadurch kann ein Systembetreiber (wie etwa ein Datenzentrumsmanager) die Frequenzauswahl oder sonstige Leistungszustandskonfigurationsparameter beeinflussen, um vorübergehende Rack/Datenzentrums-Ebenen-Ereignisse zu berücksichtigen, die dem Betriebssystem nicht bekannt sind. Bei Client-basierten Systemen, wie etwa Personal Computern, kann eine ähnliche PECI-basierte Steuerung von einer Plattformsteuerung, wie etwa ein Energie- und Wärmemanager, verwendet werden, welche als eine On-Board-Steuerung implementiert sein kann. Dadurch kann ein plattformbasierter Agent z. B. eine Minimalleistungszustandsüberschreibung zum Erhöhen der Leistung, eine Maximalleistungszustandsüberschreibung zum Verringern der Energie und/oder eine Energieleistungspräferenzüberschreibung zum Erhöhen der Leistung oder Verringern der Energie durchführen.
-
Ferner ermöglichen Ausführungsformen eine einzelne Feldsteuerung von PECI-basierten Überschreibungsparametern, die eine Flexibilität zum Überschreiben von einer oder mehreren (einer Untergruppe), jedoch nicht aller Betriebssystem eingaben ermöglicht. Die Ausführungsformen können derart implementiert werden, dass, wenn sie vorhanden und aktiv sind, die PECI-basierten Konfigurationsparameter jene des Betriebssystems überschreiben, um eine explizite Überschreibung durchzuführen, die einem Datenzentrumsbetreiber Priorität gibt. Die Ausführungsformen stellen diese Unterstützungsoption auf eine Art bereit, um dem Betriebssystem zu ermöglichen, Leistungszustände über die HWP-Schnittstelle zu betreiben und zu steuern, selbst wenn ein Teil seiner Steuerungsparameter durch PECI-basierte Überschreibungsinformationen überschrieben werden können.
-
Wenngleich der Umfang der vorliegenden Erfindung nicht diesbezüglich eingeschränkt ist, können sich Überschreibungsinformationen auf Konfigurationsparameter/Hinweise beziehen, die sich üblicherweise nicht umgehend ändern. In Ausführungsformen hierin können diese Parameter/Hinweise Energieleistungspräferenz (EPP) und minimale und maximale Leistungszustände einschließen. In Ausführungsformen hierin können Überschreibungsinformationen, die über eine PECI-Schnittstelle bereitgestellt werden, verwendet werden, um den HWP-Betrieb über einem gesamten Prozessor oder einem anderen SoC zu steuern, ohne dass eine Möglichkeit für ein Betriebssystem oder eine sonstige Überwachungssoftware/-firmware geboten wird, solch ein Überschreiben zu verhindern, wenn die Technik ermöglicht wird.
-
Um die HWP-Steuerung durch die PECI während einem gleichzeitigen Betrieb mit HWP-nativer Betriebssystemunterstützung zu ermöglichen, können Status-, Unterbrechungs- oder sonstige Informationen zum Kennzeichnen solch einer Überschreibung dem Betriebssystem bereitgestellt werden. Solche Informationen können die Kennzeichnung dahingehend, welche Art von Betriebssystemsteuerungsparametern überschrieben wurden und wann sie überschrieben wurden, einschließen. Außerdem kann das Betriebssystem in der Laufzeit benachrichtigt werden, wenn die Überschreibung gestartet und beendet wird.
-
Es sei angemerkt, dass das Auflösen der Quelle von HWP-Steuerungsparametern pro physikalischem Thread (logischer Prozessor) durchgeführt werden kann. Im nativen Betriebssystemunterstützungsmodus wird der Wert pro Feld entweder von einem Threadebenen-Modellspezifischen Register (MSR) oder von einem Packungsebenen-MSR übernommen. Im PECI-Überschreibungsmodus kann der Wert pro einem oder mehreren Feldern von einem PECI-Überschreibungs-MSR übernommen werden, das hierin als ein PECI HWP-Anforderungsregister bezeichnet wird. Es sei angemerkt, dass diese Überschreibung für alle physikalischen Threads durchgeführt wird, während betriebssystembasierte Einstellungen auf Threadebenen- oder Packungsebenen-MSRs basieren.
-
Das Betriebssystem kann in der Laufzeit dieses PECI HWP-Anforderungsregister überwachen, um zu kennzeichnen, welche Felder zu überschreiben sind (oder nicht), und den Wert, der von der PECI-Schnittstelle geliefert wurde, kennzuzeichnen, um die betriebssystemnative Anforderungseinstellung zu überschreiben. Das Betriebssystem kann in der Laufzeit eine Benachrichtigung abwickeln, die kennzeichnet, wann die Überschreibung gestartet und beendet wird, z. B. über einen Unterbrechungsindikator innerhalb eines HWP-Unterbrechungsregisters. Dagegen kann das Betriebssystem den Status des PECI-basierten Überschreibungsmodus unter Verwendung von Indikatoren innerhalb des HWP-Statusregisters und von Feldern, die aktuell überschrieben werden (und deren Werte) spezifizieren.
-
Obwohl die folgenden Ausführungsformen unter Bezugnahme auf Energieerhaltung und Energieeffizienz in spezifischen integrierten Schaltungen, wie etwa in Rechenplattformen oder Prozessoren, beschrieben werden, sind andere Ausführungsformen auf andere Typen von integrierten Schaltungen und Logikvorrichtungen anwendbar. Ähnliche Techniken und Lehren hierin beschriebener Ausführungsformen können auf andere Typen von Schaltungen oder Halbleitervorrichtungen angewandt werden, die auch von besserer Energieeffizienz und Energieerhaltung profitieren können. Zum Beispiel sind die offenbarten Ausführungsformen nicht auf irgendeine bestimmte Art von Computersystemen beschränkt. D. h., die offenbarten Ausführungsformen können bei vielen verschiedenen Systemarten, wie etwa Servercomputern (z. B. Tower, Rack, Lamellen, Mikroserver und so weiter), Kommunikationssystemen, Speichersystemen, Desktopcomputern einer beliebigen Konfiguration, Laptop-, Notebook- und Tablet-Computern (einschließlich 2:1-Tablets, Phablets und so weiter) verwendet werden und auch bei anderen Vorrichtungen, wie etwa handgehaltene Vorrichtungen, Systemen auf einem Chip (SoCs) und eingebetteten Anwendungen verwendet werden. Manche Beispiele für handgehaltene Vorrichtungen schließen Mobiltelefone, wie etwa Smartphones, Internetprotokollvorrichtungen, Digitalkameras, Personal Digital Assistants (PDAs) und handgehaltene PCs ein. Eingebettete Anwendungen können üblicherweise einen Mikrocontroller, einen Digitalsignalprozessor (DSP), Network-Computer (NetPC), Set-Top-Boxen, Network-Hubs, Wide-Area-Network(WAN)-Schalter, tragbare Vorrichtungen oder jegliches andere System, das die unten gelehrten Funktionen und Operationen durchführen kann, einschließen. Ferner können Ausführungsformen in mobilen Endgeräten, die eine Standardsprachfunktionalität aufweisen, wie etwa mobile Telefone, Smartphones und Phablets, und/oder in nicht-mobilen Endgeräten ohne eine drahtlose Standardsprachfunktionskommunikationsfähigkeit, wie etwa viele Wearables, Tablets, Notebooks, Desktops, Mikroserver, Server und so weiter, implementiert sein. Zudem sind die hier beschriebenen Vorrichtungen, Verfahren und Systeme nicht auf physikalische Recheneinrichtungen beschränkt, sondern sie können sich auch auf Softwareoptimierungen zur Energieerhaltung und -effizienz beziehen. Wie in der folgenden Beschreibung leicht offensichtlich werden wird, sind die hier beschriebenen Ausführungsformen von Verfahren, Vorrichtungen und Systemen (unter Bezugnahme auf Hardware, Firmware, Software oder eine Kombination davon) für eine Zukunft mit „grüner Technologie“, wie etwa für die Energieerhaltung und Energieeffizienz bei Produkten, die einen großen Teil der US-Wirtschaft umfassen, wesentlich.
-
Unter Bezugnahme nunmehr auf 1 ist ein Blockdiagramm eines Teils eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 1 gezeigt, kann das System 100 verschiedene Komponenten einschließlich eines Prozessors 110, welcher, wie gezeigt, ein Mehrkernprozessor ist, einschließen. Der Prozessor 110 kann mit einer Stromversorgung 150 über einen externen Spannungsregler 160 gekoppelt sein, welcher eine erste Spannungswandlung durchführen kann, um eine primäre geregelte Spannung dem Prozessor 110 bereitzustellen.
-
Wie ersichtlich ist, kann der Prozessor 110 ein Einzelchipprozessor einschließlich mehrerer Kerne 120a -120n sein. Zusätzlich kann jeder Kern einem integrierten Spannungsregler (IVR, Integrated Voltage Regulator) 125a -125n zugeordnet sein, welcher die primäre geregelte Spannung erhält und eine Betriebsspannung erzeugt, die einem oder mehreren Agenten des Prozessors, der dem IVR zugeordnet ist, bereitstellt. Dementsprechend kann eine IVR-Implementierung bereitgestellt werden, um eine feinstufige Steuerung der Spannung und somit der Energie und Leistung jedes einzelnen Kerns zu ermöglichen. Von daher kann jeder Kern mit einer unabhängigen Spannung und Frequenz arbeiten, wobei eine große Flexibilität ermöglicht und umfangreiche Möglichkeiten zum Abstimmen des Stromverbrauchs mit der Leistung geboten werden. In einigen Ausführungsformen ermöglicht die Verwendung mehrerer IVRs das Gruppieren von Komponenten in separate Stromebenen, so dass Strom durch den IVR geregelt und nur an jene Komponenten in der Gruppe geliefert wird. Während der Energieverwaltung kann eine vorgegebene Stromebene von einem IVR heruntergefahren oder aus sein, wenn der Prozessor in einen gewissen Niederstromzustand versetzt wird, während eine andere Stromebene eines anderen IVR aktiv oder unter Vollleistung verbleibt.
-
Weiter unter Bezugnahme auf 1 können zusätzliche Komponenten innerhalb des Prozessors vorhanden sein, einschließlich einer Eingabe/Ausgabe-Schnittstelle 132, einer anderen Schnittstelle 134 und einer integrierten Speichersteuerung 136. Wie ersichtlich ist, kann jede dieser Komponenten von einem anderen integrierten Spannungsregler 125x bestromt werden. In einer Ausführungsform kann die Schnittstelle 132 den Betrieb für eine Intel® Quick Path Interconnect (QPI)-Verschaltung ermöglichen, die Punkt-zu-Punkt(PtP)-Verknüpfungen in einem Cache-kohärenten Protokoll bereitstellt, das mehrere Schichten einschließlich einer physikalischen Schicht, einer Verknüpfungsschicht und einer Protokollschicht aufweist. Dagegen kann die Schnittstelle 134 über ein Peripheral Component Interconnect Express (PCIe™) - Protokoll kommunizieren.
-
Es ist auch eine Energiesteuerungseinheit (PCU, Power Control Unit) 138 gezeigt, welche Hardware, Software und/oder Firmware einschließen kann, um Energieverwaltungsoperationen bezüglich des Prozessors 110 durchzuführen. Wie ersichtlich ist, stellt die PCU 138 Steuerinformationen dem externen Spannungsregler 160 über eine digitale Schnittstelle bereit, um zu bewirken, dass der Spannungsregler die geeignete geregelte Spannung erzeugt. Die PCU 138 stellt auch Steuerinformationen den IVRs 125 über eine andere digitale Schnittstelle bereit, um die Betriebsspannung zu steuern, die erzeugt wird (oder um zu bewirken, dass ein entsprechender IVR in einem Niederstrommodus deaktiviert wird). In verschiedenen Ausführungsformen kann die PCU 138 eine Vielfalt an Energieverwaltungslogikeinheiten zum Durchführen von hardwarebasierter Energieverwaltung einschließen. Solch eine Energieverwaltung kann vollständig prozessorgesteuert (z. B. durch verschiedene Prozessorhardware, und welche durch Arbeitslast und/oder Energie, Wärme- oder sonstige Prozessorbeschränkungen ausgelöst werden kann) sein, und/oder die Energieverwaltung kann als Reaktion auf externe Quellen (wie etwa eine Plattform oder Verwaltungsenergieverwaltungsquelle oder Systemsoftware) durchgeführt werden. Eine Energieverwaltungslogikeinheit, die in der PCU 138 enthalten ist, kann eine Hardwareleistungszustandssteuerung sein. Solch eine Hardwareleistungszustandssteuerung kann als eine Hardwareschaltung implementiert sein, die autonom Leistungszustände von einem oder mehreren Kernen 120 oder anderen Logikeinheiten des Prozessors 110 steuern kann. In einigen Fällen kann die Hardwareleistungszustandssteuerung autonom eine Leistungszustandssteuerung basierend zumindest zum Teil auf Hinweisinformationen, die von einem Betriebssystem bereitgestellt werden, durchführen. Wie hierin beschrieben ist, können ferner mindestens einige dieser von dem Betriebssystem bereitgestellten Hinweisinformationen dynamisch basierend auf Informationen überschrieben werden, die von einer Verwaltungssteuerung 170 erhalten werden, welche eine prozessorexterne Hardwarekomponente des Systems 100 ist. Wenngleich der Umfang der vorliegenden Erfindung nicht diesbezüglich eingeschränkt ist, kann in Ausführungsformen die Verwaltungssteuerung 170 als eine integrierte Energieverwaltungsschaltung (PMIC, Power Management Integrated Circuit), ein Baseboard Management Controller und so weiter implementiert sein. Wie hierin beschrieben werden wird, kann die PCU 138 eine teilweise Überschreibung von von dem Betriebssystem bereitgestellten Hinweisen durch diese prozessorextemen Überschreibungsinformationen ermöglichen, die hier als PECI-basierte Überschreibungsinformationen bezeichnet werden.
-
Wenngleich dies einer einfachen Veranschaulichung wegen nicht gezeigt ist, versteht sich, dass zusätzliche Komponenten innerhalb des Prozessors 110 vorhanden sein können, wie etwa zusätzliche Steuerungsschaltungen und sonstige Komponenten, wie etwa interne Speicher, z. B. eine oder mehrere Ebenen einer Cache-Speicherhierarchie und so weiter. Wenngleich sie in der Implementierung von 1 mit einem integrierten Spannungsregler gezeigt sind, sind die Ausführungsformen ferner nicht derart beschränkt.
-
Es sei angemerkt, dass die hier beschriebenen Energieverwaltungstechniken unabhängig von einem Betriebssystem(OS, Operation System)-basierten Energieverwaltungs(OSPM, Operating System-Based Power Management)-Mechanismus und ergänzend zu diesem sein können. Gemäß einer beispielhaften OSPM-Technik kann ein Prozessor bei verschiedenen Leistungszuständen oder -ebenen, den sogenannten P-Zuständen, nämlich von P0 bis PN, arbeiten. Allgemein kann der P1-Leistungszustand dem höchsten garantierten Leistungszustand, der von einem OS angefordert werden kann, entsprechen. Die hier beschriebenen Ausführungsformen können dynamische Änderungen zu der garantierten Frequenz des P1-Leistungszustands basierend auf einer Vielfalt von Eingaben und Prozessorbetriebsparametern ermöglichen. Zusätzlich zu diesem PI-Zustand kann das Betriebssystem ferner einen höheren Leistungszustand, nämlich einen P0-Zustand, anfordern. Dieser P0-Zustand kann somit ein opportunistischer oder Turbomoduszustand sein, in welchem Prozessorhardware den Prozessor oder zumindest Teile davon derart konfigurieren kann, um mit einer höheren als der garantierten Frequenz zu arbeiten, wenn eine Energie- und/oder Wärmebilanz verfügbar ist. In vielen Implementierungen kann ein Prozessor mehrere sogenannte Bin-Frequenzen oberhalb der garantierten PI-Maximalfrequenz aufweisen, die bis zu einer maximalen Spitzenfrequenz des bestimmten Prozessors reichen, wie sie während der Herstellung in den Prozessor gebrannt oder anderweitig geschrieben werden. Zusätzlich kann gemäß einem OSPM-Mechanismus ein Prozessor bei verschiedenen Energiezuständen oder -pegeln arbeiten. Bezüglich der Energiezustände kann ein OSPM-Mechanismus verschiedene Energieverbrauchszustände, die allgemein als C-Zustände, C0-, C1- bis Cn-Zustände, bezeichnet werden, spezifizieren. Wenn ein Kern aktiv ist, läuft er in einem C0-Zustand, und wenn der Kern inaktiv ist, kann er in einen Kernniederstromzustand gebracht werden, der auch Kern-Nicht-Null-C-Zustand (z. B. C1-C6-Zustände) genannt wird, wobei jeder C-Zustand auf einem niedrigeren Energieverbrauchspegel (so dass C6 ein tieferer Niederstromzustand als C1 ist, und so weiter) liegt.
-
Es versteht sich, dass viele verschiedene Arten von Energieverwaltungstechniken einzeln oder in Kombination in verschiedenen Ausführungsformen verwendet werden können. Als repräsentative Beispiele kann eine Energiesteuerung den Prozessor derart steuern, dass seine Energie durch eine gewisse Form von dynamischer Spannungsfrequenzskalierung (DVFS, Dynamic Voltage Frequency Scaling) verwaltet wird, bei welcher eine Betriebsspannung und/oder Betriebsfrequenz von einem oder mehreren Kernen oder sonstiger Prozessorlogik dynamisch gesteuert werden kann, um den Energieverbrauch in gewissen Situationen zu verringern. In einem Beispiel kann die DVFS unter Verwendung der Enhanced Intel SpeedStep™ -Technologie durchgeführt werden, die bei Intel Corporation, Santa Clara, Kalifornien verfügbar ist, um eine optimale Leistung auf einem niedrigsten Energieverbrauchspegel bereitzustellen. In einem anderen Beispiel kann die DVFS unter Verwendung der Intel TurboBoost™-Technologie durchgeführt werden, um einem oder mehreren Kernen oder sonstigen Rechenengines zu ermöglichen, mit einer höheren als der garantierten Betriebsfrequenz basierend auf Bedingungen (z. B. Arbeitslast und Verfügbarkeit) zu arbeiten.
-
Eine andere Energieverwaltungstechnik, die in gewissen Beispielen verwendet werden kann, ist das dynamische Tauschen von Arbeitslasten unter verschiedenen Rechenengines. Zum Beispiel kann der Prozessor asymmetrische Kerne oder sonstige Verarbeitungsengines aufweisen, die auf verschiedenen Energieverbrauchspegeln arbeiten, so dass in einer energiebeschränkten Situation eine oder mehrere Arbeitslasten zum Ausführen auf einem Kern mit geringerer Energie oder einer sonstigen Rechenengine dynamisch gewechselt werden können. Eine andere beispielhafte Energieverwaltungstechnik ist das Hardware Duty Cycling (HDC), welches bewirken kann, dass Kerne und/oder sonstige Rechenengines periodisch gemäß einem Betriebszyklus aktiviert und deaktiviert werden, so dass einer oder mehrere Kerne während einem inaktiven Zeitraum des Betriebszyklus inaktiv und während einem aktiven Zeitraum des Betriebszyklus aktiv gemacht werden können. Wenngleich dies mit diesen bestimmten Beispielen beschrieben ist, versteht sich, dass viele andere Energieverwaltungstechniken in bestimmten Ausführungsformen verwendet werden können.
-
Ausführungsformen können in Prozessoren für verschiedene Märkte einschließlich Serverprozessoren, Desktopprozessoren, mobiler Prozessoren und so weiter implementiert werden. Unter Bezugnahme nunmehr auf 2 ist ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 2 gezeigt, kann der Prozessor 200 ein Mehrkernprozessor einschließlich mehrerer Kerne 210a -210n sein. In einer Ausführungsform kann jeder derartige Kern von einer unabhängigen Energiedomäne sein und konfiguriert sein, um in aktive Zustände und/oder maximale Leistungszustände basierend auf der Arbeitslast einzutreten und diese zu verlassen. Die verschiedenen Kerne können über eine Verschaltung 215 mit einem Systemagenten 220 gekoppelt sein, der verschiedene Komponenten aufweist. Wie ersichtlich ist, kann der Systemagent 220 einen gemeinsamen Cache 230 aufweisen, welcher ein Last-Level-Cache sein kann. Zusätzlich kann der Systemagent eine integrierte Speichersteuerung 240 einschließen, um mit einem Systemspeicher (nicht in 2 gezeigt), z. B. über einen Speicherbus, zu kommunizieren. Der Systemagent 220 schließt auch verschiedene Schnittstellen 250 und eine Energiesteuerungseinheit 255, welche eine Logik zum Durchführen der hier beschriebenen Energieverwaltungstechniken einschließen kann. In der gezeigten Ausführungsform schließt die Energiesteuerungseinheit 255 eine Hardwareleistungszustandssteuerungslogik (HCL, Hardware Performance State Control Logic) 258 ein, die eine autonome Leistungszustandssteuerung innerhalb des Prozessors 200 basierend zumindest zum Teil auf von dem Betriebssystem bereitgestellten Hinweisen und/oder PECI-basierten Überschreibungshinweisinformationen durchführen kann, wie hierin beschrieben ist.
-
Zusätzlich kann durch die Schnittstellen 250a-250n eine Verbindung mit verschiedenen Off-Chip-Komponenten, wie etwa Peripherievorrichtungen, Massensspeicher und so weiter, hergestellt werden. Obgleich mit dieser bestimmten Implementierung in der Ausführungsform von 2 gezeigt, versteht sich, dass der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt ist.
-
Unter Bezugnahme nunmehr auf 3 ist ein Blockdiagramm eines Mehrdomänenprozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. Wie in der Ausführungsform von 3 gezeigt ist, weist der Prozessor 300 mehrere Domänen auf. Insbesondere kann eine Kerndomäne 310 mehrere Kerne 3100 -310n einschließen, kann eine Grafikdomäne 320 eine oder mehrere Grafikengines einschließen und kann eine Systemagentendomäne 350 ferner vorhanden sein. In einigen Ausführungsformen kann die Systemagentendomäne 350 bei einer unabhängigen Frequenz in Bezug auf die Kerndomäne ausgeführt werden und jederzeit eingeschaltet bleiben, um Energiesteuerungsereignisse und Energieverwaltung zu handhaben, so dass die Domänen 310 und 320 gesteuert werden können, um dynamisch in Hochstrom- und Niederstromzustände einzutreten und diese zu verlassen. Jede der Domänen 310 und 320 kann bei verschiedener Spannung und/oder Energie arbeiten. Es sei angemerkt, dass, wenngleich er nur mit drei Domänen gezeigt ist, sich versteht, dass der Umfang der vorliegenden Erfindung nicht diesbezüglich eingeschränkt ist und zusätzliche Domänen in anderen Ausführungsformen vorhanden sein können. Zum Beispiel können Mehrkerndomänen vorhanden sein, die jeweils zumindest einen Kern einschließen.
-
Allgemein kann jeder Kern 310 ferner Low-Level-Caches zusätzlich zu verschiedenen Ausführungseinheiten und zusätzlichen Verarbeitungselementen einschließen. Dagegen können die verschiedenen Kerne miteinander und mit einem gemeinsamen Cachespeicher, der aus mehreren Einheiten eines Last-Level-Caches (LLC) 3400 -340n gebildet ist, gekoppelt sein. In verschiedenen Ausführungsformen kann der LLC 340 unter den Kernen und der Grafikengine sowie verschiedenen Medienverarbeitungsschaltungen geteilt werden. Wie ersichtlich ist, koppelt die Ringverschaltung 330 somit die Kerne zusammen und stellt eine Verschaltung zwischen den Kernen, der Grafikdomäne 320 und den Systemagentenschaltungen 350 bereit. In einer Ausführungsform kann die Verschaltung 330 Teil der Kerndomäne sein. In anderen Ausführungsformen kann die Ringverschaltung jedoch ihre eigene Domäne aufweisen.
-
Wie weiter ersichtlich ist, kann die Systemagentendomäne 350 eine Displaysteuerung 352 aufweisen, welche eine Steuerung von und eine Schnittstelle mit einem zugeordneten Display bereitstellen kann. Wie weiter ersichtlich ist, kann die Systemagentendomäne 350 eine Energiesteuerungseinheit 355 aufweisen, welche eine Logik aufweisen kann, um die hier beschriebenen Energieverwaltungstechniken durchzuführen. In der gezeigten Ausführungsform weist die Energiesteuerungseinheit 355 eine Hardwareleistungszustandssteuerungslogik 359 auf, welche unter anderem von einem Betriebssystem bereitgestellte HWP-Hinweisinformationen mit PECI-basierten Überschreibungsparametern, die von einer prozessorexternen Einheit erhalten werden, dynamisch überschreiben kann.
-
Wie ferner in 3 ersichtlich ist, kann der Prozessor 300 ferner eine integrierte Speichersteuerung (IMC, Integrated Memory Controller) 370 aufweisen, die eine Schnittstelle mit einem Systemspeicher, wie etwa einem dynamischen Direktzugriffsspeicher (DRAM), bereitstellen kann. Es können mehrere Schnittstellen 3800 -380n vorhanden sein, um eine Verschaltung zwischen dem Prozessor und anderen Schaltungen zu ermöglichen. Zum Beispiel können in einer Ausführungsform mindestens eine Direct Media Interface(DMI)-Schnittstelle sowie eine oder mehrere PCIe™-Schnittstellen bereitgestellt werden. Ferner können zum Bereitstellen von Kommunikationen zwischen anderen Agenten, wie etwa zusätzlichen Prozessoren oder anderen Schaltungen, auch eine oder mehrere QPI-Schnittstellen bereitgestellt werden. Wenngleich er mit dieser hohen Ebene in der Ausführungsform von 3 gezeigt ist, versteht sich, dass der Umfang der vorliegenden Erfindung nicht diesbezüglich eingeschränkt ist.
-
Unter Bezugnahme auf 4 ist eine Ausführungsform eines Prozessors, der mehrere Kerne aufweist, veranschaulicht. Ein Prozessor 400 schließt einen beliebigen Prozessor oder eine beliebige Verarbeitungsvorrichtung ein, wie einen Mikroprozessor, einen eingebetteten Prozessor, einen Digitalsignalprozessor (DSP), einen Netzwerkprozessor, einen handgehaltenen Prozessor, einen Anwendungsprozessor, einen Coprozessor, ein System-on-a-Chip (SOC) oder eine andere Vorrichtung zum Ausführen von Code. Der Prozessor 400 schließt in einer Ausführungsform zumindest zwei Kerne, nämlich Kern 401 und 402, ein, die asymmetrische Kerne oder symmetrische Kerne (die veranschaulichte Ausführungsform) einschließen können. Jedoch kann der Prozessor 400 jegliche Anzahl von Verarbeitungselementen, die symmetrisch oder asymmetrisch sein können, einschließen.
-
In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik zum Unterstützen eines Software-Threads. Beispiele für Hardware-Verarbeitungselemente schließen Folgendes ein: eine Thread-Einheit, einen Thread-Steckplatz, einen Thread, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen logischen Prozessor, einen Hardware-Thread, einen Kern und/oder jegliches andere Element, das dazu in der Lage ist, einen Zustand für einen Prozessor, wie etwa einen Ausführungszustand oder einen Architekturzustand, zu halten. Anders ausgedrückt bezieht sich ein Verarbeitungselement in einer Ausführungsform auf jegliche Hardware, die dazu in der Lage ist, einem Code, wie etwa einem Software-Thread, einem Betriebssystem, einer Anwendung oder anderem Code, unabhängig zugeordnet zu werden. Ein physikalischer Prozessor bezieht sich üblicherweise auf eine integrierte Schaltung, die potenziell jegliche Anzahl anderer Verarbeitungselemente, wie etwa Kerne oder Hardware-Threads, einschließt.
-
Ein Kern bezieht sich oft auf Logik, die auf einer integrierten Schaltung angeordnet ist, die dazu in der Lage ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei jeder unabhängig aufrechterhaltene Architekturzustand zumindest einigen dedizierten Ausführungsressourcen zugeordnet ist. Im Gegensatz zu Kernen bezieht sich ein Hardware-Thread üblicherweise auf jegliche Logik, die auf einer integrierten Schaltung angeordnet ist, die dazu in der Lage ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei die unabhängig aufrechterhaltenen Architekturzustände den Zugriff auf Ausführungsressourcen teilen. Wie ersichtlich ist, überlappt die Grenze zwischen der Nomenklatur eines Hardware-Threads und eines Kerns, wenn bestimmte Ressourcen geteilt werden und andere für einen Architekturzustand vorgesehen sind. Dennoch werden ein Kern und ein Hardware-Thread durch ein Betriebssystem häufig als einzelne logische Prozessoren angesehen, wobei das Betriebssystem dazu in der Lage ist, Operationen auf jedem logischen Prozessor einzeln zu planen.
-
Der physikalische Prozessor 400, wie in 4 veranschaulicht, schließt zwei Kerne, nämlich Kern 401 und 402, ein. Hier werden Kern 401 und 402 als symmetrische Kerne, das heißt Kerne mit denselben Konfigurationen und Funktionseinheiten und/oder derselben Logik, betrachtet. In einer anderen Ausführungsform schließt der Kern 401 einen Out-of-Order-Prozessorkern ein, während der Kern 402 einen In-Order-Prozessorkern einschließt. Die Kerne 401 und 402 können jedoch individuell aus jeglichem Kerntyp, wie etwa einem nativen Kern, einem softwareverwalteten Kern, einem Kern, der zum Ausführen einer nativen Befehlssatzarchitektur (Instruction Set Architecture, ISA) angepasst ist, einem Kern, der zum Ausführen einer übersetzten Befehlssatzarchitektur (Instruction Set Architecture, ISA) angepasst ist, einem mitentwickelten Kern oder einem anderen bekannten Kern, ausgewählt werden. Zur weiteren Erörterung sind jedoch die Funktionseinheiten, die in dem Kern 401 veranschaulicht sind, unten ausführlicher beschrieben, da die Einheiten in dem Kern 402 auf eine ähnliche Art arbeiten.
-
Wie dargestellt, schließt der Kern 401 zwei Hardware-Threads 401a und 401b ein, die auch Hardware-Thread-Slots 401 a und 401b genannt werden können. Software-Entitäten, wie ein Betriebssystem, sehen folglich den Prozessor 400 in einer Ausführungsform potenziell als vier separate Prozessoren, das heißt vier logische Prozessoren oder Verarbeitungselemente, die fähig sind, vier Software-Threads gleichzeitig auszuführen. Wie oben erwähnt, ist ein erster Thread Architekturzustandsregistern 401a zugeordnet, ist ein zweiter Thread Architekturzustandsregistern 401b zugeordnet, kann ein dritter Thread Architekturzustandsregistern 402a zugeordnet sein und kann ein vierter Thread Architekturzustandsregistern 402b zugeordnet sein. Hier kann jedes der Architekturzustandsregister (401a, 401b, 402a und 402b) Verarbeitungselemente, Thread-Slots oder Thread-Einheiten, wie oben beschrieben, genannt werden. Wie veranschaulicht, werden die Architekturzustandsregister 401a in Architekturzustandsregistern 401b derart repliziert, dass individuelle Architekturzustände/Kontexte für den logischen Prozessor 401a und den logischen Prozessor 401b gespeichert werden können. In dem Kern 401 können andere kleinere Ressourcen, wie Befehlszeiger und Umbenennungslogik in einem Zuweiser- und Umbenennerblock 430, auch für die Threads 401a und 401b repliziert werden. Einige Ressourcen, wie etwa Neuordnungspuffer in einer Neuordnungs-/Rückstellungseinheit 435, ILTB 420, Lade-/Speicher-Puffer und Warteschlangen, können durch Partitionieren geteilt werden. Andere Ressourcen, wie etwa interne Universalregister, Seitentabellenbasisregister, Low-Level-Datencache und Daten-TLB 415, Ausführungseinheit(en) 440 und Abschnitte der Out-of-Order-Einheit 435 werden potenziell vollständig geteilt.
-
Der Prozessor 400 schließt oft andere Ressourcen ein, die vollständig geteilt, durch Partitionierung geteilt oder durch/für Verarbeitungselemente(n) vorgesehen 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 jegliche dieser Funktionseinheiten einschließen oder weglassen kann sowie jegliche andere nicht dargestellte bekannte Funktionseinheiten, Logik oder Firmware einschließen kann. Wie veranschaulicht, schließt der Kern 401 einen vereinfachten, repräsentativen Out-of-Order(OOO)-Prozessorkern ein. Ein In-Order-Prozessor kann jedoch in verschiedenen Ausführungsformen verwendet werden. Der OOO-Kern schließt einen Sprungzielpuffer 420, um auszuführende/zu nehmende Sprünge vorherzusagen, und einen Befehlsübersetzungspuffer (Instruction-Translation Buffer, 1-TLB) 420, um Adressenübersetzungseinträge für Befehle zu speichern, ein.
-
Der Kern 401 schließt ferner ein Decodiermodul 425 ein, das mit der Abrufeinheit 420 gekoppelt ist, um abgerufene Elemente zu decodieren. Abruflogik schließt in einer Ausführungsform individuelle Sequenzierer ein, die jeweils den Thread-Slots 401a, 401b zugeordnet sind. Üblicherweise ist der Kern 401 einer ersten ISA zugeordnet, die Befehle, die auf dem Prozessor 400 ausführbar sind, definiert/spezifiziert. Oft schließen Maschinencodebefehle, die zu der ersten ISA gehören, einen Abschnitt des Befehls (ein Opcode genannt) ein, der einen durchzuführenden Befehl oder eine durchzuführende Operation referenziert/spezifiziert. Die Decodierlogik 425 schließt Schaltungen ein, die diese Befehle ausgehend von ihren Opcodes erkennen und die decodierten Befehle in der Pipeline zum Verarbeiten, wie von der ersten ISA definiert, weitergeben. Zum Beispiel schließen die Decoder 425 in einer Ausführungsform Logik ein, die ausgelegt oder angepasst ist, um spezifische Befehle, wie einen Transaktionsbefehl, zu erkennen. Als ein Resultat des Erkennens durch die Decoder 425 führt die Architektur oder der Kern 401 spezifische, vordefinierte Aktionen aus, um Aufgaben, die dem geeigneten Befehl zugeordnet sind, durchzuführen. Es ist wichtig, zu beachten, dass jegliche der hierin beschriebenen Aufgaben, Blöcke, Operationen und Verfahren als Reaktion auf einen einzelnen oder mehrere Befehle durchgeführt werden können; einige davon können neue oder alte Befehle sein.
-
In einem Beispiel enthält der Zuweiser- und Umbenennerblock 430 einen Zuweiser zum Reservieren von Ressourcen, wie etwa Registerdateien zum Speichern von Befehlsverarbeitungsergebnissen. Die Threads 401a und 401b sind jedoch potenziell zu einer Out-of-Order-Ausführung fähig, wobei der Zuweiser- und Umbenennerblock 430 auch andere Ressourcen, wie etwa Neuordnungspuffer, reserviert, um Befehlsergebnisse zu verfolgen. Die Einheit 430 kann auch einen Registerumbenenner einschließen, um Programm-/Befehlsreferenzregister in andere Register in dem Prozessor 400 umzubenennen. Die Neuordnungs-/Rückstellungseinheit 435 schließt Komponenten, wie die oben erwähnten Neuordnungspuffer, Ladepuffer und Speicherpuffer ein, um eine Out-of-Order-Ausführung und später eine In-Order-Rückstellung von Befehlen, die außerhalb der Reihenfolge ausgeführt wurden, zu unterstützen.
-
Ein Planer- und Ausführungseinheit(en)-Block 440 schließt in einer Ausführungsform eine Planereinheit ein, um Befehle/eine Operation bei Ausführungseinheiten zu planen. Zum Beispiel wird ein Gleitkommabefehl an einem Port einer Ausführungseinheit, die eine verfügbare Gleitkommaausführungseinheit aufweist, geplant. Registerdateien, die den Ausführungseinheiten zugeordnet sind, sind ebenfalls enthalten, um Informationsbefehlsverarbeitungsergebnisse zu speichern. Beispielhafte Ausführungseinheiten schließen eine Gleitkommaausführungseinheit, eine Ganzzahlausführungseinheit, eine Sprungausführungseinheit, eine Ladeausführungseinheit, eine Speicherausführungseinheit und andere bekannte Ausführungseinheiten ein.
-
Lower-Level-Datencache und Datenübersetzungspuffer (Data Translation Buffer, D-TLB) 450 sind mit der/den Ausführungseinheit(en) 440 gekoppelt. Der Datencache soll kürzlich verwendete/betriebene Elemente, wie etwa Datenoperanden, die potenziell in Speicherkohärenzzuständen gehalten werden, speichern. Der D-TLB soll kürzliche virtuelle/lineare zu physikalischen Adressübersetzungen speichern. Als ein spezifisches Beispiel kann ein Prozessor eine Seitentabellenstruktur einschließen, um physikalischen Speicher in mehrere virtuelle Seiten zu zerteilen.
-
Hier teilen sich die Kerne 401 und 402 den Zugriff auf den Higher-Level-Cache oder Further-Out-Cache 410, welcher vor kurzem abgerufene Elemente Zwischenspeichern soll. Es ist zu beachten, dass sich Higher-Level oder Further-Out auf Cache-Ebenen bezieht, die ausgehend von der/den Ausführungseinheit(en) zunehmen oder sich weiter von diesen entfernen. In einer Ausführungsform ist der Higher-Level-Cache 410 ein Last-Level-Datencache - letzter Cache in der Speicherhierarchie auf dem Prozessor 400 - wie etwa ein Datencache der zweiten oder dritten Ebene. Der Higher-Level-Cache 410 ist jedoch nicht hierauf beschränkt, da er einem Befehlscache zugeordnet sein kann oder einen solchen einschließt. Ein Trace-Cache - ein Typ von Befehlscache - kann stattdessen nach dem Decoder 425 gekoppelt werden, um kürzlich decodierte Spuren zu speichern.
-
In der dargestellten Konfiguration weist der Prozessor 400 auch ein Busschnittstellenmodul 405 und eine Energiesteuerung 460, welche eine Energieverwaltung gemäß einer Ausführungsform der vorliegenden Erfindung durchführen kann, auf. In diesem Szenario kommuniziert die Busschnittstelle 405 mit Vorrichtungen, die bezüglich des Prozessors 400 extern sind, wie etwa ein Systemspeicher und sonstige Komponenten.
-
Eine Speichersteuerung 470 kann sich mit anderen Vorrichtungen, wie etwa einem oder vielen Speichern, verbinden. In einem Beispiel schließt die Busschnittstelle 405 eine Ringverschaltung mit einer Speichersteuerung zum Verbinden mit einem Speicher und eine Grafiksteuerung zum Verbinden mit einem Grafikprozessor ein. In einer SoC-Umgebung können jedoch sogar noch mehr Vorrichtungen, wie eine Netzwerkschnittstelle, Co-Prozessoren, Speicher, Grafikprozessor und beliebige andere bekannte Computervorrichtungen/-schnittstellen auf einem einzigen Die oder einer einzigen integrierten Schaltung integriert werden, um einen kleinen Formfaktor mit hoher Funktionalität und geringem Stromverbrauch bereitzustellen.
-
Unter Bezugnahme nunmehr auf 5 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 5 gezeigt, kann der Prozessorkern 500 ein Multistufen-Pipeline-Out-of-Order-Prozessor sein. Der Kern 500 kann bei verschiedenen Spannungen basierend auf einer erhaltenen Betriebsspannung, welche von einem integrierten Spannungsregler oder externen Spannungsregler erhalten werden kann, arbeiten.
-
Wie in 5 ersichtlich ist, schließt der Kern 500 Front-End-Einheiten 510 ein, welche verwendet werden können, um Befehle abzurufen, die auszuführen sind, und diese zur späteren Verwendung in der Prozessorpipeline vorzubereiten. Zum Beispiel können die Front-End-Einheiten 510 eine Abrufeinheit 501, einen Befehlscache 503 und einen Befehlsdecoder 505 einschließen. In einigen Implementierungen können die Front-End-Einheiten 510 ferner einen Trace-Cache zusammen mit einem Mikrocodespeicher sowie einem Mikrooperationsspeicher einschließen. Die Abrufeinheit 501 kann Makrobefehle, z. B. von dem Speicher oder Befehlscache 503, abrufen und diese dem Befehlsdecoder 505 zuführen, um diese in Primitive, d. h., Mikrooperationen zur Ausführung durch den Prozessor zu decodieren.
-
Zwischen den Front-End-Einheiten 510 und den Ausführungseinheiten 520 ist eine Out-of-Order(OOO)-Engine 515 angeschlossen, die verwendet werden kann, um die Mikrobefehle zu erhalten und diese zur Ausführung vorzubereiten. Genauer kann die OOO-Engine 515 verschiedene Puffer einschließen, um einen Mikrobefehlsfluss neuzuordnen und verschiedene Ressourcen, die zur Ausführung benötigt werden, zuzuordnen, und um eine Umbenennung von logischen Registern auf Speicherorten innerhalb verschiedener Registerdateien, wie etwa der Registerdatei 530 und der erweiterten Registerdatei 535, bereitzustellen. Die Registerdatei 530 kann separate Registerdateien für Ganzzahl- und Gleitkommaoperationen einschließen. Die erweiterte Registerdatei 535 kann einen Speicher für vektorgroße Einheiten, z. B. 256 oder 512 Bits pro Register, bereitstellen. Zu Zwecken der Konfiguration, Steuerung und zusätzlichen Operationen kann auch ein Satz maschinenspezifischer Register (MSRs) 538 vorhanden und für verschiedene Logik innerhalb des Kerns 500 (und extern in Bezug auf den Kern), wie etwa HWP MSRs (einschließlich eines HWP PECI-Anforderungsregisters, wie hierin beschrieben), zugänglich sein.
-
Es können verschiedene Ressourcen in den Ausführungseinheiten 520 vorhanden sein, einschließlich zum Beispiel verschiedener Ganzzahl-, Gleitkomma- und Einzelbefehl-Mehrfachdaten (SIMD) -Logikeinheiten, unter sonstiger spezialisierter Hardware. Zum Beispiel können solche Ausführungseinheiten eine oder mehrere arithmetische Logikeinheiten (ALUs, Arithmetic Logic Units) 522 und eine oder mehrere Vektorausführungseinheiten 524 unter sonstigen derartigen Ausführungseinheiten einschließen.
-
Ergebnisse von den Ausführungseinheiten können einer Rückstellungslogik, nämlich einem Neuordnungspuffer (ROB, Reorder Buffer) 540, bereitgestellt werden. Genauer kann der ROB 540 verschiedene Anordnungen und Logiken einschließen, um Informationen zu erhalten, die Befehlen, die ausgeführt werden, zugeordnet sind. Diese Informationen werden dann von dem ROB 540 untersucht, um zu bestimmen, ob die Befehle gültig rückgestellt und Ergebnisdaten zum Architekturzustand des Prozessors übergeben werden können, oder ob eine oder mehrere Ausnahmen auftraten, die einen geeigneten Abschluss der Befehle verhindern. Selbstverständlich kann der ROB 540 andere Operationen behandeln, die der Rückstellung zugeordnet sind.
-
Wie in 5 gezeigt, ist der ROB 540 mit einem Cache 550 gekoppelt, welcher in einer Ausführungsform ein Low-Level-Cache (z. B. ein LI-Cache) sein kann, wenngleich der Umfang der vorliegenden Erfindung nicht diesbezüglich eingeschränkt ist. Ebenfalls können die Ausführungseinheiten 520 direkt mit dem Cache 550 gekoppelt sein. Von dem Cache 550 kann eine Datenkommunikation mit Caches höherer Ebene, dem Systemspeicher und so weiter, erfolgen. Wenngleich er mit dieser hohen Ebene in der Ausführungsform von 5 gezeigt ist, versteht sich, dass der Umfang der vorliegenden Erfindung nicht diesbezüglich eingeschränkt ist. Während die Implementierung von 5 zum Beispiel bezüglich einer Out-of-Order-Maschine, wie etwa einer Intel® x86-Befehlssatzarchitektur (ISA), erfolgt, ist zum Beispiel der Umfang der vorliegenden Erfindung nicht diesbezüglich eingeschränkt. D. h., es können andere Ausführungsformen in einem In-Order-Prozessor, einem Prozessor mit verringerter Befehlssatzberechnung (RISC, Reduced Instruction Set Computing), wie etwa einem ARMbasierten Prozessor, oder einem Prozessor einer anderen Art von ISA, der Befehle und Operationen einer anderen ISA über eine Emulationsengine und zugeordnete Logikschaltungen emulieren kann, implementiert sein.
-
Unter Bezugnahme nunmehr auf 6 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer anderen Ausführungsform gezeigt. In der Ausführungsform von 6 kann der Kern 600 ein Niederstromkern einer anderen Mikroarchitektur, wie etwa ein Intel® Atom™-basierter Prozessor, der eine relativ begrenzte Pipelinetiefe aufweist, der ausgelegt ist, um den Stromverbrauch zu verringern, sein. Wie ersichtlich ist, schließt der Kern 600 einen Befehlscache 610 ein, der angeschlossen ist, um einem Befehlsdecoder 615 Befehle bereitzustellen. Ein Sprungprädiktor 605 kann mit dem Befehlscache 610 gekoppelt sein. Es sei angemerkt, dass der Befehlscache 610 ferner mit einer anderen Ebene eines Cachespeichers, wie etwa ein L2-Cache (nicht gezeigt für eine einfache Veranschaulichung in 6), gekoppelt sein kann. Dagegen stellt der Befehlsdecoder 615 decodierte Befehle einer Ausgabewarteschlange 620 zum Speichern und Liefern zu einer vorgegebenen Ausführungspipeline bereit. Ein Mikrocode-ROM 618 ist mit dem Befehlsdecoder 615 gekoppelt.
-
Eine Gleitkomma-Pipeline 630 schließt eine Gleitkomma-Registerdatei 632 ein, welche mehrere Architekturregister eines vorgegebenen Bits, wie etwa mit 128, 256 oder 512 Bits, einschließen kann. Die Pipeline 630 schließt einen Gleitkommaplaner 634 zum Planen von Befehlen zur Ausführung bei einer von mehreren Ausführungseinheiten der Pipeline ein. In der gezeigten Ausführungsform schließen solche Ausführungseinheiten eine ALU 635, eine Shuffle-Einheit 636 und einen Gleitkommaaddierer 638 ein. Dagegen können Ergebnisse, die in diesen Ausführungseinheiten erzeugt werden, an die Puffer und/oder Register der Registerdatei 632 zurückgegeben werden. Natürlich versteht sich, dass zusätzliche oder verschiedene Gleitpunktausführungseinheiten in einer anderen Ausführungsform vorhanden sein können, wenngleich sie mit diesen wenigen beispielhaften Ausführungseinheiten gezeigt sind.
-
Es kann auch eine Ganzzahl-Pipeline 640 bereitgestellt werden. In der gezeigten Ausführungsform schließt die Pipeline 640 eine Ganzzahl-Registerdatei 642 ein, welche mehrere Architekturregister eines vorgegebenen Bits, wie etwa mit 128 oder 256 Bits, einschließen kann. Die Pipeline 640 schließt einen Ganzzahlplaner 644 zum Planen von Befehlen zur Ausführung bei einer von mehreren Ausführungseinheiten der Pipeline ein. In der gezeigten Ausführungsform schließen solche Ausführungseinheiten eine ALU 645, eine Verschiebereinheit 646 und eine Sprungausführungseinheit 648 ein. Dagegen können Ergebnisse, die in diesen Ausführungseinheiten erzeugt werden, an die Puffer und/oder Register der Registerdatei 642 zurückgegeben werden. Natürlich versteht sich, dass zusätzliche oder verschiedene Ganzzahlausführungseinheiten in einer anderen Ausführungsform vorhanden sein können, wenngleich sie mit diesen wenigen beispielhaften Ausführungseinheiten gezeigt sind.
-
Ein Speicherausführungsplaner 650 kann Speicheroperationen zur Ausführung in einer Adressenerzeugungseinheit 652, welche auch mit einem TLB 654 gekoppelt ist, planen. Wie ersichtlich ist, können diese Strukturen mit einem Datencache 660 gekoppelt sein, welcher ein L0- und/oder LI-Datencache sein kann, der wiederum mit zusätzlichen Ebenen einer Cachespeicherhierarchie, einschließlich eines L2-Cachespeichers, gekoppelt ist.
-
Um eine Unterstützung für eine Out-of-Order-Ausführung bereitzustellen, kann ein Zuweiser/Umbenenner 670 zusätzlich zu einem Neuordnungspuffer 680 bereitgestellt werden, welcher konfiguriert ist, um Befehle, die außerhalb der Reihenfolge ausgeführt werden, zur Rückstellung in der Reihenfolge neuzuordnen. Wenngleich dies mit dieser bestimmten Pipelinearchitektur in der Veranschaulichung von 6 gezeigt ist, versteht sich, dass viele Variationen und Alternativen möglich sind.
-
Es sei angemerkt, dass bei einem Prozessor, der asymmetrische Kerne aufweist, wie etwa gemäß den Mikroarchitekturen der 5 und 6, Arbeitslasten dynamisch zwischen den Kernen aus Energieverwaltungsgründen getauscht werden können, da diese Kerne von derselben oder einer verwandten ISA sein können, wenngleich sie verschiedene Pipelinegestaltungen und Tiefen aufweisen. Solch ein dynamisches Kerntauschen kann auf eine für eine Benutzeranwendung (und möglicherweise auch einen Kernel) transparente Art durchgeführt werden.
-
Unter Bezugnahme auf 7 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß noch einer anderen Ausführungsform gezeigt. Wie in 7 veranschaulicht ist, kann ein Kern 700 eine Multistufen-In-Order-Pipeline zur Ausführung bei sehr geringen Stromverbrauchsebenen einschließen. Als ein solches Beispiel kann der Prozessor 700 eine Mikroarchitektur gemäß einem ARM Cortex A53-Design, das bei ARM Holdings, LTD., Sunnyvale, Kalifornien, erhältlich ist, aufweisen. In einer Implementierung kann eine 8-Stufen-Pipeline bereitgestellt werden, die konfiguriert ist, um sowohl 32-Bit- als auch 64-Bit-Code auszuführen. Der Kern 700 schließt eine Abrufeinheit 710 ein, die konfiguriert ist, um Befehle abzurufen und diese einer Decodiereinheit 715 bereitzustellen, welche die Befehle, z. B. Makrobefehle einer vorgegebenen ISA, wie etwa einer ARMv8 ISA, decodieren kann. Es sei ferner angemerkt, dass eine Warteschlange 730 mit der Decodiereinheit 715 gekoppelt sein kann, um decodierte Befehle zu speichern. Die decodierten Befehle werden einer Ausgabelogik 725 bereitgestellt, wo die decodierten Befehle zu einer vorgegebenen von mehreren Ausführungseinheiten ausgegeben werden kann.
-
Unter weiterer Bezugnahme auf 7 kann die Ausgabelogik 725 Befehle an eine von mehreren Ausführungseinheiten ausgeben. In der gezeigten Ausführungsform können diese Ausführungseinheiten eine Ganzzahleinheit 735, eine Multipliziereinheit 740, eine Gleitkomma-/Vektoreinheit 750, eine duale Ausgabeeinheit 760 und eine Lade-/Speichereinheit 770 einschließen. Die Ergebnisse dieser verschiedenen Ausführungseinheiten können einer Rückschreibeeinheit 780 bereitgestellt werden. Es versteht sich, dass in einigen Implementierungen separate Rückschreibeeinheiten jeder der Ausführungseinheiten zugeordnet sein können, wenngleich für eine einfache Veranschaulichung eine einzige Rückschreibeeinheit gezeigt ist. Ferner versteht sich, dass, wenngleich jede der Einheiten und der Logik, die in 7 gezeigt sind, auf einer hohen Ebene dargestellt ist, eine bestimmte Implementierung mehr oder verschiedene Strukturen einschließen kann. Ein Prozessor, der unter Verwendung von einem oder mehreren Kernen gestaltet ist, der eine Pipeline wie in 7 aufweist, kann in vielen verschiedenen Endprodukten, angefangen von mobilen Vorrichtungen bis zu Serversystemen, implementiert werden.
-
Unter Bezugnahme auf 8 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß noch einer weiteren Ausführungsform gezeigt. Wie in 8 veranschaulicht ist, kann ein Kern 800 eine Mehrstufen-Mehrfachausgabe-Out-of-Order-Pipeline zur Ausführung auf sehr hohen Leistungsebenen (was bei höheren Stromverbrauchsebenen als der Kern 700 von 7 auftreten kann) einschließen. Als ein solches Beispiel kann der Prozessor 800 eine Mikroarchitektur gemäß einem ARM Cortex A57-Design aufweisen. In einer Implementierung kann eine 15(oder größere)-Stufen-Pipeline bereitgestellt werden, die konfiguriert ist, um sowohl 32-Bit- als auch 64-Bit-Code auszuführen. Zusätzlich kann die Pipeline eine 3(oder größere)-breite und 3(oder größere)-Ausgabe-Operation bereitstellen. Der Kern 800 weist eine Abrufeinheit 810 auf, die konfiguriert ist, um Befehle abzurufen und diese einem Decodierer/Umbenenner/Versender 815 bereitzustellen, welcher die Befehle, z. B., Makrobefehle einer ARMv8-Befehlssatzarchitektur, decodieren, Registerreferenzen innerhalb der Befehle umbenennen und die Befehle (eventuell) an eine ausgewählte Ausführungseinheit versenden kann. Die decodierten Befehle können in einer Warteschlange 825 gespeichert werden. Es sei angemerkt, dass, wenngleich eine Struktur mit einer einzigen Warteschlange für eine einfache Veranschaulichung in 8 gezeigt ist, es sich versteht, dass separate Warteschlangen für jede der mehreren verschiedenen Arten von Ausführungseinheiten bereitgestellt werden können.
-
Ebenfalls in 8 gezeigt ist eine Ausgabelogik 830, von welcher decodierte Befehle, die in der Warteschlange 825 gespeichert sind, an eine ausgewählte Ausführungseinheit ausgegeben werden können. Die Ausgabelogik 830 kann auch in einer bestimmten Ausführungsform mit einer separaten Ausgabelogik für jede der mehreren verschiedenen Arten von Ausführungseinheiten, mit welchen die Ausgabelogik 830 gekoppelt ist, implementiert werden.
-
Die decodierten Befehle können an eine vorgegebene von mehreren Ausführungseinheiten ausgegeben werden. In der gezeigten Ausführungsform können diese Ausführungseinheiten eine oder mehrere Ganzzahleinheiten 835, eine Multipliziereinheit 840, eine Gleitkomma-/Vektoreinheit 850, eine Sprungeinheit 860 und eine Lade-/Speichereinheit 870 einschließen. In einer Ausführungsform kann die Gleitkomma-/Vektoreinheit 850 konfiguriert sein, um SIMD oder Vektordaten mit 128 oder 256 Bits zu behandeln. Außerdem kann die Gleitkomma-/Vektorausführungseinheit 850 IEEE-754-Doppelpräzisionsgleitkommaoperationen durchführen. Die Ergebnisse dieser verschiedenen Ausführungseinheiten können einer Rückschreibeeinheit 880 bereitgestellt werden. Es sei angemerkt, dass in einigen Implementierungen separate Rückschreibeeinheiten jeder der Ausführungseinheiten zugeordnet sein können. Ferner versteht sich, dass, wenngleich jede der Einheiten und der Logik, die in 8 gezeigt sind, auf einer hohen Ebene dargestellt ist, eine bestimmte Implementierung mehr oder verschiedene Strukturen einschließen kann.
-
Es sei angemerkt, dass bei einem Prozessor, der asymmetrische Kerne aufweist, wie etwa gemäß den Mikroarchitekturen der 7 und 8, Arbeitslasten dynamisch aus Energieverwaltungsgründen getauscht werden können, da diese Kerne von derselben oder einer verwandten ISA sein können, wenngleich sie verschiedene Pipelinegestaltungen und Tiefen aufweisen. Solch ein dynamisches Kerntauschen kann auf eine für eine Benutzeranwendung (und möglicherweise auch einen Kernel) transparente Art durchgeführt werden.
-
Ein Prozessor, der unter Verwendung von einem oder mehreren Kernen gestaltet ist, der Pipelines wie in einer oder mehreren der 5-8 aufweist, kann in vielen verschiedenen Endprodukten, angefangen von mobilen Vorrichtungen bis zu Serversystemen, implementiert werden. Unter Bezugnahme nunmehr auf 9 ist ein Blockdiagramm eines Prozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. In der Ausführungsform von 9 kann der Prozessor 900 ein SoC sein, der mehrere Domänen aufweist, von welchen jede gesteuert werden kann, um bei einer unabhängigen Betriebsspannung und Betriebsfrequenz zu arbeiten. Als ein spezifisches veranschaulichendes Beispiel kann der Prozessor 900 ein Intel® Architecture Core™-basierter Prozessor, wie etwa ein i3, i5, i7 oder ein anderer derartiger von der Intel Corporation erhältlicher Prozessor sein. Es versteht sich allerdings, dass stattdessen in anderen Ausführungsformen andere Prozessoren mit geringer Stromaufnahme, wie sie etwa erhältlich sind von Advanced Micro Devices, Inc. (AMD) in Sunnyvale, CA, ein ARM-basiertes Design von ARM Holdings, Ltd. oder deren Lizenznehmern oder ein MIPS-basiertes Design von MIPS Technologies, Inc. in Sunnyvale, CA oder deren Lizenznehmern oder Einsetzenden, vorhanden sein können, wie etwa ein Apple A7-Prozessor, ein Qualcomm Snapdragon-Prozessor oder ein Texas Instruments OMAP-Prozessor. Solch ein SoC kann in einem Niederstromsystem, wie etwa einem Smartphone, Tabletcomputer, Phabletcomputer, Ultrabook™-Computer oder sonstiger tragbarer Rechenvorrichtung, verwendet werden.
-
In der Ansicht einer hohen Ebene, die in 9 gezeigt ist, schließt der Prozessor 900 mehrere Kerneinheiten 910o-910n ein. Jede Kerneinheit kann einen oder mehrere Prozessorkerne, einen oder mehrere Cachespeicher und andere Schaltungen einschließen. Jede Kerneinheit 910 kann einen oder mehrere Befehlssätze (z. B. einen x86-Befehlssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt worden sind); einen MIPS-Befehlssatz; einen ARM-Befehlssatz (mit optionalen zusätzlichen Erweiterungen, wie etwa NEON)) oder einen anderen Befehlssatz oder Kombinationen davon unterstützen. Es sei angemerkt, dass einige der Kerneinheiten heterogene Ressourcen (z. B. mit einer anderen Gestaltung) sein können. Zusätzlich kann jeder derartige Kern mit einem Cachespeicher (nicht gezeigt) gekoppelt sein, welcher in einer Ausführungsform ein Cachespeicher mit geteilter Ebene (L2) sein kann. Ein nichtflüchtiger Speicher 930 kann verwendet werden, um verschiedene Programme und andere Daten zu speichern. Zum Beispiel kann dieser Speicher verwendet werden, um zumindest Teile von Mikrocode, Bootinformationen, wie etwa ein BIOS, anderer Systemsoftware und so weiter zu speichern.
-
Jede Kerneinheit 910 kann auch eine Schnittstelle, wie etwa eine Busschnittstelleneinheit, zum Ermöglichen einer Verschaltung mit zusätzlichen Schaltungen des Prozessors einschließen. In einer Ausführungsform ist jede Kerneinheit 910 mit einem kohärenten Fabric gekoppelt, das als primäre Cache-kohärente On-Die-Verschaltung agieren kann, die wiederum mit einer Speichersteuerung 935 gekoppelt ist. Dagegen steuert die Speichersteuerung 935 Kommunikationen mit einem Speicher, wie etwa einem DRAM (für eine einfache Veranschaulichung in 9 nicht gezeigt).
-
Zusätzlich zu Kerneinheiten sind zusätzliche Verarbeitungsengines innerhalb des Prozessor vorhanden, einschließlich mindestens einer Grafikeinheit 920, welche eine oder mehrere Grafikverarbeitungseinheiten (GPUs, Graphics Processing Units) zum Ausführen von Grafikverarbeitung und zum möglichen Ausführen von Mehrzweckoperationen auf dem Grafikprozessor (sogenannter GPGPU-Betrieb) einschließen kann. Zusätzlich kann mindestens ein Bildsignalprozessor 925 vorhanden sein. Der Signalprozessor 925 kann konfiguriert sein, um eingehende Bilddaten, die von einer oder mehreren Aufnahmevorrichtungen erhalten werden, entweder in dem SoC oder außerhalb des Chips zu verarbeiten.
-
Es können auch andere Beschleuniger vorhanden sein. In der Veranschaulichung von 9 kann ein Videocodierer 950 Codierungsoperationen einschließlich Codierung und Decodierung für Videoinformationen, z. B. unter Bereitstellung von Hardwarebeschleunigungsunterstützung für hochauflösenden Videoinhalt, durchführen. Es kann ferner eine Displaysteuerung 955 bereitgestellt werden, um Anzeigeoperationen einschließlich dem Bereitstellen von Unterstützung für interne und externe Anzeigen eines Systems zu beschleunigen. Zusätzlich kann ein Sicherheitsprozessor 945 vorhanden sein, um Sicherheitsoperationen, wie etwa sichere Bootoperationen, verschiedene kryptografische Operationen und so weiter, durchzuführen.
-
Der Stromverbrauch jeder der Einheiten kann über einen Energieverwalter 940 gesteuert werden, welcher eine Steuerungslogik einschließen kann, um die verschiedenen hier beschriebenen Energieverwaltungstechniken durchzuführen.
-
In einigen Ausführungsformen kann der SoC 900 ferner ein nicht-kohärentes Fabric einschließen, das mit dem kohärenten Fabric gekoppelt ist, mit welchem verschiedene Peripherievorrichtungen gekoppelt sein können. Eine oder mehrere Schnittstellen 960a-960d ermöglichen eine Kommunikation mit einem oder mehreren Off-Chip-Vorrichtungen. Solche Kommunikationen können über eine Vielfalt an Kommunikationsprotokollen, wie etwa PCIe™, GPIO, USB, I2C, UART, MIPI, SDIO, DDR, SPI, HDMI, unter anderen Arten von Kommunikationsprotokollen erfolgen. Wenngleich er mit dieser hohen Ebene in der Ausführungsform von 9 gezeigt ist, versteht sich, dass der Umfang der vorliegenden Erfindung nicht diesbezüglich eingeschränkt ist.
-
Nun unter Bezugnahme auf 10 ist ein Blockdiagramm eines repräsentativen SoC gezeigt. In der gezeigten Ausführungsform kann der SoC 1000 ein Mehrkern-SoC sein, der zum Niederstrombetrieb konfiguriert ist, der zur Aufnahme in einem Smartphone oder einer sonstigen Niederstromvorrichtung, wie etwa ein Tabletcomputer oder eine sonstige tragbare Rechenvorrichtung, zu optimieren ist. Als ein Beispiel kann der SoC 1000 unter Verwendung von asymmetrischen oder verschiedenen Arten von Kernen, wie etwa Kombinationen von Kernen mit höherer Energie und/oder niedrigerer Energie, z. B. Out-of-Order-Kerne und In-Order-Kerne, implementiert werden. In verschiedenen Ausführungsformen können diese Kerne auf einem Intel® Architecture™-Kern-Entwurf oder einem ARM-Architektur-Entwurf basieren. In noch anderen Ausführungsformen kann eine Mischung aus Intel®- und ARM-Kernen in einem vorgegebenen SoC implementiert sein.
-
Wie in 10 ersichtlich ist, schließt der SoC 1000 eine erste Kerndomäne 1010 ein, die mehrere erste Kerne 10120 -10123 aufweist. In einem Beispiel können diese Kerne Niederstromkerne, wie etwa In-Order-Kerne, sein. In einer Ausführungsform können diese ersten Kerne als ARM Cortex A53-Kerne implementiert sein. Dagegen sind diese Kerne mit einem Cachespeicher 1015 der Kerndomäne 1010 gekoppelt. Zusätzlich schließt der SoC 1000 eine zweite Kerndomäne 1020 ein. In der Veranschaulichung von 10 weist die zweite Kerndomäne 1020 mehrere zweite Kerne 10220 -10223 auf. In einem Beispiel können diese Kerne Kerne mit einem höheren Stromverbrauch als die ersten Kerne 1012 sein. In einer Ausführungsform können die zweiten Kerne Out-of-Order-Kerne sein, welche als ARM Cortex A57-Kerne implementiert sein können. Dagegen sind diese Kerne mit einem Cachespeicher 1025 der Kerndomäne 1020 gekoppelt. Es sei angemerkt, dass, wenngleich das in 10 gezeigte Beispiel 4 Kerne in jeder Domäne einschließt, es sich versteht, dass mehr oder weniger Kerne in einer vorgegebenen Domäne in anderen Beispielen vorhanden sein können.
-
Unter weiterer Bezugnahme auf 10 ist auch eine Grafikdomäne 1030 bereitgestellt, welche eine oder mehrere Grafikverarbeitungseinheiten (GPUs) einschließen kann, die konfiguriert sind, um unabhängig Grafikarbeitslasten, die z. B. durch einen oder mehrere Kerne der Kerndomänen 1010 und 1020 bereitgestellt werden, auszuführen. Als ein Beispiel kann die GPU-Domäne 1030 verwendet werden, um eine Anzeigenunterstützung für eine Vielfalt von Bildschirmgrößen zusätzlich zu dem Bereitstellen von Grafik- und Anzeigerenderoperationen bereitzustellen.
-
Wie ersichtlich ist, sind die verschiedenen Domänen mit einer kohärenten Verschaltung 1040 gekoppelt, welche in einer Ausführungsform ein Cache-kohärentes Verschaltungsfabric sein kann, das wiederum mit einer integrierten Speichersteuerung 1050 gekoppelt ist. Die kohärente Verschaltung 1040 kann einen gemeinsamen Cachespeicher, wie etwa einen L3-Cache, in einigen Beispielen einschließen. In einer Ausführungsform kann die Speichersteuerung 1050 eine direkte Speichersteuerung zum Bereitstellen von mehreren Kommunikationskanälen mit einem Off-Chip-Speicher, wie etwa mehrere Kanäle eines DRAM (für eine einfache Veranschaulichung in 10 nicht gezeigt), sein.
-
In verschiedenen Beispielen kann die Anzahl der Kerndomänen variieren. Zum Beispiel kann für einen Niederstrom-SoC, der zur Aufnahme in einer mobilen Rechenvorrichtung geeignet ist, eine beschränkte Anzahl an Kerndomänen, wie etwa in 10 gezeigt, vorhanden sein. Außerdem kann bei solchen Niederstrom-SoCs die Kerndomäne 1020, die Kerne mit höherer Energie einschließt, eine geringere Anzahl an solchen Kernen aufweisen. Zum Beispiel können in einer Implementierung zwei Kerne 1022 bereitgestellt werden, um den Betrieb auf reduzierten Stromverbrauchsebenen zu ermöglichen. Zusätzlich können die verschiedenen Kerndomänen auch mit einer Unterbrechungssteuerung gekoppelt werden, um ein dynamisches Tauschen von Arbeitslasten zwischen den verschiedenen Domänen zu ermöglichen.
-
In noch weiteren Ausführungsformen können eine größere Anzahl an Kerndomänen sowie eine zusätzliche optionale IP-Logik vorhanden sein, wo ein SoC auf Ebenen mit höherer Leistung (und Energie) zur Aufnahme in anderen Rechenvorrichtungen, wie etwa Desktops, Server, Hochleistungsrechensysteme, Basisstationen und so weiter skaliert werden kann. Als ein solches Beispiel können 4 Kerndomänen bereitgestellt werden, die je eine vorgegebene Anzahl an Out-of-Order-Kernen aufweisen. Außerdem können auch zusätzlich zu der optionalen GPU-Unterstützung (welche als ein Beispiel die Form einer GPGPU annehmen kann) ein oder mehrere Beschleuniger zum Bereitstellen einer optimierten Hardwareunterstützung für bestimmte Funktionen (z. B. Web-Serving, Netzwerkverarbeitung, Schalten und so weiter) bereitgestellt werden. Zusätzlich kann eine Eingabe/Ausgabe-Schnittstelle zum Koppeln solcher Beschleuniger mit Off-Chip-Komponenten vorhanden sein.
-
Unter Bezugnahme nunmehr auf 11 ist ein Blockdiagramm eines anderen beispielhaften SoC gezeigt. In der Ausführungsform von 11 kann der SoC 1100 verschiedene Schaltungen zum Ermöglichen einer hohen Leistung für Multimedia-Anwendungen, Kommunikationen und sonstige Funktionen einschließen. Von daher ist der SoC 1100 zur Aufnahme in einer großen Vielfalt an tragbaren und sonstigen Vorrichtungen, wie etwa Smartphones, Tablet-Computer, Smart-TVs und so weiter, geeignet. In dem gezeigten Beispiel schließt der SoC 1100 eine zentrale Verarbeitungseinheit(CPU, Central Processor Unit)-Domäne 1110 ein. 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 sein, der 4 Multithread-Kerne aufweist. Solche Prozessoren können homogene oder heterogene Prozessoren, z. B. eine Mischung aus Niedrigleistungs- und Hochleistungsprozessoren, sein.
-
Dagegen ist eine GPU-Domäne 1120 bereitgestellt, um eine fortgeschrittene Grafikverarbeitung in einer oder mehreren GPUs zum Behandeln von Grafik und Berechnen von APIs durchzuführen. Eine DSP-Einheit 1130 kann einen oder mehrere Niederstrom-DSPs zum Behandeln von Niederstrom-Multimedia-Anwendungen, wie etwa Musikwiedergabe, Audio/Video und so weiter, zusätzlich zu fortgeschrittenen Berechnungen, die während der Ausführung von Multimediabefehlen auftreten können, bereitstellen. Dagegen kann eine Kommunikationseinheit 1140 verschiedene Komponenten zum Bereitstellen von Konnektivität über verschiedene Drahtlosprotokolle, wie etwa zelluläre Kommunikationen (einschließlich 3G/4G LTE), drahtlose lokale Protokolle, wie etwa Bluetooth™, IEEE 802.11, und so weiter, einschli eßen.
-
Außerdem kann ein Multimediaprozessor 1150 verwendet werden, um eine Aufnahme und Wiedergabe von hochauflösendem Video- und Audioinhalt einschließlich der Verarbeitung von Benutzergesten durchzuführen. Eine Sensoreinheit 1160 kann mehrere Sensoren und/oder eine Sensorsteuerung zum Verbinden mit verschiedenen Off-Chip-Sensoren, die in einer vorgegebenen Plattform vorhanden sind, einschließen. Ein Bildsignalprozessor 1170 kann mit einem oder mehreren separaten ISPs versehen werden, um eine Bildverarbeitung bezüglich aufgenommenem Inhalt von einer oder mehreren Kameras einer Plattform, einschließlich Foto- und Videokameras, durchzuführen.
-
Ein Anzeigeprozessor 1180 kann Unterstützung für eine Verbindung mit einer hochauflösenden Anzeige mit einer vorgegebenen Pixeldichte, einschließlich der Fähigkeit, Inhalt drahtlos zur Wiedergabe auf solch einer Anzeige zu kommunizieren, bieten. Außerdem kann eine Ortungseinheit 1190 einen GPS-Empfänger mit Unterstützung für mehrere GPS-Konstellationen einschließen, um Anwendungen hochgenaue Positionierungsinformationen bereitzustellen, die unter Verwendung solch eines GPS-Empfängers erhalten werden. Wenngleich dies mit diesem bestimmten Satz von Komponenten in dem Beispiel von 11 gezeigt ist, versteht sich, dass viele Variationen und Alternativen möglich sind.
-
Unter Bezugnahme nunmehr auf 12 ist ein Blockdiagramm eines beispielhaften Systems gezeigt, mit welchem Ausführungsformen verwendet werden können. Wie ersichtlich ist, kann das System 1200 ein Smartphone oder eine andere drahtlose Kommunikationsvorrichtung sein. Ein Basisbandprozessor 1205 ist konfiguriert, um verschiedene Signalverarbeitung bezüglich Kommunikationssignalen durchzuführen, die von dem System zu senden oder zu empfangen sind. Dagegen ist der Basisbandprozessor 1205 mit einem Anwendungsprozessor 1210 gekoppelt, welcher eine Haupt-CPU des Systems sein kann, um ein Betriebssystem und eine andere Systemsoftware zusätzlich zu Benutzeranwendungen, wie etwa viele gut bekannte Social Media- und Multimedia-Apps, auszuführen. Der Anwendungsprozessor 1210 kann ferner konfiguriert sein, um eine Vielfalt an anderen Rechenoperationen für die Vorrichtung durchzuführen.
-
Dagegen kann der Anwendungsprozessor 1210 mit einer/einem Benutzerschnittstelle/Display 1220, z. B. einem Touchscreen-Display, gekoppelt sein. Zusätzlich kann der Anwendungsprozessor 1210 mit einem Speichersystem einschließlich eines nichtflüchtigen Speichers, nämlich ein Flash-Speicher 1230, und eines Systemspeichers, nämlich ein dynamischer Direktzugriffsspeicher (DRAM) 1235, gekoppelt sein. Wie ferner ersichtlich ist, ist der Anwendungsprozessor 1210 ferner mit einer Aufnahmevorrichtung 1240, wie etwa eine oder mehrere Bildaufnahmevorrichtungen, die Video und/oder Standbilder aufzeichnen können, gekoppelt.
-
Weiter unter Bezugnahme auf 12 ist eine universelle integrierte Schaltungskarte (UICC, Universal Integrated Circuit Card) 1240, die ein Teilnehmeridentitätsmodul und möglicherweise einen sicheren Speicher und Kryptoprozessor umfasst, auch mit dem Anwendungsprozessor 1210 gekoppelt. Das System 1200 kann ferner einen Sicherheitsprozessor 1250 einschließen, der mit dem Anwendungsprozessor 1210 gekoppelt sein kann. Mehrere Sensoren 1255 können mit dem Anwendungsprozessor 1210 gekoppelt sein, um eine Eingabe einer Vielfalt an erfassten Informationen, wie etwa Beschleunigungs- und sonstige Umgebungsinformationen, zu ermöglichen. Eine Audio-Ausgabevorrichtung 1295 kann eine Schnittstelle mit Ausgabegeräuschen, z. B. in Form von Sprachkommunikationen, wiedergegebenen oder Streaming-Audiodaten und so weiter, bereitstellen.
-
Wie ferner veranschaulicht ist, ist eine berührungslose Nahfeldkommunikations(NFC, Near Field Communication)-Schnittstelle 1260 bereitgestellt, die in einem NFC-Nahfeld über eine NFC-Antenne 1265 kommuniziert. Während in 12 separate Antennen gezeigt sind, versteht sich, dass in einigen Implementierungen eine Antenne oder eine andere Gruppe von Antennen bereitgestellt werden kann, um verschiedene Drahtlosfunktionalitäten zu ermöglichen.
-
Eine PMIC 1215 ist mit dem Anwendungsprozessor 1210 gekoppelt, um eine Plattformebenenenergieverwaltung durchzuführen. Dazu kann die PMIC 1215 Energieverwaltungsanforderungen an den Anwendungsprozessor 1210 zum Eingeben von gewissen Niederstromzuständen ausgeben, wie gewünscht. Ferner kann die PMIC 1215 basierend auf Plattformbeschränkungen auch den Energiepegel von anderen Komponenten des Systems 1200 steuern. Wie hierin beschrieben ist, kann die PMIC 1215 außerdem Überschreibungsinformationen für einen oder mehrere HWP-Parameter bereitstellen, welche über eine PECI-Schnittstelle gesendet werden können, die zwischen der PMIC 1215 und dem Anwendungsprozessor 1210 gekoppelt ist.
-
Um zu sendende und zu empfangende Kommunikationen zu ermöglichen, können verschiedene Schaltungen zwischen dem Basisbandprozessor 1205 und einer Antenne 1290 gekoppelt sein. Insbesondere können ein Funkfrequenz(RF, Radio Frequency)-Sendeempfänger 1270 und ein drahtloser lokaler Netzwerk(WLAN, Wireless Local Area Network)-Sendeempfänger 1275 vorhanden sein. Allgemein kann der RF-Sendeempfänger 1270 verwendet werden, um drahtlose Daten und Anrufe gemäß einem vorgegebenen drahtlosen Kommunikationsprotokoll, wie etwa drahtlosen 3G- oder 4G-Kommunikationsprotokoll, wie etwa gemäß einem Codemultiplexverfahren (CDMA, Code Division Multiple Access), einem globalen System für mobile Kommunikation (GSM), Langzeitentwicklung (LTE, Long Term Evolution) oder einem sonstigen Protokoll, zu empfangen und zu senden. Zusätzlich kann ein GPS-Sensor 1280 vorhanden sein. Es können auch andere drahtlose Kommunikationen, wie etwa der Empfang oder das Senden von Funksignalen, z. B. AM/FM und sonstigen Signalen, bereitgestellt werden. Zusätzlich können über den WLAN-Sendeempfänger 1275 auch lokale drahtlose Kommunikationen realisiert werden.
-
Unter Bezugnahme nunmehr auf 13 ist ein Blockdiagramm eines anderen beispielhaften Systems gezeigt, mit welchem Ausführungsformen verwendet werden können. In der Veranschaulichung von 13 kann das System 1300 ein mobiles Niederstromsystem, wie etwa ein Tablet-Computer, ein 2:1-Tablet, ein Phablet oder sonstiges umwandelbares oder unabhängiges Tablet-System, sein. Wie veranschaulicht ist, ist der SoC 1310 vorhanden und konfigurierbar, um als ein Anwendungsprozessor für die Vorrichtung zu arbeiten.
-
Eine Vielfalt von Vorrichtungen kann mit dem SoC 1310 gekoppelt sein. In der gezeigten Veranschaulichung schließt ein Speichersubsystem einen Flash-Speicher 1340 und einen DRAM 1345, der mit dem SoC 1310 gekoppelt ist, ein. Zusätzlich ist ein Berührungspaneel 1320 mit dem SoC 1310 gekoppelt, um eine Anzeigefähigkeit und Benutzereingabe über Berührung, einschließlich des Bereitstellens einer virtuellen Tastatur auf einem Display des Berührungspaneels 1320, bereitzustellen. Zum Bereitstellen einer drahtgebundenen Netzwerkkonnektivität ist der SoC 1310 mit einer Ethernet-Schnittstelle 1330 gekoppelt. Ein Peripherie-Hub 1325 ist mit dem SoC 1310 gekoppelt, um eine Verbindung mit verschiedenen Peripherievorrichtungen zu ermöglichen, wie sie zum Beispiel mit dem System 1300 durch beliebige verschiedene Anschlüsse oder sonstige Steckverbinder gekoppelt sein können.
-
Zusätzlich zu den internen Energieverwaltungsschaltungen und -funktionalität innerhalb des SoC 1310 ist eine PMIC 1380 mit dem SoC 1310 gekoppelt, um eine plattformbasierte Energieverwaltung bereitzustellen, z. B. basierend darauf, ob das System von einer Batterie 1390 oder einem Wechselstrom über einen Wechselstromadapter 1395 bestromt wird. Zusätzlich zu dieser energiequellenbasierten Energieverwaltung kann die PMIC 1380 ferner Plattformenergieverwaltungsaktivitäten basierend auf Umgebungs- und Nutzungsbedingungen durchführen. Außerdem kann die PMIC 1380 Steuer- und Statusinformationen an den SoC 1310 kommunizieren, um verschiedene Energieverwaltungsaktionen innerhalb des SoC 1310 zu bewirken. Wie hierin beschrieben ist, kann die PMIC 1380 außerdem Überschreibungsinformationen für einen oder mehrere HWP-Parameter bereitstellen, welche über eine PECI-Schnittstelle gesendet werden können, die zwischen der PMIC 1380 und dem SoC 1310 gekoppelt ist.
-
Weiter unter Bezugnahme auf 13 ist zum Bereitstellen von Drahtlosfähigkeiten eine WLAN-Einheit 1350 mit dem SoC 1310 und wiederum mit einer Antenne 1355 gekoppelt. In verschiedenen Implementierungen kann die WLAN-Einheit 1350 Kommunikation gemäß einem oder mehreren Drahtlosprotokollen bereitstellen.
-
Wie ferner veranschaulicht ist, können mehrere Sensoren 1360 mit dem SoC 1310 gekoppelt sein. Diese Sensoren können verschiedene Beschleunigungsmesser, Umgebungs- und sonstige Sensoren, einschließlich Benutzergestensensoren, einschließen. Schließlich ist ein Audio-Codec 1365 mit dem SoC 1310 gekoppelt, um eine Schnittstelle mit einer Audio-Ausgabevorrichtung 1370 bereitzustellen. Selbstverständlich versteht sich, dass, wenngleich sie mit dieser bestimmten Implementierung in 13 gezeigt ist, viele Variationen und Alternativen möglich sind.
-
Unter Bezugnahme nunmehr auf 14 ist ein Blockdiagramm eines repräsentativen Computersystems, wie etwa ein Notebook, Ultrabook™ oder sonstiges kleines Formfaktorsystem, gezeigt. Ein Prozessor 1410 schließt in einer Ausführungsform einen Mikroprozessor, einen Mehrkernprozessor, einen Multithread-Prozessor, einen Ultraniedrigspannungsprozessor, einen eingebetteten Prozessor oder ein anderes bekanntes Verarbeitungselement ein. In der veranschaulichten Implementierung wirkt der Prozessor 1410 als eine Hauptverarbeitungseinheit und als zentraler Hub zur Kommunikation mit vielen der verschiedenen Komponenten des Systems 1400. Als ein Beispiel ist der Prozessor 1400 als ein System-on-a-Chip (SOC) implementiert.
-
Der Prozessor 1410 kommuniziert in einer Ausführungsform mit einem Systemspeicher 1415. Als veranschaulichendes Beispiel ist der Systemspeicher 1415 über mehrere Speichervorrichtungen oder -module zum Bereitstellen einer vorgegebenen Menge an Systemspeicher implementiert.
-
Um eine dauerhafte Speicherung von Informationen, wie etwa Daten, Anwendungen, einem oder mehreren Betriebssystemen und so weiter, zu unterstützen, kann auch ein Massenspeicher 1420 mit dem Prozessor 1410 koppeln. In verschiedenen Ausführungsformen kann dieser Massenspeicher zum Ermöglichen eines dünneren und leichteren Systementwurfs sowie zum Verbessern der Systemreaktionsfähigkeit über eine SSD implementiert sein oder kann der Massenspeicher primär unter Verwendung einer Festplatte (HDD, Hard Disk Drive) mit einer kleineren Menge an SSD-Speicher implementiert sein, um als ein SSD-Cache zu wirken, um eine nichtflüchtige Speicherung von Kontextzustands- und anderen derartigen Informationen während Herunterfahrereignissen zu ermöglichen, so dass ein schnelles Hochfahren beim Neustart von Systemaktivitäten erfolgen kann. Ebenfalls in 14 gezeigt ist eine Flash-Vorrichtung 1422, die mit dem Prozessor 1410 gekoppelt sein kann, z. B. über eine serielle Peripherieschnittstelle (SPI, Serial Peripheral Interface). Diese Flash-Vorrichtung kann eine nichtflüchtige Speicherung von Systemsoftware unterstützen, einschließlich einer Basic Input/Output Software (BIOS) sowie anderer Firmware des Systems.
-
Verschiedene Eingabe/Ausgabe(E/A)-Vorrichtungen können innerhalb des Systems 1400 vorhanden sein. Insbesondere ist in der Ausführungsform von 14 eine Anzeige 1424 gezeigt, die ein Hochdefinitions-LCD- oder LED-Feld sein kann, das ferner einen Touchscreen 1425 bereitstellt. In einer Ausführungsform kann die Anzeige 1424 mit einem Prozessor 1410 über eine Anzeigeverschaltung gekoppelt sein, die als eine Hochleistungsgrafikverschaltung implementiert sein kann. Der Touchscreen 1425 kann über eine weitere Verschaltung mit dem Prozessor 1410 gekoppelt sein, die in einer Ausführungsform eine I.sup.2C-Verschaltung sein kann. Wie weiter in 14 zusätzlich zum Touchscreen 1425 gezeigt ist, kann eine Benutzereingabe durch Berührung auch durch ein Touchpad 1430 stattfinden, welches innerhalb des Gehäuses konfiguriert sein kann und auch mit derselben I2C-Verschaltung wie der Touchscreen 1425 gekoppelt sein kann.
-
Für Wahrnehmungscomputing und andere Zwecke können verschiedene Sensoren innerhalb des Systems vorhanden sein und können mit dem Prozessor 1410 auf verschiedene Weisen gekoppelt sein. Gewisse Inertial- und Umweltsensoren können mit dem Prozessor 1410 über einen Sensorhub 1440, z. B. über eine I2C-Verschaltung, gekoppelt sein. In der in 14 gezeigten Ausführungsform können diese Sensoren einen Beschleunigungsmesser 1441, einen Umgebungslichtsensor (ALS, Ambient Light Sensor) 1442, einen Kompass 1443 und ein Gyroskop 1444 einschließen. Andere Umweltsensoren können einen oder mehrere thermische Sensoren 1446 einschließen, die in manchen Ausführungsformen über einen Systemmanagementbus (SMBus) mit dem Prozessor 1410 koppeln.
-
Ebenfalls ist in 14 erkennbar, dass verschiedene Peripherievorrichtungen über eine Low Pin Count(LPC)-Verschaltung mit dem Prozessor 1410 koppeln können. In der gezeigten Ausführungsform können verschiedene Komponenten durch einen eingebetteten Controller 1435 gekoppelt sein. Solche Komponenten können eine Tastatur 1436 (z. B. über eine PS2-Schnittstelle gekoppelt), einen Lüfter 1437 und einen thermischen Sensor 1439 einschließen. In einigen Ausführungsformen kann das Touchpad 1430 ebenfalls über eine PS2-Schnittstelle an den EC 1435 koppeln. Zusätzlich kann auch ein Sicherheitsprozessor, wie etwa ein vertrauenswürdiges Plattformmodul (TPM, Trusted Platform Module) 1438, über diese LPS-Verschaltung mit dem Prozessor 1410 koppeln.
-
Das System 1400 kann mit externen Vorrichtungen auf verschiedenste Weisen kommunizieren, einschließlich drahtlos. In der in 14 gezeigten Ausführungsform sind verschiedene Drahtlosmodule vorhanden, von denen jedes einer Funkvorrichtung entsprechen kann, die für ein bestimmtes drahtloses Kommunikationsprotokoll konfiguriert ist. Eine Weise für eine drahtlose Kommunikation auf kurze Entfernung, wie etwa einem Nahfeld, kann über eine Nahfeldkommunikations(NFC)-Einheit 1445 erfolgen, die in einer Ausführungsform mit dem Prozessor 1410 über einen SMBus kommunizieren kann. Es sei angemerkt, dass über diese NFC-Einheit 1445 Vorrichtungen in direkter Nähe zueinander kommunizieren können.
-
Wie in 14 ferner ersichtlich ist, können zusätzliche drahtlose Einheiten andere drahtlose Nahbereichs-Engines einschließen, einschließlich einer WLAN-Einheit 1450 und einer Bluetooth-Einheit 1452. Unter Verwendung der WLAN-Einheit 1450 können Wi-Fi™-Kommunikationen realisiert werden, während über die Bluetooth-Einheit 1452 Nahbereichs-Bluetooth™-Kommunikationen stattfinden können. Diese Einheiten können mit dem Prozessor 1410 über eine vorgegebene Verknüpfung kommunizieren.
-
Zusätzlich können drahtlose Weitbereichskommunikationen, z. B. gemäß einem Mobilfunk- oder einem anderen drahtlosen Weitbereichsprotokoll, über eine WWAN-Einheit 1456 erfolgen, die wiederum an ein Subscriber Identity Module (SIM) 1457 koppeln kann. Zusätzlich kann auch ein GPS-Modul 1455 vorhanden sein, um einen Empfang und eine Verwendung von Ortsinformationen zu ermöglichen. Es sei angemerkt, dass in der in 14 gezeigten Ausführungsform die WWAN-Einheit 1456 und eine integrierte Aufnahmeeinheit, wie etwa ein Kameramodul 1454, über eine vorgegebene Verknüpfung kommunizieren können.
-
Ein integriertes Kameramodul 1454 kann im Deckel eingeschlossen sein. Um Audioeingaben und -ausgaben vorzusehen, kann ein Audioprozessor über einen Digitalsignalprozessor (DSP) 1460 implementiert sein, der mit dem Prozessor 1410 über eine High Definition Audio(HDA)-Verbindung gekoppelt sein kann. Gleichermaßen kann der DSP 1460 mit einem integrierten Coder/Decoder (CODEC) und Verstärker 1462 kommunizieren, der wiederum an Ausgangslautsprecher 1463 koppeln kann, welche innerhalb des Gehäuses implementiert sein können. Gleichermaßen kann der Verstärker und CODEC 1462 gekoppelt sein, um Audioeingaben von einem Mikrofon 1465 zu empfangen, welches in einer Ausführungsform über Dual-Array-Mikrofone (wie etwa ein digitales Mikrofon-Array) implementiert sein kann, um qualitativ hochwertige Audioeingaben zu unterstützen, um eine sprachaktivierte Steuerung von verschiedenen Operationen innerhalb des Systems zu ermöglichen. Es sei auch angemerkt, dass Audioausgaben vom Verstärker/CODEC 1462 zu einer Kopfhörerbuchse 1464 zugeführt werden können. Wenngleich er mit diesen bestimmten Komponenten in der Ausführungsform von 14 gezeigt ist, versteht sich, dass der Umfang der vorliegenden Erfindung nicht diesbezüglich eingeschränkt ist.
-
Die Ausführungsformen können in vielen verschiedenen Systemarten implementiert sein. Unter Bezugnahme nunmehr auf 15 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 15 gezeigt, ist das Mehrprozessorsystem 1500 ein Punkt-zu-Punkt-Verbindungssystem und umfasst einen ersten Prozessor 1570 und einen zweiten Prozessor 1580, die über eine Punkt-zu-Punkt-Verbindung 1550 gekoppelt sind. Wie in 15 gezeigt, kann jeder der Prozessoren 1570 und 1580 Mehrkernprozessoren sein, einschließlich erster und zweiter Prozessorkerne (d. h., die Prozessoren 1574a und 1574b und die Prozessorkerne 1584a und 1584b), wenngleich potenziell viel mehr Kerne in den Prozessoren vorhanden sein können. Jeder der Prozessoren kann eine PCU 1575, 1585 einschließen, um prozessorbasierte Energieverwaltung durchzuführen, einschließlich der PECI-basierten Überschreibung von mindestens gewissen von dem Betriebssystem bereitgestellten Hinweisinformationen für die HWP-Steuerung von Prozessorkernen der Prozessoren. Wie ferner in 15 veranschaulicht ist, können dazu die Prozessoren 1570, 1580 entsprechende PECI-Schnittstellen 1579, 1589 einschließen, von denen jede einen seitenbandbasierten Mechanismus zum Kommunizieren mit einer prozessorextemen Einheit, wie etwa einer vorgegebenen Verwaltungssteuerung, bereitstellen können. In Ausführungsformen, in welchen das System 1500 als ein Serversystem, wie etwa ein rackbasiertes Serversystem, implementiert ist, kann diese externe Verwaltungssteuerung als ein Baseboard Management Controller implementiert sein, wenngleich andere Implementierungen möglich sind.
-
Weiter unter Bezugnahme auf 15 schließt der erste Prozessor 1570 ferner einen Speichersteuerungshub (MCH, Memory Controller Hub) 1572 und Punkt-zu-Punkt-(P-P) -Schnittstellen 1576 und 1578 ein. Gleichermaßen schließt der zweite Prozessor 1580 eine MCH 1582 und P-P-Schnittstellen 1586 und 1588 ein. Wie in 15 gezeigt, koppeln die MCHs 1572 und 1582 die Prozessoren an jeweilige Speicher, nämlich einen Speicher 1532 und einen Speicher 1534, welche Teile des Systemspeichers (z. B. DRAM) sein können, der lokal an den jeweiligen Prozessoren befestigt ist. Der erste Prozessor 1570 und der zweite Prozessor 1580 können jeweils über P-P-Verschaltungen 1562 und 1564 mit einem Chipsatz 1590 gekoppelt sein. Wie in 15 gezeigt, schließt der Chipsatz 1590 die P-P-Schnittstellen 1594 und 1598 ein.
-
Ferner schließt der Chipsatz 1590 eine Schnittstelle 1592 ein, um den Chipsatz 1590 mit einer Hochleistungsgrafikengine 1538 durch eine P-P-Verschaltung 1539 zu koppeln. Dagegen kann der Chipsatz 1590 ü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 einem zweiten Bus 1520 gekoppelt sein, einschließlich zum Beispiel einer Tastatur/Maus 1522, Kommunikationsvorrichtungen 1526 und einer Datenspeichereinheit 1528, wie etwa einem Diskettenlaufwerk oder einer anderen Massenspeichervorrichtung, die in einer Ausführungsform Code 1530 enthalten kann. Des Weiteren kann eine Audio-E/A 1524 mit dem zweiten Bus 1520 gekoppelt sein. Die Ausführungsformen können in anderen Arten von Systemen einschließlich mobiler Vorrichtungen, wie etwa ein intelligentes Mobilfunktelefon, Tablet-Computer, Netbook, Ultrabook™ und so weiter, aufgenommen werden.
-
16 ist ein Blockdiagramm, das ein IP-Kern-Entwicklungssystem 1600 gemäß einer Ausführungsform veranschaulicht, das zur Herstellung einer integrierten Schaltung zur Durchführung von Operationen verwendet werden kann. Das IP-Kern-Entwicklungssystem 1600 kann verwendet werden, um modulare, wiederverwendbare Entwürfe zu erzeugen, die in einen größeren Entwurf integriert werden können oder verwendet werden können, um eine gesamte integrierte Schaltung (z. B. eine integrierte SoC-Schaltung) aufzubauen. Eine Entwurfseinrichtung 1630 kann eine Softwaresimulation 1610 eines IP-Kern-Entwurfs in einer höheren Programmiersprache (z. B. C/C ++) generieren. Die Softwaresimulation 1610 kann verwendet werden, um das Verhalten des IP-Kerns zu entwerfen, zu testen und zu verifizieren. Ein Registertransferebenen(RTL-, Register Transfer Level)-Entwurf kann dann aus dem Simulationsmodell erzeugt oder synthetisiert werden. Der RTL-Entwurf 1615 ist eine Abstraktion des Verhaltens der integrierten Schaltung, die den Fluss digitaler Signale zwischen Hardware-Registern modelliert, einschließlich der zugehörigen Logik, die unter Verwendung der modellierten digitalen Signale durchgeführt wird. Neben einem RTL-Entwurf 1615 können auch Entwürfe auf niedrigerer Ebene auf der Logikebene oder der Transistorebene erzeugt, entworfen oder synthetisiert werden. Daher können die speziellen Details des anfänglichen Entwurfs und der Simulation variieren.
-
Der RTL-Entwurf 1615 oder ein Äquivalent kann ferner durch die Entwurfseinrichtung in ein Hardwaremodell 1620 synthetisiert werden, das in einer Hardwarebeschreibungssprache (HDL, Hardware Description Language) oder einer anderen Darstellung von physikalischen Entwurfsdaten vorliegen kann. Die HDL kann weiter simuliert oder getestet werden, um den IP-Kern-Entwurf zu verifizieren. Der IP-Kern-Entwurf kann zur Lieferung an eine Drittherstellereinrichtung 1665 unter Verwendung eines nichtflüchtigen Speichers 1640 (z. B. Festplatte, Flash-Speicher oder ein beliebiges nichtflüchtiges Speichermedium) gespeichert werden. Alternativ kann der IP-Kern-Entwurf über eine Kabelverbindung 1650 oder eine drahtlose Verbindung 1660 (z. B. über das Internet) übertragen werden. Die Herstellungseinrichtung 1665 kann dann eine integrierte Schaltung herstellen, die zumindest zum Teil auf dem IP-Kern-Entwurf basiert. Die hergestellte integrierte Schaltung kann konfiguriert sein, Operationen gemäß mindestens einer hierin beschriebenen Ausführungsform durchzuführen.
-
Wie zuvor analysiert wurde, kann in einigen Ausführungsformen ein Prozessor eine HWP-Schnittstelle bereitstellen, um unter anderem die dynamische Bestimmung und Kommunikation von Betriebsparameterinformationen zum Bewirken von Leistungszustandsänderungen, einschließlich der Fähigkeit, betriebssystembasierte Hinweise mit Überschreibungsinformationen zu überschreiben, die von einer prozessorexternen Einrichtung erhalten werden, wie hierin beschrieben ist, zu ermöglichen. Unter Bezugnahme nunmehr auf 17 ist ein Blockdiagramm einer Registeranordnung gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wenngleich er mit einer begrenzten Anzahl an Registern zur Verwendung bei der Hardwareleistungszustands(HWP)-Steuerung in der Ausführungsform von 17 gezeigt ist, versteht sich, dass ein Prozessor viel mehr oder andere MSRs in einer bestimmten Konfiguration einschließen kann.
-
Wie ersichtlich ist, schließt ein Fähigkeitsregister 1710 mehrere Felder a-n ein, von welchen jedes konfiguriert sein kann, um eine vorgegebene Fähigkeit des Prozessors zu speichern. Diese Felder können Informationen bezüglich verschiedener Leistungsebenen einschließlich zum Beispiel niedrigster und höchster Leistungsebenen, einer garantierten Leistungsebene und einer effizientesten Leistungsebene, speichern. Es versteht sich, dass diese Felder periodisch durch Überschreiben eines aktuellen Werts mit neuen Werten aktualisiert werden können, da diese Leistungsebenen während dem Prozessorbetrieb aktualisiert werden können. Es versteht sich, dass, wenngleich die Felder a-n der Einfachheit wegen gezeigt sind, vorgegebene hierin beschriebene Register mehr oder weniger Felder einschließen können und die Terminologie von Feldern, die sich von Feld a bis Feld n erstrecken, nur Veranschaulichungszwecken dient. Es versteht sich, dass die Fähigkeitsregister 1710 pro logischem Prozessor definiert werden können (so dass jeder logische Prozessor verschiedene Fähigkeiten aufweist).
-
Unter weiterer Bezugnahme auf 17 schließt ein HWP-Anforderungsregister 1720 Felder a-n ein, um bestimmte Werte zu speichern, in welchen verschiedene Anforderungen einem Prozessorhardwaremechanismus bereitgestellt werden können, z. B. von einem Betriebssystem oder einer anderen Überwachungseinheit. In einer Ausführungsform können solche Felder Felder einschließen, die konfiguriert sind, um minimale und maximale Leistungsebenen zu speichern, die von einem Betriebssystem gewünscht werden. Zusätzliche Felder beziehen sich auf andere HWP-Betriebsparameter einschließlich einer gewünschten Leistungsebene, einer Energieleistungspräferenz und eines Aktivitätsfensters. Außerdem kann ein Packungssteuerungsindikator bereitgestellt werden, welcher, wenn er festgelegt wird, angibt, dass die Steuereingaben für dieses Register von einem Packungsebenenregister abzuleiten sind, wobei die Details davon weiter unten beschrieben werden.
-
Es sei angemerkt, dass in Ausführungsformen mehrere Anforderungsregister
1720a -
1720n bereitgestellt werden können, von welchen jedes einem vorgegebenen Hardware-Thread oder logischen Prozessor zugeordnet ist. Dadurch kann jeder logische Prozessor seinem eigenen Anforderungsregister zugeordnet werden, so dass eine feinstufige Steuerung von Anforderungen von jedem logischen Prozessor implementiert werden kann. Es versteht sich, dass die Felder a-n- des Anforderungsregisters
1720 verwendet werden können, um Hinweise zu HWP-Hardware von dem Betriebssystem zu übermitteln. Diese Hinweise übermitteln somit Informationen von dem Betriebssystem zu der HWP-Hardware, um Entscheidungen durch die Hardware zu beeinflussen. Aufgrund des Vorhandenseins von möglichen Beschränkungen, z. B. aufgrund von Wärme-, Energie- oder sonstiger Prozessorbeschränkungen, ist es jedoch möglich, dass solche Anforderungen oder Hinweise nicht immer erreicht werden können. In einer Ausführungsform kann das Anforderungsregister
1720 Felder wie in Tabelle 1 aufweisen, welche beispielhafte Felder eines MSR gemäß einer Ausführungsform der vorliegenden Erfindung sind.
Tabelle 1
Feld | Definition | Bits | Breite |
Mindestleistung | Übermittelt einen Minimalleistungshinweis, um eine angeforderte Dienstqualität (QoS, Quality of Service) zu erzielen oder eine Dienstebenenvereinbarung (SLA, Service Level Agreement) zu treffen. Es sei angemerkt, dass eine Abweichung unter die spezifizierte Ebene aufgrund von Hardwarebeschränkungen möglich ist. | 7:0 | 8 |
Maximalleistung | Übermittelt einen Hinweis zum Beschränken der Maximalleistung, von dem erwartet wird, dass er von der HWP-Hardware geliefert wird. Abweichungen über die von dem Betriebssystem angeforderte Grenze aufgrund der | 15:8 | 8 |
| Hardwarekoordination zwischen Prozessorkernen und anderen Komponenten in einer Packung sind möglich. | | |
Gewünschte Leistung | Wenn sie auf Null gesetzt wird, bestimmt die autonome Hardwareauswahl das Leistungsziel. Wenn sie auf einen anderen Wert als Null gesetzt wird, handelt es sich um einen expliziten Leistungsanforderungshinweis an die HWP-Hardware, der die autonome Hardwareauswahl effektiv deaktiviert. | 23:16 | 8 |
Energieleistung Präferenz | Übermittelt einen Hinweis, um die Erhöhung/Verringerung der Leistungsrate und das Ergebnis der Energieeffizienz- und Leistungsoptimierungen der Hardware zu beeinflussen. | 31:24 | 8 |
Aktivitätsfenster | Übermittelt einen Hinweis, der ein sich bewegendes Arbeitslastverlaufsbeobachtungsfenster für Leistungs-/Frequenzoptimierungen sp ezifizi ert. Wenn es 0 ist, wird die Hardware die geeignete Fenstergröße bestimmen, um die Erhöhung/Verringerung der Leistungsrate zu beeinflussen. | 41:32 | 10 |
Packungs steuerung | Wenn gesetzt, bewirkt es, dass die HWP_REQUEST-Steuereingaben dieses logischen Prozessors von einem HWP_REQUEST_PKG-Register abgeleitet werden. | 42 | 1 |
Aktivitätsfenster gültig | Wenn gesetzt, wenn das Packungssteuerungsbit gesetzt ist, übernimmt es den aktivem Fensterwert von diesem MSR | 59 | 1 |
EPP gültig | Wenn gesetzt, wenn das Packungssteuerungsbit gesetzt ist, übernimmt es den EPP-Wert von diesem MSR | 60 | 1 |
Gewünscht gültig | Wenn gesetzt, wenn das Packungssteuerungsbit gesetzt ist, übernimmt es den gewünschten Leistungswert von diesem MSR | 61 | 1 |
Maximal gültig | Wenn gesetzt, wenn das Packungssteuerungsbit gesetzt ist, übernimmt es den maximalen Leistungswert von diesem MSR | 62 | 1 |
Minimal gültig | Wenn gesetzt, wenn das Packungssteuerungsbit gesetzt ist, übernimmt es den minimalen Leistungswert von diesem MSR | 63 | 1 |
-
Weiter unter Bezugnahme auf 17 kann ein anderes HWP-Anforderungsregister 1725 aufgenommen werden, um einen packungsbasierten Gesamtsatz von Feldern bereitzustellen. In einer Ausführungsform können die Felder a-n innerhalb des Packungsanforderungsregisters 1725 bei allen logischen Prozessoren innerhalb einer Packung angewendet werden, die ein entsprechendes Packungssteuerungsfeld aufweisen, das innerhalb ihres zugehörigen Anforderungsregisters 1720 festgelegt ist. Diese Felder können dieselben Informationen wie die Felder des Anforderungsregisters 1720 (mit Ausnahme des Packungssteuerungsfelds und der gültigen Bits (Bits 59-63), welche nicht Teil des Packungsebenen-MSR sind) aufweisen.
-
Um eine PECI-basierte Überschreibung von Betriebssystemhinweisen für die Hardware-P-Zustands-Steuerung bereitzustellen, können Ausführungsformen ferner ein PECI-Anforderungsregister
1730 einschließen. In Ausführungsformen kann das Register
1730 mehrere Felder aufweisen, um Überschreibungsinformationen zu speichern, die von einem Plattformagenten, wie etwa einem Knotenmanager, einer Verwaltungssteuerung, Manageability Engine und so weiter, erhalten werden. Zusätzlich zu mehreren Feldern zum Bereitstellen von Überschreibungs(durch PECI)-Informationen für verschiedene HWP-Einstellungen kann das Register
1730 ferner entsprechende Überschreibungsindikatoren einschließen, welche jeweils einer der Einstellungen zugeordnet sind, so dass, wenn der Überschreibungsindikator aktiv oder festgelegt ist, die Überschreibungsinformationen des entsprechenden Felds verwendet werden können, um den HWP-Betrieb zu steuern. Anders ausgedrückt, wenn ein vorgegebener Überschreibungsindikator innerhalb des Registers
1730 festgelegt ist, werden die HWP-Hinweisinformationen, die in dem entsprechenden Feld des PECI-Anforderungsregisters
1730 vorhanden sind, zur Steuerung des HWP-Betriebs statt dem entsprechenden Feld in den HWP-Anforderungsregistern
1720 und/oder dem Anforderungspackungsregister
1725 verwendet. In einer Ausführungsform kann das PECI-Anforderungsregister
1730 Felder wie in Tabelle 2 einschli eßen.
Tabelle 2
Feld | Definition | Bits | Breite |
Mindestleistung | Wird von dem Betriebssystem verwendet, um den jüngsten Wert der PECI-Mindestleistungseingabe zu lesen | 7:0 | 8 |
Maximalleistung | Wird von dem Betriebssystem verwendet, um den jüngsten Wert der PECI-Maximalleistungseingabe zu lesen | 15:8 | 8 |
Energieleistung Präferenz | Wird von dem Betriebssystem verwendet, um den jüngsten Wert der PECI-Energieleistungspräferenzeingabe zu lesen | 31:24 | 8 |
.. | .. | .. | .. |
EPP PECI-Überschreibung | Gibt an, ob die PECI aktuell die Energieleistungspräferenzeingabe überschreibt. Wenn er auf (1) gesetzt ist, überschreibt die PECI die Energieleistungspräferenzeingabe. Wenn er gelöscht | 60:60 | 1 |
| ist (0), hat das Betriebssystem die Kontrolle über die Energieleistungspräferenzeingabe. | | |
Reserviert | | 61:61 | 1 |
Maximale PECI-Überschreibung | Gibt an, ob PECI aktuell die Maximalleistungseingabe überschreibt. Wenn er auf (1) gesetzt ist, überschreibt die PECI die Maximalleistungseingabe. Wenn er gelöscht ist (0), hat das Betriebssystem die Kontrolle über die Maximalleistungseingabe. | 62:62 | 1 |
Minimale PECI-Überschreibung | Gibt an, ob die PECI aktuell die Minimalleistungseingabe überschreibt. Wenn er auf (1) gesetzt ist, überschreibt die PECI die Minimalleistungseingabe. Wenn er gelöscht ist (0), hat das Betriebssystem die Kontrolle über die Maximalleistungseingabe. | 63:63 | 1 |
-
Ein Statusregister
1740 kann mehrere Felder a-n aufweisen, von welchen jedes konfiguriert ist, um Feedbackinformationen bezüglich des HWP-Betriebs zu speichern. In einer Ausführungsform kann eines dieser Felder konfiguriert sein, um einen garantierten Frequenzänderungsindikator zu speichern, welcher von der Prozessorhardware derart festgelegt werden kann, dass er eine Änderung zu einer aktuellen garantierten Frequenz angibt. Wenn dieser festgelegte Indikator von einem Betriebssystem oder einer anderen Einheit gelesen wird, kann dann auf das Fähigkeitsregister
1710 Bezug genommen werden, um den aktualisierten garantierten Frequenzwert zu bestimmen. Ebenfalls kann das Betriebssystem oder eine andere Einheit den garantierten Frequenzindikator nach dem Lesen des Indikators zurücksetzen. Zusätzlich kann das Statusregister
1740 ferner Felder zum Speichern von Informationen in Bezug auf PECI-Überschreibungseintritte und -beendigungen aufweisen. Genauer kann ein PECI-Überschreibungseintrittsfeld festgelegt werden, wenn eine Verwaltungssteuerung eine PECI-Überschreibung von einem oder mehreren betriebssystembasierten Hinweisen startet. Dagegen kann ein PECI-Überschreibungsbeendigungsfeld festgelegt werden, wenn die Verwaltungssteuerung eine PECI-Überschreibung von einem oder mehreren betriebssystembasierten Hinweisen beendet. In einer Ausführungsform kann das Statusregister
1740 die Felder wie in Tabelle 3 aufweisen.
Tabelle 3
Feld | Definition | Bits | Breiten |
Garantierte Änderung | Wenn es auf (1) gesetzt ist, ist eine Änderung zu der garantierten Leistung erfolgt. Die Software kann das Fähigkeitsregister abrufen, um den neuen garantierten Leistungswert zu ermitteln. Die Software löscht dieses Bit, indem es eine Null (0) schreibt. | 0 | 1 |
Abweichung zu einem Minimum | Wenn es auf (1) gesetzt ist, ist eine Abweichung zu der Minimalleistung erfolgt. Die Software löscht dieses Bit, indem es eine Null (0) schreibt. | 2 | 1 |
Höchste Änderung | Wenn es auf (1) gesetzt ist, ist eine Änderung zu der höchsten Leistung erfolgt. Die Software kann das Fähigkeitsregister abrufen, um den neuen höchsten Leistungswert zu ermitteln. Die Software löscht dieses Bit, indem es eine Null (0) schreibt. | 3 | 1 |
PECI-Überschreibungseintritt | Wenn er auf (1) gesetzt ist, hat eine Verwaltungssteuerung eine PECI-Überschreibung von einem oder mehreren Betriebssystemsteuerungshinweisen (z. B. Min., Max., EPP) gestartet, die in einer Anforderung oder einem | 4 | 1 |
| Anforderungspackungsregister spezifiziert sind. Die Software löscht dieses Bit, indem es eine Null (0) schreibt. | | |
PECI-Überschreibungsbeendigung | Wenn er auf (1) gesetzt ist, hat eine Verwaltungssteuerung eine PECI-Überschreibung von allen Betriebssystemsteuerungshinweisen (z. B. Min., Max., EPP) gestoppt, die in einer Anforderung oder einem Anforderungspackungsregister spezifiziert sind. Die Software löscht dieses Bit, indem es eine Null (0) schreibt. | 5 | 1 |
-
Weiter unter Bezugnahme auf 17 können die MSRs 1700 ferner ein Wärmestatusregister 1750 einschließlich mehrerer Felder a-n einschließen. Dieses Register kann verwendet werden, um eine Vielfalt an Statusinformationen bezüglich Wärmeschwellenwertüberschreitungen, Logs, Energiegrenzeneinstellungen und Logs, aktueller Grenzeinstellungen und Logs unter anderen Informationen bereitzustellen. Wenn eine vorgegebene Beschränkung überschritten wird, können die Informationen, die in einem der Felder des Wärmestatusregisters 1750 gespeichert sind, festgelegt werden. Wenn dieses festgelegte Feld von einem vorgegebenen Betriebssystem oder einer vorgegebenen Energieverwaltungseinheit gelesen wird, können verschiedene Aktualisierungen bezüglich Betriebsparametern einschließlich der garantierten Frequenz gestartet werden.
-
Schließlich ist ein Unterbrechungsregister
1760 einschließlich mehrerer Felder a-n bereitgestellt. In einer Ausführungsform sind eines oder mehrere dieser Felder konfiguriert, um einen Unterbrechungsindikator zum Anzeigen, wenn er festgelegt ist, dass eine Unterbrechung zu erzeugen und kommunizieren ist, z. B. an das Betriebssystem, wenn eine Aktualisierung bezüglich eines vorgegebenen Felds des Fähigkeitsregisters
1710 erfolgt, zu speichern. In Ausführungsformen hierin kann das Unterbrechungsregister
1760 einen PECI-Überschreibungsindikator einschließen, welcher, wenn er festgelegt ist, die Erzeugung einer HWP-Unterbrechung bewirkt, wenn eine Verwaltungseinheit einen vorgegebenen Betriebssystemsteuerungshinweis, der in einer HWP-Anforderung oder einem HWP-Anforderungspackungsregister gespeichert ist, ersetzt. In einer Ausführungsform kann das Unterbrechungsregister
1760 die Felder wie in Tabelle 4 aufweisen.
Tabelle 4
Feld | Definition | Bits | Breite |
Änderung zu garantiert | Wenn es auf (1) gesetzt ist, wird eine HWP-Unterbrechung erzeugt werden, wann immer eine Änderung zu der garantierten Leistung auftritt. Default = Unterbrechung deaktiviert (0). | 0 | 1 |
Abweichung zu Minimum | Wenn es auf (1) gesetzt ist, wird eine HWP-Unterbrechung erzeugt werden, wann immer die Hardware nicht in der Lage ist, die Minimalleistung zu erfüllen. Default = Unterbrechung deaktiviert (0). | 1 | 1 |
Änderung zu der höchsten Leistung | Wenn es auf (1) gesetzt ist, wird eine HWP-Unterbrechung erzeugt werden, wann immer eine Änderung zu der höchsten Leistung auftritt. Default = Unterbrechung deaktiviert (0). | 2 | 1 |
PECI -Überschrei bung | Wenn er auf (1) gesetzt ist, wird eine HWP-Unterbrechung erzeugt werden, wann immer eine Verwaltungssteuerung einen oder mehrere der Betriebssystemsteuerungshinweise (z. B. Min., Max., EPP) ersetzt, die in einer Anforderung oder einem Anforderungspackungsregister spezifiziert sind. | 3 | 1 |
-
Es versteht sich, dass, wenngleich dieser beschränkte Satz von Registern gezeigt ist, andere oder verschiedene Register in einer Ausführungsform möglich sind. Ferner versteht sich, dass, wenngleich im Allgemeinen jedes Register einschließlich n Feldern beschrieben ist, jedes Register anders konfiguriert sein kann, um eine vorgegebene Anzahl an Feldern aufzunehmen.
-
Unter Bezugnahme nunmehr auf 18 ist ein Blockdiagrammteil eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 18 gezeigt, schließt der Teil des Prozessors 1800 eine Energiesteuerungseinheit (PCU, Power Control Unit) 1850 ein. Die PCU 1850 kann in verschiedenen Ausführungsformen als eine Hardwareschaltung, Firmware, Software und/oder Kombinationen davon implementiert sein. In einigen Fällen kann die PCU 1850 als ein oder mehrere Mikrocontroller eines Mehrkernprozessors implementiert sein. In noch anderen Fällen kann die PCU 1850 innerhalb eines Kerns entweder als ein dedizierter Kern oder als programmierbare Logik des Kerns implementiert sein.
-
Wie in 18 gezeigt, erhält in jedem Fall die PCU 1850 eingehende Informationen von einer PECI-Schnittstelle 1810 und einem Betriebssystem (OS, Operating System) 1820. In der in 18 gezeigten Ausführungsform können diese Informationen HWP-Überschreibungsinformationen von der PECI-Schnittstelle 1810 einschließen, einschließlich eines minimalen Leistungszustandswerts, eines maximalen Leistungszustandswerts und einer Energieleistungspräferenz (EPP, Energy Performance Preference). Zusätzlich zu diesen HWP-Einstellungen kann die PECI-Schnittstelle 1810 ferner entsprechende Aktivierungsinformationen (OV_Enable [0-2]) bereitstellen, welche in einer Ausführungsform als Mehrfachüberschreibungsindikatoren implementiert werden können, die jeweils einem der vorherigen HWP-Werte zugeordnet sind. Wie ersichtlich ist, können diese Informationen, die über die PECI-Schnittstelle 1810 erhalten werden, in einem Speicher 1815 gespeichert werden. In einer Ausführungsform kann der Speicher 1815 als ein MSR, wie etwa ein PECI HWP-Anforderungsregister, implementiert sein, wie zuvor analysiert wurde. Es sei angemerkt, dass in Ausführungsformen die Aktivierungsinformationen zusätzlich an eine Auswahlschaltung 1830 gerichtet werden können. In einer Ausführungsform kann die Auswahlschaltung 1830 als ein Multiplexer implementiert sein. Gleichermaßen können die HWP-Einstellungen auch von dem Betriebssystem 1820 erhalten und in einem anderen Speicher 1825 gespeichert werden. In einer Ausführungsform kann der Speicher 1825 als ein oder mehrere MSRs, wie etwa HWP-Anforderungsregister (z. B. eines pro logischem Prozessor) und/oder ein Packungsebenen-HWP-Register implementiert sein.
-
Dagegen können die Informationen von den Registern 1815, 1825 der Auswahlschaltung 1830 bereitgestellt werden. Basierend auf den Überschreibungsaktivierungsinformationen von der PECI-Schnittstelle 1810 wird die Auswahlschaltung 1830 gesteuert, um entsprechende HWP-Werte (nämlich minimale und maximale Leistungszustände und ein EPP-Wert) von jeder der beiden Quellen bereitzustellen. Genauer wird, wenn ein vorgegebener Überschreibungsindikator festgelegt wird, die entsprechende Überschreibungs-HWP-Einstellung von dem Register 1815 von der Auswahlschaltung 1830 ausgegeben. Und wenn ein vorgegebener Überschreibungsindikator nicht festgelegt wird, wird die vorgegebene HWP-Einstellung von dem Register 1825 von der Auswahlschaltung 1830 ausgegeben. Es sei angemerkt, dass für den Fall einer Überschreibung, die erfolgt, die Auswahlschaltung 1830 eine PECI-Überschreibungsbenachrichtigung an das Betriebssystem 1820 ausgeben kann. In einer Ausführungsform kann diese Benachrichtigung durch Auslösen des Prozessors über den HWP-Benachrichtigungsmechanismus implementiert werden, welcher als Teil einer Wärmeunterbrechung in einem lokalen APIC-Zeitgeber unterstützt werden kann. Zusätzlich zu der Benachrichtigung kann die Hardware relevante Bits in dem HWP-Status-MSR und in dem PECI-Anforderungs-MSR festlegen. Es sei angemerkt, dass die Überschreibung für eine Untergruppe der Steuerfelder (z. B. eines oder mehrere von MAX, MIN und EPP) vorgenommen werden kann. Das Betriebssystem kann lernen, welche Felder überschrieben werden, indem es auf das PECI-Anforderungs-MSR zugreift. In einer Ausführungsform kann die Benachrichtigung ein Mal vorgenommen werden, wenn die PECI die Steuerung für ein oder mehrere Felder übernimmt, und ein weiteres Mal, wenn die PECI die Steuerung für das eine oder die mehreren Felder freigibt. Es sei auch angemerkt, dass bei Betriebssystemaktivierungsbenachrichtigungen für dieses Ereignis eine Unterbrechung bei dem Betriebssystem erzeugt wird, um eine Angabe der Überschreibung bereitzustellen. In einer Ausführungsform wird diese Benachrichtigung unterstützt, wenn eine andere HWP-Benachrichtigung fließt. Zum Beispiel kann eine lokale APIC-Wärmeschnittstelle verwendet werden. Auf die PECI-Überschreibungsbenachrichtigung folgend wird ein Status-Bits festgelegt. Um die Benachrichtigung zu ermöglichen, kann die Software die PECI-Benachrichtigung in einem HWP-Unterbrechungsregister ermöglichen. Auf die Unterbrechung folgend kann das Betriebssystem ein Statusbit in einem Wärmestatusregister löschen, um das erneute Auftreten einer PECI-Unterbrechung zu erlauben.
-
Weiter unter Bezugnahme auf 18 sei angemerkt, dass die HWP-Werte, die von der Auswahlschaltung 1830 ausgegeben werden, einer HWP-Steuerung 1840 innerhalb der PCU 1850 bereitgestellt werden können. In Ausführungsformen kann die HWP-Steuerung 1840 als Hardwareschaltungen, Firmware, Software und/oder Kombinationen davon implementiert sein. Die HWP-Steuerung 1840 kann eine hardwarebasierte Leistungszustandssteuerung von einem oder mehreren logischen Prozessoren basierend zumindest zum Teil auf den erhaltenen HWP-Einstellungen durchführen. Es versteht sich, dass, wenngleich er mit dieser hohen Ebene in der Ausführungsform von 18 gezeigt ist, der Umfang der vorliegenden Erfindung nicht diesbezüglich eingeschränkt ist und andere Implementierungen möglich sind. Während sich zum Beispiel 18 auf eine PECI-basierte potenzielle Überschreibung von drei HWP-Werten bezieht, können in anderen Fällen zusätzliche oder andere HWP-Werte überschrieben werden. Wenngleich sich die hierin beschriebenen Ausführungsformen auf eine PECI-basierte Überschreibung von HWP-Parametern beziehen, können in anderen Fällen PECI-basierte Überschreibungsinformationen für andere Arten von Energiesteuerung und andere Betriebsparameter für einen Prozessor erhalten werden. Zum Beispiel können in anderen Fällen PECI-basierte Überschreibungsinformationen für Betriebsparameter, wie etwa ein Alt-P-Zustandsenergieleistungs-Bias-Hinweis oder andere Parameter, erhalten werden.
-
Unter Bezugnahme nunmehr auf 19 ist ein Blockdiagramm einer logischen Ansicht des steuerbaren Sourcings von Konfigurationswerten von mehreren Quellen gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 19 veranschaulicht ist, kann ein Prozessor 1900 HWP-Informationen von mehreren Quellen erhalten. Insbesondere können solche Informationen über eine PECI-Schnittstelle 1910 und ein Betriebssystem 1920 erhalten werden. Genauer können über die PECI-Schnittstelle 1910 Überschreibungsinformationen von einer Verwaltungssteuerung in einem PECI HWP-Anforderungsregister 1915 gespeichert werden. Wie zuvor analysiert wurde, können in Ausführungsformen solche Überschreibungsinformationen einen minimalen P-Zustand, einen maximalen P-Zustand und einen EPP-Wert zusammen mit entsprechenden Überschreibungsindikatoren für jeden dieser Werte einschließen. Dagegen kann das Betriebssystem 1920 verschiedene HWP-Konfigurationsinformationen bereitstellen, welche pro logischem Prozessor über die HWP-Anforderungsregister 19220 -1922n und pro Packungsbreite über das HWP-Anforderungspackungsregister 1924 bereitgestellt werden können. Dagegen kann pro logischem Prozessor jede der HWP-Einstellungen derart bestimmt werden, dass sie entweder von den Pro-Thread-Informationen oder von der Packungsquelle geleitet werden, um somit eine bestimmte Betriebssystem-HWP-Anforderungseinstellung in einem Betriebssystemanforderungsspeicher 1925 bereitzustellen. Dagegen können basierend zumindest zum Teil auf den Überschreibungsinformationen, die in dem PECI HWP-Anforderungsregister 1915 gespeichert sind, die bestimmten HWP-Einstellungen einem anderen Speicher 1930 bereitgestellt werden. Genauer kann der Speicher 1930, welcher als ein aufgelöstes HWP-Register implementiert sein kann, verwendet werden, um bestimmte Einstellungen basierend auf von dem Betriebssystem gesourcten Einstellungen und/oder PECI-basierten Einstellungen zu speichern. Dadurch kann ein vorgegebenes System mit Betriebssystemanforderungen konform sein, jedoch eine verwaltungssteuerungsbasierte Überschreibung von einer oder mehreren HWP-Einstellungen in einem nativen Betriebssystemmodus erlauben. Es versteht sich, dass, wenngleich er mit dieser bestimmten Realisierung in 19 gezeigt ist, der Umfang der vorliegenden Erfindung nicht diesbezüglich eingeschränkt ist und andere Ausführungsformen möglich sind.
-
Unter Bezugnahme nunmehr auf 20 ist ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Genauer ist das Verfahren 2000 ein Verfahren zur Behandlung einer PECI-basierten Überschreibung von einer oder mehreren betriebssystembasierten Einstellungen für die HWP-Steuerung. Von daher kann das Verfahren 2000 zumindest zum Teil über ein Betriebssystem implementiert sein, das auf einem oder mehreren Hardwarekernen oder sonstigen Hardwareschaltungen eines Prozessors, wie hierin beschrieben, ausgeführt wird.
-
Wie veranschaulicht, beginnt das Verfahren 2000 durch Erhalten einer HWP-Benachrichtigung innerhalb des Betriebssystems (Block 2010). In einer Ausführungsform kann sich diese Benachrichtigung auf eine PECI-basierte Überschreibung beziehen und durch ein Schreiben auf ein PECI-Überschreibungsfeld eines HWP-Unterbrechungsregisters implementiert sein. Solch eine Benachrichtigung ist somit eine Angabe an das Betriebssystem, dass eine Verwaltungssteuerung einen oder mehrere betriebssystembasierte Hinweise oder Einstellungen, die in dem HWP-Betrieb verwendet werden, überschreiben oder ersetzen soll. Die Steuerung geht als Nächstes zu Block 2020 über, wo als Reaktion auf diese HWP-Benachrichtigung ein HWP-Status-MSR gelesen werden kann. In einer Ausführungsform kann dieses Statusregister Felder zum Angeben eines PECI-Überschreibungseintritts und -endes aufweisen. In diesem Fall des Startens einer PECI-Überschreibung kann ein PECI-Überschreibungseintrittsindikator festgelegt werden, z. B. durch die PCU. Weiter unter Bezugnahme auf 20 geht die Steuerung als Nächstes zu der Raute 2030 über, um zu bestimmen, ob dieser PECI-Überschreibungseintrittsindikator festgelegt ist. Wenn dem so ist, geht die Steuerung zu Block 2040 über, wo der/die bestimmte(n) betriebssystembasierte(n) HWP-Hinweis(e), der/die zu überschreiben ist/sind, gelesen werden kann/können. Das Betriebssystem kennzeichnet basierend auf dem Status der Überschreibungsbits in den PECI HWP-Anforderungsinformationsregistern, welche Felder nun überschrieben sind. Für den Fall, dass eines dieser Bits festgelegt ist, kann das Betriebssystem annehmen, dass sein Feld durch die von der PECI bereitgestellten Informationen überschrieben ist. Wie veranschaulicht, können diese Informationen von dem PECI HWP-Anforderungsinformationsregister erhalten werden. In einer Ausführungsform kann das Betriebssystem einen oder mehrere HWP-Hinweise, die zu überschreiben sind, basierend auf Überschreibungsindikatoren innerhalb dieses Registers kennzeichnen und deren entsprechende Überschreibungswerte lesen. Danach geht die Steuerung zu Block 2050 über, wo das Betriebssystem die Überschreibungsinformationen basierend auf einer vorgegebenen Richtlinie verarbeiten kann. Zum Beispiel kann das Betriebssystem einfach Informationen bezüglich dieser PECI-Überschreibung in einer Protokolldatei protokollieren oder seine Quality of Service-(QoS-)Stufe basierend auf der aktuellen verfügbaren Leistungseinstellung ausrichten. Als ein Beispiel können die Informationen, die zu protokollieren sind, einen Zeitpunkt der Überschreibung, die Überschreibungswerte, die Dauer der Überschreibung und so weiter einschließen. Wie ferner veranschaulicht ist, kann das Betriebssystem wahlweise eine Aktion basierend auf den Überschreibungsinformationen, wie etwa das Neuausrichten einer QoS-Stufe und so weiter, ausführen. Es versteht sich, dass, wenngleich diese hohe Ebene in der Ausführungsform von 20 gezeigt ist, viele Variationen und Alternativen möglich sind.
-
Unter Bezugnahme nunmehr auf 21 ist ein Flussdiagramm eines Verfahrens gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. Genauer zeigt das Verfahren 2100 einen PECI-basierten Überschreibungsaktualisierungsbetrieb von dem Gesichtspunkt einer Energiesteuerung. Von daher kann das Verfahren 2100 durch Hardwareschaltungen, Firmware, Software und/oder Kombinationen davon durchgeführt werden.
-
Wie veranschaulicht ist, beginnt das Verfahren 2100 durch Erhalten von Verwaltungssteuerungsüberschreibungsinformationen von einem PECI HWP-Anforderungsinformations-MSR (Block 2110). Diese Informationen können innerhalb der Energiesteuerung erhalten und z. B. als eine Eingabe in eine Auswahlschaltung bereitgestellt werden. Als Nächstes wird bestimmt, ob ein oder mehrere Überschreibungsindikatoren dieser Überschreibungsinformationen festgelegt sind (Raute 2120). Wenn dem so ist, kann der Überschreibungswert der Überschreibungsinformationen, die einem festgelegten Überschreibungsindikator zugeordnet sind, zu einer HWP-Steuerung gesendet werden (Block 2130). Zum Beispiel sei angenommen, dass der Überschreibungsindikator nur für einen minimalen Leistungszustandshinweis aktiv ist. In diesem Fall kann der Wert der minimalen Leistungszustandseinstellung, der über die PECI-Schnittstelle erhalten wird, der HWP-Steuerung bereitgestellt werden. Dagegen können die verbleibenden HWP-Felder von einem betriebssystembasierten Anforderungsregister erhalten werden. Die Steuerung geht als Nächstes zu Block 2140 über, wo eine Benachrichtigung zu dem Betriebssystem gesendet werden kann. Wie zuvor analysiert wurde, kann in einer Ausführungsform diese Benachrichtigung durch Festlegen eines Überschreibungsfelds innerhalb eines Unterbrechungsregisters, das für das Betriebssystem zugänglich ist, erfolgen.
-
Weiter unter Bezugnahme auf 21 geht stattdessen, wenn bei der Raute 2120 bestimmt wird, dass keine Überschreibungsindikatoren festgelegt sind, die Steuerung zu Block 2150 über, um zu bestimmen, ob für ein vorgegebenes logisches Prozessor-HWP-Anforderungsregister ein Packungssteuerungsindikator festgelegt ist. Wenn dem so ist, können Konfigurationswerte eines Packungs-HWP-Anforderungsregisters zu der HWP-Steuerung für diesen logischen Prozessor gesendet werden (Block 2160). Ansonsten, wenn dieser Packungssteuerungsindikator nicht für ein vorgegebenes logisches Prozessor-HWP-Anforderungsregister festgelegt wird, geht die Steuerung zu Block 2170 über, wo Konfigurationswerte jenes logischen Prozessor-HWP-Anforderungsregisters zu der HWP-Steuerung gesendet werden. Die Steuerung geht als Nächstes zu der Raute 2180 über, um zu bestimmen, ob zusätzliche logische Prozessor-HWP-Anforderungsregister vorhanden sind, auf die zuzugreifen ist. Wenn dem so ist, kehrt die Steuerung zu der zuvor analysierten Raute 2150 zurück. Ansonsten endet das Verfahren 2100. Es versteht sich, dass, wenngleich diese hohe Ebene in der Ausführungsform von 21 gezeigt ist, viele Variationen und Alternativen möglich sind. In einer Ausführungsform, wenn das Packungssteuerungsbit in dem Thread-Ebenen-Anforderungs-MSR festgelegt ist, kann die Hardware Felder der Minimalleistung, Maximalleistung, gewünschten Leistung, EPP oder des Aktivitätsfensters basierend auf den gültigen Bits in diesem MSR auswählen.
-
Unter Bezugnahme nunmehr auf 22 ist ein Flussdiagramm eines Verfahrens gemäß noch einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 22 veranschaulicht ist, ist das Verfahren 2200 ein Verfahren zum Bereitstellen von HWP-Überschreibungsinformationen von einer Verwaltungssteuerung über eine PECI-Schnittstelle, wie hierin beschrieben. Wie in 22 veranschaulicht ist, kann das Verfahren 2200 von einer Verwaltungssteuerung durchgeführt werden. In verschiedenen Ausführungsformen kann die Verwaltungssteuerung als eine separate Komponente oder eine Plattform, wie etwa eine Serverplattform, implementiert sein. In solchen Fällen kann eine serverbasierte Steuerung diese Informationen bereitstellen. In einer Datenzentrumsimplementierung kann solch eine Steuerung ein Baseboard Management Controller oder eine andere Steuerung, die z. B. für einen Serverrack arbeitet, sein. In noch weiteren Ausführungsformen können höhere Granularitätsebenen solch eine Steuerung, wie etwa eine Verwaltungssteuerung, die bei mehreren Racks eines Datenzentrums arbeitet, bereitstellen.
-
In jedem Fall beginnt das Verfahren 2200 durch Erhalten einer Ereignisbenachrichtigung in der Verwaltungssteuerung (Block 2210). Genauer kann diese Benachrichtigung eine Benachrichtigung eines vorgegebenen Racks/Datenzentrumsereignis sein. Zum Beispiel kann das Ereignis einem Wärmeereignis, wie etwa einer Wärmeschwellenwertüberschreitung, einer Datenzentrums-QoS-Verletzung, einem arbeitslastbezogenen Ereignis, wie etwa einer Änderung der Datenzentrumsleistungsanforderung und so weiter, Energiebeschränkungsaktivitätsebenen (und/oder -prioritäten) oder einer anderen Unterbrechung, die von einem Unterbrechungsregister unterstützt wird, entsprechen. Als Nächstes geht die Steuerung zu der Raute 2220 über, um die Verwaltungssteuerungsüberschreibung von einem oder mehreren HWP-Konfigurationswerten basierend auf dieser Ereignisbenachrichtigung auszulösen. Es sei angemerkt, dass die Verwaltungssteuerung gemäß bestimmten Richtlinien beim Bestimmen basierend auf der Ereignisbenachrichtigung, ob eine Überschreibung von HWP-Parametern erfolgen soll, arbeiten kann. Wenn die Bestimmung, z. B. basierend auf der Richtlinie, lautet, dass keine Überschreibung erfolgen soll, erfolgen keine weiteren Operationen und endet das Verfahren 2200.
-
Stattdessen geht, wenn basierend auf der Ereignisbenachrichtigung, dass eine Überschreibung erfolgen soll, die Steuerung als Nächstes zu Block 2230 über, wo ein oder mehrere Überschreibungswerte basierend auf der Ereignisbenachrichtigung erzeugt werden können. Zum Beispiel kann in dem Zusammenhang eines Wärmeereignisses ein Überschreibungswert für einen maximalen P-Zustand festgelegt werden, der den maximalen Leistungszustand auf eine niedrigere Ebene (z. B. eine garantierte Leistungsebene) senkt, um eine Verringerung des Wärmeereignisses anzustreben. In anderen Fällen, wie etwa dort, wo die Ereignisbenachrichtigung von einer erhöhten Arbeitslast ist, kann eine minimale P-Zustands-Einstellung auf eine höhere Ebene aktualisiert werden. Für einen Datenzentrumsknoten mit Aufgaben niedriger Priorität (z. B. Hintergrund-Logging) kann die EPP überschrieben werden, um eine Präferenz für die Energieeffizienz anzugeben. Als Nächstes geht die Steuerung zu Block 2240 über, wo die Verwaltungssteuerung eine Nachricht zu dem Prozessor sendet. Als ein Beispiel sendet die Verwaltungssteuerung diese Nachricht über eine PECI-Schnittstelle. In einer Ausführungsform kann die Nachricht eine Schreibanforderung an das PECI HWP-Anforderungsregister einschließen. Genauer kann diese Schreibanforderung die Überschreibungswerte und zugehörigen Überschreibungsindikatoren zum Schreiben der Informationen in das Register, so dass es von der PCU gelesen und in dem HWP-Betrieb verwendet werden kann, einschließen. Es versteht sich, dass, wenngleich diese hohe Ebene in der Ausführungsform von 22 gezeigt ist, viele Variationen und Alternativen möglich sind. Die Ausführungsformen ermöglichen somit eine PECI-basierte Überschreibung der nativen Steuerung von einem oder mehreren HWP-Steuerungsparametern/Hinweisen zur gleichen Zeit, während HWP oder eine andere betriebssystemnative P-Zustandssteuerung verwendet wird.
-
Die folgenden Beispiele betreffen weitere Ausführungsformen.
-
In einem Beispiel umfasst ein Prozessor: einen oder mehrere Kerne zum Ausführen von Befehlen; ein erstes Anforderungsregister zum Speichern von Hardwareleistungszustandssteuerinformationen für einen ersten Kern des einen oder der mehreren Kerne, wobei die Hardwareleistungszustandssteuerinformationen von einem Betriebssystem erhalten werden; ein zweites Anforderungsregister zum Speichern von Hardwareleistungszustandssteuerüberschreibungsinformationen, wobei die Hardwareleistungszustandssteuerüberschreibungsinformationen von einer Verwaltungssteuerung zu erhalten sind, die mit dem Prozessor gekoppelt ist; und eine Energiesteuerung, die mit dem einen oder den mehreren Kernen zum Steuern eines Leistungszustands des ersten Kerns basierend zumindest zum Teil auf den Hardwareleistungszustandsüberschreibungsinformationen, wenn zumindest ein Überschreibungsindikator des zweiten Anforderungsregisters festgelegt ist, gekoppelt ist.
-
In einem Beispiel umfasst der Prozessor ferner eine Plattformumgebungssteuerschnittstelle zum Erhalten der Hardwareleistungszustandssteuerüberschreibungsinformationen von der Verwaltungssteuerung, wobei die Plattformumgebungssteuerschnittstelle die Hardwareleistungszustandssteuerüberschreibungsinformationen in das zweite Anforderungsregister schreibt.
-
In einem Beispiel umfasst das zweite Anforderungsregister ein Plattformumgebungssteuerschnittstell enhardwarel eistungszustandssteuerregister.
-
In einem Beispiel umfasst der Prozessor ferner ein Unterbrechungsregister einschließlich mehrerer Unterbrechungsindikatoren, die einen ersten Unterbrechungsindikator zum Angeben, dass eine Überschreibung von mindestens einigen der Hardwareleistungszustandssteuerinformationen, die in dem ersten Anforderungsregister gespeichert sind, erfolgen wird, einschließen.
-
In einem Beispiel soll die Energiesteuerung autonom eine Änderung in einem Leistungszustand des ersten Kerns basierend zumindest zum Teil auf mindestens einem Überschreibungswert der Hardwareleistungszustandssteuerüberschreibungsinformationen und mindestens einem Wert der Hardwareleistungszustandssteuerinformationen bewirken.
-
In einem Beispiel umfasst der Prozessor ferner ein Statusregister, das Folgendes einschließt: ein erstes Feld zum Speichern eines ersten Überschreibungsindikators zum Angeben, dass die Verwaltungssteuerung eine Überschreibung von mindestens einem Teil der Hardwareleistungszustandssteuerinformationen gestartet hat; und ein zweites Feld zum Speichern eines zweiten Überschreibungsindikators zum Angeben, dass die Verwaltungssteuerung die Überschreibung von zumindest dem Teil der Hardwareleistungszustandssteuerinformationen beendet hat.
-
In einem Beispiel umfasst der Prozessor ferner eine Auswahlschaltung zum Erhalten der Hardwareleistungszustandssteuerinformationen von dem ersten Anforderungsregister und der Hardwareleistungszustandssteuerüberschreibungsinformationen von dem zweiten Anforderungsregister und zum Steuern der Bereitstellung von mindestens einigen der Hardwareleistungszustandssteuerüberschreibungsinformationen an die Energiesteuerung als Reaktion auf einen oder mehrere Überschreibungsindikatoren der Hardwareleistungszustandssteuerüberschreibungsinformationen.
-
In einem Beispiel soll die Auswahlschaltung das Betriebssystem bezüglich der Überschreibung von mindestens einigen der Hardwareleistungszustandssteuerinformationen benachrichtigen.
-
In einem anderen Beispiel umfasst ein Verfahren: Erhalten in einer Auswahlschaltung eines Prozessors von Überschreibungsinformationen von einer Verwaltungssteuerung einer Plattform, die den Prozessor einschließt, wobei die Überschreibungsinformationen einen oder mehrere Überschreibungswerte und einen oder mehrere Überschreibungsindikatoren einschließen, wobei die Überschreibungsinformationen der Hardwareleistungszustandssteuerung des Prozessors zugeordnet sind; Bestimmen, ob zumindest einer des einen oder der mehreren Überschreibungsindikatoren aktiv ist; als Reaktion auf das Bestimmen, dass der mindestens eine des einen oder der mehreren Überschreibungsindikatoren aktiv ist, Senden mindestens eines des einen oder der mehreren Überschreibungswerte, der dem aktiven mindestens einen des einen oder der mehreren Überschreibungsindikatoren zugeordnet ist, zu einer Energiesteuerung des Prozessors; und Steuern durch die Energiesteuerung eines Leistungszustands von mindestens einem von mehreren Kernen des Prozessors basierend zumindest zum Teil auf dem mindestens einen des einen oder der mehreren Überschreibungswerte.
-
In einem Beispiel umfasst das Verfahren ferner als Reaktion auf das Bestimmen, dass der mindestens eine des einen oder der mehreren Überschreibungsindikatoren aktiv ist, das Benachrichtigen eines Betriebssystems bezüglich einer Überschreibung eines oder mehrerer Hardwareleistungszustandssteuerwerte, die von dem Betriebssystem bereitgestellt werden.
-
In einem Beispiel umfasst das Benachrichtigen des Betriebssystems das Festlegen eines Unterbrechungsindikators in einem Unterbrechungsregister des Prozessors.
-
In einem Beispiel umfasst das Verfahren ferner das derartige Steuern des Leistungszustands, dass dieser ein Minimalleistungszustand ist, der eine erste Ebene aufweist, basierend zumindest zum Teil auf dem mindestens einen des einen oder der mehreren Überschreibungswerte.
-
In einem Beispiel umfasst das Verfahren ferner das Erhalten der Überschreibungsinformationen über eine Plattformumgebungssteuerschnittstelle des Prozessors, und das Senden des mindestens einen des einen oder der mehreren Überschreibungswerte umfasst das Senden eines ersten Überschreibungswerts für einen ersten Hardwareleistungszustandssteuerungsparameter und das Überschreiben eines logischen Prozessorhardwareleistungszustandswerts und eines Packungshardwarezustandsleistungswerts für den ersten Hardwareleistungszustandssteuerungsparameter.
-
In einem Beispiel umfasst das Verfahren ferner: Festlegen eines ersten Indikators eines Statusregisters des Prozessors zum Spezifizieren einer Überschreibung durch die Verwaltungssteuerung eines oder mehrerer von dem Betriebssystem bereitgestellten Hardwareleistungszustandssteuerungsparameter; und Festlegen eines zweiten Indikators des Statusregisters zum Spezifizieren eines Beendens der Überschreibung durch die Verwaltungssteuerung des einen oder der mehreren von dem Betriebssystem bereitgestellten Hardwareleistungszustandssteuerungsparameter.
-
In einem Beispiel umfasst das Verfahren ferner das Steuern des Leistungszustands basierend zumindest zum Teil auf einer Kombination des mindestens einen des einen oder der mehreren Überschreibungswerte und mindestens eines Hardwareleistungszustandsteuerwerts, der von einem Betriebssystem erhalten wird.
-
In einem Beispiel umfasst das Verfahren ferner das Steuern des Leistungszustands basierend zumindest zum Teil auf der Kombination des mindestens einen des einen oder der mehreren Überschreibungswerte und des mindestens einen Hardwareleistungszustandsteuerwerts, der von dem Betriebssystem während einem nativen Modus der Hardwareleistungszustandssteuerung erhalten wird.
-
In einem anderen Beispiel soll ein computerlesbares Medium, das Befehle einschließt, das Verfahren von einem der vorherigen Beispiele durchzuführen.
-
In einem anderen Beispiel soll ein computerlesbares Medium, das Daten einschließt, von mindestens einer Maschine verwendet werden, um mindestens eine integrierte Schaltung herzustellen, um das Verfahren von einem der vorherigen Beispiele durchzuführen.
-
In einem anderen Beispiel umfasst eine Vorrichtung Mittel zum Durchführen des Verfahrens von einem der vorherigen Beispiele.
-
In noch einem anderen Beispiel schließt ein System einen Prozessor ein, der einen ersten Kern zum Ausführen von Befehlen, ein erstes Anforderungsregister zum Speichern von Hardwareleistungszustandssteuerinformationen für den ersten Kern, die von einem Betriebssystem zu erhalten sind, ein zweites Anforderungsregister zum Speichern von Hardwareleistungszustandssteuerüberschreibungsinformationen, die von einer Verwaltungssteuerung zu erhalten sind, und eine Energiesteuerung, die mit dem ersten Kern gekoppelt ist, um einen Leistungszustand des ersten Kerns basierend auf einer Kombination von mindestens einigen der Hardwareleistungszustandssteuerinformationen und mindestens einigen der Hardwareleistungszustandssteuerüberschreibungsinformationen zu steuern, umfasst. Das System kann ferner die Verwaltungssteuerung einschließen, die mit dem Prozessor gekoppelt ist, wobei die Verwaltungssteuerung Umgebungsinformationen erhält, die einer oder mehreren Komponenten des Systems, die extern bezüglich des Prozessors sind, zugeordnet sind, und die Hardwareleistungszustandssteuerüberschreibungsinformationen basierend zumindest zum Teil auf den Umgebungsinformationen erzeugt.
-
In einem Beispiel umfasst die Verwaltungssteuerung einen Baseboard Management Controller zum Erzeugen der Hardwareleistungszustandssteuerüberschreibungsinformationen ferner als Reaktion auf eine Ereignisbenachrichtigung, die die Umgebungsinformationen umfasst, wobei die Ereignisbenachrichtigung angibt, dass eine Temperatur von mindestens einer der einen oder der mehreren Komponenten einen Schwellenwert überschreitet.
-
In einem Beispiel soll die Verwaltungssteuerung eine Schreibnachricht zu dem Prozessor senden, wobei die Schreibnachricht die Hardwareleistungszustandssteuerüberschreibungsinformationen und einen oder mehrere festgelegte Überschreibungsindikatoren einschließt.
-
In einem Beispiel umfasst der Prozessor ferner eine Plattformumgebungssteuerschnittstelle zum Erhalten der Hardwareleistungszustandssteuerüberschreibungsinformationen von der Verwaltungssteuerung, wobei die Plattformumgebungssteuerschnittstelle die Hardwareleistungszustandssteuerüberschreibungsinformationen in das zweite Anforderungsregister schreibt.
-
In noch einem weiteren Beispiel umfasst eine Vorrichtung: Mittel zum Erhalten von Überschreibungsinformationen von einer Verwaltungssteuerung einer Plattform, die einen Prozessor einschließt, wobei die Überschreibungsinformationen einen oder mehrere Überschreibungswerte und einen oder mehrere Überschreibungsindikatoren einschließen, wobei die Überschreibungsinformationen der Hardwareleistungszustandssteuerung des Prozessors zugeordnet sind; Mittel zum Senden mindestens eines des einen oder der mehreren Überschreibungswerte, der dem aktiven mindestens einen des einen oder der mehreren Überschreibungsindikatoren zugeordnet ist, zu einem Energiesteuerungsmittel; und das Energiesteuerungsmittel zum Steuern eines Leistungszustands von mindestens einem von mehreren Kernen des Prozessors basierend zumindest zum Teil auf dem mindestens einen des einen oder der mehreren Überschreibungswerte.
-
In einem Beispiel umfasst die Vorrichtung ferner Mittel zum Benachrichtigen eines Betriebssystems bezüglich einer Überschreibung eines oder mehrerer Hardwareleistungszustandssteuerwerte, die von dem Betriebssystem bereitgestellt werden.
-
In einem Beispiel soll das Energiesteuerungsmittel den Leistungszustand derart steuern, dass dieser ein Minimalleistungszustand ist, der eine erste Ebene aufweist, basierend zumindest zum Teil auf dem mindestens einen des einen oder der mehreren Überschreibungswerte.
-
In einem Beispiel umfasst der Prozessor ferner Plattformumgebungssteuerschnittstellenmittel zum Erhalten der Überschreibungsinformationen.
-
In einem Beispiel umfasst die Vorrichtung ferner: Mittel zum Festlegen eines ersten Indikators von Statusregistermitteln zum Spezifizieren einer Überschreibung durch die Verwaltungssteuerung eines oder mehrerer von dem Betriebssystem bereitgestellter Hardwareleistungszustandssteuerungsparameter; und Mittel zum Festlegen eines zweiten Indikators der Statusregistermittel zum Spezifizieren eines Beendens der Überschreibung durch die Verwaltungssteuerung des einen oder der mehreren von dem Betriebssystem bereitgestellten Hardwareleistungszustandssteuerungsparameter.
-
In einem Beispiel soll das Energiesteuerungsmittel den Leistungszustand basierend zumindest zum Teil auf einer Kombination des mindestens einen des einen oder der mehreren Überschreibungswerte und mindestens eines Hardwareleistungszustandsteuerwerts, der von einem Betriebssystem erhalten wird, steuern.
-
Es versteht sich, dass verschiedene Kombinationen der vorherigen Beispiele möglich sind.
-
Es sei angemerkt, dass die Begriffe „Schaltung“ und „Schaltungen“ hierin untereinander austauschbar verwendet werden. So, wie sie hier verwendet werden, werden diese Begriffe und der Begriff „Logik“ verwendet, um sich alleine oder in einer beliebigen Kombination auf analoge Schaltungen, digitale Schaltungen, hartverdrahtete Schaltungen, programmierbare Schaltungen, Prozessorschaltungen, Mikrocontrollerschaltungen, Hardwarelogikschaltungen, Zustandsmaschinenschaltungen und/oder eine beliebige sonstige Art von physikalischer Hardwarekomponente zu beziehen. Die Ausführungsformen können in vielen verschiedenen Arten von Systemen verwendet werden. Zum Beispiel kann in einer Ausführungsform eine Kommunikationsvorrichtung eingerichtet sein, um die verschiedenen Verfahren und Techniken durchzuführen, die hierin beschrieben sind. Selbstverständlich ist der Umfang der vorliegenden Erfindung nicht auf eine Kommunikationsvorrichtung beschränkt und können stattdessen andere Ausführungsformen auf andere Arten von Vorrichtungen zur Verarbeitung von Befehlen oder ein oder mehrere maschinenlesbare Medien, die Befehle einschließen, die als Reaktion darauf, dass sie auf einer Rechenvorrichtung ausgeführt werden, bewirken, dass die Vorrichtung eines oder mehrere der Verfahren und Techniken, die hierin beschrieben sind, ausführt, gerichtet sein.
-
Die Ausführungsformen können in Code implementiert werden und auf einem nichtflüchtigen Speichermedium gespeichert werden, auf dem Befehle gespeichert sind, welche verwendet werden können, um ein System zu programmieren, um die Befehle auszuführen. Die Ausführungsformen können auch in Daten implementiert werden und auf einem nichtflüchtigen Speichermedium gespeichert werden, welche, wenn sie von mindestens einer Maschine verwendet werden, bewirken, dass die mindestens eine Maschine mindestens eine integrierte Schaltung zum Durchführen von einer oder mehreren Operationen herstellt. Noch weitere Ausführungsformen können in einem computerlesbaren Speichermedium implementiert werden, das Informationen einschließt, das, wenn es in einem SoC oder einem anderen Prozessor hergestellt wird, den SoC oder anderen Prozessor konfiguriert, um eine oder mehrere Operationen durchzuführen. Das Speichermedium kann eine beliebige Art von Platte einschließlich Floppy Disks, optische Platten, Festkörperlaufwerke (SSDs, Solid State Drives), CD-Nur-Lese-Speicher (CD-ROMs, Compact Disk Read-Only Memories), wiederbeschreibbare Compact Disks (CD-RWs) und magnetooptische Platten, Halbleitervorrichtungen, wie etwa Nur-Lese-Speicher (ROMs, Read-Only Memories), Direktzugriffsspeicher (RAMs, Random Access Memories), wie etwa dynamische Direktzugriffsspeicher (DRAMs, Dynamic Random Access Memories), statische Direktzugriffsspeicher (SRAMs, Static Random Access Memories), löschbare, programmierbare Nur-Lese-Speicher (EPROMs, Erasable Programmable Read-Only Memories), Flash-Speicher, elektrisch löschbare, programmierbare Nur-Lese-Speicher (EEPROMs, Electrically Erasable Programmable Read-Only Memories), magnetische oder optische Karten oder jeden anderen Typ von zum Speichern von elektronischen Befehlen geeigneten Medien einschließen, ist jedoch nicht darauf beschränkt.
-
Wenngleich die vorliegende Erfindung bezüglich einer begrenzten Anzahl an Ausführungsformen beschrieben worden ist, wird ein Fachmann zahlreiche Modifikationen und Variationen diesbezüglich erkennen. Es wird beabsichtigt, dass die beigefügten Ansprüche alle diese Modifikationen und Variationen, die innerhalb des wahren Wesens und Umfangs dieser vorliegenden Erfindung liegen, abdecken.