-
Gebiet der Erfindung
-
Ausführungsformen beziehen sich auf das Leistungsmanagement eines Systems, und genauer auf das Leistungsmanagement eines Multicore-Prozessors.
-
Allgemeiner Stand der Technik
-
Fortschritte der Halbleiterverarbeitung und des Logikaufbaus haben eine Erhöhung der Logikmenge erlaubt, die auf Vorrichtungen mit integrierten Schaltkreisen vorhanden sein können. Als Ergebnis davon haben sich Computersystemkonfigurationen aus einem einzelnen oder mehreren integrierten Schaltkreisen in einem System zu mehreren Hardware-Threads, mehreren Kernen, mehreren Vorrichtungen und/oder vollständigen Systemen auf einzelnen integrierten Schaltkreisen entwickelt. Weiterhin haben mit zunehmender Dichte der integrierten Schaltkreise die Leistungsanforderungen für Rechnersysteme (von eingebetteten Systemen auf Servern) ebenfalls eskaliert. Weiterhin haben Softwareineffizienzen und ihre Anforderungen an die Hardware, ebenfalls zu einer Erhöhung des Energieverbrauchs von Rechnervorrichtungen geführt. Einige Studien weisen in der Tat darauf hin, dass Rechnervorrichtungen einen beträchtlichen Anteil an der gesamten Stromversorgung eines Landes verbrauchen, wie etwa in den Vereinigten Staaten von Amerika. Aufgrund dessen gibt es einen lebenswichtigen Bedarf an Energieeffizienz und -einsparung in Zusammenhang mit integrierten Schaltkreisen. Dieser Bedarf steigt an, wenn Server, Desktop-Computer, Notebooks, Ultrabooks™, Tablets, Handys, Prozessoren, eingebettete Systeme usw. immer weiter verbreitet werden (aus der Einbeziehung des typischen Computers, von Autos und Fernsehern, bis zur Biotechnologie).
-
Figurenliste
-
- 1 ist ein Blockdiagramm eines Abschnitts eines Systems nach einer Ausführungsform der vorliegenden Erfindung.
- 2 ist ein Blockdiagramm eines Prozessors nach einer Ausführungsform der vorliegenden Erfindung.
- 3 ist ein Blockdiagramm eines Multidomain-Prozessors nach einer anderen Ausführungsform dieser Erfindung.
- 4 ist eine Ausführungsform eines Prozessors, der mehrere Kerne enthält.
- 5 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns nach einer Ausführungsform der vorliegenden Erfindung.
- 6 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns nach einer anderen Ausführungsform.
- 7 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns nach noch einer anderen Ausführungsform.
- 8 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns nach noch einer weiteren Ausführungsform.
- 9 ist ein Blockdiagramm eines Prozessors nach einer anderen Ausführungsform der vorliegenden Erfindung.
- 10 ist ein Blockdiagramm eines repräsentativen SoC nach einer Ausführungsform der vorliegenden Erfindung.
- 11 ist ein Blockdiagramm eines anderen beispielhaften SoC nach einer Ausführungsform der vorliegenden Erfindung.
- 12 ist ein Blockdiagramm eines beispielhaften Systems, mit dem Ausführungsformen verwendet werden können.
- 13 ist ein Blockdiagramm eines anderen beispielhaften Systems, mit dem die Ausführungsformen verwendet werden können.
- 14 ist ein Blockdiagramm eines repräsentativen Computersystems.
- 15 ist ein Blockdiagramm eines Systems nach einer Ausführungsform der vorliegenden Erfindung.
- 16 ist ein Blockdiagramm, das ein IP-Kernentwicklungssystem illustriert, das verwendet werden kann, um einen integrierten Schaltkreis herzustellen, um Funktionen nach einer Ausführungsform auszuführen.
- 17 ist ein Blockdiagramm eines Verfahrens nach einer Ausführungsform der vorliegenden Erfindung.
- 18 ist ein Ablaufdiagramm eines Verfahrens nach einer anderen Ausführungsform dieser Erfindung.
- 19 ist ein Blockdiagramm eines Verfahrens nach noch einer weiteren Ausführungsform der vorliegenden Erfindung.
- 20 ist ein Blockdiagramm eines Verfahrens nach noch einer weiteren Ausführungsform der vorliegenden Erfindung.
- 21 ist ein Blockdiagramm eines Systems nach einer Ausführungsform der vorliegenden Erfindung.
- 22 ist ein Blockdiagramm eines Abschnitts eines Prozessors nach einer Ausführungsform der vorliegenden Erfindung.
- 23 ist ein Ausführungsdiagramm, das Beispielleistungsgewinne für bestimmte Arbeitslasten nach einer Ausführungsform der vorliegenden Erfindung zeigt.
- 24 ist ein Timingdiagramm, das Herabstufungs- und Nichtherabstufungsgrenzen nach einer Ausführungsform der vorliegenden Erfindung illustriert.
-
Ausführliche Beschreibung
-
In verschiedenen Ausführungsformen kann ein Prozessor mit einer Schnittstelle konfiguriert sein, Kundeneinstellungen für mindestens bestimmte Leistungsmanagementsteuerparameter zu empfangen und zu verwenden. Genauer stellen Ausführungsformen Schnittstellentechnik bereit, um Herabstufungssteuerparameter zu empfangen und zu verwenden. Das heißt, Prozessoren können mit einer sogenannten automatischen Herabstufungsfunktion konfiguriert sein, die eine autonome Steuertechnik ist, in der die Leistungszustandssteuerung des Betriebssystems (OS) durch einen Leistungscontroller (einschließlich Leistungsmanagementfirmware) des Prozessors überschrieben wird. Während solche autonomen Prozessorsteuerungen für bestimmte Produkte eingestellt werden, kann es mehrere Einschränkungen geben, einschließlich: Leistungsmanagementalgorithmen, die stark von bestimmten Produkten und Workloads anhängig sind; ein OS kann bestimmte konfigurierbare Konfigurationsdateien aufweisen, die nicht verfügbar sind; und bestimmte Kunden, die Forschungs- und Entwicklungsanstrengungen aufwenden wollen, um ihre spezifischen Verwendungen anzupassen, können keinen Zugriff haben, ohne eine Ausführungsform zu verwenden. Ausführungsformen stellen so eine externe Schnittstelle, eine interne Kommunikationsschnittstelle mit Firmware und Leistungsmanagementhardware und extern einstellbare Steueralgorithmen zur Verfügung, um verbesserte Anpassungen für mindestens bestimmte Leistungsmanagementfunktionen zu ermöglichen.
-
Wenn ein Prozessor in einen tieferen Leerlaufzustand eintritt, spart er Energie. Andererseits führt ein so tiefer Niedrigenergiezustand Leistungsverschlechterung ein (durch Eintritt- und Austrittlatenz, Verlust von Kernarchitekturinformationen wie seinem Cache, Übersetzungs-Lookaside-Puffer (TLB), Zweigzielpuffer (BTB), usw.). Tiefe Niedrigenergiezustandsübergänge verbrauchen auch Energie, um den Zustand zu speichern und wiederherzustellen. Mit dem allgemeinen Wunsch nach Energieeinsparungen erhöht der längere Betrieb bei einer bestimmten Leistung durch Leistungsverschlechterungen den Energieverbrauch. Dieser Effekt kann jedoch zusammen mit den Kosten für das Sparen/Wiederherstellen von Energie mehr Energie kosten, als die Energie, die durch den niedrigen Leistungszustand gespart wird. Daher verursachen größere Zahlen von Niedrigenergiezustandsübergängen (hierin allgemein Cx-Übergänge) höhere Energiekosten und höhere Auswirkungen auf die Leistung. Es gibt einen Ausgleichspunkt, an dem der Eintritt in einen gegebenen Cx-Zustand zu Energieverlust führt. Dieser Ausgleichspunkt hängt von den Arbeitslasteigenschaften (z. B. Leistungsverringerung, Cache-Fußabdruck, Anwendungsverhältnis, Cx-Eintritts-/Austrittsprofil usw.) ab. Oft wird das Arbeitslastverhalten durch Bursts einer hohen Übergangsrate charakterisiert, die die Ausgleichsgrenze überschreiten. So gibt es keinen Ansatz, der überall passt. Ausführungsformen hierin ermöglichen kundenbasierte Anpassung zum Erhöhen der Energieeinsparungen und/oder Leistung.
-
In verschiedenen Ausführungsformen wird eine externe grundlegende Eingabe-/Ausgabesystem- (BIOS)/OS-Schnittstelle bereitgestellt, zusammen mit einer inneren Kommunikationsschnittstelle von dieser Schnittstelle zu den Leistungssteuerschaltkreisen (einschließlich, aber nicht beschränkt auf Firmware und Hardwarezustandsmaschinen), um extern anpassbare Steueralgorithmen zu aktivieren. In Ausführungsformen ermöglicht die externe Schnittstelle einem Originalausrüstungshersteller (OEM) oder Betriebssystemhändler (OSV), Steuerparameter durch maschinenspezifische Register (MSR), speicherzugeordnete Ein-/Ausgaben (MMIO) oder eine Mailboxschnittstelle bereitzustellen, um direkten Zugriff auf die Leistungssteuerungsschaltkreise für die Durchführung einer automatischen Herabstufung zu ermöglichen.
-
Wenn auch die folgenden Ausführungsformen mit Verweis auf Energieerhalt und Energieeffizienz in spezifischen integrierten Schaltkreisen beschrieben sind, wie etwa in Rechnerplattformen oder Prozessoren, gelten andere Ausführungsformen für andere Typen von integrierten Schaltkreisen und Logikvorrichtungen. Ähnliche Techniken und Lehren der hierin beschriebenen Ausführungsformen können auf andere Arten von Schaltkreisen oder Halbleitervorrichtungen angewendet werden, die ebenfalls von besserer Energieeffizienz und Energieeinsparung einen Nutzen ziehen könnten. Beispielsweise sind die offenbarten Ausführungsformen nicht auf eine bestimmte Art von Computersystemen beschränkt. Das heißt, offenbarte Ausführungsformen können in vielen verschiedenen Systemtypen verwendet werden, von Servercomputern (z. B. Tower, Rack, Blade, Mikroserver und so weiter), Kommunikationssystemen, Speichersystemen, Desktopcomputern jeder Konfiguration, Laptop, Notebook und Tabletcomputern (einschließlich 2:1-Tablets, Phablets und so weiter), und kann auch in anderen Vorrichtungen verwendet werden, wie etwa in tragbaren Vorrichtungen, Systemen auf Chip (SoCs), und eingebetteten Anwendungen. Einige Beispiele von tragbaren Vorrichtungen enthalten Handys, wie etwa Smartphones, Internet-Protokoll-Vorrichtungen, Digitalkameras, Personal Digital Assistants (PDAs) und tragbare PCs. Eingebettete Anwendungen können typischerweise einen Mikrocontroller, einen Digitalsignalprozessor (DSP), Netzwerkcomputer (NetPC), Set-Top Boxen, Netzwerkhubs, Wide Area Network (WAN) Switches, tragbare Vorrichtungen oder jedes andere System umfassen, das die Funktionen und Operationen ausführen kann, die nachfolgend offenbart werden. Weiterhin können Ausführungsformen in mobilen Terminals umgesetzt worden sein, die Standardstimmfunktionen aufweisen, wie etwa Handys, Smartphones und Phablets, und/oder in nicht mobilen Terminals ohne Standarddrahtlosstimmfunktions-Kommunikationsfähigkeit, wie etwa viele Wearables, Tablets, Notebooks, Desktops, Mikroserver, Server und so weiter. Weiterhin sind die hierin beschriebenen Vorrichtungen, Verfahren und Systeme nicht auf physische Rechnervorrichtungen beschränkt, sondern können sich auch auf Softwareoptimierungen zur Energieeinsparung und -effizienz beziehen. Wie in der folgenden Beschreibung leicht deutlich wird, sind die hierin beschriebenen Ausführungsformen von Verfahren, Vorrichtungen und Systemen (egal, ob mit Verweis auf Hardware, Firmware, Software oder eine Kombination daraus) entscheidend für eine Zukunft ‚grüner Technologie‘, wie etwa zum Energiesparen und für die Energieeffizienz in Produkten, die einen großen Teil der Wirtschaft der USA umfassen.
-
Nun wird mit Verweis auf 1 wird ein Blockdiagramm eines Abschnitts eines Systems nach einer Ausführungsform der vorliegenden Erfindung dargestellt. Wie in 1 dargestellt, kann System 100 verschiedene Bauteile enthalten, einschließlich eines Prozessors 110, der in der dargestellten Form ein Multicore-Prozessor ist. Der Prozessor 110 kann mit einer Stromversorgung 150 über einen externen Spannungsregler 160 verbunden sein, der eine erste Spannungsumwandlung ausführen kann, um eine primär geregelte Spannung Vreg für den Prozessor 110 bereitzustellen.
-
Wie dargestellt, kann der Prozessor 110 ein Einzelmatrizenprozessor sein, der mehrere Kerne 120a bis 120n enthält. Weiterhin kann jeder Kern mit einem integrierten Spannungsregler (IVR) 125a bis 125n assoziiert sein, der die geregelte Hauptspannung empfängt und eine Betriebsspannung erzeugt, die einem oder mehreren Agenten des Prozessors bereitgestellt wird, die mit dem IVR assoziiert sind. Dementsprechend kann eine IVR-Umsetzung bereitgestellt sein, um die feinmaschige Steuerung der Spannung, und damit der Energie und Leistung für jeden einzelnen Kern zu erlauben. So kann jeder Kern mit einer unabhängigen Spannung und Frequenz funktionieren und eine große Flexibilität ermöglichen und breitgefächerte Gelegenheiten zum Ausgleich des Stromverbrauchs mit der Leistung bereitstellen. In einigen Ausführungsformen ermöglicht die Verwendung mehrerer IVRs die Gruppierung von Bauteilen in verschiedene Energieebenen, sodass die Energie geregelt und durch den IVR nur den Bauteilen der Gruppe bereitgestellt wird. Während des Leistungsmanagements kann eine bestimmte Energieebene eines IVR heruntergefahren oder abgeschaltet sein, wenn der Prozessor in einen bestimmten Niedrigenergiezustand versetzt wird, während eine andere Energieebene eines anderen IVR aktiv oder vollständig unter Energie bleibt. Ähnlich können Kerne 120 unabhängige Takterzeugungsschaltkreise enthalten oder damit assoziiert sein, wie etwa eine oder mehrere Phasensperrschleifen (PLLs), um die Betriebsfrequenz jedes Kerns 120 unabhängig zu steuern.
-
Dennoch können mit Verweis auf 1 weitere Komponenten innerhalb des Prozessors vorhanden sein, einschließlich einer Eingabe-/Ausgabeschnittstelle (IF) 132, einer anderen Schnittstelle 134, und eines integrierten Speichercontrollers (IMC) 136. Wie gesehen, kann jede dieser Komponenten durch einen anderen integrierten Spannungsregler 125x mit Energie versorgt werden. In einer Ausführungsform kann die Schnittstelle 132 den Betrieb für eine Intel® Quick Path Interconnect (QPI) Verbindung ermöglichen, die Punkt-zu-Punkt- (PtP) Verbindungen in einem cachekohärenten Protokoll enthält, das mehrere Lagen enthält, einschließlich einer physischen Lage, einer Verbindungslage und einer Protokolllage. Die Schnittstelle 134 wiederum kann über ein Peripheral Component Interconnect Express (PCIe™) Protokoll kommunizieren.
-
Außerdem wird eine Leistungssteuerungseinheit (PCU) 138 dargestellt, die Schaltkreise enthalten kann, die Hardware, Software und/oder Firmware enthalten, um Leistungsmanagementfunktionen bezüglich des Prozessors 110 auszuführen. Wie gesehen wurde, stellt die PCU 138 Steuerinformationen an den externen Spannungsregler 160 über eine digitale Schnittstelle 162 bereit, um den Spannungsregler zu veranlassen, die passende geregelte Spannung zu erzeugen. PCU 138 stellt außerdem Steuerinformationen an die IVRs 125 über eine andere digitale Schnittstelle 163 beriet, um die erzeugte Betriebsspannung zu erzeugen (oder eine entsprechende IVR zu erzeugen, die in einem niedrigen Energiemodus deaktiviert werden soll). In verschiedenen Ausführungsformen kann die PCU 138 eine Reihe von Leistungsmanagementlogikeinheiten enthalten, um hardwarebasiertes Leistungsmanagement durchzuführen. Ein solches Leistungsmanagement kann vollständig prozessorgesteuert sein (z. B. durch verschiedene Prozessorhardware, und das durch Workload und/oder Leistung, Wärme- oder andere Prozessoreinschränkungen ausgelöst werden kann) und/oder das Leistungsmanagement kann in Antwort auf externe Quellen ausgeführt werden (wie etwa eine Plattform oder Leistungsmanagementquelle oder Systemsoftware). PCU 138 kann konfiguriert sein, Leistungsmanagementanfragen zu überschreiben, die durch Systemsoftware eingeleitet werden (wie etwa ein OS und/oder ein BIOS), um verbesserte Leistung zu ermöglichen, wenn eine große Anzahl von den niedrigen Energiezustand unterbrechenden Ergebnisse empfangen wird, die ungewünschtes Austreten aus einem gegebenen Niedrigenergiezustand verursachen. Und weiter kann die PCU 138 diese Herabstufungsfunktion basierend mindestens teilweise auf vom Kunden bereitgestellten Informationen steuern, die über eine Schnittstelle wie hierin vorgesehen empfangen wurden.
-
In 1 wird die PCU 138 als als eine getrennte Logik des Prozessors vorhanden illustriert. In anderen Fällen kann die PCU-Logik 138 auf einem gegebenen einen oder mehreren der Kerne 120 ausgeführt werden. In einigen Fällen kann die PCU 138 als Mikrocontroller umgesetzt werden (speziell oder für allgemeine Zwecke) oder eine andere Steuerlogik, die konfiguriert ist, ihren eigenen Leistungsmanagementcode auszuführen, manchmal als P-Code bezeichnet. In noch anderen Ausführungsformen können Leistungsmanagementfunktionen, die durch die PCU 138 durchgeführt werden sollen, außerhalb eines Prozessors umgesetzt werden, etwa durch einen getrennten Schaltkreise mit integriertem Leistungsmanagement (PMIC) oder eine andere Komponente, die außerhalb des Prozessors ist. In noch anderen Ausführungsformen können die Leistungsmanagementfunktionen, die durch die PCU 138 umzusetzen sind, innerhalb des BIOS oder anderer Systemsoftware umgesetzt werden.
-
Ausführungsformen können besonders für einen Multikernprozessor geeignet sein, in dem jeder von mehreren Kernen mit einem unabhängigen Spannungs- und Frequenzpunkt laufen kann. Wie hierin verwendet, wird der Begriff „Domäne“ verwendet, um eine Sammlung von Hardware und/oder Logik zu bezeichnen, die mit demselben Spannungs- und Frequenzpunkt funktioniert. Weiterhin kann ein Mehrkernprozessor ferner andere Nichtkernverarbeitungsengines enthalten, wie etwa Festfunktionseinheiten, Grafikengines und so weiter. Ein solcher Prozessor kann andere unabhängige Domainen als die Kerne enthalten, wie etwa eine oder mehrere Domainen, die mit einer Grafikengine assoziiert sind (hierin bezeichnet als eine Grafikdomäne) und eine oder mehrere Domänen, die mit Nichtkernschaltkreisen assoziiert sind, hierin bezeichnet als Unkern- oder Systemagent. Wenn auch viele Umsetzungen eines Multidomänenprozessors auf einer einzigen Halbleitermatrize geformt werden können, können andere Umsetzungen durch ein Multi-Chip-Paket realisiert werden, in dem verschiedene Domänen auf verschiedenen Halbleitermatrizen eines einzelnen Pakets vorhanden sein können.
-
Während es zum Zweck einer einfacheren Illustration nicht dargestellt ist, ist zu verstehen, dass weitere Komponenten innerhalb des Prozessors 110 vorhanden sein können, wie etwa die Unkern-Logik und andere Komponenten wie interne Speicher, z. B. ein oder mehrere Ebenen einer Cachespeicherhierarchie und so weiter. Weiter ist zwar in der Umsetzung von 1 ein integrierter Spannungsregler dargestellt, die Ausführungsformen sind jedoch nicht darauf eingeschränkt. Beispielsweise können andere regulierte Spannungen für On-Chip-Ressourcen von dem externen Spannungsregler 160 oder einer oder mehreren externen Quellen geregelter Spannungen bereitgestellt werden.
-
Es ist zu beachten, dass die Leistungsmanagementtechniken, die hierin beschrieben sind, unabhängig von und komplementär für einen betriebssystem -(OS) basierten Leistungsmanagement- (OSPM) Mechanismus sein können. Nach einer Beispiel-OSPM-Technik kann ein Prozessor in verschiedenen Leistungszuständen oder Ebenen funktionieren, sogenannten P-Zuständen, namentlich von P0 bis PN. Allgemein kann der Leistungszustand P1 der höchsten garantierten Leistung entsprechen, die durch ein OS angefordert werden kann. Neben diesem P1-Zustand kann das OS ferner einen höheren Leistungszustand anfordern, namentlich einen P0-Zustand. Dieser P0-Zustand kann so ein opportunistischer, übertaktender oder Turbomoduszustand sein, in dem, wenn die Leistung und/oder das Wärmebudget verfügbar ist, Prozessorhardware den Prozessor oder zumindest Abschnitte davon konfigurieren kann, mit einer höheren als der garantierten Frequenz zu funktionieren. In vielen Umsetzungen kann ein Prozessor mehrere sogenannte Binfrequenzen über der vom P1 garantierten maximalen Frequenz aufweisen, die bis zu einer maximalen Spitze des jeweiligen Prozessors reichen, wie jeweils gelötet oder anderweitig bei der Herstellung in den Prozessor geschrieben. Weiterhin kann nach einem OSPM-Mechanismus ein Prozessor bei verschiedenen Energiezuständen oder Ebenen arbeiten. Bezüglich der Leistungszustände kann ein OSPM-Mechanismus verschiedene Leistungsverbrauchszustände vorgeben, die allgemein als C-Zustände, C0, C1 bis Cn-Zustände bezeichnet werden. Wenn ein Kern aktiv ist, läuft er in einem C0-Zustand, und wenn der Kern im Leerlauf ist, kann er in einen Kern-Niedrigenergiezustand gestellt werden, der auch als Kern-Nichtnull-C-Zustand (z. B. C1-C6-Zustände) bezeichnet wird, wobei jeder C-Zustand ein Niedrigenergieverbrauchspegel ist (sodass C6 ein niedrigerer Niedrigenergiezustand als C1 ist und so weiter). Beachten Sie, dass unter Verwendung der herabstufungsbasierten Techniken hierin C-Zustandsanfragen von dem OS zumindest teilweise auf Kundenanpassungsinformationen überschrieben werden können, die über eine Schnittstelle wie hierin beschrieben bereitgestellt werden.
-
Es ist zu verstehen, dass viele verschiedene Arten von Leistungsmanagementtechniken einzeln oder in Kombination in verschiedenen Ausführungsformen verwendet werden können. Als repräsentative Beispiele kann ein Leistungscontroller den Prozessor steuern, durch eine Form dynamischer Frequenzskalierung (DVFS) energieverwaltet zu sein, wobei eine Betriebsspannung und/oder Betriebsfrequenz eines oder mehrerer Kerne oder anderer Prozessorlogik dynamisch gesteuert werden kann, um den Energieverbrauch in bestimmten Situationen zu verringern. In einem Beispiel kann die DVFS unter Verwendung der Enhanced Intel SpeedStep™ Technologie erfolgen, die von der Intel Corporation, Santa Clara, CA, verfügbar ist, um eine optimale Leistung bei einem geringsten Energieverbrauchspegel zu erreichen. In einem anderen Beispiel kann die DVFS unter Verwendung von Intel TurboBoost™ Technologie ausgeführt werden, um es einem oder mehreren Kernen oder anderen Rechnerengines zu ermöglichen, bei höherer als der garantierten Betriebsfrequenz zu arbeiten, basierend auf Bedingungen (z. B. Workload und Verfügbarkeit).
-
Eine andere Leistungsmanagementtechnik, die in bestimmten Beispielen verwendet werden kann, ist das dynamische Austauschen von Workloads zwischen verschiedenen Rechnerengines. Beispielsweise kann der Prozessor symmetrische Kerne oder andere Verarbeitungsengines enthalten, die auf unterschiedlichen Energieverbrauchsebenen arbeiten, wie etwa so, dass in einer energiebeschränkten Situation eine oder mehrere Workloads dynamisch umgeschaltet werden können, um auf einem Kern oder einer anderen Rechnerengine mit niedrigerer Energie ausgeführt zu werden. Eine andere beispielhafte Leistungsmanagementtechnik ist Hardware-Duty-Cycling (HDC), was Kerne und/oder andere Rechnerengines veranlassen kann, periodisch nach einem Lastzyklus aktiviert und deaktiviert zu werden, sodass ein oder mehrere Kerne während eines inaktiven Zeitraums des Lastzyklus inaktiv geschaltet und während eines aktiven Zeitraums des Lastzyklus aktiv geschaltet werden können.
-
Leistungsmanagementtechniken können auch verwendet werden, wenn Einschränkungen in einer Betriebsumgebung bestehen. Wenn beispielsweise eine Leistung und/oder Wärmeeinschränkung auftritt, kann die Leistung durch Verringern der Betriebsfrequenz und/oder Spannung verringert werden. Andere Leistungsmanagementtechniken enthalten das Drosseln der Anweisungsausführungsrate oder das Einschränken der Anweisungsplanung. Noch weiter ist es möglich, dass Anweisungen einer bestimmten Anweisungssatzarchitektur ausdrückliche oder stillschweigende Anweisungen zu Leistungsmanagementfunktionen beinhalten. Wenn auch mit diesen speziellen Beispielen beschrieben, ist zu verstehen, dass viele andere Leistungsmanagementtechniken in bestimmten Ausführungsformen verwendet werden können.
-
Ausführungsformen können in Prozessoren für verschiedene Märkte umgesetzt werden, die Serverprozessoren, Desktopprozessoren, mobile Prozessoren und so weiter enthalten. Nun wird mit Verweis auf 2 ein Blockdiagramm eines Prozessors nach einer Ausführungsform der vorliegenden Erfindung dargestellt. Wie in 2 dargestellt, kann Prozessor 200 ein Mehrkernprozessor sein, der mehrere Kerne 210a bis 210n enthält. In einer Ausführungsform kann jeder solche Kern einer unabhängigen Energiedomäne angehören und konfiguriert sein, basierend auf der Workload in aktive Zustände und/oder Maximalleistungszustände einzutreten und diese zu verlassen. Ein oder mehrere Kerne 210 können heterogen für die anderen Kerne sein, z. B. mit verschiedenen Mikroarchitekturen, Anweisungssatzarchitekturen, Pipelinetiefen, Energie- und Leistungsfähigkeiten. Die verschiedenen Kerne können über eine Verbindung 215 mit einem Systemagenten oder Unkern 220 verbunden werden, der verschiedene Komponenten beinhaltet. Wie zu sehen ist, kann der Uncore 220 einen geteilten Cache 230 enthalten, der ein Cache der letzten Ebene sein kann. Weiterhin kann der Uncore eine integrierte Speichersteuerung 240 enthalten, um mit einem Systemspeicher zu kommunizieren (in 2), z. B. über einen Speicherbus. Der Unkern 220 enthält auch verschiedene Schnittstellen 250 und eine Leistungssteuereinheit 255, die Logik enthalten kann, um Leistungsmanagementtechniken durchzuführen, einschließlich automatischen Herabstufungstechniken, die zumindest teilweise auf einer vom Kunden bereitgestellten Anpassung wie hierin beschrieben basiert.
-
Weiterhin kann durch die Schnittstellen 250a bis 250n eine Verbindung mit verschiedenen Off-Chip-Komponenten wie peripheren Vorrichtungen, Massespeicher und so weiter hergestellt werden. Während er mit dieser bestimmten Umsetzung in der Ausführungsform von 2 dargestellt ist, ist der Umfang der vorliegenden Erfindung diesbezüglich nicht eingeschränkt.
-
Nun wird mit Verweis auf 3 ein Blockdiagramm eines Multidomain-Prozessors nach einer anderen Ausführungsform dieser Erfindung dargestellt. Wie in der Ausführungsform aus 3 dargestellt, enthält der Prozessor 300 mehrere Domänen. Spezifisch kann eine Kerndomäne 310 mehrere Kerne 310a bis 310n beinhalten, eine Grafikdomäne 320 kann eine oder mehrere Grafikengines beinhalten und eine Systemagentendomäne 350 kann ferner vorhanden sein. In einigen Ausführungsformen kann die Systemagentendomäne 350 bei einer unabhängigen Frequenz als die Kerndomäne ausführen und jederzeit aktiviert bleiben, um Energiesteuerereignisse und Leistungsmanagement zu handhaben, sodass die Domänen 310 und 320 gesteuert werden können, dynamisch in Hochenergie- und Niedrigenergiezustände ein- und auszutreten. Jede der Domänen 310 und 320 kann bei einer unterschiedlichen Spannung und/oder Energie funktionieren. Es ist zu beachten, dass die Darstellung zwar nur mit drei Domänen erfolgt, es ist jedoch zu verstehen, dass der Umfang der vorliegenden Erfindung diesbezüglich nicht eingeschränkt ist, und weitere Domänen in anderen Ausführungsformen vorhanden sein können. Beispielsweise können Multiplecore-Domänen vorhanden sein, die jeweils mindestens einen Kern enthalten.
-
Allgemein kann jeder Kern 310 ferner neben verschiedenen Ausführungseinheiten und weiteren Verarbeitungselementen Caches auf niedriger Ebene beinhalten. Wiederum können die verschiedenen Kerne miteinander oder mit einem geteilten Cachespeicher verbunden sein, der aus mehreren Einheiten eines Last-Level-Cache (LLC) 340a bis 340n gebildet wurde. In verschiedenen Ausführungsformen kann das LLC 340 unter den Kernen und der Grafikengine, sowie verschiedenen Medienverarbeitungsschaltungen geteilt werden. Wie zu sehen ist, verbindet eine Ringverbindung 330 so die Kerne miteinander und stellt eine Verbindung zwischen den Kernen, der Grafikdomäne 320 und den Systemagentschaltungen 350 her. In einer Ausführungsform kann die Verbindung 330 Teil der Kerndomäne sein. In anderen Ausführungsformen kann die Ringverbindung einer eigenen Domäne angehören.
-
Wie weiter gesehen, kann die Systemagentendomäne 350 einen Anzeigecontroller 352 enthalten, der die Steuerung von einer und eine Schnittstelle für eine assoziierte(n) Anzeige bereitstellen kann. Wie ferner gesehen, kann die Systemagentendomäne 350 eine Leistungssteuereinheit 355 enthalten, die eine Logik enthalten kann, um Leistungsmanagementtechniken auszuführen, einschließlich vom Kunden kontrollierbarer automatischer Herabstufungstechniken, die hierin beschrieben sind.
-
Wie ferner in 3 zu sehen ist, kann der Prozessor 300 ferner eine integrierte Speichersteuerung (IMC) 370 enthalten, die eine Schnittstelle mit einem Systemspeicher vorsehen kann, wie etwa einem Dynamischen Random Access Memory (DRAM). Mehrere Schnittstellen 380a bis 380n können vorhanden sein, um eine Verbindung zwischen dem Prozessor und anderen Schaltkreisen zu aktivieren. Beispielsweise kann in einer Ausführungsform mindestens eine Direktmedienschnittstellen- (DMI) Schnittstelle sowie eine oder mehrere PCIe™-Schnittstellen bereitgestellt sein. Noch weiter können, um Kommunikationen zwischen anderen Agenten wie etwa weiteren Prozessoren oder anderen Schaltungen vorzusehen, eine oder mehrere QPI-Schnittstellen ebenfalls bereitgestellt sein. Auch wenn sie in dieser hohen Ebene in der Ausführungsform von 3 dargestellt ist, ist der Umfang der vorliegenden Erfindung diesbezüglich nicht eingeschränkt.
-
Mit Verweis auf 4 ist eine Ausführungsform eines Prozessors, der mehrere Kerne enthält, dargestellt. Der Prozessor 400 enthält jeden Prozessor oder jede Verarbeitungsvorrichtung, wie etwa einen Mikroprozessor, einen eingebetteten Prozessor, einen digitalen Signalprozessor (DSP), einen Netzprozessor, einen tragbaren Prozessor, einen Anwendungsprozessor, einen Coprozessor, ein System auf einem Chip (SoC) oder eine andere Vorrichtung, um Code auszuführen. Prozessor 400 enthält in einer Ausführungsform mindestens zwei Kerne-Kerne 401 und 402, die asymmetrische Kerne oder symmetrische Kerne (die illustrierte Ausführungsform) enthalten können. Prozessor 400 kann jedoch jede Anzahl von Verarbeitungselementen enthalten, die symmetrisch oder asymmetrisch sein können.
-
In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik zur Unterstützung eines Software-Threads. Beispiele von Hardware-Verarbeitungselementen enthalten: eine Thread-Einheit, einen Thread-Slot, einen Thread, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen Logikprozessor, einen Hardware-Thread, einen Kern und/oder jedes andere Elemente, das in der Lage ist, einen Zustand für einen Prozessor zu halten, wie etwa einen Ausführungszustand oder architektonischen Zustand. In anderen Worten: ein Verarbeitungselement bezieht sich in einer Ausführungsform auf jede Hardware, die in der Lage ist, unabhängig mit Code assoziiert zu werden, wie etwa ein Software-Thread, ein Betriebssystem, eine Anwendung oder ein anderer Code. Ein physischer Prozessor bezieht sich typischerweise auf einen integrierten Schaltkreis, der potenziell jede Anzahl von anderen Verarbeitungselementen enthält, wie etwa Kerne oder Hardware-Threads.
-
Ein Kern bezieht sich oft auf eine Logik, die sich auf einem integrierten Schaltkreis befindet, der in der Lage einst, einen unabhängigen architektonischen Zustand zu erhalten, wobei jeder unabhängig gehaltene architektonische Zustand mit mindestens einigen speziellen Ausführungsressourcen zusammenhängt. Im Gegensatz zu Kernen, bezieht sich ein Hardware-Thread typischerweise auf jede Logik, die sich auf einem integrierten Schaltkreis befindet, der in der Lage ist, einen unabhängigen architektonischen Zustand zu erhalten, wobei die unabhängig erhaltenem architektonischen Zustand gemeinsam auf Ausführungsressourcen zugreifen. Wie zu sehen ist, überlappt sich die Linie zwischen der Benennung eines Hardware-Threads und eines Kerns, wenn bestimmte Ressourcen geteilt und andere speziell einem architektonischen Zustand zugeordnet sind. Oft werden jedoch ein Kern und ein Hardware-Thread durch ein Betriebssystem als einzelne logische Prozessoren betrachtet, wenn das Betriebssystem in der Lage ist, Funktionen einzelne auf jedem logischen Prozessor zu planen.
-
Ein physischer Prozessor 400, wie illustriert in 4, enthält zwei Kerne, Kerne 401 und 402. Hier werden die Kerne 401 und 402 als symmetrische Kerne betrachtet, d. h. Kerne mit denselben Konfigurationen, Funktionseinheiten und/oder derselben Logik. In einer anderen Ausführungsform enthält Kern 401 einen Prozessorkern außerhalb der Reihenfolge, während der Kern 402 einen Prozessorkern in Reihenfolge enthält. Die Kerne 401 und 402 können jedoch einzeln aus jeder Art von Kern gewählt werden, wie etwa einem nativen Kern, einem softwareverwalteten Kern, einem Kern, der angepasst ist, eine native Anweisungssatzarchitektur (ISA) auszuführen, einem Kern, der angepasst ist, eine übersetzte ISA auszuführen, einem co-designten Kern oder einem anderen bekannten Kern. Um die Diskussion noch weiter fortzusetzen, sind die Funktionseinheiten, die in Kern 401 illustriert sind, nachfolgend genauer beschrieben, da die Einheiten im Kern 402 auf ähnliche Weise funktionieren.
-
Wie dargestellt, enthält der Kern 401 zwei Hardwarethreads 401a und 401b, die auch als Hardwarethreadslots 401a und 401b bezeichnet werden können. Daher können Softwareeinheiten wie ein Betriebssystem in einer Ausführungsform potenziell Prozessor 400 als vier separate Prozessoren betrachten, d. h. vier logische Prozessoren oder Verarbeitungselemente, die in der Lage sind, vier Software-Threads gleichzeitig durchzuführen. Wie oben angedeutet, ist ein erster Thread mit Architekturzustandsregistern 401a assoziiert, ein zweiter Thread ist mit Architekturzustandsregistern 401b assoziiert, ein dritter Thread kann mit Architekturzustandsregistern 402a assoziiert sein und ein vierter Thread kann mit Architekturzustandsregistern 402b assoziiert sein. Hier kann jedes der Architekturzustandsregister (401a, 401b, 402a, und 402b) als Verarbeitungselemente, Thread-Slots oder Thread-Einheiten bezeichnet sein, wie oben beschrieben. Wie illustriert, werden die Architekturzustandsregister 401a in Architekturzustandsregistern 401b repliziert, sodass einzelne Architekturzustände/-zusammenhänge in der Lage sind, für den logischen Prozessor 401a und den logischen Prozessor 401b gespeichert zu werden. In Kern 401 können andere kleinere Ressourcen wie Anweisungspointers und Umbenennungslogik im Allokator- und Umbenennerblock 430 ebenfalls für die Threads 401a und 401b repliziert werden. Einige Ressourcen, wie Umsortierungspuffer in einer Umsortierungs-/Rücknahmeeinheit 435, Zweigzielpuffer und Anweisungsübersetzungs-Lookaside-Puffer (BTB und I-TLB) 420, Lade-/Speicherpuffer und Warteschlangen können durch Partitionierung geteilt werden. Andere Ressourcen, wie etwa interne Allzweckregister, Seitentabellenbasisregister, ein Datencache auf niedriger Ebene und Daten-TLB 450, Ausführungseinheit(en) 440, und Abschnitte der Einheit außerhalb der Reihenfolge 435 sind potenziell vollständig geteilt.
-
Der Prozessor 400 enthält oft andere Ressourcen, die vollständig geteilt, durch Partitionierung geteilt oder speziell durch/für Verarbeitungselemente vorgesehen sein können. In 4 ist eine Ausführungsform eines rein exemplarischen Prozessors mit illustrativen logischen Einheiten/Ressourcen eines Prozessors illustriert. Beachten Sie, dass ein Prozessor jede dieser Funktionseinheiten enthalten oder auslassen kann, sowie andere bekannte Funktionseinheiten, Logik oder Firmware, die nicht dargestellt sind, enthalten oder auslassen kann. Wie illustriert, enthält der Kern 401 einen vereinfachten, repräsentativen Out-of-Order- (OOO) Prozessorkern. Ein Prozessor innerhalb der Reihenfolge kann jedoch in anderen Ausführungsformen verwendet werden. Der OOO-Kern enthält einen Zweigzielpuffer 420 zum Vorhersagen von Zweigen, die ausgeführt/genommen werden sollen, und einen Anweisungsübersetzungspuffer (I-TLB) 420, um Adressübersetzungseinträge für Anweisungen zu speichern.
-
Der Kern 401 enthält ferner das Decodierungsmodul 425, verbunden mit einer Abrufeinheit zum Decodieren der abgerufenen Elemente. Die Abruflogik enthält in einer Ausführungsform einzelne Sequenzer, die mit Threadslots 401a bzw. 401b assoziiert sind. Üblicherweise ist der Kern 401 mit einer ersten ISA assoziiert, die Anweisungen definiert/spezifiziert, die auf Prozessor 400 ausführbar sind. Oft enthalten Maschinencodeanweisungen, die Teil der ersten ISA sind, einen Abschnitt der Anweisung (bezeichnet als ein Opcode), der sich auf eine Anweisung oder Funktion bezieht, die ausgeführt werden soll/diese spezifiziert. Die Decodierungslogik 425 enthält Schaltungen, die diese Anweisungen von ihren Opcodes erkennt und die decodierten Anweisungen in der Pipeline für die Verarbeitung weitergibt, wie durch die erste ISA definiert. Beispielsweise enthalten Decoder 425 in einer Ausführungsform eine Logik, die vorgesehen oder angepasst ist, um spezifische Anweisungen zu erkennen, wie etwa transaktionale Anweisungen. Als Ergebnis der Erkennung durch die Decoder 425, ergreift die Architektur oder der Kern 401 spezifische vordefinierte Aktionen zur Durchführung von Aufgaben, die mit den geeigneten Anweisungen assoziiert sind. Es ist wichtig, zu beachten, dass jede der Aufgaben, Blocks, Funktionen und Verfahren, die hierin beschrieben sind, in Reaktion auf eine einzige oder auf mehrere Anweisungen ausgeführt werden können; einige davon können neue oder alte Anweisungen sein.
-
In einem Beispiel enthält der Allokator- und Umbenennerblock 430 einen Allokator, um Ressourcen, wie etwa Registerdateien, zu reservieren, um Anweisungsverarbeitungsergebnisse zu speichern. Die Threads 401a und 401b sind jedoch potenziell in der Lage, eine Ausführung außerhalb der Reihenfolge durchzuführen, wenn der Allokator- und Umbenennerblock 430 ebenfalls andere Ressourcen reserviert, wie etwa Umsortierungspuffer zum Verfolgen von Anweisungsergebnissen. Einheit 430 kann außerdem einen Registerumbenenner enthalten, um Programm-/Anweisungsreferenzregister auf andere Register umzubenennen, die intern in Prozessor 400 vorhanden sind. Die Umsortierungs-/Rücknahmeeinheit 435 enthält Bauteile, wie etwa die oben genannten Umsortierungspuffer, und Speicherpuffer, um eine Ausführung außerhalb der Reihenfolge und später die Rücknahme der Anweisungen, die außerhalb der Reihenfolge ausgeführt wurden, in Reihenfolge, zu unterstützen.
-
Der Planer- und Ausführungseinheit(en)-Block 440 in einer Ausführungsform enthält eine Planereinheit zur Planung von Anweisungen/Betrieb der Ausführungseinheiten. Beispielsweise ist eine Floating-Point-Anweisung auf einem Port einer Ausführungseinheit geplant, der eine verfügbare Floating-Point-Ausführungseinheit aufweist. Registerdateien, die mit den Ausführungseinheiten assoziiert sind, sind ebenfalls enthalten, um Informationsanweisungsverarbeitungsergebnisse zu speichern. Beispielhafte Ausführungseinheiten enthalten eine Floating-Point-Ausführungseinheit, eine Integer-Ausführungseinheit, eine Sprung-Ausführungseinheit, eine Lade-Ausführungseinheit, eine Speicher-Ausführungseinheit und andere bekannte Ausführungseinheiten.
-
Ein Datencache auf niedriger Ebene und ein Datenübersetzungs-Lookaside-Puffer (D-TLB) 450 sind mit der oder den Ausführungseinheit(en) 440 verbunden. Der Datencache soll kürzlich verwendete/bediente Elemente verwenden, wie etwa Datenoperanden, die potenziell in Speicherkohärenzzuständen gehalten werden. Der D-TLB soll kürzliche virtuelle/zur physischen Adresse lineare Übersetzungen speichern. Als ein spezifisches Beispiel kann ein Prozessor eine Seitentabellenstruktur enthalten, um den physischen Speicher in mehrere virtuelle Seiten aufzubrechen.
-
Hier teilen sich die Kerne 401 und 402 Zugriff auf einen Cache 410, der auf höherer Ebene oder weiter weg ist, der die kürzlich abgerufenen Elemente cachen soll. Es ist zu beachten, dass sich höhere Ebene oder weiter weg auf Cacheebenen bezieht, die ansteigen oder sich weiter von der/den Ausführungseinheit(en) weg befinden. In einer Ausführungsform ist der Cache auf höherer Ebene 410 ein Last-Level Datencache-letzter Cache in der Speicherhierarchie auf dem Prozessor 400-wie etwa ein Datencache auf zweiter oder dritter Ebene. Ein Cache auf höherer Ebene 410 ist jedoch nicht so beschränkt, da er mit einem Anweisungscache assoziiert sein oder diesen enthalten kann. Ein TraceCache - eine Art von Anweisungscache - kann stattdessen hinter dem Decoder 425 verbunden sein, um kürzlich decodierte Traces zu speichern.
-
In der dargestellten Konfiguration enthält der Prozessor 400 auch den Busschnittstellenmodus 405 und eine Leistungssteuereinheit 460, die Leistungsmanagement nach einer Ausführungsform der vorliegenden Erfindung durchführt. In diesem Szenario soll die Busschnittstelle 405 mit Vorrichtungen kommunizieren, die außerhalb des Prozessors 400 liegen, wie etwa mit Systemspeicher und anderen Bauteilen.
-
Ein Speichercontroller 470 kann eine Schnittstelle mit anderen Vorrichtungen wie einem oder mehreren Speichern bilden. In einem Beispielbus enthält die Schnittstelle 405 eine Ringverbindung mit einer Speichersteuerung als Schnittstelle mit einem Speicher und einem Grafikcontroller als Schnittstelle mit einem Grafikprozessor. In einer SoC-Umgebung können noch mehr Vorrichtungen, wie etwa eine Netzwerkschnittstelle, Coprozessoren, Speicher, Grafikprozessor und alle anderen bekannten Computervorrichtungen/Schnittstelle auf einer einzelnen Matrize oder einem integrierten Schaltkreis integriert werden, um einen kleinen Formfaktor mit hoher Funktion und niedrigem Energieverbrauch bereitzustellen.
-
Nun wird mit Verweis auf 5 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns nach einer Ausführungsform der vorliegenden Erfindung dargestellt. Wie in 5 dargestellt, kann der Prozessorkern 500 ein mehrstufiger Prozessor außerhalb der Reihenfolge mit einer Pipeline sein. Kern 500 kann bei verschiedenen Spannungen funktionieren, basierend auf einer empfangenen Betriebsspannung, die von einem integrierten Spannungsregler oder einem externen Spannungsregler empfangen werden kann.
-
Wie in 5 zu sehen, enthält der Kern 500 Frontend-Einheiten 510, die verwendet werden können, um Anweisungen abzurufen, die ausführt werden sollen, und diese für die Verwendung später in der Prozessorpipeline vorzubereiten. Beispielsweise können Frontend-Einheiten 510 eine Abrufeinheit 501, einen Anweisungscache 503 und einen Anweisungsdecoder 505 enthalten. In einigen Umsetzungen können Frontend-Einheiten 510 ferner einen Tracecache enthalten, zusammen mit einem Microcodespeicher sowie einem Mikrofunktionsspeicher. Die Abrufeinheit 501 kann Makroanweisungen abrufen, z. B. von einem Speicher oder einem Anweisungscache 503, und kann sie an den Anweisungsdecoder 505 übermitteln, um sie in Primitive zu decodieren, d. h. Mikrofunktionen zur Ausführung durch den Prozessor.
-
Zwischen den Frontendeinheiten 510 und Ausführungseinheiten 520 ist eine Out-of-Order- (OOO) Engine 515 verbunden, die verwendet werden kann, die Mikroanweisungen zu empfangen und zur Ausführung vorzubereiten. Genauer gesagt kann die OOO-Engine 515 verschiedene Puffer enthalten, um den Mikroanweisungsablauf umzusortieren und verschiedene Ressourcen zuzuweisen, die zur Ausführung erforderlich sind, sowie die Umbenennung logischer Register auf Speicherorten innerhalb verschiedener Registerdateien wie Registerdatei 530 und der erweiterten Registerdatei 535 bereitzustellen. Registerdatei 530 kann separate Registerdateien für Integer- und Floating-Point-Funktionen enthalten. Zum Zweck der Konfiguration, Steuerung und weiterer Funktionen kann auch ein Satz maschinenspezifischer Register (MSRs) 538 vorhanden sein und für unterschiedliche Logik innerhalb des Kerns 500 (und außerhalb des Kerns) zugänglich sein.
-
Verschiedene Ressourcen können in Ausführungseinheiten 520 vorhanden sein, einschließlich beispielsweise verschiedener Integer-, Floating-Point- und Single-Instruction-Multiple-Data- (SIMD) Logikeinheiten, sowie weiterer spezialisierter Hardware. Beispielsweise können solche Ausführungseinheiten eine oder mehrere arithmetische Logikeinheiten (ALUs) 522 und eine oder mehrere Vektorausführungseinheiten 524, sowie andere solche Ausführungseinheiten enthalten.
-
Ergebnisse von Ausführungseinheiten können für die Rücknahmelogik bereitgestellt werden, namentlich für einen Umsortierungspuffer (ROB) 540. Genauer gesagt, kann der ROB 540 verschiedene Arrays und Logik enthalten, um Informationen zu empfangen, die mit Anweisungen assoziiert sind, die ausgeführt werden sollen. Diese Informationen werden dann durch den ROB 540 untersucht, um zu bestimmen, ob die Anweisungen gültig zurückgenommen werden und die Ergebnisdaten zu dem architektonischen Zustand des Prozessors zugewiesen werden können, oder ob eine oder mehrere Ausnahmen aufgetreten sind, die die korrekte Rücknahme der Anweisungen verhindern. Natürlich kann der ROB 540 andere Funktionen handhaben, die mit der Rücknahme assoziiert sind.
-
Wie in 5 dargestellt, ist der ROB 540 mit einem Cache 550 verbunden, der in einer Ausführungsform einen Cache auf niedrigerer Ebene (z. B. einen L1-Cache) aufweisen kann, obwohl der Umfang der vorliegenden Erfindung diesbezüglich nicht eingeschränkt ist. Außerdem können die Ausführungseinheiten 520 direkt mit Cache 550 verbunden sein. Von Cache 550 kann eine Datenkommunikation mit Caches höherer Ebene, Systemspeicher und so weiter erfolgen. Auch wenn sie in dieser hohen Ebene in der Ausführungsform von 5 dargestellt ist, ist der Umfang der vorliegenden Erfindung diesbezüglich nicht eingeschränkt. Beispielsweise ist, während die Umsetzung aus 5 sich auf eine Maschine außerhalb der Reihenfolge bezieht, wie etwa eine Intel® x86 Anweisungssatzarchitektur (ISA), der Umfang der vorliegenden Erfindung diesbezüglich nicht begrenzt. Dies heißt, dass andere Ausführungsformen als Prozessor in Reihenfolge, Reduced Instruction Set Computing (RISC) Prozessor wie etwa ein ARM-basierter Prozessor oder ein Prozessor eines anderen Typs von ISA, der Anweisungen und Funktionen einer anderen ISA über eine Emulierungsengine und assoziierte Logikschaltungen emulieren kann, umgesetzt sein können.
-
Nun wird mit Verweis auf 6 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns nach einer anderen Ausführungsform dargestellt. In der Ausführungsform aus 6 kann der Kern 600 ein Niedrigenergiekern einer anderen Mikroarchitektur sein, wie etwa ein Intel® Atom™-basierter Prozessor, der eine relativ begrenzte Pipelinetiefe aufweist, die vorgesehen ist, den Energieverbrauch zu verringern. Wie zu sehen ist, enthält Kern 600 einen Anweisungscache 610, der verbunden ist, um Anweisungen an einen Anweisungsdecoder 615 bereitzustellen. Ein Zweigprädiktor 605 kann mit dem Anweisungscache 610 verbunden sein. Es ist zu beachten, dass der Anweisungscache 610 ferner mit einer anderen Ebene von Cachespeicher verbunden sein kann, wie etwa mit einem L2-Cache (für einfachere Illustration nicht dargestellt in 6). Wiederum stellt der Anweisungsdecoder 615 decodierte Anweisungen an eine Ausgabewarteschlange (IQ) 620 zum Speichern und Liefern an eine gegebene Ausführungspipeline bereit. Ein Microcode-ROM 618 ist mit dem Anweisungsdecoder 615 verbunden.
-
Eine Floating-Point-Pipeline 630 enthält eine Floating-Point- (FP) Registerdatei 632, die mehrere architektonische Register eines bestimmten Bits enthalten kann, etwa mit 128, 256 oder 512 Bits. Pipeline 630 enthält einen Floating-Point-Planer 634 zur Planung von Anweisungen zur Ausführung auf einer von mehreren Ausführungseinheiten der Pipeline. In der dargestellten Ausführungsform enthalten solche Ausführungseinheiten eine ALU 635, eine Shuffle-Einheit 636, und einen Floating-Point-Addierer 638. Wiederum können die Ergebnisse, die in diesen Ausführungseinheiten erzeugt werden, zurück an die Puffer und/oder Register der Registerdatei 632 bereitgestellt werden. Natürlich ist zu verstehen, dass sie zwar mit diesen wenigen beispielhaften Ausführungseinheiten dargestellt sind, jedoch weitere oder andere Floating-Point-Ausführungseinheiten in einer anderen Ausführungsform vorhanden sein können.
-
Eine Integer-Pipeline 640 kann ebenfalls bereitgestellt sein. In der dargestellten Ausführungsform enthält die Pipeline 640 eine Integer- (INT) Registerdatei 642, die mehrere architektonische Register eines bestimmten Bits enthalten kann, etwa mit 128 oder 256 Bits. Die Pipeline 640 enthält einen Integerausführungs- (IE) Planer 644 zum Planen von Anweisungen zur Ausführung auf einer von mehreren Ausführungseinheiten der Pipeline. In der dargestellten Ausführungsform enthalten solche Ausführungseinheiten eine ALU 645, eine Verschiebeeinheit 646 und eine Sprungausführungseinheit (JEU) 648. Wiederum können die Ergebnisse, die in diesen Ausführungseinheiten erzeugt werden, zurück an die Puffer und/oder Register der Registerdatei 642 bereitgestellt werden. Natürlich ist zu verstehen, dass sie zwar mit diesen wenigen beispielhaften Ausführungseinheiten dargestellt sind, jedoch weitere oder andere Integer-Ausführungseinheiten in einer anderen Ausführungsform vorhanden sein können.
-
Ein Speicherausführungs- (ME) Planer 650 kann Speicherfunktionen zur Ausführung in einer Adresserzeugungseinheit (AGU) 652 planen, die ebenfalls mit einem TLB 654 verbunden ist. Wie zu sehen ist, können diese Strukturen sich mit einem Datencache 660 verbinden, der ein L0 und/oder L1-Datencache sein kann, der sich wiederum mit den weiteren Ebenen einer Cachespeicherhierarchie verbindet, einschließlich eines L2-Cachespeichers.
-
Um eine Out-of-Order-Ausführung zu unterstützen, kann ein Allokator/Umbenenner 670 bereitgestellt sein, sowie ein Umsortierungspuffer 680, der konfiguriert ist, Anweisungen umzusortieren, die außerhalb der Reihenfolge ausgeführt wurden, um sie in der Reihenfolge zurückzunehmen. Wenn auch mit dieser bestimmten Pipelinearchitektur in der Illustration von 6 dargestellt, ist zu verstehen, dass viele Variationen und Alternativen möglich sind.
-
Es ist zu beachten, dass in einem Prozessor, der asymmetrische Kerne aufweist, wie etwa nach den Mikroarchitekturen der 5 und 6, Workloads dynamisch zwischen den Kernen aus Gründen des Leistungsmanagements ausgetauscht werden können, da diese Kerne, auch wenn sie unterschiedliche Pipelinedesigns und -tiefen aufweisen, derselben oder einer verbundenen ISA angehören können. Solche dynamischen Kernaustausche können in einer Weise durchgeführt werden, die für eine Benutzeranwendung (und möglicherweise auch für einen Kernel) transparent sind.
-
Mit Verweis auf 7 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns nach noch einer anderen Ausführungsform dargestellt. Wie in 7 illustriert, kann ein Kern 700 eine mehrstufige Pipeline in Reihenfolge aufweisen, die bei sehr geringen Energieverbrauchswerten ausgeführt werden soll. Als ein solches Beispiel kann der Prozessor 700 eine Mikroarchitektur nach einem ARM Cortex A53 Design aufweisen, das von ARM Holdings, LTD., Sunnyvale, CA zur Verfügung steht. In einer Umsetzung kann eine 8-stufige Pipeline bereitgestellt sein, die konfiguriert ist, 32-bit- und 64-bit-Code gleichermaßen auszuführen. Kern 700 enthält Abrufeinheit 710, die konfiguriert ist, Anweisungen abzurufen und einer Decodierungseinheit 715 bereitzustellen, die die Anweisungen decodieren kann, z. B. Makroanweisungen einer bestimmten ISA wie einer ARMv8 ISA. Es ist ferner zu beachten, dass eine Warteschlange 730 sich mit der Decodierungseinheit 715 verbinden darf, um decodierte Anweisungen zu speichern. Decodierte Anweisungen werden an eine Ausgabelogik 725 bereitgestellt, wobei die decodierten Anweisungen an eine von mehreren Ausführungseinheiten gegeben werden können.
-
Mit weiterem Verweis auf 7 kann die Ausgabelogik 725 Anweisungen an eine von mehreren Ausführungseinheiten ausgeben. In der dargestellten Ausführungsform enthalten diese Ausführungseinheiten eine Integereinheit 735, eine Multiplikatoreinheit 740, eine Floating-Point/Vektoreinheit 750, eine Dualausgabeeinheit 760, und eine Lade-/Speichereinheit 770. Die Ergebnisse dieser verschiedenen Ausführungseinheiten können an die Writeback- (WB) Einheit 780 übergeben werden. Es ist zu verstehen, dass zwar eine einzige Writeback-Einheit für einfachere Illustration dargestellt ist, in einigen Umsetzungen jedoch separate Writeback-Einheiten mit jeder der Ausführungseinheiten assoziiert sein können. Weiterhin ist zu verstehen, dass zwar jede der Einheiten und Logik wie in 7 dargestellt, auf hoher Ebene repräsentiert ist, jedoch eine bestimmte Umsetzung mehr oder andere Strukturen enthalten kann. Ein Prozessor, der unter Verwendung eines oder mehrerer Kerne entworfen wurde, die eine Pipeline aufweisen, wie in 7 dargestellt, kann in vielen verschiedenen Endprodukten umgesetzt sein, die von mobilen Vorrichtungen bis zu Serversystemen reichen.
-
Mit Verweis auf 8 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns nach noch einer weiteren Ausführungsform dargestellt. Wie in 8 dargestellt, kann ein Kern 800 eine mehrstufige Mehrfachausgabepipeline außerhalb der Reihenfolgen enthalten, um bei sehr hohen Leistungsebenen ausgeführt zu werden (die bei höheren Energieverbrauchsebenen auftreten können als Kern 700 von 7). Als ein solches Beispiel kann der Prozessor 800 eine Mikroarchitektur nach einem ARM Cortex A57 Design aufweisen. In einer Umsetzung kann eine 15-(oder mehr) stufige Pipeline bereitgestellt sein, die konfiguriert ist, um 32-bit- und 64-bit-Code gleichermaßen auszuführen. Weiterhin kann die Pipeline eine 3 (oder mehr) breite und 3 (oder mehr)-Ausgabefunktion vorsehen. Kern 800 enthält eine Abrufeinheit 810, die konfiguriert ist, Anweisungen abzurufen und dann einer Decoder-/Umbenenner-/Absendereinheit 815 bereitzustellen, die mit einem Cache 820 verbunden ist. Einheit 815 kann die Anweisungen decodieren, z. B. Makroanweisungen einer ARMv8-Anweisungssatzarchitektur, Registerverweise innerhalb der Anweisungen umbenennen und die Anweisungen (schließlich) an eine ausgewählte Ausführungseinheit versenden. Decodierte Anweisungen können in einer Warteschlange 825 gespeichert werden. Es ist zu beachten, dass, während eine einzige Warteschlangenstruktur für einfachere Illustration in 8 dargestellt wird, zu verstehen ist, dass getrennte Warteschlangen für jede der mehreren verschiedenen Arten von Ausführungseinheiten bereitgestellt werden können.
-
Ebenfalls in 8 ist eine Ausgabelogik 830 gezeigt, von der decodierte Anweisungen, die in Warteschlange 825 gespeichert sind, an eine ausgewählte Ausführungseinheit ausgegeben werden können. Die Ausgabelogik 830 kann in einer bestimmten Ausführungsform mit einer eigenen Ausgabelogik für jeden der mehreren verschiedenen Typen der Ausführungseinheiten bereitgestellt werden, mit denen sich die Ausgabelogik 830 verbindet.
-
Decodierte Anweisungen können an eine gegebene von mehreren Ausführungseinheiten ausgegeben werden. In der dargestellten Ausführungsform enthalten diese Ausführungseinheiten eine oder mehrere Integereinheiten 835, eine Multiplikatoreinheit 840, eine Floating-Point/Vektoreinheit 850, eine Zweigeinheit 860, und eine Lade-/Speichereinheit 870. In einer Ausführungsform kann die Floating-Point/Vektoreinheit 850 konfiguriert sein, SIMD oder Vektordaten von 128 oder 256 Bits zu handhaben. Noch weiter kann die Floating-Point/Vektorausführungseinheit 850 IEEE-754 Doppelpräzisions-Floating-Point-Funktionen ausführen. Die Ergebnisse dieser verschiedenen Ausführungseinheiten können einer Writeback-Einheit 880 bereitgestellt werden. Es ist zu beachten, dass in einigen Umsetzungen separate Writeback-Einheiten mit jeder der Ausführungseinheiten assoziiert sein können. Weiterhin ist zu verstehen, dass zwar jede der Einheiten und Logik wie in 8 dargestellt auf hoher Ebene repräsentiert ist, jedoch eine bestimmte Umsetzung mehr oder andere Strukturen enthalten kann.
-
Es ist zu beachten, dass in einem Prozessor, der asymmetrische Kerne aufweist, wie etwa nach den Mikroarchitekturen der 7 und 8, Workloads dynamisch aus Gründen des Leistungsmanagements ausgetauscht werden können, da diese Kerne, auch wenn sie unterschiedliche Pipelinedesigns und -tiefen aufweisen, derselben oder einer verbundenen ISA angehören können. Solche dynamischen Kernaustausche können in einer Weise durchgeführt werden, die für eine Benutzeranwendung (und möglicherweise auch für einen Kernel) transparent sind.
-
Ein Prozessor, der unter Verwendung von einem oder mehreren Kernen entworfen wurde, die Pipelines aufweisen, wie in einer oder mehreren der 5 bis 8 dargestellt, kann in vielen verschiedenen Endprodukten umgesetzt sein, die von mobilen Vorrichtungen bis zu Serversystemen reichen. Nun wird mit Verweis auf 9 ein Blockdiagramm eines Prozessors nach einer anderen Ausführungsform der vorliegenden Erfindung dargestellt. In der Ausführungsform aus 9 kann der Prozessor 900 ein SoC sein, der mehrere Domänen enthält, von denen jede gesteuert werden kann, um mit einer unabhängigen Betriebsspannung und Betriebsfrequenz zu funktionieren. Als ein spezifisches illustratives Beispiel kann der Prozessor 900 ein Intel® Architecture Core™-basierter Prozessor sein, wie etwa ein i3, i5, i7 oder ein anderer solcher Prozessor, der von der Intel Corporation zur Verfügung steht. Andere Niedrigenergieprozessoren, wie etwa von Advanced Micro Devices, Inc. (AMD) von Sunnyvale, CA, erhältlich, ein ARM-basiertes Design von ARM Holdings, Ltd. oder einem Lizenznehmer davon, oder ein MIPS-basiertes Design von MIPS Technologies, Inc. von Sunnyvale, CA, oder deren Lizenznehmern oder Übernehmern, können jedoch stattdessen in anderen Ausführungsformen vorhanden sein, wie etwa ein Apple A7 Prozessor, ein Qualcomm Snapdragon Prozessor oder ein Texas Instruments OMAP Prozessor. Ein solcher SoC kann in einem System mit niedriger Energie verwendet werden, wie etwa einem Smartphone, Tabletcomputer, Phabletcomputer, Ultrabook™-Computer oder einer anderen tragbaren Rechnervorrichtung, die ein auf einer heterogenen Systemarchitektur basierendes Prozessordesign umfassen kann.
-
In der Ansicht der hohen Ebene aus 9 enthält der Prozessor 900 mehrere Kerneinheiten 910a bis 910n. Jede Kerneinheit kann einen oder mehrere Prozessorkerne, einen oder mehrere Cachespeicher und andere Schaltungen enthalten. Jede Kerneinheit 910 kann einen oder mehrere Anweisungssätze (z. B. einen x86 Anweisungssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden); einen MIPS-Anweisungssatz; einen ARM-Anweisungssatz (mit optionalen weiteren Erweiterungen wie NEON)) oder einen anderen Anweisungssatz oder Kombinationen davon unterstützen. Es ist zu beachten, dass einige der Kerneinheiten heterogene Ressourcen sein können (z. B. eines anderen Designs). Weiterhin kann jeder solche Kern mit einem Cachespeicher (nicht dargestellt) verbunden werden, der in einer Ausführungsform ein geteilter Cachespeicher der Ebene zwei (L2) sein kann. Ein nichtflüchtiger Speicher 930 kann verwendet werden, um verschiedene Programm- und andere Daten zu speichern. Beispielsweise kann dieser Speicher verwendet werden, um mindestens Abschnitte von Microcode, Bootinformationen wie ein BIOS, andere Systemsoftware oder anderes zu speichern.
-
Jede Kerneinheit 910 kann ebenfalls eine Schnittstelle wie eine Busschnittstelleneinheit enthalten, um die Verbindung mit weiteren Schaltkreisen des Prozessors zu ermöglichen. In einer Ausführungsform verbindet sich jede Kerneinheit 910 mit einem kohärenten Gewebe, das als primäre cachekohärente Verbindung auf der Matrize dienen kann, die sich wiederum mit einer Speichersteuerung 935 verbindet. Wiederum steuert die Speichersteuerung 935 Kommunikationen mit einem Speicher wie einem DRAM (für einfachere Illustration nicht dargestellt in 9).
-
Neben den Kerneinheiten sind weitere Verarbeitungsengines innerhalb des Prozessors vorhanden, einschließlich mindestens einer Grafikeinheit 920, die eine oder mehrere Grafikverarbeitungseinheiten (GPUs) enthalten kann, um die Grafikverarbeitung durchzuführen, sowie Mehrzweckfunktionen auf dem Grafikprozessor auszuführen (sogenannte GPGPU-Funktion). Weiterhin kann mindestens ein Bildsignalprozessor 925 vorhanden sein. Der Signalprozessor 925 kann konfiguriert sein, eingehende Bilddaten zu verarbeiten, die von einer oder mehreren Erfassungsvorrichtungen empfangen wurden, entweder intern auf dem SoC oder außerhalb des Chips.
-
Andere Beschleuniger können ebenfalls vorhanden sein. In der Illustration aus 9 kann ein Videocoder 950 Codierungsfunktionen ausführen, einschließlich der Codierung und Decodierung für Videoinformationen, z. B. durch Bereitstellung von Hardwarebeschleunigungssupport für High-Definition-Videoinhalte. Ein Anzeigecontroller 955 kann ferner bereitgestellt sein, um die Anzeigefunktionen zu beschleunigen, einschließlich der Bereitstellung von Support für interne und externe Anzeigen eines Systems. Weiterhin kann ein Sicherheitsprozessor 945 vorhanden sein, um Sicherheitsfunktionen auszuführen, wie etwa sichere Bootfunktionen, verschiedene Kryptografiefunktionen und so weiter.
-
Für jede der Einheiten kann der Stromverbrauch über den Leistungsmanager 940 gesteuert werden, der eine Steuerlogik enthalten kann, um die verschiedenen darin beschriebenen Leistungsmanagementtechniken zu enthalten.
-
In einigen Ausführungsformen kann SoC 900 ferner ein nicht kohärentes Gewebe enthalten, das mit dem kohärenten Gewebe verbunden ist, mit dem sich verschiedene periphere Vorrichtungen verbinden können. Eine oder mehrere Schnittstellen 960a bis 960d ermöglichen die Kommunikation mit einer oder mehreren Vorrichtungen außerhalb des Chips. Solche Kommunikationen können über eine Vielzahl von Kommunikationsprotokollen wie PCIe™, GPIO, USB, I2C, UART, MIPI, SDIO, DDR, SPI, HDMI und andere Arten von Kommunikationsprotokollen erfolgen. Auch wenn sie in dieser hohen Ebene in der Ausführungsform von 9 dargestellt ist, ist der Umfang der vorliegenden Erfindung diesbezüglich nicht eingeschränkt.
-
Nun wird mit Verweis auf 10 ist ein Blockdiagramm eines repräsentativen SoC dargestellt. In der dargestellten Ausführungsform kann SoC 1000 ein Multicore-SoC sein, konfiguriert zur Funktion mit niedriger Energie zur Optimierung für den Einbau in ein Smartphone oder eine andere Niedrigenergievorrichtung wie etwa einen Tabletcomputer oder eine andere tragbare Computervorrichtung. Beispielsweise kann das SoC 1000 unter Verwendung asymmetrischer oder anderer Arten von Kernen umgesetzt werden, wie etwa Kombinationen von Hochenergie- und/oder Niedrigenergiekernen, z. B. Kernen außerhalb der Reihenfolge und Kernen in Reihenfolge. In verschiedenen Ausführungsformen können diese Kerne auf einem Intel® Architecture™ Kerndesign oder einem ARM-Architekturdesign basieren. In noch anderen Ausführungsformen kann eine Mischung aus Intel- und ARM-Kernen in einem bestimmten SoC umgesetzt sein.
-
Wie in 10 gesehen, enthält SoC 1000 eine erste Kerndomäne 1010 mit mehreren ersten Kernen 1012a - 1012d. In einem Beispiel können diese Kerne Kerne mit niedriger Leistung sein, wie etwa Kerne in der Reihenfolge. In einer Ausführungsform können diese ersten Kerne als ARM Cortex A53 Kerne umgesetzt sein. Diese Kerne wiederum verbinden sich mit einem Cachespeicher 1015 der Kerndomäne 1010. Weiterhin enthält das SoC 1000 eine zweite Kerndomäne 1020. In der Illustration aus 10 weist die zweite Kerndomäne 1020 mehrere zweite Kerne 1022a bis 1022d auf. In einem Beispiel können diese Kerne Kerne sein, die mehr Energie verbrauchen, als die ersten Kerne 1012. In einer Ausführungsform können die zweiten Kerne Kerne außerhalb der Reihenfolge sein, die als ARM Cortex A57 Kerne umgesetzt sind. Diese Kerne wiederum verbinden sich mit einem Cachespeicher 1025 der Kerndomäne 1020. Es ist zu beachten, dass zwar das in 10 dargestellte Beispiel 4 Kerne in jeder Domäne enthält, es jedoch zu verstehen ist, dass mehr oder weniger Kerne in anderen Beispielen in einer jeweiligen Domäne vorhanden sein können.
-
Mit weiterem Verweis auf 10 ist auch eine Grafikdomäne 1030 bereitgestellt, die eine oder mehrere Grafikverarbeitungseinheiten (GPUs) enthalten kann, die konfiguriert sind, unabhängig Grafikworkloads auszuführen, die z. B. durch einen oder mehrere Kerne der Kerndomänen 1010 und 1020 bereitgestellt sind. Beispielsweise kann die GPU-Domäne 1030 verwendet werden, um Anzeigesupport für verschiedene Bildschirmgrößen bereitzustellen, neben der Bereitstellung von Grafik- und Anzeigerenderingfunktionen.
-
Wie zu sehen ist, verbinden sich die verschiedenen Domänen mit einer kohärenten Verbindung 1040, die in einer Ausführungsform ein cachekohärentes Verbindungsgewebe sein kann, das sich wiederum mit einem integrierten Speichercontroller 1050 verbindet. Die kohärente Verbindung 1040 kann in einigen Beispielen einen geteilten Cachespeicher enthalten, wie etwa einen L3-Cache. In einer Ausführungsform kann die Speichersteuerung 1050 eine direkte Speichersteuerung sein, um mehrere Kommunikationskanäle mit einem Speicher außerhalb des Chips bereitzustellen, wie etwa mehrere Kanäle eines DRAM (für einfachere Illustration nicht dargestellt in 10).
-
In verschiedenen Beispielen kann die Anzahl der Kerndomänen schwanken. Beispielsweise kann für ein Niedrigenergie-SoC, das sich für den Einbau in eine mobile Rechnervorrichtung eignet, eine eingeschränkte Anzahl von Kerndomänen vorhanden sein, wie in 10 dargestellt. Noch weiter kann in solchen Niedrigenergie-SoCs die Kerndomäne 1020 mit Kernen höherer Energie eine geringe Anzahl solcher Kerne aufweisen. Beispielsweise können in einer Umsetzung zwei Kerne 1022 bereitgestellt sein, um die Funktion bei verringerter Energieverbrauchsebene zu ermöglichen. Weiterhin können die verschiedenen Kerndomänen auch mit einem Unterbrechungscontroller gekoppelt sein, um einen dynamischen Austausch von Workloads zwischen den unterschiedlichen Domänen zu erlauben.
-
In noch anderen Ausführungsformen kann eine größere Anzahl von Kerndomänen, sowie weitere optionale IP-Logik vorhanden sein, indem ein SoC für höhere Leistungs- (und Energie-) Ebenen skaliert werden kann, um in andere Rechnervorrichtungen eingeschlossen zu werden, wie etwa Desktops, Server, Hochleistungsrechnersysteme, Basisstationen weiter. In einem solchen Beispiel können 4 Kerndomänen, die jeweils eine gegebene Anzahl von Kernen außerhalb der Reihenfolge aufweisen, bereitgestellt sein. Noch weiter kann/können neben der optionalen GPU-Unterstützung (die beispielsweise die Form einer GPGPU haben kann), ein oder mehrere Beschleuniger zur Bereitstellung optimierter Hardwareunterstützung für bestimmte Funktionen (z. B. Webserving, Netzwerkverarbeitung, Switching und so weiter) ebenfalls bereitgestellt werden. Weiterhin kann eine Eingabe-/Ausgabeschnittstelle vorhanden sein, um solche Beschleuniger mit Bauteilen außerhalb des Chips zu verbinden.
-
Nun wird mit Verweis auf 11 ist ein Blockdiagramm eines beispielhaften SoC dargestellt. In der Ausführungsform aus 11 kann das SoC 1100 verschiedene Schaltungen umfassen, um eine hohe Leistung für Multimediaanwendungen, Kommunikation und andere Funktionen bereitzustellen. So eignet sich das SoC 1100 für den Einbau in eine große Vielzahl von tragbaren und anderen Vorrichtungen, wie etwa Smartphones, Tabletcomputer, Smart-TVs und so weiter. In dem dargestellten Beispiel enthält das SoC 1100 eine zentrale Prozessoreinheiten- (CPU) Domäne 1110. 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 Quadcore-Prozessor sein, der 4 Multithreaded-Kerne aufweist. Solche Prozessoren können homogene oder heterogene Prozessoren sein, z. B. eine Mischung von Niedrigenergie- und Hochenergieprozessorkernen.
-
Wiederum ist eine GPU-Domäne 1120 bereitgestellt, um fortschrittliche Grafikverarbeitung in einer oder mehreren GPUs umzusetzen, um Grafiken zu handhaben und APIs zu berechnen. Eine DSP-Einheit 1130 kann eine oder mehrere Niedrigenergie-DSPs für die Handhabung von Niedrigenergie-Multimedia-Anwendungen wie Abspielen von Musik, Audio/Video und so weiter bereitstellen, neben fortschrittlichen Berechnungen, die während der Ausführung von Multimedienanweisungen auftreten können. Wiederum kann eine Kommunikationseinheit 1140 verschiedene Bauteile enthalten, um eine Konnektivität über verschiedene Drahtlosprotokolle bereitzustellen, wie etwa Handykommunikationen (einschließlich 3G/4G LTE), drahtlose Local-Area-Protokolle wie Bluetooth™, IEEE 802.11, und so weiter.
-
Noch weiter kann ein Multimediaprozessor 1150 verwendet werden, um die Erfassung und das Abspielen von Video- und Toninhalten mit hoher Auflösung durchzuführen, einschließlich der Verarbeitung von Handgesten des Benutzers. Eine Sensoreinheit 1160 kann mehrere Sensoren und/oder einen Sensorcontroller als Schnittstelle mit verschiedenen Sensoren außerhalb des Chips enthalten, die in einer gegebenen Plattform vorhanden sind. Ein Bildsignalprozessor 1170 kann mit einer oder mehreren separaten ISPs versehen sein, um Bildverarbeitung bezüglich der erfassten Inhalte von einer oder mehreren Kameras einer Plattform bereitzustellen, einschließlich Standbild- und Videokameras.
-
Ein Anzeigeprozessor 1180 kann die Verbindung mit einer hochauflösenden Anzeige einer bestimmten Pixeldichte bereitstellen, einschließlich der Fähigkeit, drahtlos Inhalte zum Abspielen auf einer solchen Anzeige zu kommunizieren. Noch weiter kann eine Ortseinheit 1190 einen GPS-Empfänger enthalten, mit Unterstützung für mehrere GPS-Konstellationen, um Anwendungen mit hochgenauen Positionierungsinformationen zu versorgen, die unter Verwendung als solchem GPS-Empfänger erhalten wurden. Es ist zu verstehen, dass zwar dieser spezielle Satz Bauteile in dem Beispiel von 11 dargestellt ist, jedoch viele Variationen und Alternativen möglich sind.
-
Nun wird mit Verweis auf 12 ist ein Blockdiagramm eines beispielhaften Systems, mit dem Ausführungsformen verwendet werden können, dargestellt. Wie zu sehen ist, kann System 1200 ein Smartphone oder anderer Drahtloskommunikator sein. Ein Baseband-Prozessor 1205 ist konfiguriert zur Durchführung verschiedener Signalverarbeitungen bezüglich der Kommunikationssignale, die von dem System übermittelt oder durch dieses empfangen werden sollen. Wiederum ist der Baseband-Prozessor 1205 mit einem Anwendungsprozessor 1210 verbunden, der eine Haupt-CPU des Systems darstellen kann, um ein OS und andere Systemsoftware auszuführen, neben Benutzeranwendungen wie vielen bekannten sozialen Medien und Multimedia-Apps. Der Anwendungsprozessor 1210 kann ferner konfiguriert sein, um eine Vielzahl anderer Rechnerfunktionen für die Vorrichtung auszuführen.
-
Wiederum kann der Anwendungsprozessor 1210 sich mit einer Benutzerschnittstelle/-anzeige 1220, z. B. einer Touchscreenanzeige, verbinden. Weiterhin kann der Anwendungsprozessor 1210 sich mit einem Speichersystem verbinden, das einen nichtflüchtigen Speicher enthält, namentlich einen Flashspeicher 1230, und einen Systemspeicher, namentlich einen dynamischen Random Access Memory (DRAM) 1235. Wie weiter zu sehen ist, verbindet sich der Anwendungsprozessor 1210 ferner mit einer Erfassungsvorrichtung 1240 wie einer oder mehreren Bilderfassungsvorrichtungen, die Video und/oder Standbilder aufzeichnen können.
-
Immer noch mit Verweis auf 12 ist eine Universal Intergrated Circuit Card (UICC) 1240, die ein Subscriber-Identity-Module und möglicherweise einen sicheren Speicher und Kryptoprozessor umfasst, auch mit dem Anwendungsprozessor 1210 verbunden. System 1200 kann ferner einen Sicherheitsprozessor 1250 enthalten, der sich mit dem Anwendungsprozessor 1210 verbinden kann. Mehrere Sensoren 1225 können sich mit dem Anwendungsprozessor 1210 verbinden, um Eingaben von verschiedenen erkannten Informationen zu ermöglichen, wie etwa Beschleunigungsmesser- und andere Umweltinformationen. Eine Audioausgabevorrichtung 1295 kann eine Schnittstelle bereitstellen, um Ton auszugeben, z. B. in der Form einer Stimmkommunikation, abgespielter oder Streamingaudiodaten und so weiter.
-
Wie weiter illustriert, ist eine kontaktfreie Near-Field-Communication- (NFC) Schnittstelle 1260 bereitgestellt, die in einem NFC Near-Field über eine NFC-Antenne 1265 kommuniziert. Während separate Antennen in 12 dargestellt sind, ist zu verstehen, dass in einigen Umsetzungen eine Antenne oder ein anderer Satz Antennen bereitgestellt sein kann, um verschiedene Drahtlosfunktionen zu ermöglichen.
-
Ein leistungsmanagementintegrierter Schaltkreis (PMIC) 1215 verbindet sich mit dem Anwendungsprozessor 1210, um Leistungsmanagement auf Plattformebene durchzuführen. Dazu kann der PMIC 1215 Leistungsmanagementanfragen an den Anwendungsprozessor 1210 ausgeben, um in bestimmte Niedrigenergiezustände wie gewünscht einzutreten. Weiterhin kann auf Grundlage von Plattformeinschränkungen PMIC 1215 auch den Energiepegel anderer Bauteile des Systems 1200 steuern.
-
Um das Übertragen und Senden und Empfangen der Kommunikation zu ermöglichen, können verschiedene Schaltkreise zwischen dem Baseband-Prozessor 1205 und einer Antenne 1290 verbunden werden. Speziell können ein Radiofrequenz- (RF) Transceiver 1270 und ein Wireless Local Area Network (WLAN) Transceiver 1275 vorhanden sein. Allgemein kann der RF-Transceiver 1270 verwendet werden, um drahtlose Daten und Anfrage nach einem bestimmten drahtlosen Kommunikationsprotokoll wie etwa das 3G- oder 4G-Drahtloskommunikationsprotokoll zu empfangen und zu übermitteln, wie etwa nach einem Code Division Multiple Access (CDMA), Global System for mobile Communication (GSM), Long Term Evolution (LTE) oder einem anderen Protokoll. Weiterhin kann ein GPS-Sensor 1280 vorhanden sein. Andere drahtlose Kommunikationen wie der Empfang oder die Übertragung von Funksignalen, z. B. AM/FM und andere Signale, können ebenfalls bereitgestellt sein. Weiterhin können auch über WLAN-Transceiver 1275 örtliche Drahtloskommunikationen realisiert werden.
-
Nun wird mit Verweis auf 13 ist ein Blockdiagramm eines anderen beispielhaften Systems, mit dem die Ausführungsformen verwendet werden können, dargestellt. In der Illustration aus 13 kann System 1300 ein mobiles Niedrigenergiesystem sein, wie etwa ein Tabletcomputer, 2:1-Tablet, Phablet oder ein anderes umwandelbares oder eigenständiges Tabletsystem. Wie dargestellt, ist ein SoC 1310 vorhanden und kann konfiguriert sein, als Anwendungsprozessor für die Vorrichtung zu dienen.
-
Eine Vielzahl von Vorrichtungen kann sich mit SoC 1310 verbinden. In der dargestellten Illustration enthält ein Speicheruntersystem einen Flashspeicher 1340 und einen DRAM 1345, der mit dem SoC 1310 verbunden ist. Weiterhin ist ein Touchpanel 1320 mit dem SoC 1310 verbunden, um eine Anzeigefähigkeit und Benutzereingaben über Berührung bereitzustellen, einschließlich der Bereitstellung einer virtuellen Tastatur an einer Anzeige des Touchpanels 1320. Um eine verkabelte Netzwerkkonnektivität bereitzustellen, verbindet sich das SoC 1310 mit einer Ethernet-Schnittstelle 1330. Ein peripherer Hub 1325 ist mit dem SoC 1310 verbunden, um die Schnittstelle mit verschiedenen peripheren Vorrichtungen zu ermöglichen, die etwa durch einen von verschiedenen Ports oder anderen Anschlüssen mit dem System 1300 verbunden sein können.
-
Neben den inneren Leistungsmanagementschaltkreisen und Funktionen innerhalb von SoC 1310 ist ein PMIC 1380 mit dem SoC 1310 verbunden, um plattformbasiertes Leistungsmanagement bereitzustellen, z. B. darauf basierend, ob das System durch eine Batterie 1390 oder AC-Leistung über einen AC-Adapter 1395 betrieben wird. Neben diesem energiequellenbasierten Leistungsmanagement kann der PMIC 1380 ferner Plattformleistungsmanagementaktivitäten auf Grundlage von Umwelt- und Verwendungsbedingungen durchführen. Noch ferner kann der PMIC 1380 Steuer- und Statusinformationen an das SoC 1310 kommunizieren, um verschiedene Leistungsmanagementaktionen innerhalb des SoC 1310 auszulösen.
-
Inner noch mit Verweis auf 13 ist, um Drahtlosfähigkeiten bereitzustellen, eine WLAN-Einheit 1350 mit dem SoC 1310 und wiederum mit einer Antenne 1355 verbunden. In verschiedenen Umsetzungen kann die WLAN-Einheit 1350 eine Kommunikation nach einem oder mehreren Drahtlosprotokollen vorsehen.
-
Wie weiter illustriert, können mehrere Sensoren 1360 sich mit dem SoC 1310 verbinden. Diese Sensoren können verschiedene Beschleunigungsmesser, Umwelt- und andere Sensoren, einschließlich Benutzergestensensoren enthalten. Schließlich ist ein Audiocodec 1365 mit dem SoC 1310 verbunden, um eine Schnittstelle mit einer Audioausgabevorrichtung 1370 bereitzustellen. Natürlich ist zu verstehen, dass zwar diese spezielle Umsetzung in 13 dargestellt ist, jedoch viele Variationen und Alternativen möglich sind.
-
Nun ist mit Verweis auf 14 ein Blockdiagramm eines repräsentativen Computersystems wie eines Notebook, Ultrabook™ oder eines anderen kleinen Formfaktorsystems zu sehen. Ein Prozessor 1410 in einer Ausführungsform enthält einen Mikroprozessor, Multicore-Prozessor, Multithreaded-Prozessor, Ultraniederspannungsprozessor, einen eingebetteten Prozessor oder ein anderes bekanntes Verarbeitungselement. In der illustrierten Umsetzung wirkt der Prozessor 1410 als eine Hauptverarbeitungseinheit und ein zentraler Knoten für die Kommunikation mit vielen der verschiedenen Komponenten des Systems 1400, und kann Leistungsmanagementschaltkreise enthalten, wie hierin beschrieben. Als ein Beispiel ist der Prozessor 1410 als ein SoC umgesetzt.
-
Der Prozessor 1410 kommuniziert in einer Ausführungsform mit einem Systemspeicher 1415. Als ein illustratives Beispiel ist der Systemspeicher 1415 über mehrere Speichervorrichtungen oder Module umgesetzt, um eine gegebene Menge an Systemspeicher bereitzustellen.
-
Um einen persistenten Speicher für Informationen wie Daten, Anwendungen, ein oder mehrere Betriebssysteme und so weiter bereitzustellen, kann auch ein Massespeicher 1420 mit dem Prozessor 1410 verbunden werden. In verschiedenen Ausführungsformen kann dieser Massespeicher, um ein dünneres und leichteres Systemdesign zu ermöglichen und um die Systemreaktivität zu verbessern, über eine SSD umgesetzt sein, oder der Massespeicher kann vornehmlich unter Verwendung eines Festplattenlaufwerks (HDD) mit einer kleineren Menge an SSD-Speicher umgesetzt sein, der als SSD-Cache dient, um nichtflüchtige Speicherung von Kontextzustand und anderen solchen Informationen während Abschaltereignissen zu ermöglichen, sodass eine schnelle Einschaltung bei Neustart der Systemaktivitäten erfolgen kann. Ebenfalls in 14 dargestellt, kann eine Flashvorrichtung 1422 mit dem Prozessor 1410 verbunden sein, z. B. über eine serielle periphere Schnittstelle (SPI). Diese Flashvorrichtung kann nichtflüchtigen Speicher für Systemsoftware bereitstellen, einschließlich einer grundlegenden Basic Input/Output Software (BIOS) sowie anderer Firmware des Systems.
-
Verschiedene Ein-/Ausgabe- (E/A-) Vorrichtungen können innerhalb des Systems 1400 vorhanden sein. Speziell ist in der Ausführungsform aus 14 eine Anzeige 1424 dargestellt, die ein Hochauflösungs-LCD- oder LED-Panel sein kann, das ferner einen Touchscreen 1425 vorsieht. In einer Ausführungsform kann die Anzeige 1424 mit Prozessor 1410 über eine Anzeigeverbindung verbunden sein, die als Hochleistungsgrafikverbindung umgesetzt sein kann. Der Touchscreen 1425 kann mit dem Prozessor 1410 über eine andere Verbindung verbunden sein, die in einer Ausführungsform eine I2C-Verbindung sein kann. Wie ferner in 14 dargestellt, kann neben dem Touchscreen 1425 eine Benutzereingabe durch Berührung ebenfalls über ein Touchpad 1430 erfolgen, das innerhalb der Chassis konfiguriert sein kann, und das mit derselben I2C-Verbindung verbunden sein kann, wie der Touchscreen 1425.
-
Für wahrnehmbare Berechnung und andere Zwecke können verschiedene Sensoren innerhalb des Systems vorhanden sein und mit dem Prozessor 1410 auf unterschiedliche Weise verbunden sein. Bestimmte Trägheits- und Umweltsensoren können mit einem Prozessor 1410 durch einen Sensorhub 1440 verbunden sein, z. B. über eine I2C-Verbindung. In der Ausführungsform, die in 14 dargestellt ist, können diese Sensoren einen Beschleunigungsmesser 1441, einen Umgebungslichtsensor (ALS) 1442, einen Kompass 1443 und ein Gyroskop 1444 umfassen. Andere Umweltsensoren können einen oder mehrere Wärmesensoren 1446 umfassen, die in einigen Ausführungsformen mit dem Prozessor 1410 über einen Systemmanagementbus (SMBus) Bus verbunden sind.
-
Außerdem zeigt 14, dass sich verschiedene Peripherievorrichtungen mit dem Prozessor 1410 über eine Low-Pin-Count- (LPC) Verbindung verbinden können. In der dargestellten Ausführungsform können verschiedene Bauteile durch einen eingebetteten Controller 1435 verbunden werden. Solche Bauteile können eine Tastatur 1436 (z. B. verbunden über eine PS2-Schnittstelle), einen Lüfter 1437 und einen Wärmesensor 1439 umfassen. In einigen Ausführungsformen kann das Touchpad 1430 auch mit dem EC 1435 über eine PS2-Schnittstelle verbunden sein. Weiterhin kann ein Sicherheitsprozessor wie ein Trusted Platform Module (TPM) 1438 ebenfalls mit dem Prozessor 1410 über diese LPC-Verbindung verbunden sein.
-
Das System 1400 kann mit externen Vorrichtungen in einer Vielzahl von Weisen kommunizieren, einschließlich drahtlos. In der Ausführungsform, die in 14 dargestellt ist, sind verschiedene Drahtlosmodule vorhanden, von denen jedes einem Radio entspricht, das für ein bestimmtes Drahtloskommunikationsprotokoll konfiguriert ist. Eine Möglichkeit der drahtlosen Kommunikation in einem kurzen Abstand, wie bei Near Field, kann über eine NFC-Einheit 1445 erfolgen, die in einer Ausführungsform mit dem Prozessor 1410 über einen SMBus kommunizieren kann. Es ist zu beachten, dass über diese NFC-Einheit 1445 Vorrichtungen in direkter Nähe zueinander kommunizieren können.
-
Wie ferner in 14 zu sehen, können weitere Drahtloseinheiten andere Kurzstrecken-Drahtlosengines enthalten, die eine WLAN-Einheit 1450 und eine Bluetooth™-Einheit 1452 enthalten. Unter Verwendung einer WLAN-Einheit 1450 können Wi-Fi™ Kommunikationen umgesetzt werden, während über die Bluetooth™-Einheit 1452 Kurzstrecken-Bluetooth™-Kommunikation erfolgen kann. Diese Einheiten können mit dem Prozessor 1410 über eine gegebene Verbindung kommunizieren.
-
Weiterhin können drahtlose Wide-Area-Kommunikationen, z. B. nach einem zellulären oder anderen drahtlosen Wide-Area-Protokoll, über eine WWAN-Einheit 1456 auftreten, die sich ihrerseits mit einem Subscriber Identity Module (SIM) 1457 verbinden kann. Weiterhin kann, um Empfang und Verwendung von Ortsinformationen zu ermöglichen, ein GPS-Modul 1455 ebenfalls vorhanden sein. Es ist zu beachten, dass in der in 14 dargestellten Ausführungsform die WWAN-Einheit 1456 und eine integrierte Erfassungsvorrichtung wie ein Kameramodul 1454 über eine gegebene Verbindung kommunizieren kann.
-
Um Audioeingaben und -ausgaben vorzusehen, kann ein Audioprozessor über einen digitalen Signalprozessor (DSP) 1460 umgesetzt werden, der sich mit dem Prozessor 1410 über eine High Definition Audio (HDA) Verbindung verbinden kann. Ähnlich kann der DSP 1460 mit einem integrierten Coder/Decoder (CODEC) und Verstärker 1462 kommunizieren, der sich seinerseits mit Ausgabelautsprechern 1463 verbinden kann, die innerhalb des Chassis umgesetzt sein können. Ähnlich können der Verstärker und CODEC 1462 verbunden sein, um Audioeingaben von einem Mikrofon 1465 zu empfangen, die in einer Ausführungsform über Dualarray-Mikrofone umgesetzt sein können (wie etwa ein digitales Mikrofonarray), um Audioeingaben hoher Qualität vorzusehen, um stimmaktivierte Steuerung verschiedener Funktionen innerhalb des Systems zu ermöglichen. Es ist auch zu beachten, dass Audioausgaben von dem Verstärker/CODEC 1462 an eine Kopfhörerbuchse 1464 bereitgestellt werden können. Wenn sie auch mit diesen bestimmten Bauteilen in der Ausführungsform von 14 dargestellt ist, ist der Umfang der vorliegenden Erfindung diesbezüglich nicht eingeschränkt.
-
Ausführungsformen können in vielen verschiedenen Systemtypen umgesetzt sein. Nun wird mit Verweis auf 15 ein Blockdiagramm eines Systems nach einer Ausführungsform der vorliegenden Erfindung dargestellt. Wie in 15 dargestellt, ist ein Multiprozessorsystem 1500 ein Punkt-zu-Punkt Verbindungssystem, und enthält einen ersten Prozessor 1570 und einen zweiten Prozessor 1580, die über eine Punkt-zu-Punkt-Verbindung 1550 verknüpft sind. Wie in 15 gezeigt, kann jeder der Prozessoren 1570 und 1580 Multicore-Prozessoren sein, einschließlich erster und zweiter Prozessorkerne (d. h. Prozessorkerne 1574a und 1574b und Prozessorkerne 1584a und 1584b), auch wenn potenziell viel mehr Kerne in den Prozessoren vorhanden sein können. Jeder der Prozessoren kann eine PCU oder eine andere Leistungsmanagementlogik enthalten, um prozessorbasiertes Leistungsmanagement durchzuführen, einschließlich der automatischen Herabstufungstechniken, die vom Kunden bereitgestellte Anpassungsinformationen verwenden, wie hierin beschrieben.
-
Inner noch mit Verweis auf 15 enthält der erste Prozessor 1570 ferner einen Speicher-Controllerhub (MCH) 1572 und Punkt-zu-Punkt- (P-P) Schnittstellen 1576 und 1578. Ähnlich enthält der zweite Prozessor 1580 einen MCH 1582 und P-P-Schnittstellen 1586 und 1588. Wie in 15 gezeigt, verbinden die MCHs 1572 und 1582 die Prozessoren mit jeweiligen Speichern, namentlich einem Speicher 1532 und einem Speicher 1534, die Abschnitte 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 über die P-P-Verbindungen 1562 bzw. 1564 mit einem Chipsatz 1590 verbunden sein. Wie in 15 gezeigt, enthält der Chipsatz 1590 P-P-Schnittstellen 1594 und 1598.
-
Weiter enthält das Chipset 1590 eine Schnittstelle 1592 zum Verbinden des Chipsets 1590 mit einer Hochleistungsgrafikengine 1538 durch eine P-P-Verbindung 1539. Wiederum kann der Chipsatz 1590 mit einem ersten Bus 1516 über eine Schnittstelle 1596 verknüpft sein. Wie in 15 gezeigt, können verschiedene Eingabe-/Ausgabe- (E/A) Vorrichtungen 1514 zusammen mit einer Busbrücke 1518, die den ersten Bus 1516 mit einem zweiten Bus 1520 verbindet, mit dem ersten Bus 1516 verbunden sein. Verschiedene Vorrichtungen können mit dem zweiten Bus 1520 verbunden sein, einschließlich beispielsweise einer Tastatur/Maus 1522, Kommunikationsvorrichtungen 1526 und einer Datenspeichereinheit 1528 wie etwa eines Festplattenlaufwerks oder einer anderen Massenspeichervorrichtung, die Code 1530 enthalten können in einer Ausführungsform. Ferner kann eine Audio-E/A 1524 mit dem zweiten Bus 1520 verbunden werden. Ausführungsformen können in andere Arten von Systemen eingebaut sein, einschließlich mobiler Vorrichtungen wie eines Smart-Handy, Tabletcomputers, Netbooks, Ultrabook™ und so weiter.
-
Ein oder mehrere Aspekte von mindestens einer Ausführungsform können durch repräsentativen Code umgesetzt werden, der auf einem maschinenlesbaren Medium gespeichert wird, das eine Logik innerhalb eines integrierten Schaltkreises wie etwa eines Prozessors darstellt und/oder definiert. Beispielsweise kann das maschinenlesbare Medium Anweisungen umfassen, die eine unterschiedliche Logik innerhalb des Prozessors darstellen. Beim Auslesen durch eine Maschine können die Anweisungen dazu führen, dass die Maschine die Logik so herstellt, dass die darin beschriebenen Techniken ausgeführt werden. Solche Darstellungen, die als „IP-Kerne“ bekannt sind, sind wiederverwendbare Logikeinheiten der Logik für einen integrierten Schaltkreis, die auf einem greifbaren maschinenlesbaren Medium als Hardwaremodell gespeichert werden kann, das die Struktur des integrierten Schaltkreises beschreibt. Das Hardwaremodell kann an die verschiedenen Kunden oder Herstellungseinrichtungen geliefert werden, die das Hardwaremodell auf Herstellungsmaschinen laden, die den integrierten Schaltkreis herstellen. Der integrierte Schaltkreis kann so hergestellt sein, dass der Schaltkreis Funktionen ausführt, die in Zusammenhang mit einer der hierin beschriebenen Ausführungsformen beschrieben sind.
-
16 ist ein Blockdiagramm, das ein IP-Kernentwicklungssystem 1600 illustriert, das verwendet werden kann, um einen integrierten Schaltkreis herzustellen, um Funktionen nach einer Ausführungsform auszuführen. Das IP-Kernentwicklungssystem 1600 kann verwendet werden, modulare wiederverwendbare Designs zu erzeugen, die in ein größeres Design umgesetzt werden oder verwendet werden können, einen gesamten integrierten Schaltkreis zu konstruieren (z. B. einen SoC-integrierten Schaltkreis). Eine Designeinrichtung 1630 kann eine Softwaresimulation 1610 eines IP-Kerndesigns in einer High-Level-Programmiersprache (z. B. C/C++) erzeugen. Die Softwaresimulation 1610 kann verwendet werden, um das Verhalten des IP-Kerns zu designen, zu prüfen und zu verifizieren. Ein Design für einen Register-Transferlevel (RTL) kann dann aus dem Simulationsmodell erzeugt oder synthetisiert werden. Das RTL-Design 1615 ist eine Abstraktion des Verhaltens des integrierten Schaltkreises, der den Fluss digitaler Signale zwischen Hardwareregistern modelliert, einschließlich der entsprechenden Logik, die unter Verwendung der modellierten digitalen Signale ausgeführt wird. Neben einem RTL-Design 1615 können auch Lower-Level-Designs auf Logik-Ebene oder Transistor-Ebene erzeugt, entworfen oder synthetisiert werden. So können die genauen Details des anfänglichen Designs und der Simulierung variieren.
-
Das RTL-Design 1615 oder etwas Entsprechendes können weiter durch die Designeinrichtung in ein Hardwaremodell 1620 synthetisiert werden, das in einer Hardware-Beschreibungssprache (HDL) oder einer anderen Darstellung physischer Designdaten erstellt sein kann. Die HDL kann ferner simuliert oder geprüft werden, um das IP-Kerndesign zu verifizieren. Das IP-Kerndesign kann zur Lieferung an eine Drittherstellungseinrichtung 1665 gespeichert werden, die nichtflüchtigen Speicher 1640 (z. B. Festplatte, Flashspeicher oder ein nichtflüchtiges Speichermedium) enthält. Alternativ kann das IP-Kerndesign (z. B. über das Internet) über eine verkabelte Verbindung 1650 oder über eine drahtlose Verbindung 1660 übertragen werden. Die Herstellungseinrichtung 1665 kann dann einen integrierten Schaltkreis herstellen, der mindestens teilweise auf dem IP-Kerndesign basiert. Der fabrizierte integrierte Schaltkreis kann konfiguriert werden, Funktionen nach mindestens einer hierin beschriebenen Ausführungsform auszuführen.
-
In Ausführungsformen tritt die Ablaufsteuerung der automatischen Herabstufung auf, wenn eine OS-Anfrage für einen C6- oder C3-Zustand autonom durch Leistungssteuerungsschaltkreise überschrieben werden soll und stattdessen auf einen niedrigeren Niedrigenergiezustand herabgestuft werden soll (z. B. einen C1-Zustand statt der C3-Anfrage oder einen C1- oder C3-Zustand statt der C6-Anfrage). Diese autonome Ablaufsteuerung steuert auch, wenn eine aktuelle Herabstufung auf C1 oder C3 zurück auf den ursprünglichen OS-Ziel-C-Zustand, C3 oder C6, „ent-herabgestuft“ werden kann. Dieser Steuerablauf soll einen Burst von Leerlaufunterbrechungsereignissen identifizieren, und wenn es zu häufigen Unterbrechungsereignissen kommt, wird die Herabstufungssteuerung aktiviert. Umgekehrt tritt eine Ent-Herabstufung auf, wenn nach einem Herabstufungsereignis die Anzahl der Unterbrechungen aus dem Leerlaufzustand viel geringer war als die Ebene, die die Herabstufung ausgelöst hat. Ausführungsformen der Steuertechniken können auch den alten Verlauf von Bursts von Leerlaufunterbrechungen ignorieren, um eine Herabstufung zu vermeiden, wenn diese nicht mehr angemessen ist.
-
Es ist zu beachten, dass die Ent-Herabstufung mit oder ohne OS-Hilfe auftreten und den ursprünglichen Ziel-C-Zustand aktivieren kann. Mit einer OS-Hilfe schafft die Hardware eine überraschende Unterbrechung zurück in den aktiven Zustand, mit der Annahme, dass keine ausstehende Arbeit vorliegt und das OS direkt wieder in den Leerlaufzustand schaltet. Ohne Hilfe durch das OS kann die Prozessorhardware die Aufstufung von C1 oder C3 nach C3 oder C6 ohne Aufwecken des OS ermöglichen.
-
In Ausführungsformen kann die Herabstufungssteuerung mindestens teilweise auf einem Herabstufungszähler pro Kern pro Ziel des Herabstufungszustands basieren. In einer Ausführungsform verursacht eine Unterbrechung eine Dekrementierung eines gegebenen Zählers (bis zu einem definierten maximalen Wert). Diese Steuerung der Ebene der Unterbrechungen pro Zeitintervall (z. B. Anzahl der Unterbrechungen pro Sekunde (Unterbrechungen/s)), die ein Herabstufungsereignis erzeugt, die Anzahl der Unterbrechungen/s, die ein Ent-Herabstufungsereignis und/oder eine Verlaufsbereinigung erzeugt, kann durch das Gefälle der Herabstufungszählerbereinigung als Funktion der Zeit gesteuert werden. Das heißt für einen bestimmten Zeitraum wird der Herabstufungszähler um einen konstanten Wert inkrementiert (z. B. um eins). Wenn der Zeitraum verringert wird, kann die Anzahl der Unterbrechungen/s, die eine Herabstufung erzeugen können, höher sein, und die Ent-Herabstufung tritt schneller auf und der Verlauf wird bald nach einem Unterbrechungsereignisburst bereinigt.
-
Für längere Zeiträume, in denen der Herabstufungszähler inkrementiert wird, hat dies die gegenteilige Wirkung und die Anzahl von Unterbrechungen/s, die ein Herabstufungsereignis erzeugen können, kann geringer sein, und das Ent-Herabstufungsereignis, das nach einem Unterbrechungsburstereignis auftritt und das Vergessen von Unterbrechungsereignissen im Verlauf dauert länger. In Ausführungsformen können verschiedene Werte der Zeit für verschiedene Leerlaufzustände verwendet werden, um den Zähler zu inkrementieren, während sich der Prozessor in einem Herabstufungsereignis befindet (für den Fall der Ent-Herabstufung), oder ein einzelner Gefällewert kann für alle verschiedenen Leerlaufzustände verwendet werden.
-
Basierend auf Kundensteuerparametern kann die Option der Steuerung des Herabstufungsablaufs entweder von C6 oder C3 auf C1 oder von C3 auf C1 (beispielsweise) mindestens teilweise auf der Zeitdauer basieren, zu der der Herabstufungszähler inkrementiert wird. Auf diese Weise kann die Ebene der Leerlaufunterbrechungen/s, die die Herabstufung erzeugen, die Ent-Herabstufung und die Verlaufsbereinigung durch die Software gesteuert und erneut durch OEM oder OSV angepasst werden, um generische Einstellungen dieses Gefällewerts zu überschreiben, der durch einen Prozessorhersteller eingestellt wird. Es ist zu beachten, dass in verschiedenen Ausführungsformen dieser Gefällewert (und andere Herabstufungssteuerparameter) entweder als ein einzelner Wert definiert werden kann oder jeder Leistungszustand (C0, C1, etc.) anders angepasst sein kann.
-
Nun wird mit Verweis auf 17 ein Blockdiagramm eines Verfahrens nach einer Ausführungsform der vorliegenden Erfindung dargestellt. Genauer gesagt, ist Verfahren 1700 aus 17 ein Verfahren zum Bereitstellen einer Kundenschnittstelle, um es zu ermöglichen, dass bestimmte Herabstufungssteuerparameter von einem Kunden wie einem OEM oder OSV über eine Interaktion mit einer gegebenen Systemsoftware wie einem OS oder BIOS bereitgestellt werden können. In einer Ausführungsform kann das Verfahren 1700 durch angemessene Kombinationen aus Hardware, Software und/oder Firmware durchgeführt werden, wie etwa Hardwareleistungssteuerschaltkreise, die wiederum als ein oder mehrere Mikrocontroller oder andere Hardwaresteuerlogik umgesetzt sein können.
-
Wie illustriert, beginnt das Verfahren 1700 durch Empfang einer Anfrage nach Kundenbereitstellung eines oder mehrerer Herabstufungssteuerparameter (Block 1710). Beispielsweise kann die Anfrage über eine oder mehrere von OEM BIOS, OSV OS-Routinen oder in anderer Weise empfangen werden. Als nächstes wird bestimmt, ob der Prozessor sich in einem geschützten Modus befindet (Raute 1720). Es ist zur verstehen, dass diese Bestimmung des geschützten Modus sein kann, dass ein gegebenes OS oder BIOS die Kontrolle über den Prozessor besitzt und daher in einem privilegierten Modus läuft (z. B. Ring 0). In anderen Fällen kann diese Bestimmung des geschützten Modus optional sein. Wenn bestimmt wird, dass der Prozessor sich nicht in einem geeigneten geschützten Modus befindet, geht die Steuerung in Ausführungsformen, in denen diese optionale Sicherheitsprüfung durchgeführt wird, wieder an Block 1730, wo die Kundenkommunikation über diese Schnittstelle verhindert werden kann.
-
Andernfalls geht die Steuerung an Block 1740, wo die Schnittstelle für Kundenkommunikation der Herabstufungssteuerparameter aktiviert werden kann. Es ist zu verstehen, dass diese Schnittstelle unterschiedliche Formen annehmen kann, einschließlich mindestens einem aus einer Mehrzweck-Mailboxschnittstelle, einem oder mehreren MSRs, MMIOs und so weiter. Als nächstes können in Block 1750 eine oder mehrere Herabstufungssteuerparameter über diese Schnittstelle empfangen werden. Es ist zu verstehen, dass diese Herabstufungssteuerparameter kundenangepasste Werte sein können. Wie hierin beschrieben, kann in verschiedenen Ausführungsformen ein Kunde angepasste Werte für eine oder mehrere Herabstufungsgrenzen, einen Gefälleparameter, und potenziell andere solche Parameter bereitstellen. Danach können in Block 1760 dieser eine oder die mehreren Herabstufungssteuerparameter in einem Konfigurationsspeicher gespeichert werden. In einer Ausführungsform kann dieser Konfigurationsspeicher in einer PCU vorhanden oder damit assoziiert sein und ein gegebener nichtflüchtiger Speicher sein. In anderen Fällen können diese Werte in MSRs, MMIOs oder anderen Konfigurationsregistern gespeichert sein. Es ist zu verstehen, dass zwar diese hohe Ebene in der Ausführungsform von 17 dargestellt ist, jedoch viele Variationen und Alternativen möglich sind.
-
Nun wird mit Verweis auf 18 ein Ablaufdiagramm eines Verfahrens nach einer anderen Ausführungsform der vorliegenden Erfindung dargestellt. Wie in 18 gezeigt, kann das Verfahren 1800 z. B. durch Hardwareleistungssteuerschaltkreise zur Aktualisierung eines oder mehrerer Herabstufungszähler mindestens teilweise basierend auf den vom Kunden bereitgestellten Herabstufungssteuerparametern durchgeführt werden. Wie dargestellt, beginnt das Verfahren 1800 durch Bestimmung, ob ein Unterbrechungsereignis empfangen wird, während mindestens ein Kern sich in einem Niedrigenergiezustand befindet (Raute 1810). Wenn ja, geht die Steuerung an den Block 1820 weiter, wo ein Herabstufungszähler dekrementiert werden kann. Es ist zu verstehen, dass dieser Herabstufungszähler einer von mehreren solcher Herabstufungszähler sein kann, wobei jeder Herabstufungszähler mit einem bestimmten Thread, Niedrigenergiezustand oder einer Kombination davon assoziiert sein kann. Spezieller kann in Block 1820 dieser Herabstufungszähler nach einem konstanten Wert dekrementiert und ausgeführt werden, solange der Wert des Herabstufungszählers nicht einen unteren Grenzwert erreicht hat (der in einer Ausführungsform ein Herabstufungssteuerparameter sein kann, der möglicherweise durch den Kunden bereitgestellt wird). Als ein Beispiel kann diese Dekrementierung um einen konstanten Wert 1 erfolgen, wenn auch andere konstante Werte möglich sind. Weiterhin ist zu verstehen, dass zwar in Verfahren 1800 die Konvention einer Dekrementierung in Reaktion auf das Empfangen eines Unterbrechungsereignisses besteht, während ein gegebener Niedrigenergiezustand vorliegt, in anderen Ausführungsformen aber eine andere Art von Aktualisierung des Herabstufungszählers, wie etwa eine Inkrementierung und so weiter, stattdessen ausgeführt werden kann.
-
Noch immer mit Verweis auf 18 geht, wenn stattdessen kein Unterbrechungsereignis als empfangen festgestellt wird, die Steuerung an Raute 1830 über, um festzustellen, ob ein gegebener Zeitraum abgelaufen ist (Raute 1830). Es ist zu verstehen, dass dieser Zeitraum eine bestimmte Dauer der Niedrigenergiezustandsresidenz aufweisen kann, z. B. 10 Mikrosekunden (µs). Es ist zu beachten, dass diese Dauer der Leerlaufzeit auch ein Herabstufungssteuerparameter sein kann, der möglicherweise durch den Kunden bereitgestellt wird. Wenn ein solcher Zeitraum als abgelaufen bestimmt wird, geht die Steuerung wieder an Block 1840 zurück, wo der Herabstufungszähler inkrementiert werden kann. In der Ausführungsform aus 18 kann diese Inkrementierung einem Gefällewert entsprechend erfolgen, der ein vom Kunden bereitgestellter Herabstufungssteuerparameter sein kann. Als Beispiele kann ein Kunde sich entscheiden, die Aggressivität der Herabstufungsfunktion in einer Weise zu steuern, die höhere Leistung begünstigt, indem die Herabstufungsfunktion auf Situationen begrenzt wird, in denen eine übermäßige Anzahl von eingehenden Unterbrechungsereignissen empfangen wird. In solchen Fällen kann dieser Gefälleparameter auf eine relativ hohe Ebene eingestellt werden (z. B. zwischen etwa 200 und 250 µsec, was 5000 bis 4000 Unterbrechungen pro Sekunde entspricht), damit der Herabstufungszähler schnell oder aggressiv den oberen Grenzwert erreicht (sodass eine End-Herabstufung auftritt). Es ist zu verstehen, dass zwar diese hohe Ebene in der Ausführungsform von 18 dargestellt ist, jedoch viele Variationen und Alternativen möglich sind.
-
Nun wird mit Verweis auf 19 ein Blockdiagramm eines Verfahrens nach noch einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 19 gezeigt, kann Verfahren 1900, das durch den Herabstufungsleistungssteuerungsschaltkreis des Leistungscontrollers ausgeführt werden kann, verwendet werden, um den Eintritt in die Herabstufungsfunktion zu steuern und den Niedrigenergiezustandseintritt und die -austritte zu handhaben. Wie illustriert, beginnt das Verfahren 1900 durch Empfang einer Niedrigenergiezustandsanfrage (Block 1910). Es ist anzunehmen, dass diese Niedrigenergiezustandsanfrage eine OS-Anfrage für einen gegebenen C-Zustand ist, wie beispielsweise ein gegebener aus einem Kern-Ebenen-C6- oder C7-Zustand. Als nächstes wird bestimmt, ob ein Herabstufungszähler (z. B. assoziiert mit dem bestimmten angeforderten C-Zustand) sich auf einer Herabstufungsgrenzebene befindet (Raute 1920). Es ist zu beachten, dass diese Herabstufungsgrenzebene ein vom Kunden bereitgestellter Herabstufungssteuerparameter ist, um die Aggressivität des Eintritts in eine Herabstufungsfunktion zu steuern. Ist der Herabstufungszähler nicht auf der Herabstufungsgrenzebene, geht die Steuerung an Block 1930 über, wo ein oder mehrere Kerne, die mit der Niedrigenergiezustandsanfrage assoziiert sind, veranlasst werden können, in den angeforderten Niedrigenergiezustand einzutreten. Beispielsweise kann die PCU Niedrigenergiezustandssteuersignale an den einen oder die mehreren Kerne senden, um diese zu veranlassen, in diesen angeforderten Niedrigenergiezustand einzutreten, nachdem sie geeignete Niedrigenergiezustandseintrittsaktionen ergriffen haben, wie das Speichern von Kontext in angemessenem Speicher, das Deaktivieren bestimmter Kernschaltkreise und so weiter.
-
Noch immer mit Verweis auf 19 geht stattdessen, wenn bestimmt wird, dass sich der Herabstufungszähler auf der Herabstufungsgrenzebene befindet, die Steuerung wieder an Block 1940, wo die Herabstufungsfunktion aktiviert werden kann. Um die Herabstufungsfunktion zu aktivieren, kann eine Herabstufungsaktivierungsanzeige eingestellt werden, um anzuzeigen, dass die Herabstufungsfunktion aktiv ist. So kann in Block 1950 der Herabstufungssteuerschaltkreis einen oder mehrere Kerne veranlassen, in einen flacheren Niedrigenergiezustand einzutreten, z. B. durch die Menge der eingehenden Unterbrechungsereignisse, die der Prozessor empfängt. Beispielsweise kann, unter der Annahme, dass ein angefragter Niedrigenergiezustand ein Kernebenen-C6- oder C7-Zustand ist, der Herabstufungssteuerschaltkreis den einen oder die mehreren Kerne veranlassen, in einen flacheren Niedrigenergiezustand einzutreten, wie etwa in einen C1- oder C3-Zustand.
-
Noch immer mit Verweis auf 19 geht von beiden Blocks 1930 und 1950 die Steuerung an die Raute 1960 über, um zu bestimmen, ob ein Unterbrechungsereignis empfangen wird, während der eine oder die mehreren Kerne sich in einem Niedrigenergiezustand befinden. Wenn nicht, geht die Steuerung an Raute 1970 über, um zu bestimmen, ob diese Kerne in dem Niedrigenergiezustand bleiben sollen. Diese Bestimmung kann z. B. auf einem Dauerwert basieren, um eine Länge der Zeit für den angeforderten Niedrigenergiezustand zu bestimmen. Wenn bestimmt wird, den Niedrigenergiezustand auf Grundlage der Bestimmungen einer der Rauten 1960 und 1970 zu verlassen, geht die Steuerung an Block 1980 über, wo der eine oder die mehreren Kerne veranlasst werden können, den Niedrigenergiezustand zu verlassen und so wieder in einen aktiven Zustand einzutreten, z. B. durch Wiederaufbau des Zusammenhangs, Aktivierung der verschiedenen Kernschaltkreise und so weiter. Es ist zu verstehen, dass zwar diese hohe Ebene in der Ausführungsform von 19 dargestellt ist, jedoch viele Variationen und Alternativen möglich sind.
-
Nun wird mit Verweis auf 20 ein Blockdiagramm eines Verfahrens nach noch einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 20 gezeigt, kann Verfahren 2000, das durch den Herabstufungsleistungssteuerungsschaltkreis des Leistungscontrollers ausgeführt werden kann, verwendet werden, den Austritt aus der Herabstufungsfunktion zu steuern und Niedrigenergiezustandseintritte und -austritte zu handhaben. Wie illustriert, beginnt das Verfahren 2000 durch Empfang einer Niedrigenergiezustandsanfrage (Block 2010), z. B. einer OS-Anfrage für einen gegebenen C-Zustand. Als nächstes wird bestimmt, ob sich ein Herabstufungszähler auf einer Ent-Herabstufungsgrenzebene befindet (Raute 2020). Es ist zu beachten, dass diese Ent-Herabstufungsgrenzebene in Ausführungsformen ein vom Kunden bereitgestellter Herabstufungssteuerparameter sein kann. Ist der Herabstufungszähler nicht auf der Ent-Herabstufungsgrenzebene (bleibt aber weiter über der Herabstufungsgrenze), geht die Steuerung an Block 2030 über, wo ein oder mehrere Kerne, die mit der Niedrigenergiezustandsanfrage assoziiert sind, veranlasst werden können, in diesem Herabstufungsbetriebszustand in den flacheren Niedrigenergiezustand einzutreten.
-
Noch immer mit Verweis auf 20 geht stattdessen, wenn bestimmt wird, dass sich der Herabstufungszähler auf der Ent-Herabstufungsgrenzebene befindet, die Steuerung wieder an Block 2040, wo die Herabstufungsfunktion deaktiviert werden kann, z. B. durch Zurücksetzen einer Herabstufungsaktivierungsanzeige. So kann Block 2050 des Herabstufungssteuerschaltkreises den einen oder die mehreren Kerne veranlassen, in den angeforderten Niedrigenergiezustand einzutreten. Dann geht von beiden Blocks 2030 und 2050 die Steuerung an die Raute 2060 über, um zu bestimmen, ob ein Unterbrechungsereignis empfangen wird, während der eine oder die mehreren Kerne sich in einem Niedrigenergiezustand befinden. Wenn nicht, geht die Steuerung an Raute 2070 über, um zu bestimmen, ob diese Kerne in dem Niedrigenergiezustand bleiben sollen. Wenn bestimmt wird, den Niedrigenergiezustand auf Grundlage der Bestimmungen einer der Rauten 2060 und 2070 zu verlassen, geht die Steuerung an Block 2080 über, wo der eine oder die mehreren Kerne veranlasst werden können, den Niedrigenergiezustand zu verlassen und wieder in einen aktiven Zustand einzutreten. Es ist zu verstehen, dass zwar diese hohe Ebene in der Ausführungsform von 20 dargestellt ist, jedoch viele Variationen und Alternativen möglich sind.
-
Nun wird mit Verweis auf 21 ein Blockdiagramm eines Systems nach einer Ausführungsform der vorliegenden Erfindung dargestellt. Genauer gesagt ist ein Abschnitt eines Systems 2100 gezeigt, einschließlich eines Prozessors 2110, der ein MultikernProzessor oder eine andere Art eines SoC, ein Spannungsregler 2160, der verbunden ist, eine oder mehrere regulierte Spannungen für den Prozessor 2110 bereitzustellen, und ein Speicher 2170, der ein Systemspeicher wie ein DRAM sein kann, sein kann.
-
Wie dargestellt, verbindet, um eine Kundenschnittstelle bereitzustellen, um Konfigurationsinformationen wie hierin beschrieben, und namentlich Herabstufungssteuerparameterinformationen, zu empfangen, eine Schnittstelle 2165 den Prozessor 2110 mit dem oder den Speicher(n) 2170. Es ist zu verstehen, dass die Schnittstelle 2165 jede Art von verbundenem oder anderem Schnittstellenmechanismus sein kann. Beispielsweise können Abschnitte der Schnittstelle intern für einen oder mehrere des Prozessors 2110 und des oder der Speicher(s) 2170 sein. Noch weiter können Abschnitte umgesetzt werden, z. B. als Spuren oder andere Verbindungen auf einer Platine, die den Prozessor 2110 und den/die Speicher 2170 miteinander verbindet.
-
Wie illustriert, enthält der Prozessor 2110 mehrere Kerne 21151 bis 2115n , von denen jeder unabhängig gesteuert werden kann, um in einem oder mehreren verschiedenen P-Zuständen und/oder C-Zuständen zu laufen. Dazu verbinden Kerne 2115 (generisch) sich mit einer Energiesteuereinheit 2120. In Ausführungsformen kann die PCU 2120 verschiedene Leistungsmanagementtechniken durchführen, einschließlich autonomer Herabstufungssteuerung von C-Zustandsanfragen, die von einem OS oder einer anderen Systemsoftware empfangen werden, sowie um den Empfang und die Verwendung von vom Kunden bereitgestellten Herabstufungssteuerparameterinformationen wie hierin beschrieben zu erlauben. In der dargestellten Ausführungsform enthält PCU 2120 einen Leistungssteuerschaltkreis 2122, der verschiedene Leistungsmanagementaktivitäten durchführen kann. Noch weiter enthält die PCU 2120 einen C-Zustandscontroller 2124 der in Reaktion auf die Steuerinformationen, die von dem Leistungssteuerkreis 2120 empfangen werden, aktive (und Leistungs-) Zustände verschiedener Kerne steuern kann, z. B. durch Steuerung von einem oder mehreren Takterzeugungs- und internen Spannungsregler- (IVR) schaltkreisen (generisch Block 2140).
-
Noch immer mit Verweis auf 21, enthält Prozessor 2110 ferner einen Konfigurationsspeicher 2135, der eine Vielzahl von Konfigurationsinformationen für die Funktion der Prozessor- und Leistungsmanagementfunktionen speichert, einschließlich der hierin beschriebenen Herabstufungssteuerung. Dazu kann z. B. eines oder mehrere eines BIOS 2172 und OS 2175 Herabstufungssteuerparameterinformationen über die Schnittstelle 2165 bereitstellen, um in dem Konfigurationsspeicher 2135 gespeichert zu werden.
-
In einer Ausführungsform kann eine generische Mailboxschnittstelle umgesetzt werden, um den Empfang und die Lieferung dieser Informationen in den Konfigurationsspeicher 2135 zu ermöglichen. Wie genauer in 21 gezeigt, kann Schaltkreis 2130 einen oder mehrere aus MSRs/MMIOs und/oder einer Mailbox-Schnittstelle enthalten, um den Empfang dieser Informationen und deren Bereitstellung an die PCU 2120 zu ermöglichen, um deren Speichern und Verwendung wie hierin beschrieben zu ermöglichen. Es ist zu verstehen, dass zwar diese hohe Ebene in der Ausführungsform von 21 dargestellt ist, jedoch viele Variationen und Alternativen möglich sind.
-
Nun wird mit Verweis auf 22 ein Blockdiagramm eines Abschnitts eines Prozessors nach einer Ausführungsform der vorliegenden Erfindung gezeigt. Genauer zeigt der Prozessor 2100' weiter Details zu Prozessor 2110 von 21. Genauer zeigt 22 weitere Details der PCU 2120. Wie weiter illustriert, enthält die PCU 2120 auch einen Gefällecontroller 2126 und einen Komparator 2128. In hierin beschriebenen Ausführungsformen kann der Gefällecontroller 2126 Herabstufungssteuerparameterinformationen erhalten, die einem Gefälleparameter entsprechen, um die Aggressivität der automatischen Herabstufung zu steuern.
-
Wie zu sehen ist, empfängt der Gefällecontroller 2126 Steuersignale von dem Leistungssteuerschaltkreise 2122, genauer ein „Auf-“Signal und ein „Ab-“Signal. Diese Signale können in Reaktion auf Unterbrechungsereignisse und/oder Niedrigenergiezustands-Zeitdauern durch eine Leistungssteuerlogik bereitgestellt werden, um eine Aktualisierung eines Herabstufungszählers (wie hierin gezeigt, kann ein Satz Herabstufungszähler 2127 innerhalb des Gefällecontrollers 2126 bereitgestellt werden) zu veranlassen. Dazu kann, wenn ein Auf-Signal empfangen wird, um eine Inkrementierungsaktualisierung anzuzeigen, wenn eine gegebene Zeitdauer in einem gegebenen C-Zustand aufgetreten ist, ohne, dass ein Unterbrechungsereignis empfangen wurde, der Gefällecontroller 2126 eine Zähleraktualisierung auf den jeweiligen Herabstufungszähler 2127 in der Menge aktualisieren lassen, die durch den Gefälleparameter (namentlich eine Schrittweite nach dem Gefälleparameterwert) angezeigt wird. Stattdessen kann, wenn ein Ab-Signal in Reaktion auf ein Unterbrechungsereignis empfangen wird, während der angezeigte Kern sich in einem Niedrigenergiezustand befunden hat, der Gefällecontroller 2126 eine Zähleraktualisierung auf den jeweiligen Herabstufungszähler 2127 nach einem konstanten Wert (z. B. einer Dekrementierung um eins) veranlassen.
-
Wie weiter in 22 illustriert, können Grenzinformationen über Schnittstellenschaltkreise 2130 an den Komparator 2128 bereitgestellt werden. Wiederum kann der Komparator 2128 konfiguriert sein, die entsprechenden Herabstufungszählerwerte mit diesen mehreren Grenzen zu vergleichen, z. B. einer Herabstufungszählergrenze und einer Ent-Herabstufungszählergrenze. Wenn ein gegebener Herabstufungszähler einen Wert aufweist, der größer ist als die jeweilige Herabstufungsgrenze, wird ein Herabstufungssignal ausgegeben, das an den Leitungssteuerschaltkreis 2122 bereitgestellt werden kann, um anzuzeigen, dass eine Herabstufungsfunktion aktiviert ist (wie etwa durch Einstellen einer Steueranzeige). Wenn stattdessen ein Wert eines gegebenen Herabstufungszählers die entsprechende Ent-Herabstufungszählergrenze erreicht, erfolgt eine Ent-Herabstufung. Es ist zu verstehen, dass zwar diese hohe Ebene in der Ausführungsform von 22 dargestellt ist, jedoch viele Variationen und Alternativen möglich sind.
-
Nun wird mit Verweis auf 23 ein Leistungsdiagramm 2300 illustriert, das Beispielleitungszuwächse für bestimmte Workloads anzeigt, indem eine kundenbasierte Herabstufungssteuerparameteranpassung bereitgestellt wird, die durch die hierin beschriebenen Schnittstellentechniken aktiviert werden. Wie in 23 illustriert, zeigt die Y-Achse Leistungszuwächse an, wenn eine programmierbare Grenze durch Kundenanpassung variiert wird. Es ist zu beachten, dass die programmierbaren Grenzwerte der X-Achse von Diagramm 2300 ein Maß eines Gefälleparameters für eine Anzahl von Unterbrechungsereignissen bereitstellt. So können abhängig von der Arbeitslast und Kundenanpassung von (mindestens) einem Gefällekonfigurationsparameter große Leistungszuwächse umgesetzt werden, indem die Auto-Herabstufungsfunktion veranlasst wird, aggressiver aktiviert zu werden, um den Prozessor zu veranlassen, in flachere niedrigere Leistungszustände zu gehen, um verringerte Austrittslatenzen zu ermöglichen und wiederum die Leistung zu erhöhen.
-
Wie in 23 gezeigt, kann bis zu 63% Leistungsverbesserung an einigen Workloads erreicht werden (oder, besser gesagt, etwa 60% weniger Leistungsverringerung für den Eintritt in den C-Zustand). Die erhöhte Laufzeit durch die Leistungsverbesserung kann ohne eine hierin beschriebene Ausführungsform bis zu 38% Energieverlust bedeuten.
-
Nun wird mit Verweis auf 24 ein Timingdiagramm 2400 dargestellt, das Herabstufungs- und Ent-Herabstufungsgrenzen (T1 bzw. T2) auf der Y-Achse zeigt. Wiederum zeigt die X-Achse ein dynamisches Update eines Gefällekonfigurationsparameters (illustriert zum Zeitpunkt 2410). Wie zu sehen ist, wird während des Prozessorbetriebs in Fenster 2420 vor dieser dynamischen Änderung des Gefällewerts die Ent-Herabstufung aggressiv angewendet, wenn ein erster Wert des Gefälleparameters vorhanden ist. Diese schnelle Ent-Herabstufung nach der Herabstufungsfunktion wird aktiviert (wenn der Zählerwert T1 überschreitet) und veranlasst den Prozessor, schneller in tiefe niedrige Leistungszustände einzutreten.
-
Im Gegensatz dazu sieht nach der Gefälleänderung zu Zeitpunkt 2410 der Prozessorbetrieb während Fenster 2430 viel längere Zeiträume vor, die auftreten sollen, wenn ein Herabstufungszähler die erste Grenze (T1) überschreitet bevor die Ent-Herabstufung auftritt (wenn ein solcher Herabstufungszähler die Ent-Herabstufungsgrenze T2) erreicht. Natürlich sind andere Illustrationen möglich. Wie in 24 dargestellt treten, wenn ein weniger aggressives Gefälle eingestellt ist, langsamere Ereigniszähler auf, was zu weniger aggressiver Auf-/Herabstufung führt. Ausführungsformen ermöglichen so eine bessere Energieeffizienz für OSVs und OEMs. Außerdem können bei Verwendung einer Ausführungsform Updates an den Herabstufungssteuerparametern nach der Herstellung auftreten. Ausführungsformen können außerdem besser kundenspezifische Workloads wie Server und Rechenzentren mit gut definierten Workloadeigenschaften adressieren, und OEMs ermöglichen, eine Präferenz einer Benutzererfahrung und Anpassungen zu erlauben, die auf bestimmte Klassen oder Anwendungen abzielen.
-
Die folgenden Beispiele beziehen sich auf weitere Ausführungsformen.
-
In einem Beispiel enthält ein Prozessor: mehrere Kerne; einen Leistungscontroller, der eine Logik enthält, um autonom eine Anfrage für mindestens einen Kern der mehreren Kerne abzustufen, in einen ersten Niedrigenergiezustand einzutreten, um den mindestens einen Kern zu veranlassen, in einen zweiten Niedrigenergiezustand einzutreten, wobei der erste Niedrigenergiezustand ein tieferer Niedrigenergiezustand ist als der zweite Niedrigenergiezustand; und eine Schnittstelle zum Empfangen einer Eingabe von einer Systemsoftware, wobei die Eingabe mindestens einen Herabstufungssteuerparameter enthält, wobei die Logik autonom die Anfrage mindestens teilweise basierend auf dem mindestens einen Herabstufungssteuerparameter herabstufen soll.
-
In dem Beispiel umfasst die Schnittstelle mindestens eines aus einer Mailbox-Schnittstelle, einem maschinenspezifischen Register und einem speicherzugeordneten Ein-/Ausgabespeicher, um den mindestens einen Herabstufungssteuerparameter von der Systemsoftware zu empfangen.
-
In einem Beispiel umfasst die Systemsoftware mindestens eines aus einem Betriebssystem und einem grundlegenden Ein-/Ausgabesystem.
-
In einem Beispiel soll die Systemsoftware einen ersten Wert des mindestens einen Herabstufungssteuerparameters bereitstellen, wenn eine erste Workload auf dem mindestens einen Kern ausgeführt werden soll, und einen zweiten Wert des mindestens einen Herabstufungssteuerparameters bereitstellen, wenn die zweite Workload mit dem mindestens einen Kern ausgeführt werden soll.
-
In einem Beispiel umfasst der mindestens eine Herabstufungssteuerparameter einen Gefälleparameter.
-
In einem Beispiel soll die Logik die autonome Herabstufung basierend mindestens teilweise auf einem Wert eines Herabstufungszählers verursachen.
-
In einem Beispiel soll die Logik den Herabstufungszähler basierend mindestens teilweise auf dem Gefälleparameter aktualisieren, wenn der mindestens eine Kern für eine erste Zeitdauer in einem gegebenen Niedrigenergiezustand war.
-
In einem Beispiel soll die Logik ferner den Herabstufungszähler in Reaktion auf ein Unterbrechungsereignis nach einer anderen Skala als der Aktualisierung in Reaktion auf die erste Zeitdauer in dem gegebenen Niedrigenergiezustand aktualisieren.
-
In einem Beispiel umfasst der mindestens eine Herabstufungssteuerparameter eine Herabstufungsgrenze.
-
In einem Beispiel soll die Logik die autonome Herabstufung auf Grundlage eines Vergleichs des Werts des Herabstufungszählers und der Herabstufungsgrenze veranlassen.
-
In einem Beispiel soll der Leistungscontroller den mindestens einen Herabstufungssteuerparameter veranlassen, in einem Konfigurationsspeicher gespeichert zu werden, wenn der mindestens eine Herabstufungssteuerparameter in einem privilegierten Modus empfangen wird.
-
In einem Beispiel umfasst der mindestens eine Herabstufungssteuerparameter eine Kundenanpassung für die autonome Herabstufung, wobei die Kundenanpassung sich von einer Anpassung für die autonome Herabstufung unterscheidet, die durch einen Hersteller des Prozessors in einem nichtflüchtigen Speicher des Prozessors gespeichert ist.
-
Es ist zu beachten, dass der obige Prozessor unter Verwendung verschiedener Mittel umgesetzt werden kann.
-
In einem Beispiel umfasst der Prozessor einen SoC, der in eine touchaktivierte Vorrichtung einer Benutzerausrüstung eingebaut ist.
-
In einem anderen Beispiel umfasst ein System eine Anzeige und einen Speicher und enthält den Prozessor eines oder mehrerer der obigen Beispiele
-
In noch einem anderen Beispiel enthält ein Verfahren: Empfang mindestens eines Herabstufungssteuerparameters von einer Systemsoftware in einer Leistungssteuerlogik eines Prozessors über eine Schnittstelle, wobei der mindestens eine Herabstufungssteuerparameter eine Anpassung für die autonome Herabstufung einer Niedrigenergiezustandsanfrage umfasst; Speichern des mindestens einen Herabstufungssteuerparameters in einem Speicher, der mit der Speichersteuerlogik assoziiert ist; und Veranlassen mindestens eines Kerns des Prozessors, in einen ersten Niedrigenergiezustand einzutreten, basierend mindestens teilweise auf dem mindestens einen Herabstufungssteuerparameter, wobei sich der erste Niedrigenergiezustand von einem angefragten Niedrigenergiezustand unterscheidet.
-
In einem Beispiel umfasst das Verfahren ferner: die Aktualisierung eines Zählers basierend auf einer Anzahl von Unterbrechungsereignissen, wenn der mindestens eine Kern ein erster Niedrigenergiezustand ist; und die Aktualisierung des Zählers basierend auf einer oder mehreren Zeitdauern, in denen der mindestens eine Kern sich in dem ersten Niedrigenergiezustand befindet.
-
In einem Beispiel umfasst das Verfahren ferner die Aktualisierung des Zählers basierend auf der einen oder den mehreren Zeitdauern nach einem Gefälleparameter, entsprechend dem mindestens einen Herabstufungssteuerparameter; und die Aktualisierung des Zählers basierend auf der Anzahl der Unterbrechungsereignisse nach einem konstanten Wert.
-
In einem Beispiel umfasst das Verfahren ferner den Vergleich eines Werts des Zählers mit einer ersten Grenze; das Veranlassen des mindestens einen Kerns, in den angeforderten Niedrigenergiezustand basierend auf einem ersten Ergebnis des Vergleichs einzutreten; und den mindestens einen Kern zu veranlassen, in den ersten Niedrigenergiezustand basierend auf einem zweiten Ergebnis des Vergleichs einzutreten.
-
In einem Beispiel umfasst das Verfahren ferner: den Empfang von mindestens einem Herabstufungssteuerparameter mit einem ersten Steuerwert, wenn eine erste Workload auf dem Prozessor ausgeführt wird; und den Empfang des mindestens einen Herabstufungssteuerparameters mit einem zweiten Steuerwert, wenn eine zweite Workload auf dem Prozessor ausgeführt wird.
-
In einem weiteren Beispiel soll das computerlesbare Medium, das Anweisungen enthält, das Verfahren eines der obigen Beispiele ausführen.
-
In einem anderen Beispiel soll das computerlesbare Medium, das Daten enthält, durch mindestens eine Maschine verwendet werden, um mindestens einen integrierten Schaltkreis herzustellen, um das Verfahren von einem der obigen Beispiele durchzuführen.
-
In einem anderen Beispiel umfasst eine Vorrichtung Mittel zur Durchführung des Verfahrens eines der obigen Beispiele.
-
In noch einem anderen Beispiel umfasst ein System: einen Prozessor, der mehrere Kerne und einen Leistungscontroller aufweist, um eine Anpassung für mindestens einen Herabstufungssteuerparameter über eine Schnittstelle mit einer Systemsoftware zu empfangen, wobei der Leistungscontroller mindestens einen Kern der mehreren Kerne veranlassen soll, in einen ersten Niedrigenergiezustand in Antwort auf eine Anfrage auf einem zweiten Niedrigenergiezustand einzutreten, wobei der zweite Niedrigenergiezustand ein tieferer Niedrigenergiezustand ist als der erste Niedrigenergiezustand, basierend mindestens teilweise auf dem mindestens einen Herabstufungssteuerparameter; einen Spannungsregler, um mindestens eine Spannung an den Prozessor bereitzustellen, wobei der Leistungscontroller einen Pegel der mindestens einen Spannung steuern soll; und einen Speicher, um die Systemsoftware zu speichern, bei der die Systemsoftware Konfigurationsinformationen enthält, die den mindestens einen Herabstufungssteuerparameter umfasst.
-
In dem Beispiel umfasst die Schnittstelle mindestens eines aus einer Mailbox-Schnittstelle, einem maschinenspezifischen Register und einem speicherzugeordneten Ein-/Ausgabespeicher, um den mindestens einen Herabstufungssteuerparameter aus der Systemsoftware zu empfangen, wobei die Anpassung eine Kundenanpassung umfasst, um die Aggressivität des autonomen Überschreibens der Systemsoftware-Niedrigenergiezustandsanfragen zu steuern.
-
In einem Beispiel soll der Leistungscontroller autonom eine Systemsoftware-Niedrigenergiezustandsanfrage mindestens teilweise basierend auf einem Wert eines Zählers überschreiben, wobei der Zähler in einer ersten Richtung zumindest teilweise auf Grundlage des mindestens einen Herabstufungssteuerparameters aktualisiert werden soll, wenn der mindestens eine Kern für eine erste Zeitdauer in dem zweiten Niedrigenergiezustand war, und in Reaktion auf ein Unterbrechungsereignis nach einer anderen Skala als die erste Richtungsaktualisierung in einer zweiten Richtung aktualisiert werden soll.
-
In noch einem anderen Beispiel enthält eine Vorrichtung: mehrere Kernmittel zur autonomen Herabstufen einer Anfrage, dass mindestens ein Kernmittel der mehreren Kernmittel in einen ersten Niedrigenergiezustand eintreten soll, um das mindestens eine Kernmittel zu veranlassen, in einen zweiten Niedrigenergiezustand einzutreten, wobei der erste Niedrigenergiezustand ein tieferer Niedrigenergiezustand ist, als der zweite Niedrigenergiezustand; und ein Schnittstellenmittel, um eine Eingabe von einer Systemsoftware zu erhalten, wobei die Eingabe mindestens einen Herabstufungssteuerparameter enthält, bei dem das erste Mittel autonom die Anfrage mindestens teilweise auf dem mindestens einen Herabstufungssteuerparameter basierend herabstufen soll.
-
In einem Beispiel umfasst das Schnittstellenmittel mindestens eines aus einer Mailbox-Schnittstelle, einem maschinenspezifischen Register und einem speicherzugeordneten Ein-/Ausgabespeicher, um den mindestens einen Herabstufungssteuerparameter von der Systemsoftware zu empfangen.
-
In einem Beispiel soll die Systemsoftware einen ersten Wert des mindestens einen Herabstufungssteuerparameters bereitstellen, wenn eine erste Workload auf dem mindestens einen Kernmittel ausgeführt werden soll, und einen zweiten Wert des mindestens einen Herabstufungssteuerparameters bereitstellen, wenn die zweite Workload mit dem mindestens einen Kernmittel ausgeführt werden soll.
-
In einem Beispiel soll das erste Mittel die autonome Herabstufung mindestens teilweise basierend auf einem Wert eines Herabstufungszählers veranlassen, wobei der Herabstufungszähler basierend mindestens teilweise auf einem Gefälleparameter in einer ersten Richtung aktualisiert werden soll, wenn das mindestens eine Kernmittel für eine erste Zeitdauer in einem gegebenen Energiezustand war und in Reaktion auf ein Unterbrechungsereignis nach einer anderen Skala in einer zweiten Richtung aktualisiert werden soll, als die Aktualisierung in Reaktion auf die erste Zeitdauer in dem gegebenen Niedrigenergiezustand.
-
Es ist zu verstehen, dass verschiedene Kombinationen der obigen Beispiele möglich sind.
-
Es ist zu beachten, dass die Begriffe „Schaltkreis“ und „Schaltkreise“ hierin austauschbar verwendet werden. Wie hierein verwendet, werden diese Begriffe und der Begriff „Logik“ verwendet, um sich alleine oder in Kombination auf analoge Schaltkreise, digitale Schaltkreise, fest verkabelte Schaltkreise, programmierbare Schaltkreise, Prozessorschaltkreise, Mikrocontrollerschaltkreise, Hardwarelogikschaltkreise, Zustandsmaschinenschaltkreise und/oder jede andere Art physischer Hardwarekomponenten zu beziehen. Ausführungsformen können in vielen verschiedenen Arten von Systemen verwendet werden. Zum Beispiel kann in einer Ausführungsform eine Kommunikationsvorrichtung angeordnet sein, die verschiedenen Verfahren und Techniken durchzuführen, die hierin beschrieben sind. Natürlich ist der Umfang der vorliegenden Erfindung nicht auf eine Kommunikationsvorrichtung beschränkt, und stattdessen können andere Ausführungsformen auf andere Arten von Vorrichtungen gerichtet sein, um Anweisungen zu verarbeiten, oder eine oder mehrere maschinenlesbare Medien, die Anweisungen enthalten, die in Reaktion auf die Ausführung auf einer Rechnervorrichtung die Vorrichtung veranlassen, eines oder mehrere der Verfahren und Techniken auszuführen, die hierin beschrieben sind.
-
Ausführungsformen können in Code umgesetzt werden und können auf einem nichttransitorischen Speichermedium gespeichert werden, auf dem Anweisungen gespeichert sind, die verwendet werden können, ein System zu programmieren, die Anweisungen auszuführen. Ausführungsformen können außerdem in Daten umgesetzt werden und können auf einem nicht transitorischen Speichermedium gespeichert werden, das, wenn es durch mindestens eine Maschine verwendet wird, die mindestens eine Maschine veranlasst, mindestens einen integrierten Schaltkreis herzustellen, um eine oder mehrere Funktionen auszuführen. Noch weitere Ausführungsformen können in einem computerlesbaren Speichermedium umgesetzt werden, einschließlich Informationen die, wenn sie in einem SoC oder einem anderen Prozessor hergestellt werden, das SoC oder den anderen Prozessor konfigurieren sollen, eine oder mehrere Funktionen auszuführen. Das Speichermedium kann enthalten, ist jedoch nicht beschränkt auf jede Art von Diskette, einschließlich Floppy Disks, optischer Disks, Solid-Zustand-Drives (SSDs), Compact Disc Read-Only Memories (CD-ROMs), Compact Disk Rewritables (CD-RWs) und magnetoptischer Disketten, Halbleitervorrichtungen wie Read-Only Memories (ROMs), Random Access Memories (RAMs) wie Dynamic Random Access Memories (DRAMs), Static Random Access Memories (SRAMs), Erasable Programmable Read-Only Memories (EPROMs), Flashspeicher, Electrically Erasable Programmable Read-Only Memories (EEPROMs), magnetischer oder optischer Karten oder jeder anderen Art von Medien, die sich für das Speichern elektrischer Anweisungen eignet.
-
Während die vorliegende Erfindung bezüglich einer beschränkten Anzahl von Ausführungsformen beschrieben wurde, werden Fachleute zahlreiche Modifikationen und Variationen davon erkennen. Es ist vorgesehen, dass die anhängenden Ansprüche alle solchen Modifizierungen und Variationen abdecken, die in den wahren Geist der vorliegenden Erfindung fallen.